Abfrage & Steuerung von Viessmann Heizungen

Hallo Swen,

unabhängig von dem oben genannten Uhrzeit Fehler habe ich eben einen „05“ Fehler mitgetraced:

P.S. Es sieht so aus als wenn AUCH im Datum/Uhrzeit Empfangsstring die „05“ (Monat) zu einem „Verwerfen“ führt.
Vllt. doch ein und der selbe Fehler…

  1. Der Fehler mit der Schreibweise ist mir bekannt, mach ich da ein update, dann funktionieren bei allen die skripte nicht mehr.
    Das Update kommt, sobald das modul fertig ist.
  2. Fehlerquelle für 0x05 ist bereits lokalisiert, update folgt die Woche.

Swen

Hallo Swen.

Kein Stress, wenn Du einen Tester brauchst, ich stehe in der ersten Reihe :smiley:

Und wieder Danke für deine Arbeit.

Gruß
lueralba

Seltsam, das geht bei mir nicht. Die output-Variable signalisiert „true“, aber es wird nichts geschrieben …

Gibt es keinen Fehler im Meldungen-Fenster ?

Schau doch mal im Debug deiner seriellen Schnitttelle.
Dort siehst du sehr schön was auf der COM Schnittstelle passiert.

Und - zeig mal Dein Script, wenn du magst.

Gruß
lueralba

Danke, das Debugging ist wirklich prima. Und …ohne zu wissen warum … es funktioniert jetzt. Vielen Dank für Deine Unterstützung!

So zum 0x05 Fehler.

Hab jetzt einen Update hochgeladen.
Pakete die eine längere Empfangsdauer von mehr als 1 Sekunde haben, über 2 Bytes lang sind und mit 05 enden werden jetzt Verworfen.

Gruß: Swen

Kleines Update:
war noch ein Fehler drin, diesen habe ich behoben und die Zeit auf 0,5 Sekunden gesetzt.
Es gibt auch im eine Ausgabe mit der Dauer der Zeit.

Hallo Swen,

super gelöst :slight_smile:

Läuft seit einer dreiviertel Stunde einwandfrei.
Uhrzeit kann ich auch wieder abfragen.

Ich quäle das Modul grade mit drei 56 Byte Abfragen:
(Da kommt manchmal die max. Empfangsdauerwartezeit bis zu 0,6sec hoch, Durchschnitt so bei 0,3sec).
Evtl. die diese Zeit einstellbar machen, da wir ja alle unterschiedlich schnelle Heizungen/IPS Rechner haben werden.
So kann jeder seine individuelle Zeit nachregeln.

Noch ein Wunsch: Kann man die einzelenen Abfragen per Checkbox abschalten bzw. auch das ganze Modul Start/Stop schalten.
Das ist aber nicht wirklich wichtig… :smiley:

Lieben Dank für die Anpassungen.

Gruß und ein tolles WE
lueralba

Temperaturen abzufragen ist jetzt OK. Bei der Abfrage der Systemuhrzeit mit Ausgabelänge 8 funktioniert es jedoch nicht mehr. Kann es daran liegen, dass im DEBUG der Schnittstelle die empfangenen Daten nicht in einer Zeile stehen, sd. in 3 (siehe Bild)test2.jpg

Die Rückgabe scheint nur die erste Zeile zu berücksichtigen. Und auch das Schreiben in eine String-Variable mit Ausgabelänge 8 (HEX) geht nicht …

Gruss,

Hans-Christian

@ Hans-Christian:

Für Swen wäre hier vermutlich die Debug-Ausgabe der Instanz besser.

Da fällt mir auf: Bei mir kommen sogar die o.g. 56 Bytes in einem Paket an :eek:

Gruß
lueralba

Ist leider normal das nicht immer alles mit einmal ankommt, aber er hat halt die Länge in Bytes, ein Byte sind immer 2 Zeichen(oder ein Block), hat er am Anfang doch nicht die gewünschten Zeichen erreicht wartet er auf weiter, wird nun 0 5 Sekunden seit senden der Anfrage überschritten und es kommt zum Schluss 0x05 verwürft er die Antwort.

Ich Bau noch ein das Ihr die Zeit einstellen könnt, von mir aus auch eine schaltfläche mit aktive. Für das abschalten einzelner Daten sehe ich derzeit keine Notwendigkeit.

Zum Thema Abfrage der Zeit, das schaue ich mir nochmal an, setzen ist derzeit nicht möglich, da selbst wenn ich den Richtigen Wert sende die Anlage macht was sie will.

Gruß Swen

Gesendet von meinem CLT-L29 mit Tapatalk

Huch, das Datum/Zeit setzen funktioniert bei mir einwandfrei …

