neuer FHEM-Befehl IF

Begonnen von Damian, 25 Dezember 2013, 23:50:06

Vorheriges Thema - Nächstes Thema

scooty

Ich würde

define atSchlossUncertain at +*00:00:10 IF ([Tuerkontakt] eq "closed" and ([Schloss] eq "locked (uncertain)" or [Schloss] eq "NACK"))(set Schloss unlock,{PushBulletText('Türstatus nicht sicher erkennbar') })

(Komma statt zwei Semikolon) versuchen.
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

Alex_E

Hallo zusammen,

ich versuche gerade einen Homestatus zu entwickeln welcher mir mitteilt, ob meine Türen alle geschlossen sind. Leider aktualisiert sich der dafür angelegt Dummy aber nicht.

Folgendermaßen sehen die Eingaben aus:

define Homestatus dummy

define test notify Homestatus

IF ([Tuere_A] eq "closed" and [Tuere_B] eq "closed" and [Tuere_K] eq "closed") (set Homestatus off) ELSE(set Homestatus on) ELSE(set Homestatus on)

Wäre für Tips dankbar

der-Lolo

#317
das define test musst du ändern...

define test notify Tuere.* IF ...

Du möchtest ja schliesslich auf die Türen reagieren und den homestatus dummy damit füttern...

Es kann auch nur ein ELSE geben...

Invers

Zitat von: scooty am 06 August 2014, 15:30:09
Ich würde

define atSchlossUncertain at +*00:00:10 IF ([Tuerkontakt] eq "closed" and ([Schloss] eq "locked (uncertain)" or [Schloss] eq "NACK"))(set Schloss unlock,{PushBulletText('Türstatus nicht sicher erkennbar') })

(Komma statt zwei Semikolon) versuchen.

Danke, funktioniert. Hatte schon alles probiert, aber auf Komma kam ich einfach nicht. :-(
Ich Trottel.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Alex_E

@ der Lolo

Vielen Dank, hat geklappt..

Simon74

#320
Ich versuche gerade diesen notify.

t5.fl.bm:motion
IF ([Personen] eq "absent") ((define at.mailalarm at +00:01 IF ([Personen] eq "absent") ({DebianMail('mail@@adr.net', 'FHEM Alarm !', 'Bewegung ohne anwesende Person !')}))
)


Im erstelleten AT Job steht dann:
IF (absent eq "absent") usw.....

Wie kann ich [ und ] escapen ?

Damian

Lösung gibt es über ReadingsVal ... siehe hier:

http://forum.fhem.de/index.php/topic,26090.msg191086.html#msg191086

werde es noch beim IF-Befehl einbauen, dass diese Art von Schachtelung auch funktioniert.

Wie ich heute so ein Problem lösen würde, kannst du dir aber bestimmt schon denken.  ;)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Simon74

Vielen Dank.

Ich vermute mal DOIF  :)
Ich habe meinen "Bewegungsmelder (Bluetooth) Abwesenheitsalarm " nun so gelöst, endlich wie gewünscht mit 1 Minute Verzögerung.

DEF:
t5.fl.bm:motion
IF ([Personen] eq "absent" and (Value("at.mailalarm") eq ""))
((define at.mailalarm at +00:01 IF (ReadingsVal("Personen","state","") eq "absent") (set MyTTS tts Achtung. Alarm wird ausgelöst.,{DebianMail('mail@@adr.net', 'FHEM Alarm !', 'Bewegung ohne anwesende Person !')})))

Damian

Zitat von: Simon74 am 19 August 2014, 21:28:08
Vielen Dank.

Ich vermute mal DOIF  :)
Ich habe meinen "Bewegungsmelder (Bluetooth) Abwesenheitsalarm " nun so gelöst, endlich wie gewünscht mit 1 Minute Verzögerung.

DEF:
t5.fl.bm:motion
IF ([Personen] eq "absent" and (Value("at.mailalarm") eq ""))
((define at.mailalarm at +00:01 IF (ReadingsVal("Personen","state","") eq "absent") (set MyTTS tts Achtung. Alarm wird ausgelöst.,{DebianMail('mail@@adr.net', 'FHEM Alarm !', 'Bewegung ohne anwesende Person !')})))


ja, oder so:

define di_motion DOIF ([t5.fl.bm] and [Personen] eq "absent") (set MyTTS tts Achtung. Alarm wird ausgelöst.,{DebianMail('mail@@adr.net', 'FHEM Alarm !', 'Bewegung ohne anwesende Person !')})
attr di_motion wait 60


ohne notify, at und IF  :)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tommy82

Hi,
ich versuche eine Alarmanlage zu realisieren, und habe dazu folgende IF Anweisung versucht, die allerdings untenstehende Fehler liefert wo ich keine Lösung zu finden kann.
Die Alarmanlage soll zu festen Zeiten (*20:35:00 on) an und aus (*20:43:00 off) geschaltet werden, dazu gibts einen Dummy (Alarmanlage_Wohnzimmer)der den Status annimmt. Dieser Dummy hat aber auch die webcmd on:off:auto, worüber ich denn Dummy z.b. für Urlaubsphasen immer on setzen will, oder halt immer Off setzen will, so das dann nicht die festen Zeiten greifen. Wenn der Dummy auf Auto steht sollen die festen Zeiten greifen.

Hatte mir dazu mal das angesehen http://fhem.de/commandref_DE.html#IF und dann das versucht:

alarmOn sieht jetzt so aus:
define alarmOn at *20:35:00 IF ([Alarmanlage_Wohnzimmer] "On","Auto") ( IF ([TuerFensterWohnzimmer] eq "AllesZu")  (set Alarmanlage_Wohnzimmer on) ELSE ( { FB_mail('xyz@googlemail.com','FHEM Fenster Offen','Alarm kann nicht aktiviert werden, Fenster oder Tuer noch offen' ) ) } )

Denn Dummy habe ich dann um 20:33 auf off gesetzt, so das ich erwartet hatte das die Alarmanlage nicht On geshaltet wird und ich die Email bekomme das nochwas offen ist.

Bekomme dann im Log diesen Fehler:(bzw. das ist der einzige der noch übrig geblieben ist, den rest hab ichgelöst)
alarmOn: IF: right bracket without left bracket: } Wenn ich das richtig verstehe soll eine { fehlen, aber wo? Es gibt ja vor und nach der Email eine, so das die Klammern geschlossen sind {}

alarmoff sieht jetzt so aus:
define alarmOff at *20:43:00 IF ([Alarmanlage_Wohnzimmer] "Off","Auto") (set Alarmanlage_Wohnzimmer off) ELSE (set Alarmanlage_Wohnzimmer on)


Hab die Alaramanlage dann um 20:38 auf on gesetzt, so das sie nicht off gehen sollte, allerdings bekomme ich auch dort einen Fehler:
alarmOff: syntax error at (eval 3890) line 1, near ") "Off""
Klammern sind doch alle gesetzt oder?

Was habe ich falsch angepasst, bzw. übersehen?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Damian

#325
Die Reihfolge der Klammern passt nicht und die Abfrage ist falsch, richtig wäre

define alarmOn at *20:35:00 IF ([Alarmanlage_Wohnzimmer] eq "On" or [Alarmanlage_Wohnzimmer] eq "Auto")
(  IF ([TuerFensterWohnzimmer] eq "AllesZu")
     (set Alarmanlage_Wohnzimmer on)
   ELSE
     ({FB_mail('xyz@googlemail.com','FHEM Fenster Offen','Alarm kann nicht aktiviert werden, Fenster oder Tuer noch offen' )})
)

Mit Einrückungen, kann man Klammerebenen besser erkennen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tommy82

#326
Hallo Damian,
habs jetzt so wie von dir gezeigt geändert und das alarmOff so gesetzt:
define alarmOff at *18:45:00 IF ([Alarmanlage_Wohnzimmer] eq "Off" or [Alarmanlage_Wohnzimmer] eq "Auto")
     (set Alarmanlage_Wohnzimmer off)
   ELSE
     (set Alarmanlage_Wohnzimmer on)


Es gibt keine Fehler mehr im Log und es scheint alles zu funktionieren.

Danke für deine Hilfe


EDIT:
Es scheint doch noch einen Fehler in meinem alarmOff zu geben.
Wenn ich den Alarm auf Auto stelle, dann geht der Alarm auch zu den gesetzten Zeiten auf On, allerdings geht er dann nicht zu den gesetzten Zeiten auf Off.

Was ist noch falsch am Code?7

Danke

MFG
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Damian

Zitat von: Tommy82 am 23 Oktober 2014, 18:47:57
Hallo Damian,
habs jetzt so wie von dir gezeigt geändert und das alarmOff so gesetzt:
define alarmOff at *18:45:00 IF ([Alarmanlage_Wohnzimmer] eq "Off" or [Alarmanlage_Wohnzimmer] eq "Auto")
     (set Alarmanlage_Wohnzimmer off)
   ELSE
     (set Alarmanlage_Wohnzimmer on)


Es gibt keine Fehler mehr im Log und es scheint alles zu funktionieren.

Danke für deine Hilfe


EDIT:
Es scheint doch noch einen Fehler in meinem alarmOff zu geben.
Wenn ich den Alarm auf Auto stelle, dann geht der Alarm auch zu den gesetzten Zeiten auf On, allerdings geht er dann nicht zu den gesetzten Zeiten auf Off.

Was ist noch falsch am Code?7

Danke

MFG

Dein definierter Code ist so nicht gerade sinnvoll: Es steht da, wenn Alarmanlage_Wohnzimmer gleich "off", dann diese auf "off" setzen.
Ebenso steht da bei "Auto" soll sie auf "off" gehen. Damit kann sie bei "Auto" niemals auf "on" gehen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Puschel74

Hallo,

auch macht es für FHEM einen Unterschied ob ich etwas off schalte und dann auf Off prüfe.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Tommy82


Zitat von: Damian am 23 Oktober 2014, 21:47:34
Dein definierter Code ist so nicht gerade sinnvoll: Es steht da, wenn Alarmanlage_Wohnzimmer gleich "off", dann diese auf "off" setzen.
Ebenso steht da bei "Auto" soll sie auf "off" gehen. Damit kann sie bei "Auto" niemals auf "on" gehen.

Gruß

Damian

Ok das heißt ja dann das es noch einen größeren Fehler gibt, denn die Anlage soll ja  wenn sie auf Auto steht( Normalfall) zu den definierten Zeiten On und Off gehen, was ja nur durch die manuelle Schalter Stellung auf on bzw. Off änderbar sein soll und dann auch Bestand haben soll., bis ich sie wieder auf Auto Stelle.
Da muss ich wohl noch was basteln......
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI