Shelly 2.5 sendet nicht

Geflasht oder ungeflasht ...

Moderator: seppy

Antworten
harteknut
Beiträge: 234
Registriert: 3. Dez 2019 08:21
Answers: 9

Shelly 2.5 sendet nicht

Beitrag von harteknut »

Hallo zusammen,
ich habe neben der Eingangstür einen Shelly 2.5, der aktuell das Licht vor der Tür schaltet, also nur einen seiner beiden Ausgänge nutzt. Dazu bekommt er seine Befehle über openHAB, es ist kein direkter Taster / Schalter angeschlossen. Meine Shellys habe ich alle mit dem Shelly-Binding eingebunden, hat bislang (und das schon ein paar Jahre) prima funktioniert.

Nun wollte ich den "freien" Kanal des 2.5 nutzen, um einen Klingeltaster (einfacher Schließer) einzulesen. Den habe ich daher wie in der Shelly-Anleitung beschrieben mit SW2 und L angeschlossen.
In der App habe ich für das Relais 2 3 verschiedene Channels:
  • Betrieb / Output (Switch)
  • Eingang/Input (Switch)
  • Taste / Button (Trigger)
Ich war nun davon ausgegangen, dass der Trigger feuert, sobald ich den physikalischen Schalter kurz betätige. Auf dem Log sehe ich aber leider gar nichts, obwohl das Relais sofort klickend schaltet. Ich habe ihn so in eine Rule eingebunden:

Code: Alles auswählen

rule "Klingel"
when
	Channel "shelly:shelly25-relay:c4c6cd:relay2#button" triggered SHORT_PRESSED
then 
...	
...aber da kommt nichts. Ich habe auch versucht, über den Status des Outputs oder Inputs zu arbeiten :

Code: Alles auswählen

Switch DR_Klingeltaster "DR Klingel" (gDR_Eingang) {channel="shelly:shelly25-relay:c4c6cd:relay2#nput"}

rule "Klingel"
when
	Item DR_Klingeltaster changed to ON
then  	
...aber auch ohne Erfolg.

Jetzt hab ich zwei Fragen:
  1. Der Shelly sendet seine Statusnachrichten scheinbar sehr sehr unzuverlässig auf den Bus. Könnt Ihr das bei Euch auch beobachten und bestätigen oder gibt es da eine Lösung?
  2. Es gibt irgendwie (ich finde da leider kein Tutorial) auch die Möglichkeit, mit "URL-Actions" zu arbeiten. Da kann ich z.B. eine "BUTTON SWITCHED ON URL" vergeben. Kann mir von Euch jemand erklären wie das geht?
Ich danke Euch schonmal für Eure Mühe und würde mich sehrfreuen, wenn Ihr mir helfen könntet.
Gruß
Simon
von harteknut » 4. Apr 2024 23:41
Sooo...

Jetzt hab ich viel in verschiedenen Foren gesucht und ein paar neue Erkenntnisse (und das Thema gelöst). Ich schreibs hier mal auf, evtl. hilft es dem ein oder anderen mit einem ähnlichen Thema:
  1. Das Problem der "nicht in OH ankommenden Nachrichten" liegt scheinbar am Thema Multicast. Die Statusmeldungen erfolgen über CoIoT und werden standardmäßig als Multicast-Botschaften rausgeschickt. In der App oder auf der Weboberfläche kann man das ändern, in dem man bei "CoIoT peer:" den Standardeintrag "mcast" durch die Adresse des OH-Servers mit Port 5683 ersetzt. Bei mir also einfach "10.8.15.3:5863".
    (Auf der Weboberfläche versteckt sich diese Option leider unter "ADVANCED - DEVELOPER SETTINGS")
    Ab da kommt der Statuswechsel auch in OH an.
  2. Damit nicht nur der Status der Ausgänge übertragen wird, sondern auch der Trigger funktioniert, muss "Button Type" des jeweiligen Channels auf "Detached Switch" gestellt werden. Das entkoppelt den Taster logisch vom Ausgang und sorgt dafür, dass die Triggernachricht zuverlässig in OH ankommt.
Die Option mit den Action-URLs habe ich daher gar nicht gebraucht.

Meine Klingel-Regel sieht jetzt so aus:

Code: Alles auswählen

rule "Klingel"
when
	Channel "shelly:shelly25-relay:abcdcd:relay2#button" triggered SHORT_PRESSED or
	Channel "shelly:shelly25-relay:abcdcd:relay2#button" triggered LONG_PRESSED
	
then  	
	if (DR_Klingel.state == OFF) {
		DR_Klingel.sendCommand(ON)
    	tKlingelsperre?.cancel												// zunächst eventuell laufende Timer entfernen
    	tKlingelsperre = createTimer(now.plusSeconds(5), [ |  				// Timer anlegen
			DR_Klingel.sendCommand(OFF)
			tKlingelsperre = null												// Timervariable deinitialisieren
		]) }
end
Gehe zur vollständigen Antwort

harteknut
Beiträge: 234
Registriert: 3. Dez 2019 08:21
Answers: 9

Re: Shelly 2.5 sendet nicht

Beitrag von harteknut »

Sooo...

Jetzt hab ich viel in verschiedenen Foren gesucht und ein paar neue Erkenntnisse (und das Thema gelöst). Ich schreibs hier mal auf, evtl. hilft es dem ein oder anderen mit einem ähnlichen Thema:
  1. Das Problem der "nicht in OH ankommenden Nachrichten" liegt scheinbar am Thema Multicast. Die Statusmeldungen erfolgen über CoIoT und werden standardmäßig als Multicast-Botschaften rausgeschickt. In der App oder auf der Weboberfläche kann man das ändern, in dem man bei "CoIoT peer:" den Standardeintrag "mcast" durch die Adresse des OH-Servers mit Port 5683 ersetzt. Bei mir also einfach "10.8.15.3:5863".
    (Auf der Weboberfläche versteckt sich diese Option leider unter "ADVANCED - DEVELOPER SETTINGS")
    Ab da kommt der Statuswechsel auch in OH an.
  2. Damit nicht nur der Status der Ausgänge übertragen wird, sondern auch der Trigger funktioniert, muss "Button Type" des jeweiligen Channels auf "Detached Switch" gestellt werden. Das entkoppelt den Taster logisch vom Ausgang und sorgt dafür, dass die Triggernachricht zuverlässig in OH ankommt.
Die Option mit den Action-URLs habe ich daher gar nicht gebraucht.

Meine Klingel-Regel sieht jetzt so aus:

Code: Alles auswählen

rule "Klingel"
when
	Channel "shelly:shelly25-relay:abcdcd:relay2#button" triggered SHORT_PRESSED or
	Channel "shelly:shelly25-relay:abcdcd:relay2#button" triggered LONG_PRESSED
	
then  	
	if (DR_Klingel.state == OFF) {
		DR_Klingel.sendCommand(ON)
    	tKlingelsperre?.cancel												// zunächst eventuell laufende Timer entfernen
    	tKlingelsperre = createTimer(now.plusSeconds(5), [ |  				// Timer anlegen
			DR_Klingel.sendCommand(OFF)
			tKlingelsperre = null												// Timervariable deinitialisieren
		]) }
end

Antworten