Buderus Logamatic Web KM200 - Reloaded

Mhmmm, bei mir antwortet gerade die km200 nicht mehr auf das skript. Sie reagiert aber auf die App.
Ght es noch bei Euch?

seltsam

Hmm gute frage - ich kann ja nicht wirklich was auslesen (Post vorher) - so kann ich auch nicht genau sagen wie das überhaupt gehen soll :-/
Hast Du eigentlich mal ein Bsp. wie Du das ausliest?
Gruß,
Matthias

Hi Matthias,

hier nochmal mein Code, mit dem ich nur die für mich wichtigen Variablen auslese.
Einfach in der Array-Liste deine IDs anpassen auf die bereits angelegten vorhandenen Variablen.


<?
include_once( "45824.ips.php" ); // KM200 Gateway

function km200_MyGetData( $REST_URL )
{
  $options = array(
    'http' => array(
      'method' => "GET",
      'header' => "Accept: application/json
" .
                  "User-Agent: TeleHeater/2.2.3
"
    )
  );
  $context = stream_context_create( $options );
  return json_decode(
    km200_Decrypt(
      file_get_contents(
        'http://' . km200_gateway_host . $REST_URL,
        false,
        $context
      )
    ),
    true 
  );
}

$REST_services = array(
14264 /*[Heizung\Buderus\/system\/system/sensors\/system/sensors/temperatures\/system/sensors/temperatures/outdoor_t1]*/,
41567, #/system/appliance/numberOfStarts
11901, #/system/appliance/actualPower
15853, #/system/appliance/workingTime/centralHeating
56643, #/system/sensors/temperatures/supply_t1
16276, #/system/sensors/temperatures/supply_t1_setpoint
24867, #/heatingCircuits/hc1/temperatureLevels/day (writeable) (recordable)
37998, #/heatingCircuits/hc1/temperatureLevels/night (writeable) (recordable)
14776 #/heatingCircuits/hc1/temperatureRoomSetpoint (writeable) (recordable)
);

//durch alle Services gehen, mit Wert und Einheit rausschreiben
foreach ($REST_services as $service) {
         $json = km200_MyGetData( IPS_GetName($service) );

         SetValue($service,$json["value"]);
}
?>

Suuuuper - danke!
Werde ich am Donnerstag sofort testen - muss „leider“ erstmal 3 Tage nach Norwegen…

###Edit#### War ungeduldig und habe es direkt Remote auf den Server gespielt :wink:

Scheint zu funktionieren :slight_smile:
(den vorherigen Post-Edit mit dem geschilderten Problem ignorieren wir mal…)

Ich habe allerdings gerade noch etwas zu fragen:

Warmwasser-Solltemp:
Gibt es irgendwo einen weg die zu beinflussen?

Messwerte:
Ich messe mit OneWire div. Werte wie Heizwasser Vor- und Rücklauf. Meine Steuerung kann diese selbst nicht messen.
(Ich habe die MC10 und ein BRM-Brennermodul für 7-Pol. Brenner)
Kann ich das irgendwo sinnvoll „Rückführen“?

Variablenaktualisierung:
Wie oft aktualisiert Ihr die Werte?
Ich habe jetzt mal die allg. Werte auf 5min und Brenner-Power (was ja faktisch an und aus ist) wird jede Minute aktualisiert - aus letzterem schreibe ich dann auch eine Variable auf True(100%) und False(0%) die ich logge - so kann ich sehen wie oft der Brenner gelaufen ist.

  • Frage dazu: Wie oft aktualisiert Ihr?
  • Ist das in euren Augen zu viel oder zu wenig? (Ich weiß, im Endeffekt muss das jeder selbst wissen etc, aber eine Fremdmeinung kann nicht schaden :slight_smile: )

Zeiten erfassen:
Da ich ja wie o.g. den Brennerbetrieb mitschneide, wäre es ja schon ziemlich cool die Betriebsdauer mitzuschneiden - daher die Frage - (ich würde diese gerne als Balken/Tag in einem Diagramm visualisieren) - wie bekomme ich aus der True/False Sache eine Laufzeit pro Tag?
Ich könnte nat. jede laufende Minute einen Counter Zähler hochlaufen lassen und durch die Min/Tag Teilen. Dann das ganze um 23:59 in ne Variable schreiben… Aber ich habe irgendwie das Gefühl es geht sicher auch eleganter. Kann wer helfen?

Gruß,
Matthias

Also meine Beobachtung ergab, dass das KM200 bei Abfragebzyklen unter 1 Minute anfängt zu zicken und bald darauf nicht mehr ansprechbar ist. Und zuviel Werte auf einen Schwung mag mein KM200 auch nicht.
Ich frage alle 2 Minuten die Werte in mehreren Blöcken ab.

via Sony Xperia Z Ultra

Ich habe auch ziemliche Probleme mit der Stabilität des Gateways. Wobei ich mir eigentlich eine recht brauchbare Logik für die Abfrage ausgedacht habe:

  • alle Minute werden die wichtigsten paar Werte abgefragt
  • zusätzlich alle 10 Minuten noch ein paar weniger wichtige
  • alle 24 Stunden werden rekursiv alle Werte ausgelesen. In der Hoffnung, dass durch einen Update plötzlich zusätzliche Werte erscheinen

Leider lebt das Gateway keinen Tag am Stück. Irgendwann stürzt es ab und läßt sich nur noch durch Strom an/aus oder Reset zum Leben erwecken. Da es in der GB145 verbaut ist und ich nicht ohne Not die Heizung vom Netz nehmen möchte bleibt dann nur der Reset, mit anschliessendem Passwort neu setzen und Reservoir Wert neu schreiben.

Läuft das Gateway wirklich dauerhaft wenn man seltener abfrägt, oder dauert es bist zum Absturz nur länger, da weniger Abfragen kommen?

Ich kann übrigens nicht bestätigen, dass die Buderus App weiter funktioniert. Wenn das Gateway tot ist ist es tot. Die App braucht aber manchmal ne Weile um es zu merken.

Ok, mit der neuen Taktik funktioniert das Gateway jetzt erstmal stabil: Ich frage all 15 Sekunden je einen Wert ab. Insgesamt 20 Werte. Dann wird jeder Wert alle 5 Minuten geupdatet. Das liefert sehr schöne Charts. Demnach sind die Bulk-Requests das Problem das es zu vermeiden gilt.
BTW: Bekommt eigentlich jemand Werte für Abgastemperatur und Flammenstatus? Das wäre noch sehr interessant. Kommt leider nichts zurück.

Abgastemperatur: ‚/system/sensors/temperatures/chimney‘
Flammenstatus: ‚/heatSources/flameStatus‘

Wenn nichts ankommt, könnte es sein, dass die Sensoren nicht vorhanden sind?
Was sagt Dein RC? Sind dort die Werte auslesbar?

Gruß
Manfred

Gibt es überhaupt diese Sensoren für das Abgas? Ich hab die in real noch nicht gesehen. Abgas ermittel ich extern und der Flammenwächter sollte gehen.

Gesendet von iPhone mit Tapatalk

Kurzerhand den FS20 Temperatursensor des Gefrierschranks in die Messöffnung für den Schronsteinfeger gehängt und schon habe ich die Abgastemperatur. Das Gerät hat anscheinend tatsächlich keinen Sensor.
Jetzt kann ich Vorlauf, Rücklauf, Taktung, Modulation, Abgastemperatur und exakten Ölverbrauch in einem Chart darstellen und die Anlage optimieren. Und was kann die Buderus App? Ein Diagramm der Aussentemperatur. Das ist schon peinlich.

Hi,
ich frage die wichtigsten Werte alle 5min ab, das reicht mir.
Dann rekursiv alle 24std einmal alles.
Werde mal den Hinweis aufnehmen und demnächst nur alle 15 oder 30 sek. je einen Wert abfragen.
Mein Gateway zickt zwar nicht, aber mich nervt es, dass ich derzeit 'ne PHP-Laufzeit von fast 2 Minuten habe.

Bzgl. Brennerstarts und Brenndauer im Tagesverlauf logge ich einfach nur die entsprechenden Variablen aus dem KM200 (CentralHeatingWorkingTime und NumberOfStarts oder so ähnlich). Das aggreriere ich dann täglich und sehe wunderschöne Charts. z.B. 500 Minuten mit 50 Starts pro Tag. Es reicht mir zu wissen, dass an diesem Tag die Brennerlaufzeit DURCHSCHNITTLICH also 10min war.

Übrigens erschreckend, wie genau ich mit der Brennerlaufzeit aus dieser Variable multipliziert mit dem Ölverbrauch pro Stunde (gemäß Typenschild) meinen gesamten Ölverbrauch messen kann. Stimmt exakt mit dem überein, was mir auch der LevelJet aus meinem Tank meldet. Aber meine Kiste moduliert auch nich mit zweistufigem Brenner oder so’n Gedöns :wink:

Gruß,
ika

Ist doch mein Reden. [emoji106]

Gibt es modulierte Ölbrenner von Buderus? Bei Gas ja aber Öl?

Gesendet von iPhone mit Tapatalk

Hey - also Abgastemperatur bekomme ich nicht, wie schon erwähnt kann man den Betrieb des Brenners mittels dem folgendem feststellen:

$Brenner_Str=GetValueFloat(22370  /*[Buderus Gateway\/system\/system/appliance\/system/appliance/actualPower]*/);
If ($Brenner_Str == "0") {
	SetValueBoolean (19093  /*[Buderus Gateway\Brennerstatus]*/, false);}
Elseif ($Brenner_Str == "100") {
	SetValueBoolean (19093  /*[Buderus Gateway\Brennerstatus]*/, true);}

Dabei Update ich (vorher) die o.g. Variable (22370) und prüfe dann ob 0 oder 100%. Ich habe einen Brenner mit 7-Pol Stecker der nicht modulierend ist. Daher hat der bei mir nur 0 oder 100%.

Aber wie schon vormals gefragt - wie bekomme ich möglichst elegant die Brennerlaufzeit aus der Variable raus (bei mir konkret „19093 Brennerstatus“.

Gruß,
Matthias

Mein GB145 moduliert mit 1:3, also von 30-100%. Wenn er nicht gerade Warmwasser macht läuft er bei mir meistens zwischen 30% und 50%, scheint also Sinn zu machen. Er taktet für meinen Geschmack aber immer noch zuviel.

Zum Thema Verbrauch:

  • <Aktueller Tankinhalt> mal /system/heatSources/hs1/fuel/density mal /system/heatSources/hs1/fuel/caloricValue rechnet Liter in kWh um. Bei mir sind das dann z.B. 25000 kWh die ich abheizen kann.
  • Diesen Wert in /system/heatSources/hs1/energyReservoir setzen
  • Jetzt werden in /system/heatSources/hs1/energyReservoir automatisch die verbrauchten kWh abgezogen
  • Wer will kann die kWh wieder in Liter umrechnen

Das gibt extrem genaue Charts.

Interessant. Ich lese gerade, dass er auch ne Lamdasonde hat. Cool was es alles gibt, um Wasser zu erhitzen. Respekt. [emoji6]

Gesendet von iPhone mit Tapatalk

Hi nochmal,

wollte gerade meinen Abfragezyklus ändern - wie beschrieben nur 1 Variable alle 15 Sekunden oder so auslesen.
Habe dabei festgestellt, dass das Skript dann auch eine Laufzeit von ca. 9 Sekunden hat. Und das läuft ganz proportional… frage ich also 2 Variablen auf einmal ab, sind es 18 Sekunden. Bei 3 Variablen 27 Sekunden usw.

Ich nutze dazu mein Skript aus meinem Post #66 in diesem Thread. Kann mir das einer bestätigen? Ist die Laufzeit bei euch auch etwa so hoch? Oder nutzt Ihre andere Skripte?

Gruß,
Michael

Laufzeit ist bei mir unter einer Sekunde für einen einzelnen Wert. Vom Skript her kann man ja praktisch gar nichts falsch machen (REST aufrufen, Wert analysieren, Variable erzeugen oder wegschreiben). Allerdings verwende ich nicht das KM200 sondern habe IP inside, also das Gateway eingebaut. Ich bezweifle aber dass sich die Technik in irgendeiner Form unterscheidet.

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.