Buderus Logamatic Web KM200 - Reloaded

Interessant.
Du hast allerdings auch die Stabilitätsprobleme - ich nicht :wink:
Kann es sein, dass Buderus hier 'ne Zwangspause eingebaut hat, mit der jeder Wert erst nach ca. 9 Sekunden kommt?

Ich habe das km200v2 (hab mich immer gefragt was „v2“ genau von version1 unterscheidet?!) mit Firmware 01.09.04

Nächste Info dazu:

Nachdem ich ja nun die langen Skriptlaufzeiten festgestellt habe, bin ich nochmal an das Rekursive-Auslese-Skript von Slash gegangen.

Ich hatte hier ja immer (wie viele andere User auch) das Problem, dass das Skript zwar läuft, aber immer als fehlerhaft markiert wurde.

Setzen wir jetzt das PHP-Execution-Limit auf gigantische 30 Minuten, läuft es fehlerfrei durch!
Per globaler Einstellung in der php.ini oder einfach in die erste Zeile des Skripts:
ini_set(‚max_execution_time‘, 1800); // max. Skript-Laufzeit auf 30min einstellen

Seitdem wurden mir auch heatingCircuits 2 bis 4 angelegt. Sonst keine Neuerungen!

Mit fast 28 Minuten Skriptlaufzeit hab ich aber natürlich so meine Bedenken. Oder seht ihr das als unkritisch an, weil ja nur EIN php-Thread belegt wird - dürfte mir doch eigentlich IPS und den Server kaum lahmlegen oder?

Ich habe das Skript genau einmal ausgeführt, um die Struktur herauszulesen. Ich wüsste nun nicht, warum man das öfter tun sollte. Vielleicht nochmal nach einem Firmwareupdate aber da können wir ewig warten, fürchte ich.

Boui,
ich will einfach (selten) ALLE Werte mal aktualisieren.
Während ich regelmäßig ja nur die wichtigsten Werte abfrage.
Einmal am Tag oder so kann aber doch auch sowas unwichtiges wie die Gateway-Firmware-Version in IPS aktualisiert werden.

Ja, aber Du nimmst doch besser nur die Wert, die Deine Heizung wirklich belegt und nicht alles, was das Gateway im Extremfall könnte. Die Firmware kann man natürlich auch zwischendurch mal abfragen aber wenn ich mir die Updatezyklen der App anschaue, dann reicht das maximal alle 3 Monate. Seit meinem Einbau vor etwa 2+Jahren gab es 2 Updates des Gateways.

Gesendet von iPhone mit Tapatalk

Sehr interessant.
Die sehr langen Skriptlaufzeiten sowie das „Aufhängen“ des Gateways hatte ich auch.

Aber nach Umstellung der Abfrage auf Gruppen habe ich seit gut 2 Monaten keinen einzigen Ausfall mehr.
Es werden immer alle Werte ohne Probleme gelesen und die Skriptlaufzeiten halten sich in Grenzen.

Ich Frage die für mich relevanten Werte in 6 Blöcken ab.

Block 1 - 6 Werte - Skriptlaufzeit 650ms - 900ms
Block 2 - 4 Werte - Skriptlaufzeit 400ms - 450ms
Block 3 - 4 Werte - Skriptlaufzeit 600ms - 800ms
Block 4 - 4 Werte - Skriptlaufzeit 400ms - 450ms
Block 5 - 4 Werte - Skriptlaufzeit 540ms - 1000ms
Block 6 - 3 Werte - Skriptlaufzeit 500ms - 900ms

Das Skript wird alle 2 Minuten aufgerufen. Pause zwischen den einzelnen Blöcken sind 10 Sekunden.

Gruß
Manfred

Aber wieso dauert das bei Dir denn nur ein paar ms? Bei allen anderen (mich eingeschlossen) dauert das ne ganze Ecke länger…
Ich brauche für 9 Werte bis zu 2800ms.

Gruß,
Matthias

Na weil er die Abfragen gruppiert und er gar keine Messwerte für 9 genannt hat. :cool:

Bei mir:
11 Werte zwischen 1400 und 2800ms
6 Werten zwischen 600 und 800ms
4 Werten zwischen 400 und 800ms

Das wird hier so langsam ne Erbsenzählerei. Freu Dich doch einfach, dass Du das Teil endlich bedienen kannst.:wink:

