MQTT Probleme zwei openHAB´s verbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Hallo udo1toni,

deine Erklärungen sind wie immer große Klasse, auch für einen Dummie wie mich.
Für den Remote Zugriff auf angeschlossene USB-Sticks über Netzwerk hier mal eine Anleitung https://community.openhab.org/t/share-z ... uide/34895 aus dem englischen Forum.

Die Idee ist, auf dem Raspberry auf dem Dachboden ser2net laufen zu lassen. ser2net öffnet einen Port, auf dem es dann auf Anfragen lauscht.
Auf dem "Hauptrechner" wird socat installiert. socat nimmt nun Kontakt zum Remote System auf und leitet sämtliche Ein- und Ausgaben auf einen Link um ("in Linux ist alles eine Datei"). So sieht es nun für openHAB so aus, als sei der USB-Stick direkt angeschlossen. Natürlich muss der Linkname so gewählt werden, dass er sich nicht mit einem vorhandenen USB-Stick am Hauptrechner in die Quere kommt. :) aber die Konfiguration ist sehr einfach und schnell erledigt. Anschließend richtet man das LaCrosse Binding in openHAB2.5 ein und nutzt die Hardware, als sei der Stick lokal angeschlossen.
So "ser2net" habe auf den ausgelagerten RP zu installiert. Nun wollte ich "socat" auf dem "Haupt-RP" installieren, da läuft aber schon ein USB-Jeelink
und ein "LaCross Gateway für USB" für Hausinterne Technoline Sensoren und auf dem "USB0" steckt schon ein "Nano....433MhZ"

Haupt-Rp:
[15:52:14] root@openhab:/home/openhabian# ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 Feb 5 12:05 usb-SHK_JeeLink_LaCrosse-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Feb 5 12:05 usb-SHK_NANO_CUL_433-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Feb 5 12:05 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014D98027-if00 -> ../../ttyACM0
Neben-RP :
ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 Feb 10 13:53 usb-SHK_JeeLink_LaCrosse-if00-port0 -> ../../ttyUSB0
nun bin ich mir nicht sicher wie das lösen soll, bei der Einrichtung des LaCross Gateway muss ich ja die Schnittstelle angeben
Configuration Parameters

Configure parameters for the thing.
Serielle Schnittstelle

Der Name der seriellen Schnittstelle, an die das LGW angeschlossen ist. Gültige Werte sind z.B. COM1 für Windows und /dev/ttyS0 oder /dev/ttyUSB0 für Linux.
nur die "/dev/ttyUSB0" ist ja schon anderweitig vergeben. Nun habe ich erstmal aufgehört "socat" zu installieren, ich wollte
mir mein Haupt openHAB nicht vermurgsen. Oder kann ich die Schnittstellen im "socat" irgendwie umbennen ?
Oder verstehe ich wieder irgendwas völlig falsch?

Gruß
Knut

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

Den Namen für die serielle Schnittstelle (die über socat bereitgestellt wird) kannst Du "frei" wählen. Da ttyUSB0 und ttyUSB1 schon belegt sind, kannst Du einfach ttyUSB2 nehmen (oder auch ttyUSB7, wenn Dir das lieber ist... Hauptsache, der Name ist auf dem Hauptsystem noch nicht verwendet. Welche Schnittstelle auf dem Nebensystem verwendet wird, spielt keine Rolle.

Sowohl ser2net als auch socat brauchen eine Konfigurationsdatei, dort werden alle wesentlichen Daten eingegeben, also z.B. Port, IP, verwendete Schnittstelle und auch die Betriebsart (da gibt es auch verschiedene Optionen). In dem verlinkten Beitrag sind die Konfigurationsdateien auch beschrieben. Du musst also nur die Konfiguration kopieren und Deinen Bedürfnissen entsprechend anpassen.

Wichtig ist natürlich, dass sowohl ser2net als auch socat als Dienst automatisch gestartet werden, damit die Kommunikation auch nach einem Neustart der Systeme automatisch wieder anläuft. Aber auch das ist im Beitrag beschrieben :) sollte also einfach realisierbar sein.

Da Du schon einen LaCross in Betrieb hast, ist natürlich eine zweite Bridge für den zweiten Stick einzurichten.

Ich habe gerade gesehen, dass das LaCrosse Binding sogar explizit eine Bridge für Jeelink over TCP vorsieht. Leider ist aber überhaupt nicht erläutert, wie das funktioniert und auf die Schnelle habe ich nicht mal im englischen Forum dazu etwas gefunden. Es könnte sich aber lohnen, da noch mal genauer zu recherchieren, vielleicht braucht es dann socat nicht und das LaCrosse Binding greift direkt auf den ser2net Server zu...
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Also "ser2net" ist installiert und läuft:
openhabian@openhabian:~ $ systemctl status ser2net.service
ser2net.service - LSB: Allows network connections to serial ports
Loaded: loaded (/etc/init.d/ser2net; generated)
Active: active (running) since Wed 2021-02-10 20:39:04 CET; 21min ago
Docs: man:systemd-sysv-generator(8)
Process: 540 ExecStart=/etc/init.d/ser2net start (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 2181)
CGroup: /system.slice/ser2net.service
└─614 /usr/sbin/ser2net -c /etc/ser2net.conf -P /run/ser2net.pid

Feb 10 20:39:03 openhabian systemd[1]: Starting LSB: Allows network connections to serial ports...
Feb 10 20:39:04 openhabian ser2net[597]: ser2net startup
Feb 10 20:39:04 openhabian ser2net[540]: Starting Serial port to network proxy: ser2net.
Feb 10 20:39:04 openhabian systemd[1]: Started LSB: Allows network connections to serial ports.
openhabian@openhabian:~ $ netstat -antp

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 192.168.178.44:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN -
tcp 0 0 192.168.178.44:9001 192.168.178.42:58176 ESTABLISHED -
tcp 0 304 192.168.178.44:22 192.168.178.42:58158 ESTABLISHED -
tcp6 0 0 :::139 :::* LISTEN -
tcp6 0 0 :::5007 :::* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN -
tcp6 0 0 :::2000 :::* LISTEN -
tcp6 0 0 :::2001 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::3000 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
tcp6 0 0 :::3001 :::* LISTEN -
tcp6 0 0 :::8443 :::* LISTEN -
tcp6 0 0 :::445 :::* LISTEN -
tcp6 0 0 127.0.0.1:41729 :::* LISTEN -
tcp6 0 0 127.0.0.1:8101 :::* LISTEN -
tcp6 0 0 :::3333 :::* LISTEN -
tcp6 0 0 192.168.178.44:8080 192.168.178.42:58990 ESTABLISHED -
tcp6 0 0 192.168.178.44:60198 192.168.178.37:8080 ESTABLISHED -
tcp6 0 0 192.168.178.44:3333 192.168.178.37:34928 ESTABLISHED -
Ich habe gerade gesehen, dass das LaCrosse Binding sogar explizit eine Bridge für Jeelink over TCP vorsieht. Leider ist aber überhaupt nicht erläutert, wie das funktioniert und auf die Schnelle habe ich nicht mal im englischen Forum dazu etwas gefunden. Es könnte sich aber lohnen, da noch mal genauer zu recherchieren, vielleicht braucht es dann socat nicht und das LaCrosse Binding greift direkt auf den ser2net Server zu...
Das funktioniert scheinbar auch :
JeeLink über TCP Dachboden

JeeLink über TCP

Jeelink USB Empfänger, der an einem anderen Rechner angeschlossen ist. Die Schnittstelle muss über TCP zur Verfügung gestellt werden (z.B. auf Linux mit ser2net).

Status: ONLINE
Nur der Sensor geht noch nicht Online, aber das ist bei den Dingern ab un an mal ein kleines Problem, man kann die als Thing hinzufügen
wenn die in der Inbox auftauchen, da hilft dann nur die Batterien mal kurz zu enfernen.

Aber trotzdem super das hätte ich alleine sicher nicht gefunden herzlichen Dank für die Hilfe.

Gruß
Knut

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Hallo,
ich nochmal,
Nur der Sensor geht noch nicht Online, aber das ist bei den Dingern ab un an mal ein kleines Problem, man kann die als Thing hinzufügen
wenn die in der Inbox auftauchen, da hilft dann nur die Batterien mal kurz zu enfernen.
so einfach war es dann doch nicht. Ich musste noch die "ser2net.conf" ändern...
#BANNER:banner:\r\nser2net port \p device \d [\s] (Debian GNU/Linux)\r\n\r\n
BANNER:jeelink:\r\n[LaCrosseITPlusReader whatever]\r\n

#2000:telnet:600:/dev/ttyS0:9600 8DATABITS NONE 1STOPBIT banner
#2001:telnet:600:/dev/ttyS1:9600 8DATABITS NONE 1STOPBIT banner
#3000:telnet:600:/dev/ttyS0:19200 8DATABITS NONE 1STOPBIT banner
#3001:telnet:600:/dev/ttyS1:19200 8DATABITS NONE 1STOPBIT banner
#3333:raw:0:/dev/ttyUSB5:115200 8DATABITS NONE 1STOPBIT
0.0.0.0,3333:raw:0:/dev/ttyUSB0:57600 8DATABITS NONE 1STOPBIT
Hat einige Zeit an herumprobieren gekostet, aber jetzt funktioniert's, warum auch immer.

Hintergrund dieser ganzen Geschichte ist eigentlich eine Frostsicherung für den Pferde Selbsttränker (kommt jetzt eigentlich bisschen spät...),
denn ab einer bestimmten Temperatur soll ein Elektroheizstab eingeschaltet werden, und natürlich bei erreichen der Soll-Temperatur
wieder aus schalten. Den Heizstab schalte ich mit einem Shelly 1PM, gesteuert durch eine/mehere "RULE"'s

Code: Alles auswählen

rule "Heizung einschalten"
when
    Item Wassertemp_PferdestallTCP changed
then
            {
        var Number nTemp = 20
        if(Wassertemp_PferdestallTCP.state instanceof Number)
            nTemp = Wassertemp_PferdestallTCP.state as Number
        if(nTemp < 4)
            sendTelegram("Openhabknut", "Pferdewasser hat weniger als 4 °C !")
            logInfo("Heizung einschalten", "Pferdewasserhat weniger als 4 °C !") 
            HeizungPferdewasser.sendCommand("ON")
        if(nTemp > 8)
            sendTelegram("Openhabknut", "Pferdewasser hat mehr als als 8 °C !")
            logInfo("Heizung ausschalten", "Pferdewasserhat hat mehr als als 8 °C !") 
            HeizungPferdewasser.sendCommand("OFF")
            
            }
end


rule "Heizungskontrolle einschalten"
when
    Item HeizungPferdewasser changed from OFF to ON
then
    KontrolleHeizungPferdew.sendCommand("ON")
end



rule "Heizungskontrolle ausschalten"
when
    Item HeizungPferdewasser changed from ON to OFF
then
    KontrolleHeizungPferdew.sendCommand("OFF")
end 
Was eigentlich auch schon funktioniert. Es gibt nur ein Problem, Der Heizstab schaltet jetzt bei höherenTemperaturen,
wo er eigentlich abgeschaltet hat und auch bleiben soll, bei jeder Temperaturänderung einmal kurz den Heizstab ein
und sofort wieder aus.
2021-02-21 12:50:38.261 [vent.ItemStateChangedEvent] - Wassertemp_PferdestallTCP changed from 11.2 to 11.3

2021-02-21 12:50:38.300 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command ON

2021-02-21 12:50:38.302 [nt.ItemStatePredictedEvent] - HeizungPferdewasser predicted to become ON

2021-02-21 12:50:38.375 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from OFF to ON

2021-02-21 12:50:38.410 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-21 12:50:38.411 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

2021-02-21 12:50:38.426 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from OFF to ON

2021-02-21 12:50:38.610 [INFO ] [ome.model.script.Heizung ausschalten] - Pferdewasserhat hat mehr als als 8 °C !

2021-02-21 12:50:38.633 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command OFF

2021-02-21 12:50:38.636 [nt.ItemStatePredictedEvent] - HeizungPferdewasser predicted to become OFF

2021-02-21 12:50:38.671 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from ON to OFF

2021-02-21 12:50:38.692 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command OFF

2021-02-21 12:50:38.695 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become OFF

2021-02-21 12:50:38.718 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from ON to OFF

2021-02-21 12:51:07.850 [vent.ItemStateChangedEvent] - Temperatur2_Pferdestall changed from 20.3 to 20.5

2021-02-21 12:53:07.851 [vent.ItemStateChangedEvent] - Temperatur2_Pferdestall changed from 20.5 to 20.3

2021-02-21 12:54:38.286 [INFO ] [ome.model.script.Heizung einschalten] - Pferdewasserhat weniger als 4 °C !

2021-02-21 12:54:38.272 [vent.ItemStateChangedEvent] - Wassertemp_PferdestallTCP changed from 11.3 to 11.4

2021-02-21 12:54:38.322 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command ON

2021-02-21 12:54:38.325 [nt.ItemStatePredictedEvent] - HeizungPferdewasser predicted to become ON

2021-02-21 12:54:38.357 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from OFF to ON

2021-02-21 12:54:38.370 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-21 12:54:38.372 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

2021-02-21 12:54:38.392 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from OFF to ON

2021-02-21 12:54:38.520 [INFO ] [ome.model.script.Heizung ausschalten] - Pferdewasserhat hat mehr als als 8 °C !

2021-02-21 12:54:38.531 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command OFF

2021-02-21 12:54:38.533 [nt.ItemStatePredictedEvent] - HeizungPferdewasser predicted to become OFF

2021-02-21 12:54:38.554 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from ON to OFF

2021-02-21 12:54:38.567 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command OFF

2021-02-21 12:54:38.571 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become OFF

2021-02-21 12:54:38.595 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from ON to OFF
Kann mir jemand sagen wo das Problem liegt?
Und warum zeigt er immer noch die Log-Info
2021-02-21 12:54:38.286 [INFO ] [ome.model.script.Heizung einschalten] - Pferdewasserhat weniger als 4 °C !
obwohl die Temperatur viel höher ist?

Gruß
Knut

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

Das ist sehr einfach erklärbar, Du hast zwar die Zeilen eingerückt, das dient in der Rules DSL aber nur der besseren Lesbarkeit. Du musst den Block mit geschweiften Klammern markieren. So, wie Du es geschrieben hast, wird lediglich das sendTelegram durch die if-Anweisung beeinflusst, alle anderen Befehle werden jedes Mal ausgeführt.

Allerdings ist die Rule ohnehin nicht sonderlich gut gelungen ;) Warum schaltest Du ein Item durch ein anderes Item? Die Rule sähe besser so aus:

Code: Alles auswählen

rule "Heizung schalten"
when
    Item Wassertemp_PferdestallTCP changed
then
    var Number nTemp = 20
    if(Wassertemp_PferdestallTCP.state instanceof Number)
        nTemp = Wassertemp_PferdestallTCP.state as Number
    var Soll = HeizungPferdewasser.state
    if(nTemp < 4)
        Soll = ON
    if(nTemp > 8)
        Soll = OFF
    if(HeizungPferdewasser.state != Soll) {
        var strMessage = "Pferdewasser hat "
        strMessage = strMessage + if(Soll == OFF) "mehr als 8" else "weniger als 4"
        strMessage = strMessage + " °C!"
        sendTelegram("Openhabknut", strMessage)
        logInfo("heat", strMessage) 
        HeizungPferdewasser.sendCommand(Soll.toString)
        KontrolleHeizungPferdew.sendCommand(Soll.toString)
    }
end
In der ersten Stufe wird die default Temperatur gesetzt.
In der zweiten Stufe wird der aktuelle Status als default für den Sollstatus geladen.
Im der dritten Stufe wird nur für den Fall, dass die Temperaturgrenzen unter- bzw. überschritten sind, der Sollstatus fest auf einen Wert gesetzt.
Der letzte Block wird nur ausgeführt, wenn der Sollzustand vom aktuellen Zustand abweicht.
Der String strMessage wird nur für die Benachrichtigung zusammengestückelt. Abschließend senden beide Items den Befehl.

Wichtig an dieser Stelle: die Variable Soll ist vom Typ OnOffType und hält den Status, keinen String. Gewöhnlich sendet man an ein Switch Item ebenfalls den OnOffType, also ON oder OFF, keinen String "ON" oder "OFF". Hier wird sich die DSL aber beschweren, weil sie ein Command erwartet, aber einen Status bekommt. Deshalb die Wandlung nach String.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Hallo,
die erste Regel hab ich aus einem anderen Beitrag von dir abgekupfert und versucht auf mein Problem anzupassen,
und die anderen beiden Regeln waren eigentlich nur eine Notlösung um zu kontrollieren, ob die Heizung, die ja im Stall ist,
auch irgendwie reagiert hat. An dem zweite Shelly hab ich nur eine kleine Lampe dran, im Haus, die auch wirklich erst einschalten soll,
wenn die Heizung eingeschaltet hat, oder eben wieder aus.
Gewöhnlich sendet man an ein Switch Item ebenfalls den OnOffType, also ON oder OFF, keinen String "ON" oder "OFF"
Hatte ich zu erst auch so, hat aber nicht geschaltet. Dann habe ich ON und OFF in "" gesetzt, da hat's funktioniert. War aber dann wohl
das Problem mit den geschweiften Klammern .
Ich werde es heute Abend, wenn's wieder ein bisschen abkühlt ausprobieren.

