Verständnisproblem bei notify mit if Bedingung

Begonnen von sparkiie, 20 August 2018, 08:59:06

Vorheriges Thema - Nächstes Thema

sparkiie

Ich arbeite mich so langsam in die Materie ein und habe auch schon erste Devices und notify eingerichtet.
Probleme habe ich noch mit meiner Rolladensteuerung. Die Rollos werden  teilweise mit Fernbedienung gesteuert und ich möchte dies in der Rolladensteuerung erfassen, um den Stand der Rollos im FHEM zu sehen.

Das up und down habe ich bereits erfasst, was auch funktioniert:
IT_0FFF00000F:off set Rollo1 extern closed

Aus dem Wiki habe ich mir folgendes notify zusammengebastelt, um auch das Stop Signal (entspricht dem vorangegangenem Signal) zu erkennen. Leider funktioniert dies noch nicht?!
IT_0FFF00000F:on
IF ([Rollo1] ne "drive-up")
(set Rollo1 extern open)ELSE
(set Rollo1 extern stop)

87insane

Hi,

du bist ja nach hier umgezogen. Hatten ja im Modul Bereich schon einiges hin und her geschrieben.
Zuerst, bitte mal das notify an sich verstehen:
https://wiki.fhem.de/wiki/Notify

Ich dachte dein IT kann kein off? Bin etwas verwundert, da du ja für Start/Stop jeweils ON sendest.

define az_rollo_manuell_ab notify HierDasWirklicheRollo:HierDasAuslösendeReading:.* {\
if (Value("HierDerNameDesRolloModulsFürDiesesRollo") ne "drive-down") {\
  fhem("set HierDerNameDesRolloModulsFürDiesesRollo extern closed");;;;\
}\
elsif (Value("HierDerNameDesRolloModulsFürDiesesRollo") eq "drive-down") {\
  fhem("set HierDerNameDesRolloModulsFürDiesesRollo extern stop");;;;\
}\
}


HierDasWirklicheRollo: Also dein IT
HierDerNameDesRolloModulsFürDiesesRollo: Hier spreche ich von dem Modul. Du hast immer für jedes Rollo das Tatsächliche Gerät zum steuern und einmal ein Gerät für das Rollo Modul.

Bei mir ist das z.B. so:
ESPEasy_az_rollo: Wirkliche Steuereinheit / ESPeasy Schalter an der Wand der mit WLan eingebunden ist.
az_rollo: Rollo Modul Geräte Name.

Dies wäre dann nur eine Bedingung, da du das ja erstmal testen wolltest. Ich würde wie es im Ursprung vorgesehen ist aber eine zweite Abfrage einbauen. Wie im anderen Thread schon gesagt, würde ich bei deiner Konstellation das ReadingsAge nehmen.

CoolTux

Vielleicht solltet Ihr beiden erstmal klären ob Ihr das FHEM IF Modul nehmen wollt oder mit Perl if arbeiten möchtet. Ist ein riesen unterschied.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

87insane

Naja - Das oben angehangene Script läuft ja bei mir. Wie er das am Ende machen will, ist mir bisher unschlüssig.
Da wir im RolloModul Thread schon schrieben, denke ich, ist es ihm egal - Solange es läuft.

CoolTux

Zitat von: 87insane am 20 August 2018, 10:22:51
Naja - Das oben angehangene Script läuft ja bei mir. Wie er das am Ende machen will, ist mir bisher unschlüssig.
Da wir im RolloModul Thread schon schrieben, denke ich, ist es ihm egal - Solange es läuft.

Da gebe ich Dir Recht. Dennoch sollte der Threadersteller wissen was er da macht und wie. Er muß verstehen was die Unterschiede von den beiden Varianten sind und das das eine mit dem anderen so gar nichts zu tun hat.
Sonst steht er bald wieder auf der Matte mit selbigen Zusammenhang  ;)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Hallo sparkiie,

generell ist es keine gute Idee solche Fragmente zu posten, am Besten ist immer ein list nameDesNotify, oder wie dem Fall hier wenigsten die Raw Def
Es ist auch keine gute Idee, nach dem regExp sofort einen Zeilenumbruch zu machen. Es scheint zwar bei Dir noch ein Leerzeichen zu stehen, aber das vergisst man dann mal schnell. Und ich weiß nicht wie tolerant das IF Modul gegen fehlenden Leerzeichen ist, in der Doku steht es so
IT_0FFF00000F:on IF ([Rollo1] ne "drive-up") (set Rollo1 extern open) ELSE (set Rollo1 extern stop)


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

sparkiie

ZitatIch dachte dein IT kann kein off? Bin etwas verwundert, da du ja für Start/Stop jeweils ON sendest.
Das Rollo kann on und auch off. Zum stoppen muss aber der selbe Befehl nochmal gesendet werden. Beim Hochfahren muss ich also nochmal on und beim Herunterfahren nochmal off senden.

ZitatDa wir im RolloModul Thread schon schrieben, denke ich, ist es ihm egal - Solange es läuft.
Grundsätzlich ist mir der Weg schon egal, Hauptsache es funktioniert.
Beim if mit Perl ist mir die Gefahr von fehlenden Zeichen ([{}]) zu hoch, deshalb wollte ich es lieber mit IF probieren. Das IF scheint mir auch näher am VBA zu sein, damit kenne ich mich etwas aus.

ZitatUnd ich weiß nicht wie tolerant das IF Modul gegen fehlenden Leerzeichen ist, in der Doku steht es so
Mir scheint es ist nicht so tolerant. Der einzige Unterschied zwischen deiner (FUNKTIORIENDEN) Variante und meiner sind die fehlenden Leerzeichen.

Vielen Dank nochmal an alle Beteiligten!