Buderus Logamatic Web KM200 - Reloaded

@ika:
same problem!

Ich habe einen GB162 mit eingebautem KM50. Bei jedem dritten Aufruf scheint die Antwort auszubleiben. Da ich den Ofen über diese Schnittstelle auch steuere, werden die Kommandos in etwa 30% aller Fälle nicht umgesetzt.

Ich kann das Verhalten nicht direkt nachvollziehen. Aufgefallen ist mir aber, dass die Kommunikation über die Buderus-eigene App ebenfalls sehr stockend läuft. Die App wirkt wie abgestürzt, weil sie dann auch ewig auf Daten wartet. Manchmal geht alles flott.

Um Überschneidungen auszuschließen, habe ich den externen Port gesperrt. Keine Verbesserung. Werde mal den Buderus Service kontaktieren. Ev. ist es ja ein echtes Hardwareproblem…

Gruß
Fabian

btw:
Wie kommt Buderus auf die Idee beim RC300 die Funktionen Dauerbetrieb (Sonne) und Nachtabsenkung (Mond) einfach wegzulassen? Wenn ich das Haus dauerhaft heizen oder die Heizung deaktivieren will, muss ich in die Programmierung wechseln um diesen Zustand zu erreichen. Vollkommen inakzeptabel!!! :mad:

Hallo Miteinander,

ich habe das KM200 bestellt.
Jetzt habe ich zur Vorbereitung mal das Skript usw. eingepflegt.

Ich bin nun bei weitem (siehe alle möglichen anderen Posts) der Beste im Umgang mit PHP und IPS (Mühsam ernährt sich das Eichhörnchen) und komme zu einem Problem:

Wenn ich nun in einem Test-Skript folgendes mache:

<?
km200_SetData( '/heatingCircuits/hc1/temperatureLevels/comfort2', 23.0 );
?>

Sollte das doch (wenn auch ohne Effekt) funktionieren.
Leider sagt IPS „undefined Function“ - muss ich das km200 Script von Andreas irgendwie „einbinden“ oder sowas?
Konnte da nichts finden.

Aktuell ist es nur im Baum und einmal ausgeführt.

Gruß,
Matthias

Ohne dass Du die passende Funktion einbindest, wird das nix. IPS kann ja von Haus nichts mit km200_SetData anfangen.
Also mit include das vorbereitete (die Sache mit dem AES-Key aus Beitrag 1) km200.php Skript einbinden.
Dann klappt das schon.

Gesendet von iPhone mit Tapatalk

Sprich am Anfange eines jeden Skripts include km200.php etc?
Ich dachte man kann IPS die Befehle „beibringen“ und es wüsste dann wo es „nachsehen“ muss.

Etwas anderes (auch zum KM200):

Es gibt ja eine Variablen-Übersicht, wo kann ich denn schreiben oder nur lesen? (also hat das mal jemand getestet?)
Und wenn ja - welchen Typ? (ich denke das ein oder andere wird ja evtl. nur Boolean sein - könnte aber auch 0/1 sein)

Ich würde ganz gerne die gemessene Raumtemperatur überschreiben, allerdings befürchte ich, dass ich damit keinen Erfolg haben werde bzw. diese sofort wieder von dem RC35 Raumthermostat überschrieben werden.
Variable ist diese:

/heatingCircuits/hc1/roomtemperature

Gruß,
Matthias

Wenn das Skript Funktionen enthält, die dort definiert sind, natürlich ja.
Das ist „beibringen“. :wink:

Das hatte ich Dir doch schon alles am 22.12. geschrieben. :rolleyes:

Der Link auf das Ausleseskript hätte auch die erste Frage gelöst, denn schon im ersten Skript hast Du ein schönes Beispiel für das Einbinden drin.

Ist halt blöd, wenn man alles mehrfach erzählen muss. :cool:

Das Ausleseskript durchsucht alles für Dich und trägt sogar die Variablen richtig ein. Du musst nicht das Rad neu erfinden.
Dort siehst Du auch sofort ob beschreibbar oder nicht. Einfach mal laufen lassen, denn die Variablen zeigen dies in der Beschriftung.

Und ja, natürlich ändert dir die RC35 u.U. Werte und ne gemessene Raumtemperatur wird ziemlich sicher nicht beschreibbar sein. Warum auch.

Also bitte lese Dich erst nochmal ins Thema ein und spiel etwas.

Danke! Mir war nicht klar, dass ich mit dem Skript zum Variablen auslesen auch direkt den Typ geliefert bekomme.

Ja, hatte ich befürchtet - ich habe gehofft jemand weiß ob es möglich ist das zu unterbinden. (Raumtemperatur)
Warum war ja bereits erläutert.

Übrigens habe ich mir einen Haufen (weil günstig) One Wire Temperatur Sensoren bestellt.
Hatte mal vor die an vor und Rücklauf der Heizung zu hängen - damit könnte man ja ansich eine bedarfsgesteuerte Regelung verwirklichen - das Prinzip ist mir ansich klar, allerdings weiß ich nicht genau wie das mit der MC10/KM200 hinbiegen könnte.

(keine Sorge, ich möchte die nicht elektrisch an die Heizung klemmen - ich benutze die mit einem Arduino)
Ideen jemand?
Btw - bzgl Doppelpost etc - sollte ich für die letzte Frage lieber einen neuen Thread öffnen? Betrifft ja auch Buderus und KM200.

Gruß,
Matthias

Klar kannst Du 1wire Sensoren nutzen. IPS verbindet ja die Welten. Die meisten User dürften diese Sensoren im Einsatz haben und dementsprechend was damit steuern - z.B. über den KM200 die Heizung.

Aber unter uns. Du benötigst ne Menge Erfahrung dazu. Back erst einmal kleine Brötchen. Z.B. Eine Tag/Nachtmodus Umschaltung über den Bedarf (also z.B. die Ventilstellung) oder die HKP bei Nacht und geschlossenen Ventilen abschalten. Ich würde mich langsam vortasten.

Gesendet von iPhone mit Tapatalk

Ich werde die 1-Wire mit dem Arduino in IPS „durchreichen“.

Ja hast schon recht - ich zerbreche mir auch den Kopf, wie ich das möglichst komfortabel, sparsam und nat. auch bestmöglich automatisch hinbekomme. So richtig stellt sich da allerdings noch nichts ein :slight_smile:

Aber mit der Ventilstellung ist z.B. etwas woran ich bisher nicht gedacht habe.
Allerdings repräsentiert das die Stellung unterm Strich einfach das Delta zw. Raumtemp und Solltemp.
Das Ganze nochmal verwurschtelt durch die Ventillogik. Für die Pumpe sicher - aber für die Umschaltung etc.?

Sag mal Boui, Du hast doch auch ne MC10 - dann ja auch sicher ein KM200, kannst Du mir nicht einmal einen „bunten Strauß“ deiner Programme „geben“? Dann kann ich mal sehen was Du so anstellst und mir vielleicht auch was abgucken.

Im Endeffekt ist das ganze ja ein Vortasten - das ganze System wächst ja.

Gruß,
Matthias

Die Ventilstellung aller Ventile im Haus zeigt doch gut den aktuellen Wärmebedarf des Hauses i.V. zu Deiner Einstellung und den anderen Werten.
Entweder zur Umschaltung auf Absenkung oder zur Aktivierung, weil z.B. ein oder mehrere Räume zu stark absenken und Deine Heizung das über den Referenzraum nicht mitbekommt.
usw.

Und nein, ich habe einen buten Strauß voller Ideen und individuelle Einzellösungen, da ich zeitlich einfach nicht dazu komme, dass mal sinnvoll in ein Gesamtkonzept zu packen. Aktuell nutze ich swiftys Skript und den Rest vereinzelt mit slashs Zugriff auf dem KM200.

Hallo, ich habe jetzt schon alles durchsucht, kann mir jemand sagen ob ich auslesen kann in welschem Modus sich die heizung befindet. Ich sehe nur das sie auf „Auto“ steht aber nicht ob die jetzt automatisch im Tag oder im Nachtbetrieb ist.

Danke

Du erkennst es an /heatingCircuits/hc1/temperatureRoomSetpoint i.V.m /heatingCircuits/hc1/operationMode

Ja genau und da: „/heatingCircuits/hc1/operationMode“ sehe ich leider nur das ich im Auto Modus bin aber nicht ober gerade Nacht oder Tag ist.

Danke

So richtig verstehe ich nicht, was Dir fehlt.

Nur weil in einer StringVariable nicht explizit „Tag“ oder „Nacht“ steht?

Du hast in /heatingCircuits/hc1/temperatureLevels/day die von Dir festgelegte Tagtemperatur und in /heatingCircuits/hc1/temperatureLevels/night die von Dir festgelegte Nachttemperatur.

Du vergleichst nun /heatingCircuits/hc1/temperatureRoomSetpoint mit den Werten aus den o.a. Variablen und schon hast Du den Modus.
Wenn Du das in Worten in einer Variablen haben möchtest, dann ist das ja wohl simpel zu lösen, in dem Du Dir automatisierst eine StringVariable entsprechend mit „Tag“ oder „Nacht“ füllst.

Ah sorry jetzt ja über die Temperaturen ja stimmt das geht. Weil in „operationMode“ steht ja immer Auto weil die Steuerung ja auf Auto steht.

Danke

Genau. [emoji106]

Gesendet von iPhone mit Tapatalk

Habe das jetzt so gelöst wer Interesse hat:

<?
// Script zum bestimmen ob Tag- oder Nachtbetrieb

$Temperatur_Tag = GetValueFloat(25559); //Variable Temperatur Level Day
$Temperatur_Nacht = GetValueFloat(20158); //Variable Temperatur Level Night
$Temperatur_SetPoint = GetValueFloat(29926); //Variable Temperature Room Setpoint
$Betriebsmodus = 50067; //Neue Stringvariable anlegen

If ($Temperatur_SetPoint == $Temperatur_Tag)
	{
	SetValueString($Betriebsmodus, "Tag");
	}
elseIf ($Temperatur_SetPoint <= $Temperatur_Nacht)
	{
	SetValueString($Betriebsmodus, "Nacht");
	}
?>

Das Script führe ich immer bei einer Variablenänderung der Variablen: „Room SetPoint“ aus.

Markus

Hallo Miteinander,

ich habe soeben das KM200 angeschlossen.
Ich habe auch alle Variablen auslesen können - soweit so gut.
Irgendwie kann ich auch auch etwas schreiben - da wird es aber schon mau…

Ehrlich gesagt habe ich nämlich keine Idee, wie ich diese „aktuell“ geschweige denn ein zweites Mal auslese.
Durch das Variablen-Auslese-Skript wird ja alles nochmals angelegt (habe ich auch wieder entfernt).

Ich habe Testweise folgendes gemacht:

<?
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 );
km200_SetData( '/heatingCircuits/hc1/temperatureLevels/day', 21.0);
km200_GetData( '/heatingCircuits/hc1/temperatureLevels/day');
?>

Wobei dann bei der Temperatur nach wie vor 21,5°C steht (in der o.g. Variable), in der Easycontrol-App und an der RC35 jedoch 21.

Wie haltet Ihr das aktuell - führt Ihr ein Skript zyklisch aus, welches mit GetData die Daten ausliest oder wie funktioniert das?
Zumal ja bei mir nichts „ankommt“.
Danke schonmal!

Gruß,
Matthias

PS: Wenn ich etwas habe, was auf „off“ steht, setze ich das dann auf „On“ oder muss ich das auf True setzen?
Zum Überblick mal ein Screenshot des „Systems“.

Wie du siehst, funktioniert dein Skript bzgl. des Setzens der Temperatur.
Deine GetData-Anweisung funktioniert so jedoch nicht.

Die Zeile muss eher lauten:


SetValueFloat(12345 /*ID der Variable im IPS-Baum*/, km200_GetData( '/heatingCircuits/hc1/temperatureLevels/day'););

(kann es gerade nicht prüfen, habe hoffentlich keinen Syntax-Fehler drin - bin nicht so der PHP-Profi :wink:

Ggf. muss davor auch noch ein kurzer IPS_Sleep gesetzt werden, weil ich nicht weiß, wie schnell die KM200 auf deinen SetData-Befehl reagiert.

Alternativ setzt du erstmal nur die Wunschtemperatur und rufst dann zyklisch z.B. alle 2 Minuten ALLE gewünschten Werte ab.

Danke Ika!
Allerdings führt das nach wie vor zu nichts - ich habe jetzt so ziemlich alles an Variationen durch für die Schreibweise hinter dem KM200_GetData (im Bsp. unten war nur ein „;“ zuviel).
Allerdings behauptet IPS entweder, die Variable wäre „NULL“ oder wenn ich in nen String schreibe, dann false - dabei ist es gleichgültig woher ich auslese.

Hat sonst jemand eine Idee?

Noch etwas anderes (aber nicht so wichtig wie das oben!):

Ich habe mir jetzt mehrfach und auch sehr ausgiebig den Variableb-Wust angesehen - allerdings sehe ich erstmal keine Möglichkeit für…
A) Warmwasseraufbereitung (Einschalten / Unterbinden) ausser mittels Day & Night
B) Einschalten der Zirkulationspumpe für WW
Ich habe da zwar eine Idee, aber das ist mehr durch die Brust ins Auge :slight_smile:
(Wenn kein WW gemacht werden soll, aber Tagtemp, Night-Level auf 21°C und Betrieb auf Night)
(Wenn WW gemacht werden soll im Absenkbetrieb, dann Day-Level auf z.b. 17°C und Betrieb auf Day)
Finde ich aber mehr als murksig - einerseits, weils einfach ein Wahnsinns-Durcheinander ist und andererseits weils einfach nicht so richtig sauber ist.

Gruß,
Matthias

Hi Matthias,

sorry ich kann derzeit nicht an mein IPS um das mal nachzuschauen, vll. kann dir jemand anders helfen.
Mach mal statt SetValueFloat(… nur SetValue(… ich glaub da war irgendwas wegen den Typen.
In 'nen String darfst bzw solltest du nicht schreiben?! Sondern in die bereits vorhandene temperatureLevels/day-Variable, welche ja als Float angelegt ist.

Bzgl. deiner anderen beiden Punkte bitte mal hier im Forum suchen, ich glaube das wurde schonmal besprochen. Soweit ich das in Erinnerung habe, kannst du das WW nicht so wie von dir gewünscht mit der KM200 steuern.
Im Zweifel einfach die WW-Zirkulationspumpe per Homematic/KNX/Sonstwas-Aktor an- und ausschalten.

Viele Grüße,
Michael