2 Comet Dect synchronisieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

2 Comet Dect synchronisieren

Beitrag von bigi0815 »

Hallo zusammen,

ich setze seit kurzem openHab 3 und mehrere Comet Dect Thermostate ein. Die Thermostate sind via Dect an die Fritzbox und diese mit dem AVM Binding an openHab angebunden. Als Anzeige hab ich mir mit Habpanel eine Oberfläche zusammengestellt. Damit kann ich die jeweiligen Sollwerte der Thermostate problemlos Steuern. Allerdings hab ich in einem Raum 2 Heizkörper mit entsprechenden Thermostaten. Jetzt habe ich versucht, einen gemeinsamen Sollwert für beide Thermostate zu erzeugen, bzw. ein Thermostat als Master ein zu setzen (Sprich, wenn sich dort der Sollwert irgendwie ändert, soll dieser neue Sollwert an das 2. Thermostat übertragen werden).
Ich habe eine einfache Regel erstellt, welche aber leider nicht funktioniert.
Bildschirmfoto 2021-02-18 um 21.18.34.png
Wo könnte ich bei der Fehlersuche ansetzen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
peter-pan
Beiträge: 2759
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: 2 Comet Dect synchronisieren

Beitrag von peter-pan »

...Ich kenne mich zwar in Blockly nicht aus, aber fehlt da nicht noch ein Trigger ?

Wenn "Kuechenthermostat1_Solltemeratur" sich verändert, dann.....
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

Re: 2 Comet Dect synchronisieren

Beitrag von bigi0815 »

Den Trigger habe ich übergeordnet gesetzt bzw. unter Rules.
Bildschirmfoto 2021-02-19 um 15.38.27.png
Interessanterweise hab ich noch eine andere Regel erstellt, wobei ich mit einem "virtuellen" Schalter, welcher nur im Habpanel existiert, der Status des Thermostats umgeschalten wird.
Diese Regel funktioniert recht gut, nur der Zugriff auf den Sollwert (Setpoint) funktioniert nicht über die Regeln.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
peter-pan
Beiträge: 2759
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: 2 Comet Dect synchronisieren

Beitrag von peter-pan »

Ich mache etwas ähnliches, mit einer DSL-Rule, wenn ein Fenster geöffnet bzw. geschlossen wird, dabei unterscheide ich noch, welcher Modus beim Öffnen und schliessen gesetzt war. In Abhängigkeit davon, wir dann entweder das Mode-Item oder das Set-Item gesetzt. Allerdings wird dabei der '"State"-Wert übergeben.
Die Regel sieht so aus:

Code: Alles auswählen

rule "Fenster Arbeitszimmer Offen"
    when
      Item gWindowOffice changed from "CLOSED" to "OPEN" 
    then
      logInfo("Fenster Arbeitszimmer Offen"," Triggering-Item {}", triggeringItem)
	  if(radiator_valve_01_Mode.state == "OFF") return;  // Es sind bereits Fenster offen bzw. der Thermostat ist ausgeschaltet
        radiator_valve_01_Set_prev.postUpdate(radiator_valve_01_Set.state)
        radiator_valve_01_Mode_prev.postUpdate(radiator_valve_01_Mode.state)
        radiator_valve_01_Mode.sendCommand("OFF")
        logInfo("Fenster Arbeitszimmer Offen"," radiator_valve_01_Set {}", radiator_valve_01_Set)
end
//===============================================================================
rule "Fenster Arbeitszimmer Geschlossen"
    when
      Item gWindowOffice changed from "OPEN" to "CLOSED"
    then
      if ((radiator_valve_01_Mode_prev.state == "ECO") || (radiator_valve_01_Mode_prev.state == "COMFORT") || (radiator_valve_01_Mode_prev.state == "OFF")) {
        radiator_valve_01_Mode.sendCommand(radiator_valve_01_Mode_prev.state.toString)
        logInfo("Fenster Arbeitszimmer Geschlossen"," radiator_valve_01_Set {}", radiator_valve_01_Set)
      }
      if (radiator_valve_01_Mode_prev.state == "ON") {
        radiator_valve_01_Set.sendCommand(radiator_valve_01_Set_prev.state as Number)
        logInfo("Fenster Arbeitszimmer Geschlossen"," radiator_valve_01_Set {}", radiator_valve_01_Set)
      }
end
also entweder:

Code: Alles auswählen

        radiator_valve_01_Mode.sendCommand(radiator_valve_01_Mode_prev.state.toString)
oder

Code: Alles auswählen

        radiator_valve_01_Set.sendCommand(radiator_valve_01_Set_prev.state as Number)
Gibt es so was in Blockly auch bzw. muss man den Status evtl. als Variable zwischenspeichern und dann beim "send Command" die Variable übergeben.

Eigentlich trifft dies auch auf den Vergleich der zwei Items zu.

Wie sieht denn deine Regel in "Code-Schreibweise" aus ? Vielleicht lässt sich daraus etwas ableiten.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

Re: 2 Comet Dect synchronisieren

Beitrag von bigi0815 »

Schon mal vielen Dank für Deine Hilfe, ich habe insgesamt so etwas ähnliches vor.
Aber mir fehlt derzeit noch das Hintergrundwissen über die OpenHab Programmierung (bin blutiger Neueinsteiger).

So ich hab gerade herausgefunden wie man den Code angezeigt bekommt. Die Regel wird von OpenHab wie folgt übersetzt:

Code: Alles auswählen

if ('Kuchenthermostat1_Solltemperatur' != 'Kuechenthermostat2_Solltemperatur') {
  events.sendCommand('Kuechenthermostat2_Solltemperatur', 'Kuchenthermostat1_Solltemperatur');
}

Benutzeravatar
peter-pan
Beiträge: 2759
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: 2 Comet Dect synchronisieren

Beitrag von peter-pan »

Ich kann dir in Blockly leider auch nicht weiter helfen, aber als "normale DSL-Rule", sollte es so funktionieren:

Code: Alles auswählen

rule "Kuechenthermostat Synchronisation"

  when
    Item Kuchenthermostat1_Solltemperatur changed
  then
    if ( Kuchenthermostat1_Solltemperatur.state != Kuchenthermostat2_Solltemperatur.state) {
         Kuchenthermostat2_Solltemperatur.sendCommand(Kuchenthermostat1_Solltemperatur.state)
         logInfo("Thermo Sync"," Thermostat2 Küche hat jetzt {} Soll-Temperatur", Kuchenthermostat2_Solltemperatur.state )  // test - kann auskommntiert oder gelöscht werden
     }
end
Ich hab's bei mir getestet. Habe auch Comet- und AVM-Thermostate. Damit wird beim Regulieren von Thermostat1 die Solltemperatur von Thermostat2 immer nachgezogen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

Re: 2 Comet Dect synchronisieren

Beitrag von bigi0815 »

Ich danke Dir erstmal für Deinen Code. Leider hat auch dieser keine Wirkung gezeigt.
Langsam hab ich das Gefühl, dass mit meiner OpenHab Installation etwas nicht in Ordnung ist (3.0.0). Ich habe zusätzlich noch Probleme mit dem Einbinden von MQTT Sensoren (Messwerte werden nur unregelmäßig erfasst) und der Fernzugriff über SSH hat von Anfang an nicht funktioniert.
Daher denke ich mal, dass es sinnvoller ist, das Ganze neu aufzusetzen und zwar mit der neuen Version 3.0.1.

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

Re: 2 Comet Dect synchronisieren

Beitrag von bigi0815 »

So ich hab das OpenHab 3 jetzt mal neu aufgesetzt (Version 3.0.1).
Es hat sich bei der Installation immer noch etwas eigenartig verhalten (beim ändern des Passwort gab es eine Fehlermeldung, dass das PW nicht geändert werden konnte, aber er hat es trotzdem übernommen).
Immerhin hat es diesmal von Anfang an mit dem SSH funktioniert und ich konnte die Einrichtung über meinen Laptop durchführen.
Inzwischen hab ich mir auch mit Pages eine Seite für meine Küche gebaut und natürlich die Skripte wieder hinzugefügt.
Leider ist das Ergebnis wie gehabt (kein Skript funktioniert).

Was mir allerdings aufgefallen ist, zum eine das HabPanel ist aus irgendeinem Grund erhalten geblieben, da stellt sich mir die Frage, wo ist das gespeichert?

Anderseits ist auffällig, dass eine Steuerung der Sollwerte mittels Slider nur am HabPanel funktioniert, aber nicht über die unter Pages angelegte Seite.

Da stellt sich mir die Frage, ob ich für die Skripte und/oder Pages noch etwas konfigurieren muss, damit das funktioniert?

Die MQTT Geschichte hab ich noch nicht wieder installiert, bei der vorherigen Version (3.0.0) konnte man das mit der Ersteinrichtung des PW zusammen installieren, diesen Punkt hab ich im jetzigen Dialog nicht gesehen. Werd daher den Mosquitto wohl manuell installieren müssen.

bigi0815
Beiträge: 13
Registriert: 18. Feb 2021 20:40
Answers: 0

Re: 2 Comet Dect synchronisieren

Beitrag von bigi0815 »

Nach dem ich jetzt rausgefunden habe, wie man die Log's einsehen kann hab ich mal einen Auszug.

Code: Alles auswählen

2021-02-21 14:25:25.024 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'e8d2c3e0f1' failed: 
    if ( CometDECT3_Solltemperatur  != CometDECT2_Solltemperatur) {
         CometDECT2_Solltemperatur.sendCommand(CometDECT3_Solltemperatur)
         //logInfo("Thermo Sync"," Thermostat2 Küche hat jetzt {} Soll-Temperatur", CometDECT2_Solltemperatur )  // test - kann auskommntiert oder gelöscht werden
     }
   Type mismatch: cannot convert from NumberItem to String; line 3, column 116, length 25
Die Regel wird offenbar doch ausgeführt, aber offensichtlich gibt es eine Typ Unverträglichkeit.

Wie kann ich das auflösen? - Hab es doch noch gelöst!

Code: Alles auswählen

    if ( CometDECT3_Solltemperatur  != CometDECT2_Solltemperatur) {
        var double Temp = (CometDECT3_Solltemperatur.state as Number).doubleValue() 
        CometDECT2_Solltemperatur.sendCommand(Temp) 
     }
Falls jemand noch eine bessere oder "sauberere" Lösung hat, bin ich für Hinweise dankbar.

03chris
Beiträge: 28
Registriert: 4. Feb 2018 17:10
Answers: 1

Re: 2 Comet Dect synchronisieren

Beitrag von 03chris »

bigi0815 hat geschrieben: 18. Feb 2021 21:24 Sprich, wenn sich dort der Sollwert irgendwie ändert, soll dieser neue Sollwert an das 2. Thermostat übertragen werden
Die einfachste Methode dafür wäre ein follow profile für das 2.Thermostat.

Code: Alles auswählen

Number     Solltemperatur_Wohn2       {channel="innogysmarthome:RST:innogy:Wohn2:set_temperature", channel="innogysmarthome:RST:innogy:Wohn1:set_temperature" [profile="follow"]}


Antworten