NEWS
Viessmann-Adapter
-
Ich dachte das mit den negativ werten war schon erledigt :oops:
Schaue es mir die Tage an….
-
Ich dachte das mit den negativ werten war schon erledigt :oops:
Schaue es mir die Tage an…. `
Danke Dir.
Ich bin mit dem Auswerten der Bytes >9 etwas weiter gekommen. Der code steckt in der "arithmetic.c".:
Da man B0-B9 nicht ohne weiteres um B10 -Boo abändern kann, habe ich es folgendermaßen gelöst. Vl fällt einem richtigen Programmierer etwas besseres ein:
! case 'B':
! count = 2;
! switch ((*str)++) {
! case '0':
! return BYTE0;
! case '1':
! return BYTE1;
! case '2':
! return BYTE2;
! case '3':
! return BYTE3;
! case '4':
! return BYTE4;
! case '5':
! return BYTE5;
! case '6':
! return BYTE6;
! case '7':
! return BYTE7;
! case '8':
! return BYTE8;
! case '9':
! return BYTE9;
! case 'A':
! return BYTEA;
! case 'B':
! return BYTEB;
! case 'C':
! return BYTEC;
! case 'D':
! return BYTED;
! case 'E':
! return BYTEE;
! case 'F':
! return BYTEF;
! case 'G':
! return BYTEG;
! case 'H':
! return BYTEH;
! case 'I':
! return BYTEI;
! case 'J':
! return BYTEJ;
! case 'K':
! return BYTEK;
! case 'L':
! return BYTEL;
! case 'M':
! return BYTEM;
! case 'P':
! return BITPOS;D.h. man kann jetzt mit den Buchstaben A-M die Bytes 10-22 zurückgemeldet bekommen.
Damit ist es mir nun endlich möglich, die aktuelle Raum Soll Temp auf 0x2500 auszulesen:
Wäre schön wenn das jemand bei sich ausprobieren und bestätigen könnte.
vito.xml code````
<command name="getVitoTempRaumAktSoll_A1" protocmd="getaddr"></command>
<addr>2500</addr>
<len>13</len>
<unit>TDA</unit>
<description>Raumsolltemperatur aktuell in °C</description>vcontrold.xml code```` <unit name="Temperatur"><abbrev>TDA</abbrev> <calc get="BC/10" set="BC*10"><type>short</type> <entity>°C</entity></calc></unit>
-
@dtp:Hier als txt-Datei zum Importieren: `
Hallo Thorsten,
was mach ich beim import deiner View falsch?
Ich gehe auf "View importieren" und füge in das vorgesehene Feld den Inhalt deiner Text-Datei an.
Dann vergebe ich noch einen Namen für die View… z.B. HeizungTimer
Ich bekomme jedoch die Meldung: "Cannot render view HeizungTimer. Invalid Settings
Irgendeinen Tip für mich? Ich musste bisher keine Views importieren und bin dahingehend unerfahren.
gruß B4n4n3
EDIT: ... WIDGET... es ist ein WIDGET... Über den Widget-Import scheint es zu gehen....sorry!
-
Danke.
Mir ist noch was anderes aufgefallen. Solange die AUßentemperatur im positiven liegt, werden die Messgrößen gerundet und korrekt im Objektreiter angezeigt und auch in der influxdb gespeichert. Sobald die Temperatur aber unter 0 geht, sehe ich die Nachkommastellen (so wie auch die Rohwerte) und ich bekomme von influxdb die folgende Fehlermeldung: `
Kannst du die GitHub Version testen? Ich hoffe den Fehler beseitigt zu haben. Ich konnte allerdings nicht testen, da ich keine negativen Werte habe.Es wäre toll wenn du ein Feedback geben könntest, bei Erfolg, mache ich eine neue Version.
-
@dtp:…
Und schließlich auch hier mein zughöriges Javaskript (räusper
...
Würde mich freuen, wenn wir das Ganze gemeinsam verbessern könnten, auch wenn es - wie gesagt - schon jetzt ganz gut funktioniert. `
Hallo Thorsten,
mir ist folgendes im Script für das setzen der Werte aufgefallen:
Er mosert an das Porperty 'states' nicht existiert … aber warum das so ich konnte ich bisher auch nicht rausfinden.
Des Weiteren setzt du die Variable timer1AN und timer1AUS (Gilt auch für timer 2 - 4) über folgenden Code:
timer1An = 60*timer1hAn+timer1mAn; timer1Aus = 60*timer1hAus+timer1mAus;
Hierbei willst du string mit integer multiplizieren und addieren. Ich denke das hat trotzdem funktioniert …
Schöner wäre vermutlich folgender Code:
timer1An = 60*parseInt(timer1hAn,10)+parseInt(timer1mAn,10); timer1Aus = 60*parseInt(timer1hAus,10)+parseInt(timer1mAus,10);
Hoffe ich hab nichts falsches verbreitet… wenn doch bitte schreien
-
Noch was… ich denke das folgende Variable so auch nicht korrekt ist...
Die Zeile müsste vermutlich nur wie folgt lauten:
setState(path+'setVitoTimerSetzen', false);
-
Vielen Dank für Deine Hinweise. Hab's bei mir entsprechend korrigiert. Die Meldung zu common.states ist mir auch bereits aufgefallen. Aber bisher hatte ich da noch nicht weiter nach einer Lösung gesucht, weil es trotzdem funktoinierte.
Gruß,
Thorsten
-
Kannst du die GitHub Version testen? Ich hoffe den Fehler beseitigt zu haben. Ich konnte allerdings nicht testen, da ich keine negativen Werte habe.
Es wäre toll wenn du ein Feedback geben könntest, bei Erfolg, mache ich eine neue Version. `
Habe die aktuelle git Version (0.9.1) manuell über die Option "Installieren aus eigener URL" hinzugefügt und teste nun. Leider ist es hier gerade ebenfalls deutlich über 0°C. Ich halte dich aber auf dem Laufenden.
-
Hast du eventuell die schonmal wieder aktualisiert ? `
Ich glaube, nein. An meiner Heizungsanlage hat sich ja nichts geändert. Ich schaue aber mal nach und poste ggf. die aktuellen XML-Dateien.
-
Wisst ihr ob man z.B. die Zirkulationspume ohne Zeitplan ein- und ausschalten kann?
Um den Status auszulesen nutze ich die Adresse "0846"
Vielleicht habt ihr für mich einen Tipp.
Vielen Dank!
-
.
Ich habe gerade ein Problem mit dem Viessmann Adapter. Wenn ich meiner Vito.xml Messgrößen hinzufüge und die xml im Adapter neu einlese werden diese hinzugefügt, lösche ich allerdings im xml Messgrößen, werden diese im Adapter nicht entfernt. Einzige Lösung für mich: Adapter deinstallieren. `
Habe es geschafft zu korrigieren, hoffe ich :roll: . Kannst du bitte die GitHub Version testen, sollte es wie bei mir auch klappen und keine weiteren Fehler entstanden sein, mache ich eine neue Version.
-
Habe es geschafft zu korrigieren, hoffe ich :roll: . Kannst du bitte die GitHub Version testen, sollte es wie bei mir auch klappen und keine weiteren Fehler entstanden sein, mache ich eine neue Version. `
Funktioniert bei mir. Danke!
-
Juhu ich bekomme den Adapter nicht gestartet und hab alles ausprobiert.
Ich habe 2 Raspis:
- Iobroker und Homematic
- VControld
Iobroker und Homematic läuft seit ein paar Monaten bestens.
Vcontrold läuft auch, ich kann es über Putty erreichen und Werte abfragen.
Im Viessmann Adapter geht die 3 LED nicht auf grün und im Log wird folgendes geschreiben :
Egal ob ich ein Passwort eintrage oder nicht.viessmann.0 2019-02-22 15:37:32.482 debug SSH connection closed viessmann.0 2019-02-22 15:37:32.482 warn check your SSH login dates Error: connect ECONNREFUSED 192.168.178.46:22 viessmann.0 2019-02-22 15:37:32.482 debug try to create a ssh session viessmann.0 2019-02-22 15:37:32.481 debug try to read xml files viessmann.0 2019-02-22 15:37:32.480 info starting. Version 0.9.2 in /opt/iobroker/node_modules/iobroker.viessmann, node: v6.12.3 host.Lachi-PI 2019-02-22 15:37:27.412 info instance system.adapter.viessmann.0 started with pid 7581 host.Lachi-PI 2019-02-22 15:37:25.000 info instance system.adapter.viessmann.0 terminated with code 0 (OK) viessmann.0 2019-02-22 15:37:24.861 info terminating host.Lachi-PI 2019-02-22 15:37:24.806 info stopInstance system.adapter.viessmann.0 killing pid 14369 host.Lachi-PI 2019-02-22 15:37:24.805 info stopInstance system.adapter.viessmann.0 viessmann.0 2019-02-22 15:37:24.817 info cleaned everything up... host.Lachi-PI 2019-02-22 15:37:24.795 info object change system.adapter.viessmann.0
Ich bin etwas ratlos. Danke für eure Hilfe.
-
Dann sind deine anmelde Daten falsch.
Läuft auf dem vcontrold PI auch iobroker?
-
Frage, hast du die Port Adresse mit eingegeben? Falls ja, liegt da der Fehler.
-
Sry für die späte Rückmeldung, wenn man eine SSH Verbindung nutzt sollte man die auch auf dem PI aktivieren.
Andere Frage wo bekommt man XML Dateien her? Ich benutze die gerade vom Thorsten (vielen Dank dafür). Ich habe eine VScoth01 / 20CB. Die hat doch 2 Heizkreise. Ich weiß das der eine für die Fussbodenheizung und der andere für Heizkörper ist. Ich kann aber nur 1 Heizkreis auslesen. Gibt es auch eine Möglichkeit die aktuelle KW Leistung auszulesen? Ich weiß das die Viessmann 2,5 - 15 kW kann.
Vielen Dank für die Hilfe
-
Moin Moin,
Ich habe ein Problem mit der Adresse 2500 damit soll man ja die Betriebsart auslesen können.
<command name='getHKBetriebsart' protocmd='getaddr'> <addr>2500</addr> <len>1</len> <unit>ABA</unit> <description>Aktuelle Betriebsart des Heizkreises</description> </command>
<unit name='Aktuelle Betriebsart'> <abbrev>ABA</abbrev> <type>enum</type> <icalc get="(B16 & (0x01<<BP))>> BP"/> <enum bytes='00' text='? Abschaltbetr. (Dauernd)'/> <enum bytes='01' text='? Red. Betrieb (Schaltuhr)'/> <enum bytes='02' text='Normalbetrieb (Schaltuhr)'/> <enum bytes='03' text='? Normalbetrieb (Dauernd)'/> <enum text='?'/> </unit>
Wenn ich den Zustand auslese bekomme ich folgende Meldungen:
Heizung im Normalbetrieb (Schaltuhr) = 02
Heizung im Red. Betrieb = 02
Also ändert sich nix, wenn sich der Zustand tatsächlich ändert.Meine Daten:
Vitodens 222-F
Typ B2SB
Mit Vitotronic 200, Typ HO1B
Typ von Vitosoft:
VScotHO1_200_11Habe gesehen das die Adresse 2500 mehrfach genutzt wird.
- HK_AktuelleBetriebsartA1M1
- HK_Frostgefahr_aktivA1M1
- HK_RaumsolltemperaturaktuellA1M1
Wie kann ich jetzt vorgehen, damit ich die Betriebsart vom HK richtig auslesen kann?
-
Wie kann ich eine bestimmte Byteposition abfragen?
<command name='getBetriebsartHK' protocmd='getaddr'> <addr>2500</addr> <len>22</len> <unit>BAHK</unit> <description>'00'='Abschalt'; '01'='Reduziert'; '02'='Normal'; '03'='Normal2'; Setze Betriebsart vom Heizkreis</description> </command>
<unit name='Betriebsart Heizkreis'> <abbrev>BAHK</abbrev> <type>short</type> <enum bytes='00' text='Abschalt'/> <enum bytes='01' text='Reduziert'/> <enum bytes='02' text='Normal'/> <enum bytes='03' text='Normal2'/> <enum text='?'/> </unit>
Wie kann ich genau bestimme BYTE Positionen abfragen und als enum auswerten?
41 1B 01 01 25 00 16 02 02 46 63 66 00 0E 02 02 00 00 01 D2 00 00 00 00 0E 02 00 D2 00 32
Hier z.b als antwort die BYTE Position 1
oder die BYTE Position 12
Von links nach rechts gezählt mit 0 angefangen.Ich denke das das mit icalc geht, aber ich brauche da den korrekten Ausdruck.
-
<command name='getBetriebsartHK' protocmd='getaddr'> <addr>2500</addr> <len>2</len> <unit>BAHK</unit> <description></description> </command>
<unit name='Betriebsart Heizkreis'> <abbrev>BAHK</abbrev> <type>uchar</type> <icalc get='B1'/> <enum bytes='00' text='Abschalt'/> <enum bytes='01' text='Reduziert'/> <enum bytes='02' text='Normal'/> <enum bytes='03' text='Normal2'/> <enum text='?'/> </unit>
<RECV: received 01 01 25 00 02 02 02 34
(INT) Exp:B1 [BP:255] [B0:02 B1:02 B2:00 B3:00 B4:00 B5:00 B6:00 B7:00 B8:00 B9:00 ]
Erg: (Hex max. 4Byte) 00000002
02 F3 -> ?
Warum bekomme ich Antwort : 02 F3 ???
Nach der 02 bekomme ich Irgendwelche Daten.
Die ich nicht will und nicht zuordnen kann.
Sobald ich in der vito.xml bei dem command die <len>2</len> höher setzte bekomme ich noch mehr Daten. -
@XerXes777 sagte in Viessmann-Adapter:
<command name='getBetriebsartHK' protocmd='getaddr'> <addr>2500</addr> <len>2</len> <unit>BAHK</unit> <description></description> </command>
<unit name='Betriebsart Heizkreis'> <abbrev>BAHK</abbrev> <type>uchar</type> <icalc get='B1'/> <enum bytes='00' text='Abschalt'/> <enum bytes='01' text='Reduziert'/> <enum bytes='02' text='Normal'/> <enum bytes='03' text='Normal2'/> <enum text='?'/> </unit>
<RECV: received 01 01 25 00 02 02 02 34
(INT) Exp:B1 [BP:255] [B0:02 B1:02 B2:00 B3:00 B4:00 B5:00 B6:00 B7:00 B8:00 B9:00 ]
Erg: (Hex max. 4Byte) 00000002
02 F3 -> ?
Warum bekomme ich Antwort : 02 F3 ???
Nach der 02 bekomme ich Irgendwelche Daten.
Die ich nicht will und nicht zuordnen kann.
Sobald ich in der vito.xml bei dem command die <len>2</len> höher setzte bekomme ich noch mehr Daten.Hast du vl überlesen, warst aber damals auch (im Thread) schon aktiv:
https://forum.iobroker.net/topic/2715/viessmann-adapter/355
Das Problem liegt im vcontrold code. Man kann mit dem Viessmann Diag Tool auch mehrere Werte auf einer Adresse lesen. Mit dem angepassten code funktioniert das auch....