DOIF zum schalten der Wärmepumpe ( webhook an IFTTT )

Begonnen von der-Lolo, 22 Oktober 2017, 13:47:25

Vorheriges Thema - Nächstes Thema

der-Lolo

Ok, morgen folgt also nochmal ein durchlauf mit der ursprünglichen Zeile...
einen dummy WMZ habe ich gerade erstellt...

ZitatInternals:
   CFGFN
   NAME       WMZ
   NR         224
   STATE      ???
   TYPE       dummy
   READINGS:
     2017-10-23 22:43:10   Durchfluss      846
     2017-10-23 22:43:10   Ruecklauftemperatur 20.5
     2017-10-23 22:43:10   Vorlauftemperatur 20.5
     2017-10-23 22:43:10   aktWaermeleistung 0.0
     2017-10-23 22:43:10   gesamtWaermemenge 12.193
   helper:
     bm:
       dummy_Define:
         cnt        1
         dmx        0
         mAr
         mTS
         max        0
         tot        0
       dummy_Set:
         cnt        9
         dmx        0
         mAr
         mTS
         max        0
         tot        0
Attributes:

im fhemWeb sieht man auch das ein bezug zu FHEM2FHEM und cloneDummy hergestellt wird.

Hm, ist cloneDUmmy wirklich überflüssig geworden? Die Info hatte ich noch nicht...

https://www.dropbox.com/s/0htz315bog0ncyc/Screenshot%202017-10-23%2022.46.03.png?dl=0

Otto123

seit einigen Wochen neu attr addStateEvent
-> https://fhem.de/commandref_DE.html#FHEM2FHEM

Ich will nicht sagen, dass cloneDummy überflüssig ist, aber ich verwende cloneDummy nicht. Zumal man da ja den Namen anders wählen muss.
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

der-Lolo

Ja, den Namen anders wählen machte aber aus meiner sicht sogar Sinn - mF steht für measureFhem ;-)
Heute hat es wieder nicht funktioniert - ich habe zwar gestern abend die änderungen vorgenommen aber bewusst nicht gespeichert.
Heute morgen um kurz vor 9 gab es dann wohl einen Stromausfall... Ich hoffe morgen klappt es ;-)

der-Lolo

Es klappt leider doch noch nicht - im Log finden sich bereits hunderte Einträge.
Zitat2017.10.25 14:07:47 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40205) line 1.
2017.10.25 14:07:47 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40204) line 1.
2017.10.25 14:07:47 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40203) line 1.
2017.10.25 14:07:47 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40202) line 1.
2017.10.25 14:07:47 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40201) line 1.
2017.10.25 14:07:16 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:16 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40192) line 1.
2017.10.25 14:07:15 3: eval: WPmodeSwitch: warning in condition c02
2017.10.25 14:07:15 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 40191) line 1.
2017.10.25 14:07:15 3: eval: WPmodeSwitch: warning in condition c02

DOELSEIF ([$SELF:cmd] eq "1" and [WMZ:Vorlauftemperatur:] > 40 and [WMZ:Durchfluss:] < 1)

so schaut die Zeile zur Zeit aus - auf ohne : klappt es nicht...

Otto123

Wie schon gesagt, bei c02 geht es aus meiner Sicht um diese Zeile:
DOELSEIF ([$SELF:cmd] eq "2" and [20:00])
({system ("curl -X POST https://maker.ifttt.com/trigger/{'Nachtabsenkung'}/with/key/XXXXX")})

Unterdrücke mal noch die Ausgabe von curl mit -s

Aber es kann auch sein ich verstehe das falsch, vielleicht teilst Du dein DOIF und testest die Zweige separat.

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

der-Lolo

Nein, es geht definitiv um die Zeile in der Vorlauf und Druchfluss geprüft werden, erst wenn cmd_1 aktiv ist kommen die Log einträge. Die simplen Timer schalten sauber...

amenomade

Kann man ein list vom DOIF sehen, wie es jetzt aussieht?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

der-Lolo

aber natürlich...

habe nur den Key aus den aufrufen entfernt...