Habe euch mal meinen Codeschnipsel angehängt.

<?php


    // Sendekommando Datum/Uhrzeit

    //  Immer alles senden, sonst übernimmt es die Viessmannsteuerung nicht
    //  YY(20) YY(15) MM(12) DD(31) WD(6) HH(18) MM(52) SS(59)  entspricht  2015 Dez 31 Tag So-Sa (0-6) 18:52:59

   
    // 8 Byte in HEX Schreibweise	
    $yy1 = str_pad( substr(date("Y"), 0, 2), 2, '0', STR_PAD_LEFT );
    $yy2 = str_pad( date("y"), 2, '0', STR_PAD_LEFT );
    $mo  = str_pad( date("n"), 2, '0', STR_PAD_LEFT );
    $dd  = str_pad( date("j"), 2, '0', STR_PAD_LEFT );
    $wd  = str_pad( date("w"), 2, '0', STR_PAD_LEFT );
    $hh  = str_pad( date("G"), 2, '0', STR_PAD_LEFT );
    $mi  = str_pad( date("i"), 2, '0', STR_PAD_LEFT );
    $ss  = str_pad( date("s"), 2, '0', STR_PAD_LEFT );
    // echo  $yy1.$yy2.$mo.$dd.$wd.$hh.$mi.$ss;

    $DateTimeString = $yy1.$yy2.$mo.$dd.$wd.$hh.$mi.$ss;
  

    // *************************************************************************

	$modulid = 16296 /*[VM_]*/;
	$hexstamp= "088E";
	$bytes = 8; //Ausgabelänge in Byte
	$read_only = false; //F7 = true F4 = false 
	$return_data = false; // es wird der Rückgabe wert ausgegeben, oder false bei einen Fehler oder einen Timeout 
	$value = $DateTimeString; //wenn read_only "False" ist wird der angebene Wert (Wert in Hex) Gesetzt 
	$ips_id = 0 ;  //Setzen des Rückgabe wertes in eine Variable (klappt hier nicht!!!)
	$convert = ""; // "" = aus, 2 = /2, 10 = /10, 3600 = /3600
	
    $output = ViesmannOpenV_SendData($modulid, $hexstamp, $bytes, $read_only, $return_data, $value, $ips_id, $convert);

Für das abschalten einzelner Daten sehe ich derzeit keine Notwendigkeit.

Deshalb ja auch :

Das ist aber nicht wirklich wichtig…:smiley:

Debug Logs anbei … es gibt ein Timeout Event …

dump(1).txt (8.2 KB)

dump(2).txt (2.04 KB)

Guten Morgen Swen,

ich habe grade bei den Aussentemperaturen (Float) 6553,4 und 6553,4 als Temperaturen stehen.
Reale Aussentemp. liegt knapp unter Null.

Ist da doch noch ein Umrechnungsfehler ?

Einen tollen Tag
lueralba

Guten Morgen lueralba :rolleyes:

War einfach zu früh zum denken…

Ist da doch noch ein Umrechnungsfehler ?

Die Antwort ist: Den richtigen Converter nutzen. Anstatt /10 , den Temperatur10 nehmen.

Das war es. Konnte ich im April nicht mehr prüfen, was ich da eingestellt hatte.

Gruß
lueralba:rolleyes:

Hallo Zusammen, nutzt eigenlich noch jemand das Modul? Ich habe (eigenlicht schon immer) das Problemchen, dass alle boolschen Werte wenn sie 0 sind alle paar Minuten auf 1 kippen. Mit der nächsten Abfrage sind sie dann wieder korrekt 0.
Hat das jemand anders auch? Swen, kannst du verstehen wo sowas her kommen könnte?
gruß

Hallo goran,
ich nutze das hier seit Jahren…

Habe keine Probleme damit.

alle boolschen Werte

Welche „alle“ genau ?

Was steht im Debug?

Grüße
lueralba

Hier in dem Fall Hex
0842 Brenner_Stufe_1
0883 Brennerstoerung
2906 Heizkreispumpe
3906 Pumpe2
0847 Sammelstoerung
usw. tatsächlich alle Variablen vom Datentyp Bool.

Interessant ist das die Werte nur Falsch „true“ werden, nie „false“. Also wenn z.B. der Brenner aus ist, wird alle paar Minuten für genau einen Zyklus true gezeigt. Feuert dieser aber, wird nie fälschlicherweise false gemeldet.

Ja zum Thema Debug, was sollte ich da erkennen können :expressionless: zumindest sehe ich nichts auffälliges.

gruß

Ich habe da kein Problem, aber wir können das gerne am WE einmal debuggen.

Swen