Hallo zusammen,
ich möchte mithilfe eines Tasters, der an den GPIO eines Rasperry Pi Zero hängt, ein Relais schalten welches an einem weiteren GPIO hängt. Das Relais lässt sich wunderbar schalten sowohl per Weboberfläche als auch per Homebridge. Leider will das DOIF nicht schalten.
Drückt man den Taster (BUTTON_R1 wird high bzw state on) und Relais1 ist off soll FHEM Relais1 einschalten andernfalls soll er das Relais1 ausschalten.
Laut Syntax passt das alles und auch im Eventmonitor funktioniert das schalten von BUTTON_R1 korrekt. Das DOIF greift nur nicht.
Kann mir jemand helfen? Ich verzweifel noch daran. Aus den anderen Forenbeiträgen über Taster von Rolläden wurde ich nicht schlau.
Danke euch
define R1_CMD DOIF ([BUTTON_R1:"on"] and [Relais1:"off"]) (set Relais1 on) DOELSE (set Relais1 off)
2017-06-16 19:32:08 RPI_GPIO BUTTON_R1 Pinlevel: high
2017-06-16 19:32:08 RPI_GPIO BUTTON_R1 on
2017-06-16 19:32:09 RPI_GPIO BUTTON_R1 Longpress: on
2017-06-16 19:32:27 RPI_GPIO BUTTON_R1 Dblclick: off
2017-06-16 19:32:27 RPI_GPIO BUTTON_R1 Pinlevel: low
2017-06-16 19:32:27 RPI_GPIO BUTTON_R1 off
2017-06-16 19:32:27 RPI_GPIO BUTTON_R1 Longpress: off
Nimm mal die Anführungszeichen beim Relai Off raus bitte.
Zitat von: CoolTux am 16 Juni 2017, 19:51:59
Nimm mal die Anführungszeichen beim Relai Off raus bitte.
Habe ich gemacht. Jetzt funktioniert das ausschalten wenn das Relais eingeschaltet ist aber einschalten geht nicht ... entfernen der Anführungszeichen bei on bringt leider nichts.
Und nun noch ein Fragezeichen davor
[?Relais1:off]
Zitat von: CoolTux am 16 Juni 2017, 20:24:02
Und nun noch ein Fragezeichen davor
[?Relais1:off]
So?
([BUTTON_R1:"on"] and [?Relais1:off]) (set Relais1 on) DOELSE (set Relais1 off)
Jetzt funktioniert auch kein ausschalten mehr wenn Relais1 on ist.
Wie ist denn der Status von Relai1. Gib mal bitte ein list
Im Grunde besagt der Code wenn das Event Button_R1:on kommt schaue nach ob Relai1 off ist und wenn ja mache set Relais1 on ansonsten set Relai1 off
Zitat von: CoolTux am 16 Juni 2017, 20:35:16
Wie ist denn der Status von Relai1. Gib mal bitte ein list
Im Grunde besagt der Code wenn das Event Button_R1:on kommt schaue nach ob Relai1 off ist und wenn ja mache set Relais1 on ansonsten set Relai1 off
Genau das soll der Code machen. Denn Relais1 kann bereits aktiv sein durch die schaltung vom Handy/Tablet aus. Deswegen die Überprüfung vorher.
RPI_GPIO:
BUTTON_R1 (off)
BUTTON_R2 (off)
BUTTON_R3 (on)
BUTTON_R4 (on)
BUTTON_R5 (on)
BUTTON_R6 (on)
BUTTON_R7 (on)
BUTTON_R8 (on)
Relais1 (off)
Relais2 (off)
Relais3 (off)
Relais4 (off)
Relais5 (off)
Relais6 (off)
Relais7 (off)
Relais8 (off)
Ein list von den einzelnen Device meinte ich eigentlich.
Also von Relai1 und dem Button
Zitat von: CoolTux am 16 Juni 2017, 20:44:55
Ein list von den einzelnen Device meinte ich eigentlich.
Also von Relai1 und dem Button
Internals:
DEF 3
EXCEPT_FD 12
GPIO_Basedir /sys/class/gpio
NAME BUTTON_R1
NR 46
RPI_pin 3
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/local/bin/gpio
lasttrg 1497637753.24674
Readings:
2017-06-13 22:08:17 Counter 4
2017-06-16 20:29:13 Dblclick off
2017-06-16 20:29:13 Longpress off
2017-06-16 20:29:13 Pinlevel low
2017-06-16 19:58:34 on 0
2017-06-16 20:29:13 state off
Fhem:
interfaces switch
Attributes:
active_low yes
debounce_in_ms 50
direction input
interrupt both
pud_resistor up
room Unsorted
und das Relais1
Internals:
DEF 18
GPIO_Basedir /sys/class/gpio
NAME Relais1
NR 20
RPI_pin 18
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/local/bin/gpio
Readings:
2017-06-13 22:46:15 Pinlevel low
2017-06-16 19:57:09 off 0
2017-06-16 20:29:15 state off
Fhem:
interfaces switch
Attributes:
direction output
webCmd on:off
([BUTTON_R1:"on"] and [?Relais1] eq "off") (set Relais1 on) DOELSE (set Relais1 off)
Bitte einmal so
Zitat von: CoolTux am 16 Juni 2017, 20:56:01
([BUTTON_R1:"on"] and [?Relais1] eq "off") (set Relais1 on) DOELSE (set Relais1 off)
Bitte einmal so
Okay jetzt wird's kurios. Ich habe den debounce auf 250ms hochgesetzt. Das Relais1 schaltet jetzt ein, direkt wieder aus und wieder ein. Dann bleibt Relais1 so lange on bis ich in FHEM F5/Aktualisieren von BUTTON_R1 drücke. Dann schaltet sich das Relais1 wieder aus...
Bevor ich das debounce hochgestellt hatte, ließ sich das Relais1 nicht schalten. Es ging immer direkt nach dem los lassen des Tasters wieder aus.
Ausschalten lässt sich das Relais1 auch nur solange wie ich den Taster drücke. Danach springt es wieder an ... HILFE :D
Ok. Liegt an der Schaltung. Da fehlt noch ein 1k Ohm Widerstand. Danke für deine Hilfe :)
Das nächste Mal dann bitte den Post nicht schließen, sondern nur [Gelöst] vorne dran schreiben, dann haben andere User die Möglichkeit Folgefragen zu stellen (siehe auch hier: https://forum.fhem.de/index.php/topic,71806.0.html)