Sieht eben besser aus wenn ein Profi sowas macht, und nicht der alte Bauer. :D :D

Gruß
Knut

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

Wenn die Heizung über einen Shelly geschaltet wird, brauchst Du kein 2. Item (und schon gar nicht bringt es etwas, das über eine Rule zu schalten).
Wie ist der Shelly angebunden? Per Shelly Binding oder per mqtt Binding? Aber ganz gleich, welche der beiden Varianten zum Einsatz kommt, der Shelly sollte seinen Status aktiv zurückmelden. Wenn Du ein Kommando an ein Item sendest, wird openHAB gewöhnlich ein postUpdate an das Item senden, welches zum Kommando passt, um ein schnelleres Feedback zu erhalten. dieses autoupdate kann man aber abschalten (bei OH3 über die Metadaten des Items, für vorherige Versionen mit einem zusätzlichen Eintrag autoupdate="false" im Link). Anschließend wird das Item seinen Status nur noch ändern, wenn das angebundene Gerät seinen Status sendet oder eine Rule den Status explizit per postUpdate setzt.

Hast Du eventuell kein Switch Item angelegt, sondern ein String Item?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Also die "Rule" :

Code: Alles auswählen

rule "Heizung schalten"
when
    Item Wassertemp_PferdestallTCP changed
then
    var Number nTemp = 20
    if(Wassertemp_PferdestallTCP.state instanceof Number)
        nTemp = Wassertemp_PferdestallTCP.state as Number
    var Soll = HeizungPferdewasser.state
    if(nTemp < 4)
        Soll = ON
    if(nTemp > 10)
        Soll = OFF
    if(HeizungPferdewasser.state != Soll) {
        var strMessage = "Pferdewasser hat "
        strMessage = strMessage + if(Soll == OFF) "mehr als 10" else "weniger als 4"
        strMessage = strMessage + " °C!"
        sendTelegram("Openhabknut", strMessage)
        logInfo("heat", strMessage) 
        HeizungPferdewasser.sendCommand(Soll.toString)
        KontrolleHeizungPferdew.sendCommand(Soll.toString)
    }
end
funktioniert. Die "Kontrolllampe" hatte ich erstmal nur dazu gebaut, um nicht jedes mal raus zulaufen zum kontrollieren.
So wie ich die rule "Heizung schalten" verstehen schaltet die
KontrolleHeizungPferdew.sendCommand(Soll.toString)
parallel zur
HeizungPferdewasser.sendCommand(Soll.toString)
wenn die Temperatur erreicht ist.
Ich wollte ja nur, das die Kontrolllamepe leuchtet, wenn die Heizung tatsächlich eingeschaltet ist. Daher dachte ich, das ich das so lösen kann.

Wie ist der Shelly angebunden? Per Shelly Binding oder per mqtt Binding?
Per Shelly Binding
Wenn Du ein Kommando an ein Item sendest, wird openHAB gewöhnlich ein postUpdate an das Item senden, welches zum Kommando passt, um ein schnelleres Feedback zu erhalten. dieses autoupdate kann man aber abschalten (bei OH3 über die Metadaten des Items, für vorherige Versionen mit einem zusätzlichen Eintrag autoupdate="false" im Link). Anschließend wird das Item seinen Status nur noch ändern, wenn das angebundene Gerät seinen Status sendet oder eine Rule den Status explizit per postUpdate setzt.
Da verstehe ich den Zusammenhang nicht.
Hast Du eventuell kein Switch Item angelegt, sondern ein String Item?

Code: Alles auswählen

//--------Ponystall--Shelly---------

Switch HeizungPferdewasser
  "Heizung Pferdewasser"
  <switch>
  (gPonystall)
  {channel="shelly:shelly1pm:84cca8a86d0d:relay#output"}

Switch KontrolleHeizungPferdew
  "Kontrolle Heizung Pferdewasser"
  <switch>
  (gPonystall)
  {channel="shelly:shelly1:8caab54bab2c:relay#output"}
Oder welchesItem meintest Du?

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

