Giter VIP home page Giter VIP logo

vogod's Introduction

🔥 vogod - V'mann optolink go daemon

vogod is a daemon which provides a high-level interface (currently a REST API) to a Viessmann® heating device via Optolink.

If the daemon is started on a system where avahi-publish is available, it will announce itself via mdns/Zeroconf/Bonjour.

This is beta quality software, not ready for deployment. Do not use, do not ingest, do not stare into beam.

Usage

./vogod: V'mann optolink go daemon
    Build Date: 2024-02-08T18:57:00Z
    Build Version: v0.4.1-5-g3286411

  -c string
        connection string, use socket://[host]:[port] for TCP or [serialDevice] for direct serial connection
  -cpuprofile file
        write cpu profile to file
  -d file
        filename of ecnDataPointType.xml like file (default "ecnDataPointType.xml")
  -e file
        filename of ecnEventType.xml like file (default "ecnEventType.xml")
  -memprofile file
        write memory profile to file
  -s string
        start http server at [bindtohost][:]port
  -v    verbose logging

bildschirmfoto vom 2018-10-26 um 15 47 46

vogod's People

Contributors

speters avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vogod's Issues

Received unexpected byte sequence 05 (expected 6) mit Vitotronic 200 KW

Hallo

Vielen Dank für das tolle Projekt!
Ich würde gerne vogod bei meiner Vitotronic 200 KW2 nutzen aber leider schaffe ich das nicht...

Mein Setup ist ein alter raspi mit USB-Optolink.
Mit telnet kann ich die Adressen auslesen:

pi@openv:~ $ telnet localhost 3002
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
vctrld>getDevType
V200KW2 ID=2098 Protokoll:KW

mit vogod bekomme ich aber die Meldung: Received unexpected byte sequence 05 (expected 6):

$ ./vogod_raspi -s 8000 -c /dev/ttyUSB0 -d /usr/share/vogod/ecnDataPointType.xml -e /usr/share/vogod/ecnEventType.xml -v
DEBU[2021-12-18T07:12:52Z] Write b='0x04', n=1, err=<nil>
DEBU[2021-12-18T07:12:52Z] State changed: unknown --> resetAck
DEBU[2021-12-18T07:12:53Z] Read b='0x05', n=1, err=<nil>
DEBU[2021-12-18T07:12:53Z] State changed: resetAck --> idle
DEBU[2021-12-18T07:12:53Z] State: idle, WaitingFor: 5, nextState: swP300, failState: reset, failCount: 0
DEBU[2021-12-18T07:12:55Z] Read b='0x05', n=1, err=<nil>
DEBU[2021-12-18T07:12:55Z] State changed: idle --> swP300
DEBU[2021-12-18T07:12:55Z] Write b='0x16 0x00 0x00', n=3, err=<nil>
DEBU[2021-12-18T07:12:55Z] State changed: swP300 --> waitAck
DEBU[2021-12-18T07:12:55Z] State: waitAck, WaitingFor: 6, nextState: wait, failState: swP300, failCount: 0
DEBU[2021-12-18T07:12:57Z] Read b='0x05', n=1, err=<nil>
WARN[2021-12-18T07:12:57Z] Received unexpected byte sequence 05 (expected 6)
DEBU[2021-12-18T07:12:57Z] State changed: waitAck --> swP300
DEBU[2021-12-18T07:12:57Z] Write b='0x16 0x00 0x00', n=3, err=<nil>
DEBU[2021-12-18T07:12:57Z] State changed: swP300 --> waitAck
DEBU[2021-12-18T07:12:57Z] State: waitAck, WaitingFor: 6, nextState: wait, failState: swP300, failCount: 0
DEBU[2021-12-18T07:12:59Z] Read b='0x05', n=1, err=<nil>
WARN[2021-12-18T07:12:59Z] Received unexpected byte sequence 05 (expected 6)
DEBU[2021-12-18T07:12:59Z] State changed: waitAck --> swP300
DEBU[2021-12-18T07:12:59Z] Write b='0x16 0x00 0x00', n=3, err=<nil>
DEBU[2021-12-18T07:12:59Z] State changed: swP300 --> waitAck
DEBU[2021-12-18T07:12:59Z] State: waitAck, WaitingFor: 6, nextState: wait, failState: swP300, failCount: 0
DEBU[2021-12-18T07:13:01Z] Read b='0x05', n=1, err=<nil>
WARN[2021-12-18T07:13:01Z] Received unexpected byte sequence 05 (expected 6)
DEBU[2021-12-18T07:13:01Z] State changed: waitAck --> swP300
DEBU[2021-12-18T07:13:01Z] Write b='0x16 0x00 0x00', n=3, err=<nil>
DEBU[2021-12-18T07:13:01Z] State changed: swP300 --> waitAck
DEBU[2021-12-18T07:13:01Z] State: waitAck, WaitingFor: 6, nextState: wait, failState: swP300, failCount: 0
ERRO[2021-12-18T07:13:02Z] Device not connected

Es steht oft swP300 drin was ja vermutlich nicht das richtige Protokoll wäre? Muss ich das evtl. noch irgendwo setzen?
Oder mache ich etwas anderes falsch?
Vielen Dank!
Ben

Feature request: "raw" Abfragen

Wäre es möglich eine URL hinzuzufügen, die ohne einen EventType direkt eine Adresse ausliest? Die könnte auch den "nopCodec" verwenden. Unter Umständen auch die Senderichtung als POST.

Vielleicht so
GET: /raw/{address}[:{length}] (length wenn es mehr als ein Byte ist)
POST: /raw/{address} (und dann als base64 im Body)

Eine Anwendung wäre für mich die Fehlerhistorie, die nur den ersten Fehler als Fehlerhistorie0 liefert. Oder auch das Lesen der Digitalen Ein- / Ausgänge, die immer nur ein Bit liefern und damit (wenn man alle acht haben möchte) acht Lesevorgänge notwendig machen, die immer wieder die gleiche Adresse lesen.

Viele Grüße
Jan

Neues Format XML-Dateien?

Zunächst mal vielen Dank für das Projekt. Ich habe den aktuellen Tag (v0.4.3) gebaut und die Dateien
ecnDataPointType.xml
ecnEventType.xml
aus der Demo extrahiert. Alles funktioniert wunderbar.

Jetzt habe ich die Demo auf einem Windows PC installiert und habe sie mal die Definitionen aktualisieren lassen. Ich bekomme mit den neuen Dateien folgende Fehlermeldung:
No EventType definitions found for this DataPoint [32 51 0 3 0 0]

Die Heizung ist eine Vitoligno 300-p (VBC550P)

Ich habe beide XML-Dateien mal verglichen.

Alt:

<DataPointType>
    <ID>VBC550P</ID>
    <Description>Allgemeine Produktbeschreibung: Vitolig Pelletkessel</Description>
    <Identification>2033</Identification>
    <Options>trending</Options>
    <EventTypeList>ecnStatusEventType;Absenkzeit_gelerntA1M1~0x253D;ADC_IstTemperaturwe....</EventTypeList>
    <EventOptimisation>0</EventOptimisation>
</DataPointType>

Neu:

<DataPointType>
    <ID>VBC550P</ID>
    <Description>Allgemeine Produktbeschreibung: Vitolig Pelletkessel</Description>
    <Identification>2033</Identification>
    <Options>trending</Options>
    <EventOptimisation>0</EventOptimisation>
    <ControllerType>0</ControllerType>
    <ErrorType>1</ErrorType>
</DataPointType>

Da fehlt also die "EventTypeList". Ich nehme an dafür gibt es die Datei "ecnEventTypeGroup.xml". Dort gibt es Einträge dieser Art:

<EventTypeGroup>
    <Name>Solar extern</Name>
    <ID>VBC550P~50_Codierungen~80_Solar_extern</ID>
    <DataPointTypes>
        <DataPointTypeID>VBC550P</DataPointTypeID>
    </DataPointTypes>
    <EventTypes>
        <EventTypeID>K54_Solar</EventTypeID>
    </EventTypes>
    ...
</EventTypeGroup>

Darin findet sich sowohl eine DataPointTypeID als auch eine EventTypeID und ich nehme an dadurch wird die n:m-Beziehung zwischen beiden dargestellt.

Ich hoffe ich lag mit dieser Analyse nicht völlig daneben und benutze jetzt erst einmal wieder die alten Versionen der XML-Dateien.

Viele Grüße
Jan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.