Boui hat ja recht, irgendwann wird’s Erbsenzählerei und wir sollten uns einfach alle freuen.
Aber von euren Werten träume ich! 9 Werte in 2,8 Sekunden?! Topp! Ich brauche für 9 Werte ca. 80 Sekunden!

Daher frage ich mich ja, welche Skriptlaufzeiten man so einem IPS-Server maximal zumuten kann?!

Oha, najo 80 Sekunden ist dann doch ein bissi sportlich. Wie sieht’s aus wenn Du die Werte einzeln anrufst?

via Sony Xperia Z Ultra

schrieb ich weiter oben. 9 sekunden je wert. und das läuft absolut proportional - also ca. 45sek für 5 werte, ca. 80 sekunden für 9 werte

Liegt Deine Leitung bergauf? :wink:
Na Spaß bei Seite jetzt.

Welche der 3 Variante zum Verbindungsaufbau hast Du in Verwendung?

via Sony Xperia Z Ultra

Cat7-Erdkabel. Vielleicht friert es zu sehr? :wink:
Am Ethernet liegts nicht, hab da an anderen Geräten ganz normalen Throughput & Latenz

Du meinst welche Auth-Variante? Ich nutze die erste im Skript, also php only.
Sollte das schnellste sein - so muss kein Modul angesprochen werden.

Ich tippe auch auf ne Engstelle im LAN-Kabel. Wahrscheinlich eine zu eng getwistete Ader oder die falsche Farbe. Oder die NSA hat sich aufgeschaltet und stört dadurch etwas den Datenstrom. Zusätzliche Abbiegemöglichkeiten verwirren Daten nur - siehe Stauforschung.
Mhmmm, blödes Problem.
[emoji1][emoji1][emoji1]

Gesendet von iPhone mit Tapatalk

Mhm, liest Du die Werte über eine Schleife aus?
Oder so wie ich, nix vastehen php, schön Zeile für Zeile schreib Dir die Finger krumm :-?

via Sony Xperia Z Ultra

Ich lese die 11 Werte am Stück. Ich hab so viele Baustellen, dass ich mir Goldrandlösungen aktuell nicht leisten kann.

Gesendet von iPhone mit Tapatalk

Mein Skript steht in Post#66 dieses Threads.
Muss mich leider Boui anschließen - dieses Thema werd’ ich erstmal auf der To-Do-Liste lassen müssen - irgendwann hab ich wieder Zeit für sowas.

Bis dahin wär’s nur schön gewesen wenn mir einer gesagt hätte das 80 Sekunden Skriptlaufzeit für so’nen durchschnittlichen IPS-Server kein Problem darstellen :wink:

Bei mir 60 Sekunden maximal Skriptausführzeit und 15 gleichzeitige Threats.

Ich habe da 2 Skript die da ab und zu mal an die 50s Laufzeit kommen.

Hat meinen IPS Server noch nicht wirklich beeindruckend. Und mein Server is nix besonderes (18Watt lüfterlos).

via Sony Xperia Z Ultra

n’Abend :slight_smile:

Das Auslesen der Schaltprogramme habe ich jetzt endlich hinbekommen.

Aber irgendwie will das Schreiben so überhaupt nicht funktionieren.
Hat das schon jemand erfolgreich umgesetzt?:confused:
Über Hilfe würde ich nicht klagen :smiley:

Besten Dank,
Gruß
Manfred

Ganz vielleicht habe ich auch etwas das jemandem helfen könnte (mein erster wirklich produktiver Beitrag der nicht nur Fragen stellt):

Und zwar heizt der Kessel ja bekanntlich das warme Wasser gerne und oft (bei mir so ca. alle 1,5h) - das ist aber z.b. Abends (oder Morgens) je nachdem wann man so duscht überhaupt nicht notwendig.
Beispielsweise ist es absoluter Unsinn, wenn bis 22:00 geheizt wird um 21:50 nochmal eine Ladung Wasser aufzuheizen - am Morgen ist das sowieso kalt.

Leider kann man der Steuerung auch nicht direkt „verbieten“ WW zu heizen.

Dementsprechend habe ich eine Lösung gefunden, die MC10 zu überlisten - und zwar durch den Tag&Nacht Modus:

Das Skript macht nun folgendes:
Es gibt 4 Variablen die hier von Bedeutung sind:

  1. Heizen (also Absenken oder nicht) boolean
  2. Warmwasser - boolean
  3. Warmwasserautomatik - boolean
  4. Warmwassertemperatur (kann der Kessel selbst, ich messe aber lieber mit nem 1-Wire)
    (dazu kommen als Nr. 5+6 die jew. gewünschten Heiz- bzw. Absenktemperaturen, im Skript $tagtemp + $nachttemp)

Das Skript wird jeweils durch eine Änderung der Variablen 1-3 getriggert, dazu läuft es alle 5 min.
Wenn jetzt z.b. Abends kein warmes Wasser benötigt wird (z.b. ab 19:00) aber die Heizung warm bleiben soll, setzt man 2. auf FALSE, dadurch wird die Heizung in den Nachtmodus (keine WW-Bereitung) gebracht dabei ist Solltemp=Heiztemperatur, bei mir dann 21°C.

Wenn die Automatik aus ist, schaltet das Skript auf die Heizung-Zeitschaltuhr zurück.

Zusätzlich habe ich festgestellt, dass meine Heizung auch mal gerne 71°C heißes Brauchwasser herstellt (45°C ist eingestellt) - daher schalte ich
a) bei 46°C (siehe die letzten beiden Blöcke) bei 46°C zurück auf Nachtmodus und
b) bei aktueller Temperatur 43°C und mehr bleibt die Anlage im Nachtmodus.

<?
include_once( "40745.ips.php" ); // KM200 Gateway
define( "km200_crypt_key_private", hex2bin( KM200_GetAESKey( 19465 /*[Buderus Gateway\AES-Key-Generator for KM200 Web Gateway]*/  ) ), true );

$heizmodus=GetValueBoolean(57740 /*[Funktionen Automatik\Warmwasserautomatik\Heizmodus]*/ );
$wwbereitung=GetValueBoolean(39461 /*[Funktionen Automatik\Warmwasserautomatik\Warmwasserbereitstellung]*/ );
$tagtemp=GetValueFloat(45509 /*[Funktionen Automatik\Temperaturvorwahl\Buderus-TAG]*/ );
$nachttemp=GetValueFloat(24778 /*[Funktionen Automatik\Temperaturvorwahl\Buderus-NACHT]*/ );
$wwtemp=GetValueFloat(40616 /*[Messsystem\Funktionen etc.\HomeMatic Systemvariablen\homeduino_x_A2]*/ );
$wwautomatik=GetValueBoolean(10258 /*[Warmwasserautomatik]*/ );


#############   Automatik AUS             ########################
If ($wwautomatik==false){
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Automatik ausgeschaltet");
km200_SetData('/heatingCircuits/hc1/operationMode',"auto");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/night', $nachttemp);
km200_SetData('/heatingCircuits/hc1/temperatureLevels/day', $tagtemp);
}
else {


#############   Nachtbetrieb + kein WW    ########################
If (($heizmodus==false) and ($wwbereitung==false) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"night");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/night', $nachttemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Absenken /kein WW");
}
#############   Tagbetrieb + kein WW      ########################
If (($heizmodus==true) and ($wwbereitung==false) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"night");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/night', $tagtemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Normal / kein WW");
}
#############   Nachtbetrieb +  WW        ########################
If (($heizmodus==false) and ($wwbereitung==true) and ($wwtemp < 43) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"day");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/day', $nachttemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Absenken / mit WW");
}
#############   Tagbetrieb +  WW          ########################
If (($heizmodus==true) and ($wwbereitung==true) and ($wwtemp < 43) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"day");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/day', $tagtemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Normal / mit WW");
}
#############   Nachtbetrieb +  WW        ########################
If (($heizmodus==false) and ($wwbereitung==true) and ($wwtemp >= 46) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"night");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/night', $nachttemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Absenken / WW warm");
}
#############   Tagbetrieb +  WW          ########################
If (($heizmodus==true) and ($wwbereitung==true) and ($wwtemp >= 46) and ($wwautomatik==true)){
km200_SetData('/heatingCircuits/hc1/operationMode',"night");
km200_SetData('/heatingCircuits/hc1/temperatureLevels/night', $tagtemp);
SetValueString(28694 /*[Funktionen Automatik\Warmwasserautomatik\Heizstatus]*/ ,"Normal / WW warm");
}}

?>