Hauptmenü

neues Modul DOIF

Begonnen von Damian, 21 Mai 2014, 15:53:18

Vorheriges Thema - Nächstes Thema

netbus

Hallo Damian,
wie kann ich mit DOIF mehrere Befehle mit dem selben state gleichzeitig schalten. Steht leider nichts in der Commandref und Wiki.

define di.test DOIF ([test] eq "on") (set lampe1,lampe2,lampe3 on)
geht leider nicht

igami

Zitat von: netbus am 24 November 2014, 16:14:03
Steht leider nichts in der Commandref und Wiki.

Zitat von: Commandref
http://fhem.de/commandref_DE.html#DOIF
Falls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden:

define di_light DOIF ([08:00]) ((set lamp1,lamp2 on),set switch on)

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

satprofi

Zitat von: netbus am 24 November 2014, 16:14:03
Hallo Damian,
wie kann ich mit DOIF mehrere Befehle mit dem selben state gleichzeitig schalten. Steht leider nichts in der Commandref und Wiki.

define di.test DOIF ([test] eq "on") (set lampe1,lampe2,lampe3 on)
geht leider nicht

Hallo, selbiges hatte ich folgend gelöst:

set Lampe1 on, set Lampe2 on-till 23:00,set Lampe3 on, etc.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

ojb

Hallo,

ich möchte gernen einen Watchdog bauen der auf das Ausbleiben eines Signals reagiert.

Mit dem Attribut wait kann man das ja schön realisieren.

Mir ist bei den Tests jetzt aber aufgefallen, dass der Timer erst aufgezogen wird wenn um ersten Mal das Signal gekommen ist. Ich möchte gerne aber auch einen "Störfall" abfangen bei dem das überwachte Signal eine bestimmte Zeit überhaupt nicht kommt.

Wie könnte man das realisieren?

Danke und lieben Gruß
Oli
FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

moonsorrox

Zitat von: Brockmann am 24 November 2014, 08:27:05
Vorschlag: Komm doch mal von dem Intervall weg und verwende statt dessen Anfangs- und Endzeit direkt, etwa so (ungeprüft):

( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",1200,"17:00","22:20")}|12345] or [{sunset("CIVIL",800,"17:00","22:20")}|06]))
    (set WegLampe_Sw_01 on)

DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",9000,"19:00","22:20")}|12345] or [{sunset("CIVIL",9000,"19:00","22:20")}|06]))
    (set WegLampe_Sw_01 off,set WegLampe_Sw_02 on)

DOELSEIF ([Zeitsteuerung] eq "Dämmerung" and ([00:15|01234] or [01:15|56]))
    (set WegLampe_Sw_02 off)


Sollte genau dasselbe bewirken, nur dass Du ohne DOELSE auskommst.

ich habe also das mal so wie oben übernommen... leider hat er heute also um 00:15 nicht ausgeschaltet.

Ich habe dann mal den letzten Teil umgedreht und die Zeit mal eben auf 00:20 gestellt, da ist das Licht ausgegangenen, aber evtl. bewirkt es ja dann das dieses dann an den anderen Tagen auch nicht ausgeht. Weiß jetzt nicht genau was richtig ist. Hier mal meine Änderung nach dem letzten DOELSEIF
(Die Zeit ist jetzt erst mal egal wollte nur nochmals probieren)
DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and [01:15|56] or ([00:20|01234]))
    (set WegLampe_Sw_02 off)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: ojb am 24 November 2014, 22:17:40
Hallo,

ich möchte gernen einen Watchdog bauen der auf das Ausbleiben eines Signals reagiert.

Mit dem Attribut wait kann man das ja schön realisieren.

Mir ist bei den Tests jetzt aber aufgefallen, dass der Timer erst aufgezogen wird wenn um ersten Mal das Signal gekommen ist. Ich möchte gerne aber auch einen "Störfall" abfangen bei dem das überwachte Signal eine bestimmte Zeit überhaupt nicht kommt.

Wie könnte man das realisieren?

Danke und lieben Gruß
Oli

Benachrichtigung nach Ausbleiben eines Events gibt es erst ab der nächsten Version.

Gruß

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

ojb

Hi Damian,

ok, super. Danke.

Und Danke für DOIF. Das ist echt ein super Modul.

Hab ich das richtig gelesen, Du hast erst mit den Modulen mit Perl angefangen?

Liebe Grüße
Oli

FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

Brockmann

Zitat von: moonsorrox am 25 November 2014, 00:26:58
DOELSEIF ([Zeitsteuerung] eq "Dämmerung" and ([00:15|01234] or [01:15|56]))
    (set WegLampe_Sw_02 off)

