NEWS
UNSOLVED Hm IP Thermostat u. Türkontakt über Skript
-
Hallo, ich habe eine Problem mit der Homematic IP und dem Ansteuer über IoBroker.
Ich habe folgende Zusammenstellung:
IoBroker auf einem Raspberry 3
ELV Charly mit Raspberry 4B, eq3 und CCU3. Software RaspberryMaticAn der CCU3 habe ich 3 Thermostat HmIP-eTRV-B und 3 Türkontakte HmIP-SWDM aus dem Starter Set HmIP-SK9 angemeldet.
In IoBroker habe ich die Adapter hm-rega.0 und hm-rpc.0 instaliert.
Mit einem Skript aus IoBroker möchte ich, wenn das Fenster geöffnet wir, dass das Thermostat auf Handbetrieb schaltet und eine Themperatur von 19° am Thermostat eingestellt wird.
Wird das Fenster wieder geschlossen soll das Thermostat wieder auf Automatik umschalten.
Das habe ich realisiert mit folgendem Skript.
Hier auch als Java:
`on({id: "hm-rpc.0.001558A99D5DC5.1.STATE"/*HmIP-SWDM 001558A99D5DC5:1.STATE*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.001558A99D5DC5.1.STATE").val == true) { setStateDelayed("hm-rpc.0.002018A99D396D.1.CONTROL_MODE"/*HmIP-eTRV-B 002018A99D396D:1.CONTROL_MODE*/, 1, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_MODE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_MODE*/, 1, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_TEMPERATURE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_TEMPERATURE*/, 19, 30000, false); // Wenn Fenster Auf, Thermostat nach 30 sec. auf Handbetrieb und Temperatur aus 9 C° } else if (getState("hm-rpc.0.001558A99D5DC5.1.STATE").val == false) { setStateDelayed("hm-rpc.0.002018A99D396D.1.CONTROL_MODE"/*HmIP-eTRV-B 002018A99D396D:1.CONTROL_MODE*/, 0, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_MODE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_MODE*/, 0, 30000, false); // Wenn Fenster Zu, Thermostat wieder auf Automatik } });
Das funktioniert auf manchmal.
Aber nicht immer.
Ich bekommen auch auf der CCU3 manchmal eine Fehlermeldung, dass die Gerätekommunikation gestört ist.
Was mache ich hier falsch? -
@RalfEngelberth bitte code und logs in Code tags Packen. Es ist super schlecht zu lesen und unübersichtlich vorallem auf Mobilen Geräten.
Bitte hol das nach, dafür gibt es die Bearbeiten funktion rechts unten am Beitrag im 3 Punkte Menü.
-
@RalfEngelberth
Hi, eigentlich würde ich sagen das dein Skript so funktionieren sollte...
Nur: beim zurückschalten in den Auto Betrieb, veränderst du nicht den Temperatursollwert. Dieser bleibt dann (so ist es bei mir) bei 19°C...Mit den Verbindungsabbrüchen, kann ich nichts zu sagen, das könnte vieles sein...
Vllt könntest du die Verbindung triggern und die Routine (if , then ...) nochmal durchlaufen lassen wenn die Verbindung wieder auf true schaltet.Z.b.: Ist (Datenpunkt Verbindung) größter als vorher, dann (alles was unter deinem jetzigen Trigger ist) ausführen...
`on({id: "hm-rpc.0.Datenpunkt_der_Verbindung"/*Datenpunkt zur Homematic*/, change: "gt"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.001558A99D5DC5.1.STATE").val == true) { setStateDelayed("hm-rpc.0.002018A99D396D.1.CONTROL_MODE"/*HmIP-eTRV-B 002018A99D396D:1.CONTROL_MODE*/, 1, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_MODE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_MODE*/, 1, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_TEMPERATURE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_TEMPERATURE*/, 19, 30000, false); // Wenn Fenster Auf, Thermostat nach 30 sec. auf Handbetrieb und Temperatur aus 9 C° } else if (getState("hm-rpc.0.001558A99D5DC5.1.STATE").val == false) { setStateDelayed("hm-rpc.0.002018A99D396D.1.CONTROL_MODE"/*HmIP-eTRV-B 002018A99D396D:1.CONTROL_MODE*/, 0, 30000, false); setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_MODE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_MODE*/, 0, 30000, false); // Wenn Fenster Zu, Thermostat wieder auf Automatik setStateDelayed("hm-rpc.0.002018A99D396D.1.SET_POINT_TEMPERATURE"/*HmIP-eTRV-B 002018A99D396D:1.SET_POINT_TEMPERATURE*/, 22, 30000, false); /* Hier habe ich die Solltemperatur mit eingefügt */ } });
-
@RalfEngelberth danke.
-
@Rababersaft
Beim zurückschalten auf Auto Betrieb wird doch kein Temperaturwert benötigt.
Hier werden doch die Voreingestellten aufgerufen.
Ich habe gerade einen Test am laufen
Hier versuche ich es mal mit den vorgegebenen Werten. Also nur Umschaltung Hand / Auto
-
@RalfEngelberth sagte in Hm IP Thermostat u. Türkontakt über Skript:
@Rababersaft
Beim zurückschalten auf Auto Betrieb wird doch kein Temperaturwert benötigt.
Hier werden doch die Voreingestellten aufgerufen.
Ich habe gerade einen Test am laufen
Hier versuche ich es mal mit den vorgegebenen Werten. Also nur Umschaltung Hand / Auto
Hab eben damit wieder eine Fehlermeldung bekommen.
Hier der Error LOGhm-rpc.0 2019-10-20 22:15:06.886 error (3047) Error: XML-RPC fault: Generic error (TIMEOUT) hm-rpc.0 2019-10-20 22:15:06.885 error (3047) xmlrpc -> setValue ["1","CONTROL_MODE",1] INTEGER
In der CCU3 steht Gerätekommunikation gestört
-
@RalfEngelberth sagte in Hm IP Thermostat u. Türkontakt über Skript:
Das habe ich realisiert mit folgendem Skript.

Wenn ich das richtig interpretiere:
Immer wenn der Fensterkontakt seine Werte aktuallisiert (nicht nur bei ändern) sendet die CCU an den Thermostat, erzeugt unnötige viel Funkverkehr. Ich würde als erstes den DutyCycle prüfen ob der nicht überschritten ist.
Ich finde es fragwürdig mit einer externen Software eine Funktion nach zu bauen die über eine Direktverknüpfung der beteiligten Sensoren alleine erledigt werden kann. -
Ob ich die Änderung beim "Aktualisieren" oder bei "Änderung" abfrage bringt die Selbe Fehlermeldung.
Die letzte Fehlermeldung wurde aber ausgelöst, ohne dass der Fensterkontakt betätigt wurde.Den DutyCycle habe ich im hm-rega.0 aktiviert.
Der Steht bei allen Geräten auf false.
Müsste hier nicht ein Prozentsatz stehen.
Was kann ich damit auswerten?In der CCU3 ist DutyCycle auch aktiviert.
-
@RalfEngelberth kontrollier den besser in der CCU direkt.
Du bzw. die CCU und Sensoren/Aktoren dürfen nicht beliebig oft/lange funken, es gibt gesetzliche Einschränkungen. Vielleicht informierst du dich mal unter https://homematic-forum.de/forum/, da gibt es einige wichtige Threads zu. -
Hab hier auch noch was gefunden
Link TextHier wird der Duty Cycle erklärt.
Zitat:
Um gesetzlichen Vorgaben zu genügen, darf die CCU höchstens 1 % pro Stunde senden – also 36 Sekunden. Wird dieser Wert überschritten, gibt es üble Kommunikationsstörungen.Sendet den mein Skrip zu oft?
Er sendet doch nur z.B. bei Änderung. Oder? -
@RalfEngelberth wenn dein Blockly noch so ist wie im ersten Post dann bei jeder aktuallisierung auch wenn sich nichts geändert hat, dann gehts los und du sendest ohne Grund und die Zentrale quittiert...
Das treibt dann den DutyCycle hoch... -
@RalfEngelberth Im Gegensatz zur Aussage deiner verlinkten Seite ist der DutyCycle sehr wohl im WebUI der CCU direkt abzulesen, allerdings erst seit kurzem in neuerer Firmware der CCU.
-
@UweRLP sagte in Hm IP Thermostat u. Türkontakt über Skript:
Ich finde es fragwürdig mit einer externen Software eine Funktion nach zu bauen die über eine Direktverknüpfung der beteiligten Sensoren alleine erledigt werden kann.
Richtig.
Einfach eine Direktverknüpfung zwischen beiden Partner anlegen, den gewünschten Wert bei "Fenster offen" in der CCU Web-Gui eintragen, speichern und fertig.
-
@Röstkartoffel sagte in Hm IP Thermostat u. Türkontakt über Skript:
Einfach eine Direktverknüpfung zwischen beiden Partner anlegen, den gewünschten Wert bei "Fenster offen" in der CCU Web-Gui eintragen, speichern und fertig.
Zu erwähnen wäre noch, dass bei IP Geräten besser eine Heizungsgruppe angelegt wird, die Direktverknüpfung erfolgt dann automatisch.
-
Ich habe die Direktverknüpfung angelegt. Je Fensterkontakt und Raum.
Probiere ich mal aus.
-
@RalfEngelberth
Ich wollt neulich schon antworten und die Gruppen empfehlen, habe es dann aber vergessen.
Wenn Du Heizgruppen in der Raspberrymatik angelegt hast bekommst Du die auch in ioBroker. Dann einfach eine zusätzliche rpc Instanz mit Virtual Device anlegen, da sind dann die Gruppen drinn. Mache ich schon eine ganze Weile so. Für Dein Vorhaben brauchst Du dann gar kein Script. Ausserdem arbeiten die Geräte dann auch ohne CCU/Raspberrymatic/ioBroker, auch wenn die alle mal ausfallen weiter.
Wenn schon ein Script/Blockly, dann den Trigger auf wurde geändert stellen.In den Gruppen ist auch alles zu sehen was Du brauchst.
-
@dslraser
Danke für den Tipp.
Ich habe mir eine zusätzliche rpc Instanz angelegt. (hm-rpc.1)
Diesen finde ich aber nicht unter Objekte.
In der Instanz habe ich bei Port den 2010 eingetragen.
Danach war alles Grün.Was mache ich falsch?
-
@RalfEngelberth
hast Du mein Bild oben im Post gesehen ? Habe ich nachträglich eingefügt. Bei mir ist es rpc2 (die Nummer spielt aber keine Rolle) Da sind die Einstellungen und der Port zu sehen. Der Port 2010 ist nicht für Virrual Devices. -
@dslraser
Ja habe ich gesehen.
Habe jetzt den 9292 eingetragen.
Bleibt aber Gelb und kein Objekt angelegt -
@RalfEngelberth
Stelle doch mal Bilder von Deinen Einstellungen von rega und allen Instanzen von rpc (und auch Zusatzeinstellungen von rpc) hier rein.
Wie ist die Raspberrymatic eingestellt-Firewall - Einstellungen ?
Welche internen IP haben Raspberrymatic und ioBroker bei Dir ? Wo läuft ioBroker drauf ? (welches System)