Waschmaschinen Logik funktioniert nicht 100%

Begonnen von Fistandantilus, 13 März 2016, 23:18:34

Vorheriges Thema - Nächstes Thema

Fistandantilus

Hallo,

ich habe für meine Waschmaschine einen Homematic Aktor mit Leistungsmessung. Ich möchte:

1. wissen/sehen, wenn die Waschmaschine läuft (initaler Verbrauch > 30 W)
2. per pushover und per Soundausgabe benachrichtigt werden, wenn die Waschmaschine fertig ist (Verbrauch 5 min < 6 W)
3. nach 15 min soll auch der Aktor ausgeschaltet und ein pushover darüber benachrichtigenwerden

Die Scripte die ich gefunden habe, hatten immer irgendwas, was nicht perfekt funktioniert hat, deshalb hab ich das jetzt nochmal selbst mit doif umgesetzt.

1. Dummy für die Betriebsanzeige:

define HK.WaschmaschineBetrieb dummy
attr HK.WaschmaschineBetrieb group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineBetrieb room UG.Heizungskeller


2. doif
- bei Verbrauch > 30W soll der dummy on geschaltet werden
- bei Verbrauch < 6W soll der dummy off geschaltet werden, der Sound abgespielt werden und der Watchdog für das Ausschalten getriggert werden

on Schalten des Dummy funktioniert, off Schalten des Dummys funktioniert, Sound funktioniert

define HK.WaschmaschineBetriebCheck DOIF ([HK.Waschmaschine_Pwr:power]>30) (setstate HK.WaschmaschineBetrieb on) \
DOELSEIF \
([HK.Waschmaschine_Pwr:power]<6) (set HK.WaschmaschineBetrieb off)(set HM_3674FE playTone 032)(setstate HK.WaschmaschineAutoOff defined)
attr HK.WaschmaschineBetriebCheck event-on-change-reading state
attr HK.WaschmaschineBetriebCheck group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineBetriebCheck room UG.Heizungskeller
attr HK.WaschmaschineBetriebCheck wait 60:300


3. notify für den Pushover, sobald der dummy auf off geht
- technisch funktioniert das pushover, allerdings wird es nicht getriggert, warum?

define HK.WaschmaschineWaschvorgangAbgeschlossenPushover notify HK.WaschmaschineBetrieb:off {system ("curl -s -F 'token=xxx' -F 'user=yyy' -F 'message=Waschmaschine fertig' https://api.pushover.net/1/messages.json")}
attr HK.WaschmaschineWaschvorgangAbgeschlossenPushover group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineWaschvorgangAbgeschlossenPushover room UG.Heizungskeller


4. Watchdog für das Ausschalten
- löst auch nicht aus??

define HK.WaschmaschineAutoOff watchdog HK.WaschmaschineBetrieb:off 00:15 HK.WaschmaschineBetrieb:on set HK.Waschmaschine_Sw off
attr HK.WaschmaschineAutoOff group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineAutoOff regexp1WontReactivate 1
attr HK.WaschmaschineAutoOff room UG.Heizungskeller


5. notify für den pushover, sobald der Aktor ausgeschaltet wird
- funktioniert technisch, löst auch aus, wenn man den Aktor direkt ausschaltet, wird aber im normalen Betrieb nicht getriggert

define HK.WaschmaschineWirdAusgeschaltetPushover notify HK.Waschmaschine_Sw:off {system("curl -s -F 'token=xxx' -F 'user=yyy' -F 'message=Waschmaschine wurde ausgeschaltet' https://api.pushover.net/1/messages.json")}
attr HK.WaschmaschineWirdAusgeschaltetPushover group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineWirdAusgeschaltetPushover room UG.Heizungskeller


Habt Ihr eine Idee, was ich ändern müsste?

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

chris1284

#1
warum machst du dir es so umständlich mit pushover und nutzt nicht das modul pushover http://fhem.de/commandref_DE.html#Pushover

step 3. , 4. , 5. würde ich schlicht bei step 2 mit rein packen. das spart den dummy, watchdog und 2 notify

define HK.WaschmaschineBetriebCheck DOIF ([HK.Waschmaschine_Pwr:power]>30) (setstate HK.WaschmaschineBetrieb on)
DOELSEIF
([HK.Waschmaschine_Pwr:power]<6) (set PushMsg msg 'Waschmaschine' 'Waschmaschine fertig', set HM_3674FE playTone 032, setstate HK.WaschmaschineAutoOff defined)


den watchdog könntest du auch in 2 mit unterbringen in dem du da einfach ein at mit rein baust, step 2 würde dann so aussehen:

define HK.WaschmaschineBetriebCheck DOIF ([HK.Waschmaschine_Pwr:power]>30) (setstate HK.WaschmaschineBetrieb on)
DOELSEIF
([HK.Waschmaschine_Pwr:power]<6) (set PushMsg msg 'Waschmaschine' 'Waschmaschine fertig', set HM_3674FE playTone 032, define temp_at at +00:15:00 set HK.Waschmaschine_Sw off)


das letzte notify würde ich auch wieder auf pushover modul umtsellen oder gleich weg lassen und die message in das at mit rein bauen. step 2 würde dann so aussehen:
define HK.WaschmaschineBetriebCheck DOIF ([HK.Waschmaschine_Pwr:power]>30) (setstate HK.WaschmaschineBetrieb on)
DOELSEIF
([HK.Waschmaschine_Pwr:power]<6) (set PushMsg msg 'Waschmaschine' 'Waschmaschine fertig', set HM_3674FE playTone 032, define temp_at at +00:15:00 set HK.Waschmaschine_Sw off, set PushMsg msg 'Waschmaschine' 'Waschmaschine ausgeschaltet!') 


du hast auch unnötig viele klammern in deiner befehlskette im doif, es reicht die befehle gesamt einmal einzuklammern und in den klammern die befehle mit "," zu trennen
(set x on, set y off, setstate ...,  ..., ....)

und nicht in der config editieren  ;)


Fistandantilus

Vielen Dank, ich bau das mal um und teste. Den Watchdog werd ich wahrscheinlich so aber nicht ersetzen können, da ich mit dem at doch in genau 15min den Aktor ausschalte. Falls ich die Waschmaschine in der Zwischenzeit also nochmal anstelle, knallt es dann oder?

PS: Das Pushover Modul hab ich einfach noch nicht getestet, deshalb noch der herkömmliche Weg... Mit den Klammern das weiß ich - Macht der Gewohnheit :)
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage