Waschmaschine fertig

Begonnen von moes, 07 Februar 2016, 09:19:27

Vorheriges Thema - Nächstes Thema

amenomade

Zitat von: God-of-Games am 11 November 2020, 11:14:21
Ich bin beim Wiki-Eintag davon ausgegangen, dass hier die "," unkenntlich gemacht werden müssen.

Und doch steht nirgendwo, dass man einen Perl Befehl mit (({})) eingeben muss, sondern
Zitat(<FHEM-Befehle>), ("<Systembefehle>") oder {<Perl-Befehle>}

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

God-of-Games

Zitat von: amenomade am 11 November 2020, 18:31:23
Und doch steht nirgendwo, dass man einen Perl Befehl mit (({})) eingeben muss, sondern
Da in dem Beispiel kein Pearl-Code mit "," erwähnt wurde und der vorgestellte Code mit (({})) gepostet wurde bin ich davon ausgegangen, dass es so sein muss.


Damian

Es gab mal Zeiten, da musste man im DOIF ({...}) angeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

masterpete23

Zitat von: Ellert am 07 Februar 2016, 18:10:41
Ich habe es mit einem DOIF gelöst:

Ergänzter Auszug aus dem DEF-Editor:
Waschmasch_di DOIF ([Waschmaschine_Pwr:power] > 0.1 and [?Waschmasch_di] =~ "cmd_4|initialized")
      (({Log 3, "Waschmaschine: Ein"}))## Schalter ein
DOELSEIF ([Waschmaschine_Pwr:power] > 20 and [?Waschmasch_di] eq "cmd_1")
     (({Log 3, "Waschmaschine: Programmstart"}))
DOELSEIF ([Waschmaschine_Pwr:power] > 20 and [?Waschmasch_di] eq "cmd_2") ## Ende (wenn länger als 5 min < 20)
     (({Log 3, "Waschmaschine: Programmende"}))
DOELSEIF ([Waschmaschine_Pwr:power] < 0.1 or [Waschmaschine_Pwr:power] > 20 and [?Waschmasch_di] eq "cmd_3")
     (({Log 3, "Waschmaschine: Aus"}))## Schalter aus oder Neustart ohne aus


und die Attribute

do resetwait
repeatcmd 0:0:300:0
wait 0:0:300:0


Das DOIF startet, wenn die Waschmaschine aus ist (cmd_4) oder das DOIF initialisiert ist und power > 0.1 ist.
Wenn power > 20 nach cmd_1 wird der Programmstart angezeigt.
Wenn power länger als 5 Minuten unter 20 liegt nach cmd_2, dann ist die Maschine fertig.
Nach cmd_3 und bei power < 0.1 ist die Maschine ausgeschaltet oder falls eine weitere Maschine gewaschen wird, ohne auszuschalten, geht die Maschine über "Aus" (cmd_4) in den "Ein" Zustand.

siehe http://fhem.de/commandref_DE.html#DOIF
Hi,
ich habe mich nun auch mal mit meiner Messdose und MQTT2 rangewagt.
Nun postet er "frhöhlich" alle 5 Minuten ins Log.
Ist das so beabsichtigt? Habt ihr das auch so gelassen?
Internals:
   DEF        ([MQTT2_SP1_01:ENERGY_Power] > 0.1 and [?dWaschmaschine] =~ "cmd_4|initialized")
      (({Log 3, "Waschmaschine: Ein"}))## Schalter ein
DOELSEIF ([MQTT2_SP1_01:ENERGY_Power] > 20 and [?dWaschmaschine] eq "cmd_1")
     (({Log 3, "Waschmaschine: Programmstart"}))
DOELSEIF ([MQTT2_SP1_01:ENERGY_Power] > 20 and [?dWaschmaschine] eq "cmd_2") ## Ende (wenn länger als 5 min < 20)
     (({Log 3, "Waschmaschine: Programmende"}),(set teleBot message NEU Waschmaschine ist fertig NEU!))
DOELSEIF ([MQTT2_SP1_01:ENERGY_Power] < 0.1 or [MQTT2_SP1_01:ENERGY_Power] > 20 and [?dWaschmaschine] eq "cmd_3")
     (({Log 3, "Waschmaschine: Aus"}))## Schalter aus oder Neustart ohne aus
   FUUID      61e1a719-f33f-53cd-475f-6b37dc828d4a23ef
   MODEL      FHEM
   NAME       dWaschmaschine
   NOTIFYDEV  global,MQTT2_SP1_01
   NR         335
   NTFY_ORDER 50-dWaschmaschine
   STATE      cmd_4
   TYPE       DOIF
   VERSION    25386 2021-12-28 22:19:25
   READINGS:
     2022-01-14 20:13:09   Device          MQTT2_SP1_01
     2022-01-14 20:13:09   cmd             4
     2022-01-14 20:13:09   cmd_event       MQTT2_SP1_01
     2022-01-14 20:13:09   cmd_nr          4
     2022-01-14 20:13:09   e_MQTT2_SP1_01_ENERGY_Power 0
     2022-01-14 17:50:58   mode            enabled
     2022-01-14 20:13:09   state           cmd_4
   Regex:
     accu:
     collect:
     cond:
       MQTT2_SP1_01:
         0:
           ENERGY_Power ^MQTT2_SP1_01$:^ENERGY_Power:
         1:
           ENERGY_Power ^MQTT2_SP1_01$:^ENERGY_Power:
         2:
           ENERGY_Power ^MQTT2_SP1_01$:^ENERGY_Power:
         3:
           ENERGY_Power ^MQTT2_SP1_01$:^ENERGY_Power:
   attr:
     cmdState:
     repeatcmd:
       0
       0
       300
       0
     wait:
       0:
         0
       1:
         0
       2:
         300
       3:
         0
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'MQTT2_SP1_01','ENERGY_Power') > 0.1 and ::InternalDoIf($hash,'dWaschmaschine','STATE') =~ "cmd_4|initialized"
     1          ::ReadingValDoIf($hash,'MQTT2_SP1_01','ENERGY_Power') > 20 and ::InternalDoIf($hash,'dWaschmaschine','STATE') eq "cmd_1"
     2          ::ReadingValDoIf($hash,'MQTT2_SP1_01','ENERGY_Power') > 20 and ::InternalDoIf($hash,'dWaschmaschine','STATE') eq "cmd_2"
     3          ::ReadingValDoIf($hash,'MQTT2_SP1_01','ENERGY_Power') < 0.1 or ::ReadingValDoIf($hash,'MQTT2_SP1_01','ENERGY_Power') > 20 and ::InternalDoIf($hash,'dWaschmaschine','STATE') eq "cmd_3"
   do:
     0:
       0          ({Log 3, "Waschmaschine: Ein"})
     1:
       0          ({Log 3, "Waschmaschine: Programmstart"})
     2:
       0          ({Log 3, "Waschmaschine: Programmende"}),(set teleBot message NEU Waschmaschine ist fertig NEU!)
     3:
       0          ({Log 3, "Waschmaschine: Aus"})
     4:
   helper:
     DEVFILTER  ^global$|^MQTT2_SP1_01$
     NOTIFYDEV  global|MQTT2_SP1_01
     event      ENERGY_ApparentPower: 0,ENERGY_Yesterday: 0.000,ENERGY_TotalStartTime: 2021-01-16T22:04:25,ENERGY_Current: 0.000,ENERGY_Total: 2.189,ENERGY_Factor: 0.00,ENERGY_Period: 0,Time: 2022-01-14T20:13:09,ENERGY_ReactivePower: 0,ENERGY_Power: 0,ENERGY_Today: 0.985,ENERGY_Voltage: 237
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   MQTT2_SP1_01
     timerevent ENERGY_ApparentPower: 0,ENERGY_Yesterday: 0.000,ENERGY_TotalStartTime: 2021-01-16T22:04:25,ENERGY_Current: 0.000,ENERGY_Total: 2.189,ENERGY_Factor: 0.00,ENERGY_Period: 0,Time: 2022-01-14T20:13:09,ENERGY_ReactivePower: 0,ENERGY_Power: 0,ENERGY_Today: 0.985,ENERGY_Voltage: 237
     triggerDev MQTT2_SP1_01
     DOIF_eventa:
       cmd_nr: 4
       cmd: 4
       cmd_event: MQTT2_SP1_01
       cmd_4
     DOIF_eventas:
       cmd_nr: 4
       cmd: 4
       cmd_event: MQTT2_SP1_01
       state: cmd_4
     timerevents:
       ENERGY_ApparentPower: 0
       ENERGY_Yesterday: 0.000
       ENERGY_TotalStartTime: 2021-01-16T22:04:25
       ENERGY_Current: 0.000
       ENERGY_Total: 2.189
       ENERGY_Factor: 0.00
       ENERGY_Period: 0
       Time: 2022-01-14T20:13:09
       ENERGY_ReactivePower: 0
       ENERGY_Power: 0
       ENERGY_Today: 0.985
       ENERGY_Voltage: 237
     timereventsState:
       ENERGY_ApparentPower: 0
       ENERGY_Yesterday: 0.000
       ENERGY_TotalStartTime: 2021-01-16T22:04:25
       ENERGY_Current: 0.000
       ENERGY_Total: 2.189
       ENERGY_Factor: 0.00
       ENERGY_Period: 0
       Time: 2022-01-14T20:13:09
       ENERGY_ReactivePower: 0
       ENERGY_Power: 0
       ENERGY_Today: 0.985
       ENERGY_Voltage: 237
     triggerEvents:
       ENERGY_ApparentPower: 0
       ENERGY_Yesterday: 0.000
       ENERGY_TotalStartTime: 2021-01-16T22:04:25
       ENERGY_Current: 0.000
       ENERGY_Total: 2.189
       ENERGY_Factor: 0.00
       ENERGY_Period: 0
       Time: 2022-01-14T20:13:09
       ENERGY_ReactivePower: 0
       ENERGY_Power: 0
       ENERGY_Today: 0.985
       ENERGY_Voltage: 237
     triggerEventsState:
       ENERGY_ApparentPower: 0
       ENERGY_Yesterday: 0.000
       ENERGY_TotalStartTime: 2021-01-16T22:04:25
       ENERGY_Current: 0.000
       ENERGY_Total: 2.189
       ENERGY_Factor: 0.00
       ENERGY_Period: 0
       Time: 2022-01-14T20:13:09
       ENERGY_ReactivePower: 0
       ENERGY_Power: 0
       ENERGY_Today: 0.985
       ENERGY_Voltage: 237
   internals:
     all         dWaschmaschine:STATE
   perlblock:
   readings:
     all         MQTT2_SP1_01:ENERGY_Power
   trigger:
   uiState:
   uiTable:
Attributes:
   do         resetwait
   repeatcmd  0:0:300:0
   room       Logik
   wait       0:0:300:0

Ellert

Bei dem Zitat handelt es sich um die Antwort  zum ersten Beitrag und dort geht es um eine HM-Messsteckdose. Andere erforden ggf. andere Timer, Schaltschwellen oder Auslöser. Und selbstverständlich kann man die Log-Befehle löschen, wenn man nichts loggen möchte.

masterpete23

Danke dir. Ich suche halt immer nach den Gründen warum man sich alle 5 Minuten etwas ins Log posten lassen will.
Also generell Frage ich mich warum Menschen manches machen, damit ich es für mich bewerten kann, ob es für mich auch gut ist :)

Ellert

Die Log-Befehle sind nur Infos bis alles funktioniert, dann können sie raus. Die Wiederholung ist für die Vergesslichen drin, bei mir war das eine Ansage, die solange läuft bis die Maschine ausgeschaltet wird..

Ich habe bei der neuen Waschmaschine, die sich selbst ausschaltet, auf Zwischenzustände verzichtet, aktuell sieht es so aus:
## 1
([Waschmaschine_Pwr:power] > 1 and [?$SELF] =~ "cmd_3|cmd_2|initialized")
   (setreading $SELF energy_start [Waschmaschine_Pwr:energy],
   set sag1 tts :gong: Die Waschmaschine wurde eingeschaltet,
   set sag1pi2 tts Die Waschmaschine wurde eingeschaltet) ## Schalter ein
## 2
DOELSEIF ([Waschmaschine_Pwr:power] < 1 and [?$SELF] eq "cmd_1")
   (setreading $SELF energy {(int([Waschmaschine_Pwr:energy] - [$SELF:energy_start]))},
    set sag1 tts :gong: Die Waesche ist gewaschen und geschleudert,
    set sag1pi2 tts Die Waesche ist gewaschen und geschleudert)
## 3
DOELSEIF (["^PIR2(4|5)$:^Counter: "] and [?Waschmaschine_Pwr:power] < 0.1 and [?$SELF] eq "cmd_2")
   (set sag1 tts :gong: Die Waesche ist gewaschen und geschleudert)


Ohne steuernde Attribute.

romakrau

#67
Hallo zusammen,
ich habe einen ziemlich zickigen Trockner der bei Programmende den Zustand SENSOR_ENERGY_Power 0|1 permanent wechselt. Das habe ich mit einem waitsame für den Zustand Programmende abgefangen. Leider geht das DOIF nicht in den Zustand aus.  Anbei mal List des zugegebener Maßen etwas umständliche DOIF.

  MODEL      FHEM
   NAME       DF_Trockner
   NOTIFYDEV  global,DF_Trockner,Trockner
   NR         305
   NTFY_ORDER 50-DF_Trockner
   STATE      Trockner: aus Zeit: 0 Verbrauch: 0.0
   TYPE       DOIF
   VERSION    25295 2021-12-04 18:13:39
   OLDREADINGS:
   READINGS:
     2022-01-25 16:57:44   Dauer           0
     2022-01-25 13:58:29   Endkw           1.046
     2022-01-25 16:57:44   Startkw         1.046
     2022-01-25 16:57:51   Status          aus
     2022-01-25 17:00:07   cmd             0
     2022-01-25 17:00:07   kWh             0.0
     2022-01-25 17:00:07   mode            enabled
     2022-01-25 17:00:07   state           initialized
   Regex:
     accu:
     collect:
     cond:
       DF_Trockner:
         0:
           state      ^DF_Trockner$:^state:
         1:
           state      ^DF_Trockner$:^state:
         2:
           state      ^DF_Trockner$:^state:
         3:
           state      ^DF_Trockner$:^state:
       Trockner:
         0:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         1:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         2:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         3:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
   attr:
     cmdState:
     repeatcmd:
     wait:
     waitdel:
     waitsame:
       0
       0
       120
       0
   condition:
     0          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 0.9 and (::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_4" or ::ReadingValDoIf($hash,'DF_Trockner','state') eq "initialized")
     1          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 20 and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_1"
     2          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') < 1 and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_2"
     3          (::ReadingSecDoIf('Trockner','SENSOR_ENERGY_Power') > 300 or  ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 20 )and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_3"
   do:
     0:
       0          set DF_Trockner Status an, set DF_Trockner Dauer 0, set DF_Trockner Startkw [Trockner:SENSOR_ENERGY_Total] , ({Log 3, "Trockner: Ein"})
     1:
       0          set DF_Trockner Status ProgStart, ({Log 3, "Trockner: Programmstart"})
     2:
       0          set DF_Trockner Dauer {(split(' ', gmtime(ReadingsAge("DF_Trockner","Status",0))))[3]}, set DF_Trockner Status ProgEnde, set DF_Trockner Endkw [Trockner:SENSOR_ENERGY_Total], set DY_Trockner on,    ({Log 3, "Trockner: Programmende"})
     3:
       0          set DF_Trockner Status aus, ({Log 3, "Trockner: Aus"})
     4:
   helper:
     DEVFILTER  ^global$|^DF_Trockner$|^Trockner$
     NOTIFYDEV  global|DF_Trockner|Trockner
     globalinit 1
     last_timer 0
     sleeptimer -1
   readings:
     all         Trockner:SENSOR_ENERGY_Power DF_Trockner:state
   uiState:
   uiTable:
Attributes:
   group      Trockner
   readingList Dauer Startkw Endkw Status kWh
   room       Geräte
   stateFormat Trockner: Status Zeit: Dauer Verbrauch: kWh
   userReadings kWh { sprintf("%.1f",(ReadingsVal("DF_Trockner","Endkw",0)-ReadingsVal("DF_Trockner","Startkw",0))) }
   verbose    3
   waitsame   0:0:120:0


Der Power Metering Dose aktualisiert allerdings alle 30 Sekunden und hat aber das Attribut :

event-on-change-reading SENSOR_ENERGY_Power,SENSOR_ENERGY_Current

Der Auszug aus dem Log:
2022-01-25_14:24:29 Trockner SENSOR_ENERGY_Current: 0.052
2022-01-25_14:24:59 Trockner SENSOR_ENERGY_Current: 0.000
2022-01-25_14:24:59 Trockner SENSOR_ENERGY_Power: 0.000
2022-01-25_14:26:29 Trockner SENSOR_ENERGY_Current: 0.052
2022-01-25_14:26:29 Trockner SENSOR_ENERGY_Power: 1.000
2022-01-25_14:26:59 Trockner SENSOR_ENERGY_Power: 0.000
2022-01-25_14:26:59 Trockner SENSOR_ENERGY_Current: 0.000
2022-01-25_14:27:29 Trockner SENSOR_ENERGY_Current: 0.055
2022-01-25_14:27:29 Trockner SENSOR_ENERGY_Power: 1.000
2022-01-25_14:27:59 Trockner SENSOR_ENERGY_Current: 0.062
2022-01-25_14:28:59 Trockner SENSOR_ENERGY_Current: 0.000
2022-01-25_14:28:59 Trockner SENSOR_ENERGY_Power: 0.000
2022-01-25_14:29:29 Trockner SENSOR_ENERGY_Current: 0.058
2022-01-25_14:29:29 Trockner SENSOR_ENERGY_Power: 1.000
2022-01-25_14:29:59 Trockner SENSOR_ENERGY_Current: 0.000
2022-01-25_14:30:29 Trockner SENSOR_ENERGY_Power: 0.000


Gibt es da eine andere Lösung die greift.
Gruß
Roman

Damian

#68
Wie soll er das schaffen, wenn im Status etwas anderes als erwartet steht? Siehe deine Definition, die du im list abgeschnitten hast.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

romakrau

Entschuldige aber die Antwort verstehe ich nicht.? Das state initialized stammt aus einer Änderung des DOIF.

Damian

Zitat von: romakrau am 25 Januar 2022, 20:50:30
Entschuldige aber die Antwort verstehe ich nicht.? Das state initialized stammt aus einer Änderung des DOIF.

Im Status werden verschiedene Zustände abgefragt, auf jeden Fall nicht dieser:    STATE      Trockner: aus Zeit: 0 Verbrauch: 0.0
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

romakrau

Hier nun nochmal das List nach dem setzen des cmd_3 per set:
Internals:
   DEF        ([Trockner:SENSOR_ENERGY_Power] > 0.9 and ([DF_Trockner:state] eq "cmd_4" or [DF_Trockner:state] eq "initialized"))(set $SELF Status an, set $SELF Dauer 0, set $SELF Startkw [Trockner:SENSOR_ENERGY_Total] , ({Log 3, "Trockner: Ein"})) DOELSEIF ([Trockner:SENSOR_ENERGY_Power] > 20 and [DF_Trockner:state] eq "cmd_1") (set $SELF Status ProgStart, ({Log 3, "Trockner: Programmstart"})) DOELSEIF ([Trockner:SENSOR_ENERGY_Power] < 1 and [DF_Trockner:state] eq "cmd_2") (set $SELF Dauer {(split(' ', gmtime(ReadingsAge("$SELF","Status",0))))[3]}, set $SELF Status ProgEnde, set $SELF Endkw [Trockner:SENSOR_ENERGY_Total], set DY_Trockner on,    ({Log 3, "Trockner: Programmende"})) DOELSEIF (([?Trockner:SENSOR_ENERGY_Power:sec] > 300 or  [Trockner:SENSOR_ENERGY_Power] > 20 )and [DF_Trockner:state] eq "cmd_3" ) (set $SELF Status aus, ({Log 3, "Trockner: Aus"}))
   FUUID      61cee8d7-f33f-e93f-94de-a91a14f3972a62c0
   MODEL      FHEM
   NAME       DF_Trockner
   NOTIFYDEV  global,DF_Trockner,Trockner
   NR         305
   NTFY_ORDER 50-DF_Trockner
   STATE      Trockner: ProgEnde Zeit: 00:00:13 Verbrauch: 0.0
   TYPE       DOIF
   VERSION    25295 2021-12-04 18:13:39
   OLDREADINGS:
   READINGS:
     2022-01-25 20:53:00   Dauer           00:00:13
     2022-01-25 20:53:00   Endkw           1.046
     2022-01-25 20:52:38   Startkw         1.046
     2022-01-25 20:53:00   Status          ProgEnde
     2022-01-25 20:53:00   cmd             3
     2022-01-25 20:53:00   cmd_event       set_cmd_3
     2022-01-25 20:53:00   cmd_nr          3
     2022-01-25 20:53:00   e_DF_Trockner_state cmd_3
     2022-01-25 20:53:00   kWh             0.0
     2022-01-25 17:00:07   mode            enabled
     2022-01-25 20:53:00   state           cmd_3
   Regex:
     accu:
     collect:
     cond:
       DF_Trockner:
         0:
           state      ^DF_Trockner$:^state:
         1:
           state      ^DF_Trockner$:^state:
         2:
           state      ^DF_Trockner$:^state:
         3:
           state      ^DF_Trockner$:^state:
       Trockner:
         0:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         1:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         2:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
         3:
           SENSOR_ENERGY_Power ^Trockner$:^SENSOR_ENERGY_Power:
   attr:
     cmdState:
     repeatcmd:
     wait:
     waitdel:
     waitsame:
       0
       0
       120
       0
   condition:
     0          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 0.9 and (::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_4" or ::ReadingValDoIf($hash,'DF_Trockner','state') eq "initialized")
     1          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 20 and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_1"
     2          ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') < 1 and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_2"
     3          (::ReadingSecDoIf('Trockner','SENSOR_ENERGY_Power') > 300 or  ::ReadingValDoIf($hash,'Trockner','SENSOR_ENERGY_Power') > 20 )and ::ReadingValDoIf($hash,'DF_Trockner','state') eq "cmd_3"
   do:
     0:
       0          set DF_Trockner Status an, set DF_Trockner Dauer 0, set DF_Trockner Startkw [Trockner:SENSOR_ENERGY_Total] , ({Log 3, "Trockner: Ein"})
     1:
       0          set DF_Trockner Status ProgStart, ({Log 3, "Trockner: Programmstart"})
     2:
       0          set DF_Trockner Dauer {(split(' ', gmtime(ReadingsAge("DF_Trockner","Status",0))))[3]}, set DF_Trockner Status ProgEnde, set DF_Trockner Endkw [Trockner:SENSOR_ENERGY_Total], set DY_Trockner on,    ({Log 3, "Trockner: Programmende"})
     3:
       0          set DF_Trockner Status aus, ({Log 3, "Trockner: Aus"})
     4:
   helper:
     DEVFILTER  ^global$|^DF_Trockner$|^Trockner$
     NOTIFYDEV  global|DF_Trockner|Trockner
     event      cmd_nr: 3,cmd: 3,cmd_event: set_cmd_3,cmd_3,kWh: 0.0
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   DF_Trockner
     timerevent cmd_nr: 2,cmd: 2,cmd_event: set_cmd_2,cmd_2,kWh: 0.0
     triggerDev DF_Trockner
     timerevents:
       cmd_nr: 2
       cmd: 2
       cmd_event: set_cmd_2
       cmd_2
       kWh: 0.0
       e_DF_Trockner_state: cmd_2
       kWh: 0.0
       waitsame: cmd_3
       kWh: 0.0
     timereventsState:
       cmd_nr: 2
       cmd: 2
       cmd_event: set_cmd_2
       state: cmd_2
       kWh: 0.0
     triggerEvents:
       cmd_nr: 3
       cmd: 3
       cmd_event: set_cmd_3
       cmd_3
       kWh: 0.0
       e_DF_Trockner_state: cmd_3
       kWh: 0.0
     triggerEventsState:
       cmd_nr: 3
       cmd: 3
       cmd_event: set_cmd_3
       state: cmd_3
       kWh: 0.0
   internals:
   readings:
     all         Trockner:SENSOR_ENERGY_Power DF_Trockner:state
   trigger:
   uiState:
   uiTable:
Attributes:
   group      Trockner
   readingList Dauer Startkw Endkw Status kWh
   room       Geräte
   stateFormat Trockner: Status Zeit: Dauer Verbrauch: kWh
   userReadings kWh { sprintf("%.1f",(ReadingsVal("DF_Trockner","Endkw",0)-ReadingsVal("DF_Trockner","Startkw",0))) }
   verbose    3
   waitsame   0:0:120:0


Gruß
Roman

romakrau

#72
Achso, jetzt verstehe ich. Für mich sind STATE und state zwei verschiedene Werte. Zustand cmd_1 bis cmd_3 läuft auch. Ich hätte nur erwartet das die Abfrage "[?Trockner:SENSOR_ENERGY_Power:sec] > 300" wahr wird wenn der Trockner ausgeschaltet ist, da ich ja das event-on-change-reading SENSOR_ENERGY_Power,SENSOR_ENERGY_Current gesetzt habe.Leider ist dem nicht so. 

Damian

Zitat von: romakrau am 25 Januar 2022, 21:04:35
Achso, jetzt verstehe ich. Für mich sind STATE und state zwei verschiedene Werte.

Daher musst du statt auf STATE auf das Reading state abfragen oder dein StateFormat rausnehmen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

romakrau

In den Tiefen des Wiki's habe ich die Lösung gefunden. Das Attribut heisst "timestamp-on-change-reading" . Dadurch wird eine Aktualiserung des Timestamp des Readings unterdrückt wenn kein Event ausgelöst wird. Genial  :D