Hauptmenü

Anfänger DOIF braucht Hilfe

Begonnen von michisa86888, 03 Dezember 2018, 21:19:48

Vorheriges Thema - Nächstes Thema

michisa86888

Hallo zusammen,
ich bin zur zeit an meinem ersten DOIF Modul und brauche nun eure Hilfe.
Es soll eine Überwachung der Waschmaschine/Trockner mithilfe eines Tasmota POW´s werden.
Wenn gestartet und beendet soll eine Nachricht wie TelegramBot auf mein Handy geschickt werden.
Readings vom POW und Telegram habe ich hinbekommen
Via
set teleBot msg <Nachricht> bekomme ich auch Nachrichten vom FHEM aufs Handy.

Mein aktuelles DOIF_DEF

defmod DOIF.WK_Trockner DOIF ([WK_Trockner:ENERGY_Power] > 8)
(
set $SELF washState running,
set $SELF start_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
(teleBot msg Der Trockner wurde gestartet.),
)
DOELSEIF ([WK_Trockner:ENERGY_Power] < 8)
(
set $SELF washState finish,
set $SELF end_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
set $SELF lastRun_kWh {(sprintf ('%.3f',(ReadingsVal("$SELF","end_kWh",0) - ReadingsVal("$SELF","start_kWh",0))))},
(teleBot msg Der Trockner wurde gestartet. Und hat [$SELF:lastRun_kWh] kWh verbraucht.ðŸ'°),


Attribute:

attr DOIF.WK_Trockner readingList washState start_kWh end_kWh lastRun_kW

Funktioniert akuell aber leider noch nicht... Kommt keine Nachricht an
Zusätzlich möchte ich noch ein Wait Attribut einfügen.

Im Vorraus schon mal vielen Dank für eure Hilfe

MadMax-FHEM

#1
DOIF ist zwar nicht meine Spezialität aber folgende Dinge würde ich anders machen:

statt:

set $SELF start_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},

würde ich ein Reading im DOIF Device setzen weil durch den 2ten set-Befehl überschreibst du ja den Status von running auf KW...

Evtl. solltest du auch den Status running in ein Reading schreiben, weiß nicht wie das DOIF reagirt, wenn du den Status desselben änderst...

Also statt set -> setreading DeviceName (wahrsch. $SELF) ReadingName (status oder Verbrauch) Wert (also running oder eben Verbrauchswert)

Beispiel:
setreading $SELF status running
bzw.
setreading $SELF start_kWh ReadingsNum("$DEVICE","ENERGY_Total",0)

Wobei beim 2ten Beispiel weiß ich nicht wie das in DOIF mit Perl etc. ist...


Und wenn du willst, dass eine Nachricht geschickt wird, dann muss das mindestens so heißen:

set teleBot msg Trockner wurde gestartet

also das set NICHT vergessen, wie in deinem Testaufruf, der nat. funktioniert... ;)

Ist bestimmt noch nicht alles, wie geschrieben: DOIF ist nicht meine Stärke... (ich nutze eher Notify und myUtils)...

EDIT: und es gibt schon ungefähr 1000 Waschmaschinen-/Trockner-/Geschirrspüler-DOIF im Forum ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Hi,

poste doch bitte anstatt des halben Codes (da fehlt am Ende was) bitte ein list von dem DOIF.

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

amenomade

Du sagst, das Kommando wäre "set telebot xxx", aber Du schreibst (telebot xxx) ohne set?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

michisa86888

Okay das mit dem set ist mir raus:
DEF

defmod DOIF.WK_Trockner DOIF ([WK_Trockner:ENERGY_Power] > 8)
(
set $SELF washState running,
set $SELF start_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
(set teleBot msg Der Trockner wurde gestartet.),
)
DOELSEIF ([WK_Trockner:ENERGY_Power] < 8)
(
set $SELF washState finish,
set $SELF end_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
set $SELF lastRun_kWh {(sprintf ('%.3f',(ReadingsVal("$SELF","end_kWh",0) - ReadingsVal("$SELF","start_kWh",0))))},
(set teleBot msg Der Trockner wurde gestartet. Und hat [$SELF:lastRun_kWh] kWh verbraucht.)\


Attribute

attr DOIF.WK_Trockner readingList washState start_kWh end_kWh lastRun_kWh

Wait Attribut will er mir nicht annehmen

attr DOIF.WK_Trockner wait 45:120

list DOIF.WK_Trockner

Internals:
   DEF        defmod DOIF.WK_Trockner DOIF ([WK_Trockner:ENERGY_Power] > 8)
(
set $SELF washState running,
set $SELF start_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
(set teleBot msg Der Trockner wurde gestartet.),
)
DOELSEIF ([WK_Trockner:ENERGY_Power] < 8)
(
set $SELF washState finish,
set $SELF end_kWh {(ReadingsVal("$DEVICE","ENERGY_Total",0))},
set $SELF lastRun_kWh {(sprintf ('%.3f',(ReadingsVal("$SELF","end_kWh",0) - ReadingsVal("$SELF","start_kWh",0))))},
(set teleBot msg Der Trockner wurde gestartet. Und hat [$SELF:lastRun_kWh] kWh verbraucht.)\


   MODEL      Perl
   NAME       DOIF.WK_Trockner
   NR         50
   NTFY_ORDER 50-DOIF.WK_Trockner
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-12-04 19:44:48   mode            enabled
     2018-12-04 19:38:26   state           initialized
   Regex:
   condition:
     0          (ReadingsVal("$DEVICE","ENERGY_Total",0))
     1          (ReadingsVal("$DEVICE","ENERGY_Total",0))
     2          (sprintf ('%.3f',(ReadingsVal("DOIF.WK_Trockner","end_kWh",0) - ReadingsVal("DOIF.WK_Trockner","start_kWh",0))))
     3         
   devices:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   perlblock:
     0          start_kWh
     1          end_kWh
     2          lastRun_kWh
     3         
   uiState:
   uiTable:
Attributes:
   readingList washState start_kWh end_kWh lastRun_kWh
   room       Keller


MadMax-FHEM

#5
Du hast ja immer noch set statt setreading...
...um Status und Leistung/Verbrauch zu setzen...

Und wie geschrieben: ich weiß nicht wie (genau) das Aufrufen von Perl Funktionen (ReadingsVal bzw. ReadingsNum) in DOIF (an der Stelle) funktioniert...

Nur kurz aufgefallen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)