DOIF Schaltstellungswechsel erkennen

Begonnen von Stimming, 13 März 2019, 17:10:34

Vorheriges Thema - Nächstes Thema

Stimming

Hallo Leute,

ich habe mich bisher ganz gut alleine mit Tutorials durchgeschlagen, stehe aber im Moment vor einem Problem, zu dem ich leider keine Lösung finde.

Ich habe einen gewöhnlichen mechanischen Lichtschalter mit einem Shelly 1 Aktor ausgerüstet. Ob der schalter ein- oder ausgeschaltet ist frage ich mit MQTT ab.
Geschaltet wird eine hue Lampe und die Verknüpfung, ob der Schalter betätigt wird, stelle ich über doif her.
Da die Lampe ebenfalls über Alexa gesteuert wird, soll lediglich ein Stellungswechsel des Schalters registriert werden und anhand dem Status der Lampe (on/off), die Lampe an- oder ausgeschaltet werden.

Zur Verdeutlichung meinen Code, der natürlich so nicht funktioniert.


([shelly_bad:switch] eq "1|0"  and [hueBridge1_HUEDevice21] eq "off")
(set hueBridge1_HUEDevice21 on)

DOELSE
([shelly_bad:switch] eq "1|0" [hueBridge1_HUEDevice21] eq "on")
(set hueBridge1_HUEDevice21 off)


im Vorraus vielen dank für die Hilfe

Grüße Stimming

Ellert

Nicht eq, dann ist 0|1 eine Zeichenkette. Nimm den Match-Operator (=~), dann ist es eine Regex.

Stimming

danke, funktoniert soweit, nur leider schaltet sich das Licht nun in regelmäßigen Abständen automatisch an und ab.
gibt es hierfür auch eine Lösung?

Damian

ja statt [hueBridge1_HUEDevice21] [hueBridge1_HUEDevice21:state] nehmen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Stimming

ich stehe auf dem Schlauch, Funktoniert immer noch nicht so wie es soll. Das Licht schaltet sich noch in Regelmäßigen Abständen an und aus.
so sieht der code aus:

([shelly_bad:switch] =~ "1|0"  and [hueBridge1_HUEDevice21:state] eq "off")
(set hueBridge1_HUEDevice21 on)

DOELSE
([shelly_bad:switch] =~ "1|0" [hueBridge1_HUEDevice21:state] eq "on")
(set hueBridge1_HUEDevice21 off)

attr do always


Damian

Dann wirst du wohl die Events im Eventmonitor auswerten müssen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Stimming

gibt es nicht sowas wie einen "Trigger", der die Schleife einmal durchlaufen lässt, bis zum nächsten wechsel des schalters?
wenn nicht, könnest du bitte näher ereutern, welche Events ich im Eventmonitor ich Auswerten soll, und wie mir das weiterhilft?

Ellert


Otto123

Hi,

mal eine Alternative, du willst doch einfach ein toggle oder?
Kann deine Lampe toggle? -> set hueBridge1_HUEDevice21 toggle

Wenn ja nimmst Du den Eventmonitor und lässt Dir ein notify dort erzeugen.
https://wiki.fhem.de/wiki/Event_monitor
Es kann auch sein, das es hilft beim shelly dies zu setzen.
attr shelly_bad event-on-change-reading .*

Sollte so etwas bei rauskommen:
define n_huetoggle notify shelly_bad:switch.*(0|1) set hueBridge1_HUEDevice21 toggle

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz