[gelöst] ActionDetector mit DOIF auswerten

Begonnen von rih, 11 September 2019, 10:58:10

Vorheriges Thema - Nächstes Thema

Invers

Die Lösung mit Userreading habe ich probiert, funktioniert auch nicht. egal, ob ich mit 0 oder 1 vergleiche, es wird immer angesagt. Es sollte aber eigentlich nur bei != 1 eine Ansage erfolgen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

rih

#16
Mit dem Userreading im Actiondetector funktionierts bei mir:
dead { ReadingsVal("$name","state","") =~ /.*dead:0.*/}Wenn das "dead" im state = 0 ist, dann hat das Userreading "dead" den Wert 1

Und dann das DOIF dazu:
([ActionDetector:dead] != 1) (set Snips say Achtung Hommatik Geräte kontrollieren)
Wäre aber schön, wenn es doch ohne Userreading funktionieren würde. Vielleicht hat @Damian noch eine Idee?

Invers

Ok, danke. Mit Userreading funktioniert es nun bei mir ebenfalls.

Dann sollte aber das DOIF den Fehler nicht verursachen. Vielleicht ist im STATE irgendein nicht druckbares / sichtbares Zeichen. Dann kann die Filterung auch nicht funktionieren!? Fragezeichen, weil das nat. auch ein Trugschluss sein kann.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

rih

Ich denke mal, ohne Userreading müsste es ähnlich wie hier gemacht werden:
https://forum.fhem.de/index.php?topic=39302.0
Also nach dem "dead" im state suchen, die nachfolgende Zahl in die Outputvariable schreiben und dann auswerten (alles innerhalb des DOIF). Aber das kriege ich nicht hin. Da müssen so Experten wie Damian ran. :)

Damian

Das Problem ist, dass DOIF offenbar durch den Anfangsbuchstaben d in dead... den Ausdruck fälschlicherweise nach Zahlen filtert daher die 14 - das werde ich beim nächsten Update beheben.

Was aber funktioniert ist:

([ActionDetector:state:"ead:(\d+)"] != 0) (set Snips say Achtung Homematik Geraete kontrollieren)
Das funktioniert dann auch mit mehrstelligen Zahlen hinter dead :)



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Ja, du hast Recht. Es funktioniert offenbar so, wie vorgeschlagen.
Nochmals besten Dank.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Korrigierte Version eingecheckt, jetzt funktioniert auch:

([ActionDetector:state:"dead:(\d+)"] != 0) (set Snips say Achtung Homematik Geraete kontrollieren)
ist das Gleiche in Perl wie:

([ActionDetector:state:"dead:(\d+)"]) (set Snips say Achtung Homematik Geraete kontrollieren)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Viele Fehlermeldungen nach dem Update!!!
Böse Falle ;D : DOIFs wurden gelöscht. Ansonsten funktioniert die Änderung aber.
Ich werde die Vorgänger-Version wider einspielen!?

Startausschrift:
Messages collected while initializing FHEM:configDB: DI_Batterie_Thermometer DOIF: unknown expression format: d
setuuid: Please define DI_Batterie_Thermometer first
DI_Trockner DOIF: unknown expression format: d
setuuid: Please define DI_Trockner first
DI_Ausfall_Stellantrieb DOIF: unknown expression format: d
setuuid: Please define DI_Ausfall_Stellantrieb first
DI_Rollo_geladen DOIF: unknown expression format: d
setuuid: Please define DI_Rollo_geladen first
DI_PC_Test DOIF: unknown expression format: d
setuuid: Please define DI_PC_Test first
DOIF_update_Dyson DOIF: unknown expression format: d
setuuid: Please define DOIF_update_Dyson first
DI_Ausfall_Stellantrieb_ALT DOIF: unknown expression format: d
setuuid: Please define DI_Ausfall_Stellantrieb_ALT first

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

sieht nicht gut aus. Dann am besten nicht speichern, alter Version nehmen und System durchstarten.

Kannst du mir die Definition von einem der angemeckerten Module posten?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Nicht speichern geht nicht, weil aus der Configdb schon automatisch gelöscht wird. Ich musste also eine ältere Config wieder einspielen, ist aber nicht schlimm.

define DI_Trockner DOIF ([Trockner:power:d] < 4 and [Trockner] eq "on") \
    (say24 Der Trockner wird abgeschaltet, set Trockner off)
attr DI_Trockner room Wohnung->Büro
attr DI_Trockner wait 300
#  DEF        ([Trockner:power:d] < 4 and [Trockner] eq "on")
#    (say24 Der Trockner wird abgeschaltet, set Trockner off)
#  FUUID      5cd968bc-f33f-8098-142e-4ff3d3490b3a9eb7
#  MODEL      FHEM
#  NAME      DI_Trockner
#  NOTIFYDEV  Trockner,global
#  NR        214
#  NTFY_ORDER 50-DI_Trockner
#  STATE      cmd_2
#  TYPE      DOIF
#  VERSION    27452 2023-04-16 11:34:30
#  READINGS:
#    2023-04-26 09:54:59  Device          Trockner
#    2023-03-25 17:59:12  cmd            2
#    2023-03-25 17:59:12  cmd_event      Trockner
#    2023-03-25 17:59:12  cmd_nr          2
#    2023-04-26 09:54:59  e_Trockner_STATE off
#    2023-04-26 09:54:59  e_Trockner_power 0.00 W
#    2020-09-06 09:49:21  mode            enabled
#    2023-03-25 17:59:12  state          cmd_2
#  Regex:
#    accu:
#    bar:
#    barAvg:
#    collect:
#    cond:
#      Trockner:
#        0:
#          &STATE    ^Trockner$
#          power      ^Trockner$:^power:
#  attr:
#    wait:
#      0:
#        300
#    waitdel:
#  condition:
#    0          ::ReadingValDoIf($hash,'Trockner','power','','d') < 4 and ::InternalDoIf($hash,'Trockner','STATE') eq "on"
#  do:
#    0:
#      0          say24 Der Trockner wird abgeschaltet, set Trockner off
#    1:
#  helper:
#    NOTIFYDEV  Trockner,global
#    event      voltage: 237.669 V,FBNAME: Trockner,power: 0.00 W,FBPROP: microphone,switch,powerMeter,tempSensor,switch,present: yes,off,energy: 332366 Wh,ID: 26,temperature: 19.0 C (measured),devicelock: no,FBTYPE: FRITZ!DECT 200,mode: manuell,locked: no,AIN: 08761 0101811,fwversion: 04.25,tempadjust: 0.0 C
#    globalinit 1
#    last_timer 0
#    sleeptimer -1
#    timerdev  Trockner
#    timerevent voltage: 237.669 V,FBNAME: Trockner,power: 0.00 W,FBPROP: microphone,switch,powerMeter,tempSensor,switch,present: yes,off,energy: 332366 Wh,ID: 26,temperature: 19.0 C (measured),devicelock: no,FBTYPE: FRITZ!DECT 200,mode: manuell,locked: no,AIN: 08761 0101811,fwversion: 04.25,tempadjust: 0.0 C
#    triggerDev Trockner
#    timerevents:
#      voltage: 237.669 V
#      FBNAME: Trockner
#      power: 0.00 W
#      FBPROP: microphone,switch,powerMeter,tempSensor,switch
#      present: yes
#      off
#      energy: 332366 Wh
#      ID: 26
#      temperature: 19.0 C (measured)
#      devicelock: no
#      FBTYPE: FRITZ!DECT 200
#      mode: manuell
#      locked: no
#      AIN: 08761 0101811
#      fwversion: 04.25
#      tempadjust: 0.0 C
#    timereventsState:
#      voltage: 237.669 V
#      FBNAME: Trockner
#      power: 0.00 W
#      FBPROP: microphone,switch,powerMeter,tempSensor,switch
#      present: yes
#      state: off
#      energy: 332366 Wh
#      ID: 26
#      temperature: 19.0 C (measured)
#      devicelock: no
#      FBTYPE: FRITZ!DECT 200
#      mode: manuell
#      locked: no
#      AIN: 08761 0101811
#      fwversion: 04.25
#      tempadjust: 0.0 C
#    triggerEvents:
#      voltage: 237.669 V
#      FBNAME: Trockner
#      power: 0.00 W
#      FBPROP: microphone,switch,powerMeter,tempSensor,switch
#      present: yes
#      off
#      energy: 332366 Wh
#      ID: 26
#      temperature: 19.0 C (measured)
#      devicelock: no
#      FBTYPE: FRITZ!DECT 200
#      mode: manuell
#      locked: no
#      AIN: 08761 0101811
#      fwversion: 04.25
#      tempadjust: 0.0 C
#    triggerEventsState:
#      voltage: 237.669 V
#      FBNAME: Trockner
#      power: 0.00 W
#      FBPROP: microphone,switch,powerMeter,tempSensor,switch
#      present: yes
#      state: off
#      energy: 332366 Wh
#      ID: 26
#      temperature: 19.0 C (measured)
#      devicelock: no
#      FBTYPE: FRITZ!DECT 200
#      mode: manuell
#      locked: no
#      AIN: 08761 0101811
#      fwversion: 04.25
#      tempadjust: 0.0 C
#  internals:
#    all        Trockner:STATE
#  perlblock:
#  readings:
#    all        Trockner:power
#  trigger:
#  uiState:
#  uiTable:
#
setstate DI_Trockner cmd_2
setstate DI_Trockner 2023-04-26 09:54:59 Device Trockner
setstate DI_Trockner 2023-03-25 17:59:12 cmd 2
setstate DI_Trockner 2023-03-25 17:59:12 cmd_event Trockner
setstate DI_Trockner 2023-03-25 17:59:12 cmd_nr 2
setstate DI_Trockner 2023-04-26 09:54:59 e_Trockner_STATE off
setstate DI_Trockner 2023-04-26 09:54:59 e_Trockner_power 0.00 W
setstate DI_Trockner 2020-09-06 09:49:21 mode enabled
setstate DI_Trockner 2023-03-25 17:59:12 state cmd_2

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Ich habe den Fehler korrigiert. Neue Version wurde eingecheckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Ok, danke. Update geht noch nicht ( nothing to do... ) . Probier ich dann morgen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: Invers am 26 April 2023, 10:07:38Ok, danke. Update geht noch nicht ( nothing to do... ) . Probier ich dann morgen.

ja, aber du kannst dir die Version hier herunterladen und im FHEM-Verzeichnis die alte überschreiben.

http://svn.fhem.de/trac/browser/trunk/fhem/FHEM?desc=1&order=date
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: Invers am 26 April 2023, 09:56:57Nicht speichern geht nicht, weil aus der Configdb schon automatisch gelöscht wird.

Wann und wo wird aus der configDB irgendwas "automatisch gelöscht"?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

daedalus0815

Hallo invers,

ich spekuliere, weil ich darauf auch reingefallen bin, da man configdb nicht
so häufig benutzt.

Ich hatte:  "configdb list version" abgesetzt. Da steht dann nix.
Ich wollte aber: "config info" absetzen, da werden dann die alten Versionen
mit Zeitstempel gelistet.