FHEM Forum

FHEM => Automatisierung => Thema gestartet von: elmer am 29 Mai 2017, 17:44:54

Titel: DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 29 Mai 2017, 17:44:54
Ich würde gerne eine Markise runter lassen, aber nur wenn jemand zuhause ist und nur wenn der Wind unter 3 ist und es muss Markise Eins offen sein und es darf nicht Regnen.

Bisher habe ich folgendes was aber leider nicht funktioniert, und beim windSpeed bekomme ich im DOIF die Temperatur angezeigt >:(

define Schattenplus_auf DOIF ([16:00-20:00] and [tahoma_1026532] eq "open" and [wetter_eigheim:windSpeed] < 3 and [Alle_Bewohner] eq "present" and ([HM_34C809_Rain:"dry"]) ( set Markise closed ) DOELSE (set Markise open)
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: Ellert am 29 Mai 2017, 18:32:24
Dir müsste ein Klammerfehler angezeigt werden.
Deine Bedingung wird nur in dem Moment wahr, wenn der Regensensor ein Ereignis mit "dry" sendet, warum nutzt Du dort die Eventabfrage?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: amenomade am 29 Mai 2017, 18:40:31
ZitatDir müsste ein Klammerfehler angezeigt werden
Ja klar, da fehlt eine Klammer.

ZitatDeine Bedingung wird nur in dem Moment wahr, wenn der Regensensor ein Ereignis mit "dry" sendet
Nein, jede [], die ein Ereignis sendet wird das DOIF triggern. Dann werden die andere bewertet.
Z.B. [wetter_eigheim:windSpeed] wird < 3
oder [tahoma_1026532] wechselt auf "open"
oder 15:59 wird 16:00

Man muss überlegen, ob man wirklich auf allen Ereignisse triggern wird. Wenn einige das DOIF nicht triggern sollten, dann [?condition] statt [condition]
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 29 Mai 2017, 18:59:30
Ich habe schon zig mal umgeschrieben aber leider immer keine Reaktion, habe tatsächlich eine Version erwischt die mir einen Klammerfehler anzeigt. Das ist der aktuelle Stand.


DEF
([16:00-20:00] and [tahoma_1026532] eq "open" and [wetter_eigheim:windSpeed] < 3 and [Alle_Bewohner] eq "present" and [HM_34C809_Rain:"dry"]) ( set Markise closed ) DOELSE (set Markise open)


Es sollen auf jeden Fall alle Bedingungen erfüllt sein damit die Markise ausfährt, aber evtl. wenn sie ausgefahren ist und wir das Haus verlassen soll sie draußen bleiben, jedoch wenn der Wind Stärker ist oder es zu Regnen beginnt muss sie rein.

Unter Probably associated with steht wie oben schon geschrieben, wetter_eigheim   32,5   HTTPMOD

Das ist die aktuelle Temperatur und nicht der Windspeed, anscheinend habe ich mehr Fehler wie mir lieb ist.

Wenn ich bei allen Devices ein ? setzte und nur bei [tahoma_1026532] eq "open" nicht wird nur das Tahoma Device getriggert aber alle anderen Bedingungen müssen erfüllt sein damit die Markise raus fährt, verstehe ich das richtig?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: Damian am 29 Mai 2017, 19:15:45
Du musst bedenken, dass

[HM_34C809_Rain:"dry"]

nur zum Zeitpunkt des Triggers wahr ist und sonst nicht. Wenn du nicht nur den Trigger abfragen willst, sondern auch den Zustand, dann musst du das so angeben:

[HM_34C809_Rain] eq "dry"
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: amenomade am 29 Mai 2017, 20:08:35
Zitatnur zum Zeitpunkt des Triggers wahr ist und sonst nicht.
Aaah ! Das meinte Ellert! Jetzt habe ich verstanden, was er meinte! Hatte natürlich recht, sorry.

ZitatWenn ich bei allen Devices ein ? setzte und nur bei [tahoma_1026532] eq "open" nicht wird nur das Tahoma Device getriggert aber alle anderen Bedingungen müssen erfüllt sein damit die Markise raus fährt, verstehe ich das richtig?
Ja, richtig, es wird dann nur von tahoma getriggert, und alle anderen müssen erfüllt sein (angenommen die Anmerkung von Damian / Ellert).
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: Ellert am 29 Mai 2017, 20:30:10
Zitat von: elmer am 29 Mai 2017, 18:59:30
Ich habe schon zig mal umgeschrieben aber leider immer keine Reaktion, habe tatsächlich eine Version erwischt die mir einen Klammerfehler anzeigt. Das ist der aktuelle Stand.


DEF
([16:00-20:00] and [tahoma_1026532] eq "open" and [wetter_eigheim:windSpeed] < 3 and [Alle_Bewohner] eq "present" and [HM_34C809_Rain:"dry"]) ( set Markise closed ) DOELSE (set Markise open)


Es sollen auf jeden Fall alle Bedingungen erfüllt sein damit die Markise ausfährt, aber evtl. wenn sie ausgefahren ist und wir das Haus verlassen soll sie draußen bleiben, jedoch wenn der Wind Stärker ist oder es zu Regnen beginnt muss sie rein.

Unter Probably associated with steht wie oben schon geschrieben, wetter_eigheim   32,5   HTTPMOD

Das ist die aktuelle Temperatur und nicht der Windspeed, anscheinend habe ich mehr Fehler wie mir lieb ist.

Wenn ich bei allen Devices ein ? setzte und nur bei [tahoma_1026532] eq "open" nicht wird nur das Tahoma Device getriggert aber alle anderen Bedingungen müssen erfüllt sein damit die Markise raus fährt, verstehe ich das richtig?

ZitatUnter Probably associated with ...
wird das Internal STATE angezeigt, das hat mit dem Reading windSpeed nichts zutun.

ZitatWenn ich bei allen Devices ein ? setzte und nur bei [tahoma_1026532] eq "open" nicht wird nur das Tahoma Device getriggert aber alle anderen Bedingungen müssen erfüllt sein damit die Markise raus fährt, verstehe ich das richtig?
Ja.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 29 Mai 2017, 21:02:06
([16:00-20:00] and [tahoma_1026532] eq "open" and [?wetter_eigheim:windSpeed] < 3 and [?Alle_Bewohner] eq "present" and [?HM_34C809_Rain] eq "dry") (set Markise auf)

So sieht das Ganze erst mal ganz gut aus, ausgefahren ist sie auf jeden Fall.

Ich verwenden für den windSpeed einen HTTPMOD, wie stabil läuft so etwas, kann man sich darauf verlassen oder muss man mit Aussetzern rechnen.

Ich habe einen Somfy io Windsensor der lässt sich aber nicht in Fhem einbinden, gibt es eine zuverlässige Alternative die mit Fhem geht?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: amenomade am 29 Mai 2017, 23:18:21
ZitatIch verwenden für den windSpeed einen HTTPMOD, wie stabil läuft so etwas, kann man sich darauf verlassen oder muss man mit Aussetzern rechnen.

Läuft so lange die Webseite erreichbar ist ;)
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 30 Mai 2017, 16:00:56
Zu früh gefreut, wenn ich eine Zeitspanne von 16:00-20:00 angebe und um 16:00 alle Bedingungen wahr sind fährt die Markise raus. Wenn ich aber um 16:00 absent bin und erst um 16:01 present bleibt das DOIF auf cmd2 stehen und die Markise bleibt geschlossen.

([15:45-20:00] and [tahoma_1026532] eq "open" and [?wetter_eigheim:windSpeed] < 8 and [?Alle_Bewohner] eq "present" and [?HM_34C809_Rain] eq "dry") (set Markise auf) DOELSE (set Markise off)
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: CoolTux am 30 Mai 2017, 16:04:59
Das Fragezeichen bei alle Bewohner raus nehmen.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 30 Mai 2017, 16:06:26
Mit 20 Minuten Verspätung ist sie nun doch raus, wieso das auf einmal?

Genau um 16:04:41 hat tahoma_1026532 RSSILevelState aktualisiert laut Readings, genau in diesem Moment ist die Markise raus, was hat das für einen Zusammenhang?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: CoolTux am 30 Mai 2017, 16:23:28
Kannst Du ein list vom DOIF geben?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: pc1246 am 30 Mai 2017, 16:24:58
Zitat von: elmer am 30 Mai 2017, 16:06:26
Mit 20 Minuten Verspätung ist sie nun doch raus, wieso das auf einmal?

Genau um 16:04:41 hat tahoma_1026532 RSSILevelState aktualisiert laut Readings, genau in diesem Moment ist die Markise raus, was hat das für einen Zusammenhang?

Ganz einfach!
Tahoma ist Dein trigger. Wenn also ein event eintrifft und alle Bedingungen erfuellt sind , dann wird das entsprechende cmd ausgefuehrt!
Gruss Christoph
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: Ellert am 30 Mai 2017, 16:25:52
Zitat von: elmer am 30 Mai 2017, 16:06:26
Mit 20 Minuten Verspätung ist sie nun doch raus, wieso das auf einmal?

Genau um 16:04:41 hat tahoma_1026532 RSSILevelState aktualisiert laut Readings, genau in diesem Moment ist die Markise raus, was hat das für einen Zusammenhang?

Aus der Commandref:
ZitatDas Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 30 Mai 2017, 16:52:59
Ok, also das ausführende Decice hat ein Event gesendet und deshalb ist die Markise raus. Sobald also nach 16:00 alle Bedingungen wahr sind wartet DOIF auf das nächste Event vom Gerät das Getriggert wird und schaltet auf cmd1.

Wird dann bei jedem Event state mit gesendet weil die Markise raus ist, wenn ja verhalten sich alle Geräte so, das ist schwer zu verstehen für einen Neuling wie mich ;D
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: Ellert am 30 Mai 2017, 18:50:28
Welche Events zusammen gesendet werden, siehst Du im Eventmonitor, siehe https://wiki.fhem.de/wiki/Event

Wenn Du nur auf bestimmte Readings triggern möchtest, schau Dir mal das Attribut "checkReadingEvent" an.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 31 Mai 2017, 21:53:40
Ich habe gerade gesehen das mein Log voll läuft mit dieser Fehlermeldung, kann jemand damit etwas anfangen.

2017.05.30 20:02:43 1: Error: >Schattenplus_auto_open< has no TYPE, but following keys: >READINGS<
2017.05.30 20:02:43 1: Error: >Schattenplus_automatsch_auf< has no TYPE, but following keys: >READINGS<



Hier noch ein list vom DOIF:
Internals:
   CFGFN
   DEF        ([15:45-20:00] and [tahoma_1026532] eq "open" and [?wetter_eigheim:windSpeed] < 3 and [?Alle_Bewohner] eq "present" and [?HM_34C809_Rain] eq "dry") (set Markise 70) DOELSE (set Markise off)
   NAME       Schattenplus_auf
   NR         1870
   NTFY_ORDER 50-Schattenplus_auf
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-05-31 20:54:21   Device          tahoma_1026532
     2017-05-31 20:00:00   cmd             2
     2017-05-31 20:00:00   cmd_event       timer_2
     2017-05-31 20:00:00   cmd_nr          2
     2017-05-31 20:54:21   e_tahoma_1026532_STATE closed
     2017-05-31 20:00:00   state           cmd_2
     2017-05-31 20:00:00   timer_01_c01    01.06.2017 15:45:00
     2017-05-31 20:00:00   timer_02_c01    01.06.2017 20:00:00
   Condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and InternalDoIf($hash,'tahoma_1026532','STATE') eq "open" and ReadingValDoIf($hash,'wetter_eigheim','windSpeed') < 3 and InternalDoIf($hash,'Alle_Bewohner','STATE') eq "present" and InternalDoIf($hash,'HM_34C809_Rain','STATE') eq "dry"
   Days:
   Devices:
     0           tahoma_1026532
     all         tahoma_1026532
   Do:
     0:
       0          set Markise 70
     1:
       0          set Markise off
   Helper:
     event      RSSILevelState: 66.0
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   tahoma_1026532
     timerevent RSSILevelState: 66.0
     triggerDev tahoma_1026532
     timerevents:
       RSSILevelState: 66.0
     timereventsState:
       RSSILevelState: 66.0
     triggerEvents:
       RSSILevelState: 66.0
     triggerEventsState:
       RSSILevelState: 66.0
   Internals:
     0           tahoma_1026532:STATE Alle_Bewohner:STATE HM_34C809_Rain:STATE
     all         tahoma_1026532:STATE Alle_Bewohner:STATE HM_34C809_Rain:STATE
   Interval:
     0          -1
     1          0
   Itimer:
   Localtime:
     0          1496324700
     1          1496340000
   Readings:
   Realtime:
     0          15:45:00
     1          20:00:00
   Regexp:
     0:
     All:
   State:
     State:
   Time:
     0          15:45:00
     1          20:00:00
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timers:
     0           0  1
   Trigger:
   Triggertime:
     1496324700:
       localtime  1496324700
       Hash:
     1496340000:
       localtime  1496340000
       Hash:
Attributes:
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: amenomade am 01 Juni 2017, 00:00:54
Hier wäre eigentlich ein list von Schattenplus_auto_open und von Schattenplus_automatsch_auf interessanter :)