ZitatInternals:
   DEF        ([14:00])    ({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heisswasser'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "1" and [WMZ:Vorlauftemperatur:] > 40 and [WMZ:Durchfluss:] < 1)
         ({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "2" and [20:00])
         ({system ("curl -X POST https://maker.ifttt.com/trigger/{'Nachtabsenkung'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "3" and [09:30])
         ({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
   NAME       WPmodeSwitch
   NR         112
   NTFY_ORDER 50-WPmodeSwitch
   STATE      deactivated
   TYPE       DOIF
   READINGS:
     2017-10-25 14:29:34   state           deactivated
   condition:
   do:
     0:
   helper:
     bm:
       DOIF_Notify:
         cnt        2081
         dmx        0
         mAr
         mTS
         max        0
         tot        0
       DOIF_Set:
         cnt        10
         dmx        0
         mAr
         mTS
         max        0
         tot        0
   state:
     STATE:
Attributes:
   disable    1
   room       90-Testumgebung,96-Wärmepumpe

aktuell deaktiviert weil vom WMZ alle 30sekunden werte kommen und die Fehlermeldungen das Log füllen.
auch noch einen Teil mit werten aus dem Eventmonitor...

Zitat
2017-10-25 15:20:49 cloneDummy mF_SDM Power_L1__W: 22
2017-10-25 15:20:49 ModbusSDM630M SDM630 Power_L1__W: 22
2017-10-25 15:20:49 cloneDummy mF_SDM Power_L2__W: 1251
2017-10-25 15:20:49 ModbusSDM630M SDM630 Power_L2__W: 1251
2017-10-25 15:20:49 cloneDummy mF_SDM Power_L3__W: 0
2017-10-25 15:20:49 ModbusSDM630M SDM630 Power_L3__W: 0
2017-10-25 15:20:49 cloneDummy mF_WMZ active
2017-10-25 15:20:49 cloneDummy mF_WMZ Durchfluss: 1248
2017-10-25 15:20:49 ModbusAttr WMZ Durchfluss: 1248
2017-10-25 15:20:49 cloneDummy mF_WMZ active
2017-10-25 15:20:49 cloneDummy mF_WMZ Ruecklauftemperatur: 44.8
2017-10-25 15:20:49 ModbusAttr WMZ Ruecklauftemperatur: 44.8
2017-10-25 15:20:49 cloneDummy mF_WMZ active
2017-10-25 15:20:49 cloneDummy mF_WMZ aktWaermeleistung: 4.6
2017-10-25 15:20:49 ModbusAttr WMZ aktWaermeleistung: 4.6
2017-10-25 15:20:49 cloneDummy mF_WMZ active
2017-10-25 15:20:49 cloneDummy mF_WMZ gesamtWaermemenge: 12.225
2017-10-25 15:20:49 ModbusAttr WMZ gesamtWaermemenge: 12.225
2017-10-25 15:20:49 cloneDummy mF_WMZ active
2017-10-25 15:20:49 cloneDummy mF_WMZ Vorlauftemperatur: 48.0
2017-10-25 15:20:49 ModbusAttr WMZ Vorlauftemperatur: 48.0
2017-10-25 15:21:18 cloneDummy mF_SDM Power_L1__W: 22
2017-10-25 15:21:18 ModbusSDM630M SDM630 Power_L1__W: 22
2017-10-25 15:21:18 cloneDummy mF_SDM Power_L2__W: 1253
2017-10-25 15:21:18 ModbusSDM630M SDM630 Power_L2__W: 1253
2017-10-25 15:21:18 cloneDummy mF_SDM Power_L3__W: 0
2017-10-25 15:21:18 ModbusSDM630M SDM630 Power_L3__W: 0
2017-10-25 15:21:18 cloneDummy mF_WMZ active
2017-10-25 15:21:18 cloneDummy mF_WMZ Vorlauftemperatur: 48.1
2017-10-25 15:21:18 ModbusAttr WMZ Vorlauftemperatur: 48.1
2017-10-25 15:21:18 cloneDummy mF_WMZ active
2017-10-25 15:21:18 cloneDummy mF_WMZ gesamtWaermemenge: 12.225
2017-10-25 15:21:18 ModbusAttr WMZ gesamtWaermemenge: 12.225
2017-10-25 15:21:18 cloneDummy mF_WMZ active
2017-10-25 15:21:18 cloneDummy mF_WMZ Ruecklauftemperatur: 44.9
2017-10-25 15:21:18 ModbusAttr WMZ Ruecklauftemperatur: 44.9
2017-10-25 15:21:18 cloneDummy mF_WMZ active
2017-10-25 15:21:18 cloneDummy mF_WMZ aktWaermeleistung: 4.5
2017-10-25 15:21:18 ModbusAttr WMZ aktWaermeleistung: 4.5
2017-10-25 15:21:18 cloneDummy mF_WMZ active
2017-10-25 15:21:18 cloneDummy mF_WMZ Durchfluss: 1242
2017-10-25 15:21:18 ModbusAttr WMZ Durchfluss: 1242

amenomade

Leider im deaktivierten Modus sieht man nicht alles.

Aber
Zitat[WMZ:Vorlauftemperatur:] > 40 and [WMZ:Durchfluss:] < 1)

Mach mal entweder die Doppelpunkte am Ende weg, oder d am Ende
[WMZ:Vorlauftemperatur] > 40 and [WMZ:Durchfluss] < 1)
oder
[WMZ:Vorlauftemperatur:d] > 40 and [WMZ:Durchfluss:d] < 1)

Und nutze lieber code-tags statt quote-tags. Vorteil von code-tags: die werden scrollbar, und nutzen nicht die ganze Seite
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Wenn du aber :d hast, musst Du verstehen, was der Einfluss davon ist.

Lieber ohne :d am Ende dann erstmal.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

der-Lolo

Ohne doppelpunkt hatte ich schon probiert, auch ein :d hatte ich schon...
Leider beides erfolglos.

nochmal ein list wenn es aktiv ist..

Internals:
   DEF        ([14:00]) ({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heisswasser'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "1" and [WMZ:Vorlauftemperatur:d] > 40 and [WMZ:Durchfluss:d] < 1)
({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "2" and [20:00])
({system ("curl -X POST https://maker.ifttt.com/trigger/{'Nachtabsenkung'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
DOELSEIF ([$SELF:cmd] eq "3" and [09:30])
({system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0})
   NAME       WPmodeSwitch
   NR         112
   NTFY_ORDER 50-WPmodeSwitch
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-10-25 15:28:19   Device          WMZ
     2017-10-25 15:27:14   cmd             1
     2017-10-25 15:27:14   cmd_event       set_cmd_1
     2017-10-25 15:27:14   cmd_nr          1
     2017-10-25 15:27:14   e_WPmodeSwitch_cmd 1
     2017-10-25 15:27:14   state           cmd_1
     2017-10-25 15:27:05   timer_01_c01    26.10.2017 14:00:00
     2017-10-25 15:27:05   timer_02_c03    25.10.2017 20:00:00
     2017-10-25 15:27:05   timer_03_c04    26.10.2017 09:30:00
     2017-10-25 15:28:19   warning         condition c02: Argument "" isn't numeric in numeric gt (>)

   condition:
     0          DOIF_time_once($hash,0,$wday)
     1          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "1" and ReadingValDoIf($hash,'WMZ','Vorlauftemperatur','','d') > 40 and ReadingValDoIf($hash,'WMZ','Durchfluss','','d') < 1
     2          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "2" and DOIF_time_once($hash,1,$wday)
     3          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "3" and DOIF_time_once($hash,2,$wday)
   days:
   devices:
     1           WPmodeSwitch WMZ
     2           WPmodeSwitch
     3           WPmodeSwitch
     all         WPmodeSwitch WMZ
   do:
     0:
       0          {system ("curl -X POST https://maker.ifttt.com/trigger/{'Heisswasser'}/with/key/XXXXX >/dev/null 2>&1");; return 0}
     1:
       0          {system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0}
     2:
       0          {system ("curl -X POST https://maker.ifttt.com/trigger/{'Nachtabsenkung'}/with/key/XXXXX >/dev/null 2>&1");; return 0}
     3:
       0          {system ("curl -X POST https://maker.ifttt.com/trigger/{'Heizen'}/with/key/XXXXX >/dev/null 2>&1");; return 0}
     4:
   helper:
     event      Vorlauftemperatur: 49.4
     globalinit 1
     last_timer 3
     sleeptimer -1
     triggerDev WMZ
     bm:
       DOIF_Notify:
         cnt        51
         dmx        0
         mTS        25.10. 15:27:14
         max        2
         tot        17
         mAr:
           HASH(0x3a091a0)
           HASH(0x3a091a0)
       DOIF_Set:
         cnt        12
         dmx        0
         mTS        25.10. 15:27:14
         max        806
         tot        806
         mAr:
           HASH(0x3a091a0)
           WPmodeSwitch
           cmd_1
     triggerEvents:
       Vorlauftemperatur: 49.4
     triggerEventsState:
       Vorlauftemperatur: 49.4
   internals:
   itimer:
   localtime:
     0          1509019200
     1          1508954400
     2          1509003000
   readings:
     1           WPmodeSwitch:cmd WMZ:Vorlauftemperatur WMZ:Durchfluss
     2           WPmodeSwitch:cmd
     3           WPmodeSwitch:cmd
     all         WPmodeSwitch:cmd WMZ:Vorlauftemperatur WMZ:Durchfluss
   realtime:
     0          14:00:00
     1          20:00:00
     2          09:30:00
   regexp:
     0:
     1:
     2:
     3:
     all:
   state:
     STATE:
   time:
     0          14:00:00
     1          20:00:00
     2          09:30:00
   timeCond:
     0          0
     1          2
     2          3
   timer:
     0          0
     1          0
     2          0
   timers:
     0           0
     2           1
     3           2
   trigger:
   triggertime:
     1508954400:
       localtime  1508954400
       hash:
     1509003000:
       localtime  1509003000
       hash:
     1509019200:
       localtime  1509019200
       hash:
Attributes:
   room       90-Testumgebung,96-Wärmepumpe

Otto123

Am ehesten sieht aber der Durchfluss komisch aus
     2017-10-23 22:43:10   Durchfluss      846
     2017-10-23 22:43:10   Ruecklauftemperatur 20.5
     2017-10-23 22:43:10   Vorlauftemperatur 20.5


Sieht aus wie Leerzeichen drin. Der Versuch mit :d wäre schon sinnvoll.

nach wie vor verstehe ich nicht den Hinweis auf c02 wenn dann offenbar c01 falsch ist ???
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

Otto123

Dann teile das DOIF und teste die Zweige einzeln.
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

der-Lolo

Hm, aufteilen?

Ich glaube mittlerweile ich baue eh um auf die .sh variante - die Readingauswertung würde aber gleich bleiben.
Ich werde das komplette DOIF aber vielleicht in das FHEM packen welches auch die Daten aus dem Modbus holt.

Otto123

#29
define ZWeig1 DOIF ([WMZ:Vorlauftemperatur] > 40 and [WMZ:Durchfluss] < 1) (set DummyZweig1 true) DOELSE (set DummyZweig1 false)
Ich sehe gerade: Geh mal im DOIF in den DEF Editor und beseitige alle unnötigen Leerzeichen und Zeilenumbrüche...

Ich denke nach wie vor das sieht eigentlich gut aus :   condition:
     0          DOIF_time_once($hash,0,$wday)
     1          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "1" and ReadingValDoIf($hash,'WMZ','Vorlauftemperatur','','d') > 40 and ReadingValDoIf($hash,'WMZ','Durchfluss','','d') < 1
     2          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "2" and DOIF_time_once($hash,1,$wday)
     3          ReadingValDoIf($hash,'WPmodeSwitch','cmd') eq "3" and DOIF_time_once($hash,2,$wday)


Ich die Zählweise in der Fehlermeldung anders c01=0 c02=1 usw?
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