Problem mit einer DOIF Funktion // Waschmaschinensteuerung

Begonnen von Kermit20, 05 August 2016, 14:51:48

Vorheriges Thema - Nächstes Thema

Kermit20

Hallo Gemeinde,

ich habe mein Projekt um die hier beschriebene Waschmaschinen Steuerung erweitert. Nach Inbetriebnahme hat diese genau ein Mal funktioniert... Aber eben nur 1 MAL. Zum testen hängt aktuell ein Lufttrockner dran, der die selben Eigenschaften wie eine Waschmaschine aufweist... hoher Verbrauch bei Betrieb und wenn der Tank voll ist (idel) 1,4-1,5 Watt Verbrauch.

LINK: https://forum.fhem.de/index.php/topic,39498.25.html

Ich habe nach der Einrichtung des ganzen einen Testlauf gemacht. Dieser war erfolgreich... sprich der Trockner wurde eingeschaltet, die Readings befüllt, der Verbrauch berechnet und der Status (an, running, done usw.) korrekt dargestellt.

siehe Bilder

Nun habe ich mich gefreut und wollte einen weiteren Versuch unternehmen und habe einen neuen Testlauf initiiert. Nach einigen Minuten, wurde mir die Nachricht geschickt, dass die Waschmaschine fertig ist und der Schalter ausgeschaltet wurde, obwohl die Werte im Dummy befüllt wurden. Darauf hin habe ich die Konfiguration kontrolliert und einen weiteren Versuch unternommen mit dem unterschied, dass ich das AutoOff DOIF disabled habe. Nach Anlaufen des Trockners wurden nun wieder die Werte in den Dummy geschrieben und der Trockner lief und lief... Ich habe dann das DOIF AutoOff erneut WÄHREND des Betriebs aktiviert und es wurde am Ende korrekt abgeschaltet. Wenn ich das ganze nun wieder in Gang werfe... passiert das selbe wie beim 2ten Versuch.

Kurz:

Im DOIF werden der Staus ne "running" abgefragt und der Status des Schalters eq "on"... nichts großes.... obwohl nun die Werte der Bedingung nicht matchen, löst sie aus.... ich habe keine Ahnung warum ?

Wie kann ich an das Problem herangehen ?

Einzig, was mir auffällt ist, dass ich kein devsState Icon gesetzt habe...aber die Lampe angezeigt wird. ich meine mich zu erinnern, dass ich einen Dummy mit dem Namen schon einmal gehabt habe.
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

Kermit20

#1
Ich habe nun einen erneuten Versuch unternommen... und habe evtl. das Problem eingrenzen können... es scheint als würde der State nicht "richtig" übertragen bzw. nur Initial der "on" Status. Somit würde die Bedingung wahr sein und der Timer runterlaufen.
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

Kermit20

RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

Ellert

ZitatWie kann ich an das Problem herangehen ?
Du könntest alle zum DOIF gehörenden Ereiginsse aufzeichen, dann hast Du für die Analyse alle Daten kompakt beisammen.

Die Bildchen anzusehen ist recht mühsam.

Protokollieren aller Ereignisse des zu analysierenden DOIF und dessen verwendete Gerätestati in der Logdatei:
define LogDOIF DOIF ([<Name des zu analysierenden DOIF>:""] or [<Gerät 1>:"Reading:"] or [<Gerät 2>:"Reading:"] ...) ({Log 1, "$SELF --> Device: $DEVICE, Events: $EVENTS"})
attr LogDOIF do always


Kermit20

Hi,

danke für den Tip.... mit den Bilder war echt bescheiden. Ich habe es umgesetzt und es gibt nun folgenden Output. Was auffällt ist, dass direkt zu Beginn mit dem Status "on" des dummys der Timer los geht. Allerdings nicht ausgesetzt wird, wenn der Status danach auf "running" wechselt.

Wie kann ich dies noch ändern ?


2016.08.08 09:52:53 1: LogDOIF --> Device: DI_Waschmaschine_AutoOff, Events: wait_timer: 08.08.2016 10:26:13 cmd_1 DU_Waschmaschine_Status
2016.08.08 09:52:53 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 1.34,on
2016.08.08 09:54:21 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 09:54:22 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 41.19,running
2016.08.08 09:54:29 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 09:54:30 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 183.59
2016.08.08 09:55:46 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 181.34
2016.08.08 10:00:20 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:00:21 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 245.93
2016.08.08 10:00:50 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 249.67
2016.08.08 10:03:00 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 267.96
2016.08.08 10:03:30 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:03:31 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 272.17
2016.08.08 10:05:59 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 283.96
2016.08.08 10:08:44 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 294.84
2016.08.08 10:10:01 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:10:01 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 297.4
2016.08.08 10:11:15 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 299.52
2016.08.08 10:13:31 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 302.62
2016.08.08 10:15:33 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 304.8
2016.08.08 10:18:25 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 306.07
2016.08.08 10:21:02 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 307.98
2016.08.08 10:23:25 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 304.68
2016.08.08 10:25:33 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 308.09
2016.08.08 10:26:13 1: LogDOIF --> Device: DI_Waschmaschine_AutoOff, Events: wait_timer: no timer
2016.08.08 10:26:13 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_pending
2016.08.08 10:26:13 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 308.09
2016.08.08 10:26:13 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine_Sw, Events: set_off
2016.08.08 10:26:13 1: LogDOIF --> Device: DI_Waschmaschine_AutoOff, Events: cmd_nr: 1,cmd: 1,cmd_event: DU_Waschmaschine_Status,cmd_1
2016.08.08 10:26:14 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:26:14 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 308.09
2016.08.08 10:26:14 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine_Sw, Events: deviceMsg: off (to VCCU),level: 0,pct: 0,off,timedOn: off
2016.08.08 10:26:14 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:26:14 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 93.14
2016.08.08 10:26:22 1: LogDOIF --> Device: KG_WK_SW_Waschmaschine, Events: CMDs_done
2016.08.08 10:26:23 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0,off
2016.08.08 10:28:31 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0
2016.08.08 10:31:14 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0
2016.08.08 10:33:43 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0
2016.08.08 10:35:57 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0
2016.08.08 10:37:57 1: LogDOIF --> Device: DU_Waschmaschine_Status, Events: power: 0
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

Ellert

Laufende Wait-Timer werden nur gelöscht, wenn ein anderer Befehlszweig wahr wird.

Ein anderes Verhalten kannst Du über Attribute steuern, z.B. do resetwait, waitdel und waitsame.