So wie das Ergebnis vom folgenden Befehl:
{ join(",", grep { !$defs{$_}{TYPE} } keys %defs) }
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 01 Juni 2017, 05:18:09
Ich bin gerade unterwegs, aber das ist ja das komische Schattenplus_auto_open und von Schattenplus_automatsch_auf gibt es gar nicht. Ich glaube das waren meinen erste Versuche das DOIF zu erstellen aber da ich bei beiden Veruchen einen Fegler hatte, hat es mit einer Fehlermeldung abgebrochen.

Ist es möglich das bei Fhem temporär noch etwas von diesen Versuchen vorhanden ist und bei einem Neustart von Fhem verschwindet?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: pc1246 am 01 Juni 2017, 07:08:40
Nein
Du hast ja schon gespeichert! Jetzt kommen wir aber ganz an den Anfang von fhem: Schau mal in unsorted, da findest du diese DOIFs wieder!
Gruss Christoph
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 01 Juni 2017, 08:07:30
Nein, die sind nicht vorhanden, auch nicht mit list.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: amenomade am 01 Juni 2017, 08:28:42
Und mit { join(",", grep { !$defs{$_}{TYPE} } keys %defs) } ?
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: nils_ am 01 Juni 2017, 09:24:05
wie hast du denn deine alten DOIF's gelöscht?

fhem.cfg bearbeitet?
WebInterface??
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: pc1246 am 01 Juni 2017, 09:35:20
Zitat von: nils_ am 01 Juni 2017, 09:24:05
wie hast du denn deine alten DOIF's gelöscht?

fhem.cfg bearbeitet?
WebInterface??
Ein Schelm, der boeses dabei denkt!
Gruss Christoph
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 01 Juni 2017, 13:48:42
Zitat von: amenomade am 01 Juni 2017, 08:28:42
Und mit { join(",", grep { !$defs{$_}{TYPE} } keys %defs) } ?

Hie bekomme ich nur eine Fehlermeldung:
{ join(",", grep { 0defs{$_}{TYPE} } keys %defs) }
-bash: syntax error near unexpected token `",",'


Und gelöscht habe ich nichts, da wie gesagt bei 2 Versuchen das DOIF zu erstellen von fhem eine Fehlermeldung kam und das ganze abgebrochen wurde, deshalb kann es doch auch nicht sein das etwas vorhanden ist.

Hier noch die fhem Meldungen die beim erstellen vom DOIF gekommen sind:

Schattenplus_automatsch_auf DOIF: expected DOELSEIF or DOELSE:  and ([wetter_eigheim:windSpeed] < 3) and ([HM_34C809_Rain:"dry"]) ( set Markise closed ) DOELSE (set Markise open)
Schattenplus_auto_open DOIF: expected DOELSEIF or DOELSE:  and ([wetter_eigheim:windSpeed] < 3) and ([HM_34C809_Rain:"dry"]) ( set Markise closed ) DOELSE (set Markise open)
Argument "100 %" isn't numeric in numeric lt (<) at (eval 33307) line 1.
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: pc1246 am 01 Juni 2017, 14:12:10
Das du etwas anderes eingegeben hast als amenomade vorgeschlagen hat ist Dir aber aufgefallen?
Gruss
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 01 Juni 2017, 14:31:21
Was ist.......

Ok beim nochmaligen lesen wriss ich was du gemeint hast, man sollte wärend man Auto fährt nicht lesen ;D
Titel: Antw:DOIF mehrere Bedingungen wahr für Aktion
Beitrag von: elmer am 01 Juni 2017, 15:37:08
Ok, eben noch mal nachgeschaut und es hat gepasst was ich eingegeben habe.

pi@raspberrypi:~ $ { join(",", grep { !$defs{$_}{TYPE} } keys %defs) }
{ join(",", grep { 0defs{$_}{TYPE} } keys %defs) }
-bash: syntax error near unexpected token `",",'



Ich habe heute früh zur Sicherheit doch mal einen Neustart gemacht und bisher sieht das Log sauber aus, mal sehen ob es nach 16 Uhr wieder zugemüllt wird.
2017.06.01 00:01:00 3: addLog return value: SCALAR(0x471c7c0)
2017.06.01 00:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 01:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 02:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 02:55:33 3: tahoma1: request active
2017.06.01 02:55:35 3: tahoma1: request active
2017.06.01 02:55:37 3: tahoma1: request active
2017.06.01 03:00:05 3: tahoma1: request active
2017.06.01 03:00:07 3: tahoma1: request active
2017.06.01 03:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 04:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 05:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 06:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 07:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 08:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 09:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 10:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 11:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 12:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 13:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
Argument "100 %" isn't numeric in numeric lt (<) at (eval 92995) line 1.
Argument "100 %" isn't numeric in numeric lt (<) at (eval 93008) line 1.
2017.06.01 13:41:57 3: FBDECT set FBDECT_Fritzbox_22 on
2017.06.01 13:49:38 3: CUL_1: Unknown code YsAA49024A010000, help me!
2017.06.01 13:49:40 3: CUL_1: Unknown code YsAB1C024B010000, help me!
2017.06.01 14:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data
2017.06.01 14:45:07 3: tahoma1: tahoma_dispatch json string is faulty
2017.06.01 14:45:09 3: tahoma1: tahoma_login
2017.06.01 14:45:09 2: tahoma1: login start
2017.06.01 14:45:09 2: tahoma1: login end, logged_in=1
2017.06.01 14:45:13 2: tahoma1: tahoma_autocreate begin
2017.06.01 14:45:13 2: tahoma1: tahoma_autocreate end, new=0
2017.06.01 14:45:13 3: tahoma1: tahoma_updateDevices
2017.06.01 14:45:13 3: tahoma1: updateDevices device=io://0803-1025-4201/3738050
2017.06.01 14:45:15 2: tahoma1: tahoma_autocreate begin
2017.06.01 14:45:15 2: tahoma1: tahoma_autocreate end, new=0
2017.06.01 14:45:15 3: tahoma1: tahoma_updateDevices
2017.06.01 14:45:15 3: tahoma1: updateDevices device=io://0803-1025-4201/3738050
2017.06.01 15:14:24 3: UWZ Unwetterzentrale: Run.964 Done fetching data



Jetzt ist es 19 Uhr und noch immer keine Einträge im Log zu sehen, der Neustart von Fhem hat anscheinend das Problem von alleine gelöst.