ich habe also das mal so wie oben übernommen... leider hat er heute also um 00:15 nicht ausgeschaltet.
Ich kann mir keinen vernünftigen Grund vorstellen, warum das DOIF mit dieser Bedingung an einem Dienstag um 0:15 nicht schalten sollte. Es sei denn, Zeitsteuerung war nicht eq "Dämmerung".

Zitat von: moonsorrox am 25 November 2014, 00:26:58
Hier mal meine Änderung nach dem letzten DOELSEIF
(Die Zeit ist jetzt erst mal egal wollte nur nochmals probieren)
DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and [01:15|56] or ([00:20|01234]))
    (set WegLampe_Sw_02 off)

Die Klammerung im ursprünglichen Code war korrekt. So ist es jetzt Quatsch, weil Du damit sagst "Wenn es Dämmerung und 1:15 an einem Freitag bzw. Samstag ist, ODER WENN es 0:20 an einem So,Mo,Di,Mi,Do ist. Damit wäre die Bedingung um 0:20 So-Do immer wahr, egal ob Zeitsteuerung eq "Dämmerung" oder nicht.

Mit list <Name des DOIF> kannst Du Dir eine detaillierte Aufstellung eines DOIFs anschauen. Mach das mal, nachdem das DOIF nicht das getan hat, was es sollte. Außerdem solltest Du mal im Logfile nachschauen, was um 0:15 passiert ist. Vielleicht findet sich dort eine Erklärung.

Damian

Zitat von: ojb am 25 November 2014, 09:10:18
Hi Damian,

ok, super. Danke.

Und Danke für DOIF. Das ist echt ein super Modul.

Hab ich das richtig gelesen, Du hast erst mit den Modulen mit Perl angefangen?

Liebe Grüße
Oli
Ich weiß zwar nicht, wo das steht, aber es stimmt, ich habe mir Perl als Programmiersprache erst angeguckt als ich das THRESHOLD-Modul ausgehend vom PID-Modul programmiert habe. Na ja, wenn man "vorbelastet" ist, dann ist es nicht so schwer sich eine neue Programmiersprache anzueignen auch wenn ich beruflich nicht mehr programmiere.

Gruß

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

ojb

#759
Respekt.

Ich bin auch "vorbelastet", mal schauen wie lange ich brauche :-)

Lieg im Moment mit einem gebrochenen Zeh zu Hause, wiel mir beim Versuch des Anschliessens der Aussenbeleuchtung im Garten auf den KNX-Aktor um mit FHEM steuern zu können die Metalltür vom Schaltschrank auf den Zeh gefallen ist, da hab ich a bissi Zeit :-)
FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

moonsorrox

#760
Zitat von: Brockmann am 25 November 2014, 09:17:04
Ich kann mir keinen vernünftigen Grund vorstellen, warum das DOIF mit dieser Bedingung an einem Dienstag um 0:15 nicht schalten sollte. Es sei denn, Zeitsteuerung war nicht eq "Dämmerung".
Ich auch nicht, dabei war ich mir sicher das es jetzt alles gut ist :-\
Reading ist im Moment dauerhaft auf Dämmerung geschaltet, da ja der Zustand Aus gar nichts bringt und Zufall noch gar nicht aktiv... ;) was soviel heißt, ich habe noch gar kein DEF dafür drin

Zitat von: Brockmann am 25 November 2014, 09:17:04
Mit list <Name des DOIF> kannst Du Dir eine detaillierte Aufstellung eines DOIFs anschauen. Mach das mal, nachdem das DOIF nicht das getan hat, was es sollte. Außerdem solltest Du mal im Logfile nachschauen, was um 0:15 passiert ist. Vielleicht findet sich dort eine Erklärung.
Ok das mache ich, werde den Code wieder so ins DEF schreiben wie von dir vorgeschlagen und mal zu einer etwas früheren Zeit schon mal probieren.
Ins Log habe ich natürlich schon geschaut, gleich gestern als es nicht schaltete... aber da steht um 00:15 nix von Bedeutung für das DOIF  8)
Log
2014.11.25 00:15:00 3: Registering HTTPSRV gds_web_resse for URL /resse...
2014.11.25 00:15:00 3: GDS resse: tempDir=/tmp/
2014.11.25 00:15:00 3: GDS resse: created
2014.11.25 00:15:00 1: Including ./FHEM/Wetter.cfg
2014.11.25 00:15:00 1: Including ./FHEM/BeleuchtungEingang.cfg
2014.11.25 00:15:00 1: Including ./FHEM/Schlafzimmer.cfg
2014.11.25 00:15:00 1: Including ./FHEM/Wohnzimmer.cfg
2014.11.25 00:15:00 3: WEBhook: port 8087 opened
2014.11.25 00:15:00 3: WEBtablet: port 8085 opened
2014.11.25 00:15:00 3: WEBphone: port 8084 opened
2014.11.25 00:15:00 3: WEB: port 8083 opened
2014.11.25 00:15:00 3: telnetPort: port 7072 opened
2014.11.25 00:15:00 1: HMLAN_Parse: HMUSB new condition init
2014.11.25 00:15:00 3: HMUSB device opened
2014.11.25 00:15:00 3: Opening HMUSB device 127.0.0.1:1234
2014.11.25 00:15:00 1: HMLAN_Parse: HMUSB new condition disconnected
2014.11.25 00:15:00 1: Including fhem.cfg
2014.11.25 00:15:00 3: Unregistering HTTPSRV gds_web_resse for URL /resse...
2014.11.25 00:15:00 3: Unregistering GEOFANCY geofancy for URL /geo...

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Brockmann