favorit626 hat geschrieben: 23. Feb 2021 15:24 Die "Kontrolllampe" hatte ich erstmal nur dazu gebaut, um nicht jedes mal raus zulaufen zum kontrollieren.
Also ging es primär darum, zu kontrollieren, dass die Rule ausgelöst wurde.
favorit626 hat geschrieben: 23. Feb 2021 15:24 So wie ich die rule "Heizung schalten" verstehen schaltet die
KontrolleHeizungPferdew.sendCommand(Soll.toString)
parallel zur
HeizungPferdewasser.sendCommand(Soll.toString)
wenn die Temperatur erreicht ist.
Genau. Da passiert nichts anderes, als mit Deinen Rules. Die schalten ja auch nur die Lampe an und aus, wenn der Shelly an- bzw. ausgeschaltet wird.
favorit626 hat geschrieben: 23. Feb 2021 15:24 Ich wollte ja nur, das die Kontrolllamepe leuchtet, wenn die Heizung tatsächlich eingeschaltet ist. Daher dachte ich, das ich das so lösen kann.
Oder meinst Du eventuell das Heizelement (für den Fall, dass da noch ein Thermofühler integriert ist, welcher dann in Reihe zum Shelly geschaltet ist? Dann müsste eine entsprechende Überwachung den Stromfluss auswerten. Hat der Shelly Strommessung (ich bin mir nicht sicher, ob jedes Modell diese Funktion mitbringt)? dann könntest Du darüber die Rückmeldung realisieren und bekämst live mit, ob das Heizelement gerade heizt oder nicht.
favorit626 hat geschrieben: 23. Feb 2021 15:24
Wenn Du ein Kommando an ein Item sendest, [...] das angebundene Gerät seinen Status sendet oder eine Rule den Status explizit per postUpdate setzt.
Da verstehe ich den Zusammenhang nicht.
Na, das Item HeizungPferdewasser hält den Zustand des verlinkten Shelly Channels. Aber wenn man den ON-Befehl endet, wechselt das Item seinen Status auf ON, auch wenn der Shelly das noch gar nicht getan hat. Mit dem Parameter autoupdate="false" wird das unterdrückt. Du sendest ON, aber das Item bleibt OFF, bis der Shelly ein ON zurückmeldet. Gleiches gilt natürlich sinngemäß auch für OFF. Die Rückmeldung, ob die Heizung ON oder OFF ist, kannst Du also über die UI bequem einsehen.
favorit626 hat geschrieben: 23. Feb 2021 15:24 Oder welchesItem meintest Du?
Genau die. Dann muss der Befehl HeizungPferdewasser.sendCommand(ON) bzw. HeizungPferdewasser.sendCommand(OFF) auch ohne Anführungszeichen funktionieren.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Udo hat geschrieben Heute 18:17
Also ging es primär darum, zu kontrollieren, dass die Rule ausgelöst wurde.
Ja, obwohl es ist ja auch nicht schlecht, wenn man weiß, was im Stall so vor geht.
Udo hat geschrieben Heute 18:17
Genau. Da passiert nichts anderes, als mit Deinen Rules. Die schalten ja auch nur die Lampe an und aus, wenn der Shelly an- bzw. ausgeschaltet wird.
Das reicht mir eigentlich auch völlig, der Heizstab ist ganz einfach ohne Regelung, zwei Anschlußklemmen, und entweder AN oder AuS.
Udo hat geschrieben Heute 18:17
Hat der Shelly Strommessung...
Ja das ist ein Shelly 1 PM, hab ich extra genommen um den Stromverbrauch zu kontrollieren. In der Shelly APP funktioniert das auch, nur in OH
hab ich's noch nicht ganz hinbekommen, ist erstmal auch nicht so wichtig. Obwohl, wenn die Kontrolle erst reagiert wenn Strom fließt... nein
das ist mir sicher zu kompliziert.
Udo hat geschrieben Heute 18:17
Mit dem Parameter autoupdate="false" wird das unterdrückt. Du sendest ON, aber das Item bleibt OFF, bis der Shelly ein ON zurückmeldet. Gleiches gilt natürlich sinngemäß auch für OFF. Die Rückmeldung, ob die Heizung ON oder OFF ist, kannst Du also über die UI bequem einsehen.
Da weiß ich jetzt nicht wo ich das eintragen soll direkt in der Item-Datei

Code: Alles auswählen

Switch HeizungPferdewasser
  "Heizung Pferdewasser"
  <switch>
  (gPonystall)
  {channel="shelly:shelly1pm:84cca8a86d0d:relay#output"}
oder irgendwo in der Paper-UI? Da wüsste ich aber nicht wo.

Antworten