Zitat von: moonsorrox am 25 November 2014, 12:56:35
Ins Log habe ich natürlich schon geschaut, gleich gestern als es nicht schaltete... aber da steht um 00:15 nix von Bedeutung für das DOIF  8)

Die Meldungen im Log sehen mir aber sehr nach FHEM-Neustart pünktlich um 0:15 Uhr aus. Das wäre dann auch eine Erklärung, warum nicht geschaltet wurde.

moonsorrox

#762
Zitat von: Brockmann am 25 November 2014, 14:54:47
Die Meldungen im Log sehen mir aber sehr nach FHEM-Neustart pünktlich um 0:15 Uhr aus.
oh ja das sieht verdammt danach aus  :-\ das wäre echt der absolute Zufall, ich sollte Lotto spielen  ;)

Tante Edith:// also hat alles geklappt DOIF läuft und alles ging AN/AUS wie es sollte  ;) DANKE

nun gehts weiter mit dem Zufall...  ::)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

kumue

Hallo zusammen,

ich habe ein DOIF, welches mir die Alarme aus dem GDS-Modul per Pushover zusenden soll.
Leider meint DOIF, daß das Reading a_geoCode_WARNCELLID nicht existiert. Somit geht keine Message raus.
Im Logfile wird keine Fehlermeldung angezeigt, da für steht im list <DOIF> ...reading does not exist

Bin dankbar für jeden Hinweis.

list des GDS

fhem> list DWD_IK     
Internals:
   DEF        gds40165 ttNMcGXu
   LOCAL      1
   NAME       DWD_IK
   NR         219
   STATE      active
   TYPE       GDS
   CHANGETIME:
   Helper:
     Dblog:
       _datasource:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Quelle
       A_areadesc:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Ilm-Kreis
       A_category:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Met
       A_event:
         Mydblog:
           TIME       1416937500.03169
           VALUE      FROST
       A_eventcode_area_color:
         Mydblog:
           TIME       1416937500.03169
           VALUE      255 255 0
       A_eventcode_group:
         Mydblog:
           TIME       1416937500.03169
           VALUE      FROST
       A_eventcode_ii:
         Mydblog:
           TIME       1416937500.03169
           VALUE      22
       A_eventcode_license:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Geobasisdaten
       A_eventcode_profile_version:
         Mydblog:
           TIME       1416937500.03169
           VALUE      2.1
       A_expires:
         Mydblog:
           TIME       1416937500.03169
           VALUE      2014-11-26T09:00:00+00:00
       A_expires_local:
         Mydblog:
           TIME       1416937500.03169
           VALUE      26.11.2014 10:00:00
       A_geocode_state:
         Mydblog:
           TIME       1416937500.03169
           VALUE      TH
       A_geocode_warncellid:
         Mydblog:
           TIME       1416937500.03169
           VALUE      116070000
       A_headline:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Amtliche WARNUNG vor FROST
       A_msgtype:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Alert
       A_onset:
         Mydblog:
           TIME       1416937500.03169
           VALUE      2014-11-25T23:00:00+00:00
       A_onset_local:
         Mydblog:
           TIME       1416937500.03169
           VALUE      26.11.2014 00:00:00
       A_responsetype:
         Mydblog:
           TIME       1416937500.03169
           VALUE      None
       A_sent:
         Mydblog:
           TIME       1416937500.03169
           VALUE      2014-11-25T17:00:00+00:00
       A_sent_local:
         Mydblog:
           TIME       1416937500.03169
           VALUE      25.11.2014 18:00:00
       A_status:
         Mydblog:
           TIME       1416937500.03169
           VALUE      Actual
       A_valid:
         Mydblog:
           TIME       1416937500.03169
           VALUE      1
   Readings:
     2014-11-25 18:45:00   _dataSource     Quelle: Deutscher Wetterdienst
     2014-11-25 18:45:00   _tzOffset       3600
     2014-11-25 18:45:00   a_areaDesc      Ilm-Kreis
     2014-11-25 18:45:00   a_category      Met
     2014-11-25 18:45:00   a_event         FROST
     2014-11-25 18:45:00   a_eventCode_AREA_COLOR 255 255 0
     2014-11-25 18:45:00   a_eventCode_AREA_COLOR_hex ffff00
     2014-11-25 18:45:00   a_eventCode_GROUP FROST
     2014-11-25 18:45:00   a_eventCode_II  22
     2014-11-25 18:45:00   a_eventCode_LICENSE Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2013
     2014-11-25 18:45:00   a_eventCode_PROFILE_VERSION 2.1
     2014-11-25 18:45:00   a_expires       2014-11-26T09:00:00+00:00
     2014-11-25 18:45:00   a_expires_local 26.11.2014 10:00:00
     2014-11-25 18:45:00   a_geoCode_STATE TH
     2014-11-25 18:45:00   a_geoCode_WARNCELLID 116070000
     2014-11-25 18:45:00   a_headline      Amtliche WARNUNG vor FROST
     2014-11-25 18:45:00   a_msgType       Alert
     2014-11-25 18:45:00   a_onset         2014-11-25T23:00:00+00:00
     2014-11-25 18:45:00   a_onset_local   26.11.2014 00:00:00
     2014-11-25 18:45:00   a_responseType  None
     2014-11-25 18:45:00   a_sent          2014-11-25T17:00:00+00:00
     2014-11-25 18:45:00   a_sent_local    25.11.2014 18:00:00
     2014-11-25 18:45:00   a_status        Actual
     2014-11-25 18:45:00   a_valid         1
     2014-11-25 18:45:00   state           active


list des DOIF

fhem> list DO_DWD_ALERT_IK       
Internals:
   DEF        ([DWD_IK:a_geoCode_WARNCELLID] eq "116070000") (set Pushover msg 'DWD Alarm IK' '[DWD_IK:a_headline] Beginn [DWD_IK:a_onset_local] Ende [DWD_IK:a_expires_local]' '' 1 'siren')
   NAME       DO_DWD_ALERT_IK
   NR         165
   NTFY_ORDER 50-DO_DWD_ALERT_IK
   STATE      cmd_2
   TYPE       DOIF
   CHANGETIME:
   Helper:
     Dblog:
       Cmd_event:
         Mydblog:
           TIME       1416937334.95721
           VALUE      DWD_IK
       Cmd_nr:
         Mydblog:
           TIME       1416937334.95721
           VALUE      2
       Error:
         Mydblog:
           TIME       1416936437.76991
           VALUE      reading does not exist
       State:
         Mydblog:
           TIME       1416937334.95721
           VALUE      cmd_2
   Readings:
     2014-11-25 18:42:14   cmd_event       DWD_IK
     2014-11-25 18:42:14   cmd_nr          2
     2014-11-25 18:45:00   e_DWD_IK_a_geoCode_WARNCELLID 116070000
     2014-11-25 18:42:14   state           cmd_2
   Condition:
     0          ReadingValDoIf('DWD_IK','a_geoCode_WARNCELLID','') eq "116070000"
   Devices:
     0           DWD_IK
     all         DWD_IK
   Do:
     0          set Pushover msg 'DWD Alarm IK' '[DWD_IK:a_headline] Beginn [DWD_IK:a_onset_local] Ende [DWD_IK:a_expires_local]' '' 1 'siren'
   Helper:
     last_timer 0
     sleeptimer -1
   Internals:
   Readings:
     0           DWD_IK:a_geoCode_WARNCELLID
     all         DWD_IK:a_geoCode_WARNCELLID
   State:
   Timerfunc:
Attributes:
   group      Services
   icon       cloud102
   room       Wetter
   wait       90

igami

Zitat von: kumue am 25 November 2014, 18:53:48
Leider meint DOIF, daß das Reading a_geoCode_WARNCELLID nicht existiert.

Vollkommen zurecht, guckt dir das Reading noch mal genau an ;)

'A_geocode_warncellid' ne 'a_geoCode_WARNCELLID'


Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED