Hauptmenü

DOIF - Abfrage Erweiterung

Begonnen von Fabiango, 10 November 2024, 13:02:48

Vorheriges Thema - Nächstes Thema

Fabiango

Hallo zusammen,

ich habe ein bestehendes DOIF welches ich erweitern möchte aber nicht auf die Lösung komme.
Vielleicht könnt ihr mir helfen?

Das bestehende DOIF schaltet meine Ladegeräte Nachts zu einer bestimmten Uhrzeit ein und am Morgen wieder aus wenn es draussen Hell wird. Das funktioniert soweit auch gut.

([du_Automatik_Master] eq "an" and [[du_HandysLaden_WE_an]|7]) (set bzSteckdose02 on)
DOELSEIF
([du_Automatik_Master] eq "an" and [du_Tageslicht] eq "hell") (set bzSteckdose02 off)

Nun möchte ich das DOIF um die Funktion erweitern:
Wenn das doif die Ladegeräte eingeschalten hat (doif State = cmd_1) und in dieser Zeit die Taste auf der Fernbedienung manuell gedrückt wurde, soll sich das doif zurücksetzen und die Ladegeräte eingeschalten lassen auch wenn es am Morgen dann hell wird und laut doif eigentlich ausgeschalten werden sollen.
Hintergrund: Wenn man Geräte erst früh Morgens an hängt, sollen Sie auch voll laden und nicht dann z.B. nach 10 Minuten wieder ausgeschalten werden nur weil es hell wird.

Hier noch das List der Fernbedienung.
Man müsste das Reading "hmstate" pressed mit Datum & Uhrzeit irgendwie abfragen und einbinden
Internals:
   DEF        000B1F298BBAF9:2
   FUUID      6390ab17-f33f-c1dd-a7f0-cd14595bafe8cfe5
   IODev      CCU_3
   NAME       HM_FB02Taste02
   NR         331
   STATE      pressed
   TYPE       HMCCUCHN
   ccuaddr    000B1F298BBAF9:2
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    HmIP-RC8 000B1F298BBAF9:2
   ccurolestate KEY_TRANSCEIVER
   ccusubtype RC8
   ccutype    HmIP-RC8
   eventCount 86
   firmware   1.0.19
   readonly   no
   receiver   bzSteckdose01,bzSteckdose02,flSteckdose03
   READINGS:
     2024-11-08 21:28:25   IODev           CCU_3
     2024-11-03 15:03:49   PRESS_SHORT     pressed
     2024-11-10 13:00:31   activity        alive
     2024-11-10 13:00:31   battery         ok
     2024-11-10 13:00:31   devstate        ok
     2024-11-10 13:00:31   hmstate         pressed
     2024-11-03 15:03:49   pressed         pressed
     2024-11-10 13:00:31   rssidevice      -59
     2024-11-08 21:29:06   rssipeer        N/A
     2024-11-03 15:03:49   state           pressed
     2024-11-10 12:05:29   voltage         2.8
   hmccu:
     channels   1
     detect     0
     devspec    000B1F298BBAF9:2
     nodefaults 1
     role       2:KEY_TRANSCEIVER
     setDefaults 0
     cmdlist:
       get       
       set       
     control:
     dp:
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.DUTY_CYCLE:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.INSTALL_TEST:
         VALUES:
           NVAL       1
           SVAL       true
           VAL        1
       0.LOW_BAT:
         VALUES:
           NVAL       0
           SVAL       ok
           VAL        0
       0.OPERATING_VOLTAGE:
         VALUES:
           NVAL       2.8
           ONVAL      2.800000
           OVAL       2.800000
           SVAL       2.8
           VAL        2.8
       0.OPERATING_VOLTAGE_STATUS:
         VALUES:
           NVAL       0
           SVAL       NORMAL
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -59
           ONVAL      -64
           OSVAL      -64
           OVAL       -64
           SVAL       -59
           VAL        -59
       0.RSSI_PEER:
         VALUES:
           NVAL       N/A
           SVAL       N/A
           VAL        0
       0.UNREACH:
         VALUES:
           NVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
     roleChannels:
       KEY_TRANSCEIVER 2
     roleCmds:
       get:
       set:
     state:
       chn        2
       dpt        PRESS_SHORT
Attributes:
   alias      Fernbedienung 02 - Taste 2
   ccuflags   logCommand
   devStateIcon pressed:ios-off
   event-on-update-reading .*
   group      Büro
   room       Homematic

Danke für eure Hilfe.
Hoffe das ist etwas Verständlich.

Viele Grüsse,
Fabian

Invers

Keine Lösung, aber ein (vielleicht) besserer Ansatz:
Wenn es nicht unbedingt Sonnenaufgang sein muss und die Steckdose Leistungsmessung hat, dann prüfe doch lieber auf Verbrauch.Wenn eine bestimmter Verbrauch unterschritten wird, sind alle Handys voll. Dann kannst du die Steckdose abschalten. Das würde auch die Akkus schonen. Wenn die Steckdose eingeschaltet wird und kein Handy angesteckt ist, sinkt der Verbrauch ja auch unter den Mindestwert und dann kann dein DOIF auch abschalten.
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

rabehd

Was steckt hier dahinter?
[du_Automatik_Master] und [du_HandysLaden_WE_an]?
Was schaltet die Fernbedienung, wie wird das wieder zurückgesetzt?
Auch funktionierende Lösungen kann man hinterfragen.

Fabiango

Zitat von: rabehd am 10 November 2024, 19:19:31Was steckt hier dahinter?
[du_Automatik_Master] und [du_HandysLaden_WE_an]?
Was schaltet die Fernbedienung, wie wird das wieder zurückgesetzt?
Hi Rabehd,
das "du_Automatik_Master" ist ein Dummy und kann damit meine Automatisierungen Ein / Ausschalten.
das "du_HandysLaden_WE_an" ist ebenfalls ein Dummy. Damit stelle ich die Uhrzeit ein zum starten.

Eine Steckdose mit Leistungsmessung habe ich nicht. Daher fällt der Grundsatz von Invers weg.

Hast du sonst einen Ansatz für mich?

rabehd

Den Sinn der ganzen Sache verstehe ich nicht wirklich. Man sollte vielleicht auf der grünen Wiese anfangen, also neu.

 "du_Automatik_Master" gilt scheinbar global und schaltet alle Deine Automatisierungen ein/aus. Zumindest die DOIFs kann man bei Änderung jeweils enable/disable schalten. Damit wäre schon mal eine Abfrage raus. Außerdem würde ich nicht darauf triggern, sondern das nur als Abfrage nehmen.

"du_Tageslicht" ist wohl auch ein Dummy. Keine Ahnung wozu, ich würde da auf Sonnenaufgang triggern.

Du willst Ladegeräte zu einer bestimmten Uhrzeit einschalten. Diese Uhrzeit ist variabel. Wozu eigentlich?

Warum sollen die Ladegeräte bei Beginn Tageslicht abgeschaltet werden?
"Wenn man Geräte erst früh Morgens an hängt, sollen Sie auch voll laden und nicht dann z.B. nach 10 Minuten wieder ausgeschalten werden". Dafür die Automatik abzuschalten ist kein Automatismus.
Setze mit der Fernbedienung ein Reading dessen Wert das Abschalten verhindert. Die Frage wäre dann wie lange? Es macht dann wohl mehr Sinn mit der Fernbedienung das Laden für eine bestimmte Zeit einzuschalten.
Also cmd_2 nur wenn Reading Fernbedienung nicht auf "ja".
Wenn Fernbedienung auf "ja", dann cmd_3 mit Einschalten, Abschalten nach X Minuten und danach Setzen Fernbedienung auf "nein".

Ich würde auch weniger Dummys verwenden und lieber Userreadings.
Auch funktionierende Lösungen kann man hinterfragen.

Fabiango

Könntest du mir mal ein Beispiel machen wie das doif aussehen müsste?

Wenn es eine einfachere und bessere Lösung gibt wäre ich auch froh.
Das Ziel ist das die Mobilen Geräte nicht die ganze Nacht an der eingeschaltenen Steckdose hängen

rabehd

Wenn Du den UseCase beschreibst, dann wäre das ein Anfang.
Auch funktionierende Lösungen kann man hinterfragen.

Fabiango

UseCase

- Wenn Automatik Dummy eingeschalten ist und eine einstellbare Uhrzeit erreicht ist soll die Steckdose für eine weitere Einstellbare Zeit (in Stunden) eingeschalten werden
- ist die Zeit abgelaufen soll die Steckdose ausgeschalten werden

- Wird in der Zwischenzeit der Taster auf der Fernbedienung geschalten, so soll sich das DOIF deaktivieren
ODER
- Wird in der Zwischenzeit der Taster auf der Fernbedienung geschalten, so soll die eingestellte Zeit von vorne beginnen

rabehd

Das ist eigentlich kein UseCase, sondern eine Programmieranweisung.
Lass erstmal Dummy, DOIF... weg. Wenn das formuliert wird, dann wird es ein UseCase. Wenn Du jetzt schon konkret wirst, verbaust Du Lösungen.

Ich denke, das ist aber Selbstvera.... Zumindest ohne Berücksichtigung des Ladestandes des Gerätes.

Zitat von: Fabiango am 10 November 2024, 13:02:48am Morgen wieder aus wenn es draussen Hell wird
Zitat von: Fabiango am 14 November 2024, 17:45:58ist die Zeit abgelaufen soll die Steckdose ausgeschalten werden
Hast Du Deine Meinung geändert?
 
Auch funktionierende Lösungen kann man hinterfragen.

Fabiango

Zitat von: rabehd am 14 November 2024, 22:18:13Das ist eigentlich kein UseCase, sondern eine Programmieranweisung.
Lass erstmal Dummy, DOIF... weg. Wenn das formuliert wird, dann wird es ein UseCase. Wenn Du jetzt schon konkret wirst, verbaust Du Lösungen.

Ich denke, das ist aber Selbstvera.... Zumindest ohne Berücksichtigung des Ladestandes des Gerätes.

Zitat von: Fabiango am 10 November 2024, 13:02:48am Morgen wieder aus wenn es draussen Hell wird
Zitat von: Fabiango am 14 November 2024, 17:45:58ist die Zeit abgelaufen soll die Steckdose ausgeschalten werden
Hast Du Deine Meinung geändert?
 

Dann verstehe ich nicht ganz was ein UseCase ist, aber vielleicht meinst du so?
Die Meinung habe ich geändert, aber Grundsätzlich wäre beides für mich ok.

> Wenn Automatik Schalter eingeschalten ist und eine Uhrzeit (Einstellbar in hh:mm) erreicht ist soll die Steckdose für eine gewisse Zeit (Einstellbar in Stunden) eingeschalten werden und wenn diese dann abgelaufen ist soll die Steckdose ausgeschalten werden.
> Wird in der Zwischenzeit der Taster "EIN" auf der Fernbedienung gedrückt, so soll sich die Laufzeit zurücksetzen und erneut ablaufen und am Ende wieder die Steckdose ausschalten.
> Wird in der Zwischenzeit der Taster "AUS" auf der Fernbedienung gedrückt, so soll die Steckdose sich direkt ausschalten und die Funktion zurücksetzen.

Fabiango

Hat jemand einen Ansatz für mich zu meinem UseCase?

Fabiango

Hab nun eine Lösung für mich gefunden.

Brauche nun nur noch eure Hilfe das bei einem Homematic IP Taster von der Fernbedienung) nur bei einer positiven Flanke geschalten wird, da der State immer auf "pressed" bleibt.

Hier das Geräte List:
Internals:
   DEF        000B1F298BBAF9:3
   FUUID      6390ab18-f33f-c1dd-39bc-3a4f130986ea3fd2
   IODev      CCU_3
   NAME       HM_FB02Taste03
   NR         342
   STATE      pressed
   TYPE       HMCCUCHN
   ccuaddr    000B1F298BBAF9:3
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    HmIP-RC8 000B1F298BBAF9:3
   ccurolestate KEY_TRANSCEIVER
   ccusubtype RC8
   ccutype    HmIP-RC8
   eventCount 9
   firmware   1.0.19
   readonly   no
   receiver   bzSteckdose01,bzSteckdose02,flSteckdose03
   READINGS:
     2024-12-01 17:57:35   IODev           CCU_3
     2024-02-10 12:39:42   PRESS_LONG      pressed
     2024-02-10 12:39:42   PRESS_LONG_RELEASE 1
     2024-02-10 12:39:42   PRESS_LONG_START 1
     2024-12-01 18:48:29   PRESS_SHORT     pressed
     2024-12-01 19:00:03   activity        alive
     2024-12-01 19:00:03   battery         ok
     2024-12-01 19:00:03   devstate        ok
     2024-12-01 19:00:03   hmstate         pressed
     2024-12-01 18:48:29   pressed         pressed
     2024-12-01 19:00:03   rssidevice      -56
     2024-12-01 17:58:14   rssipeer        N/A
     2024-12-01 18:48:29   state           pressed
     2024-12-01 19:00:03   voltage         2.8
   hmccu:
     channels   1
     detect     0
     devspec    000B1F298BBAF9:3
     nodefaults 1
     role       3:KEY_TRANSCEIVER
     setDefaults 0
     cmdlist:
       get       
       set       
     control:
     dp:
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.DUTY_CYCLE:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.INSTALL_TEST:
         VALUES:
           NVAL       1
           SVAL       true
           VAL        1
       0.LOW_BAT:
         VALUES:
           NVAL       0
           SVAL       ok
           VAL        0
       0.OPERATING_VOLTAGE:
         VALUES:
           NVAL       2.8
           ONVAL      2.800000
           OVAL       2.800000
           SVAL       2.8
           VAL        2.8
       0.OPERATING_VOLTAGE_STATUS:
         VALUES:
           NVAL       0
           SVAL       NORMAL
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -56
           ONVAL      -61
           OSVAL      -61
           OVAL       -61
           SVAL       -56
           VAL        -56
       0.RSSI_PEER:
         VALUES:
           NVAL       N/A
           SVAL       N/A
           VAL        0
       0.UNREACH:
         VALUES:
           NVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       3.PRESS_SHORT:
         VALUES:
           NVAL       1
           SVAL       pressed
           VAL        1
     roleChannels:
       KEY_TRANSCEIVER 3
     roleCmds:
       get:
       set:
     state:
       chn        3
       dpt        PRESS_SHORT
Attributes:
   alias      Fernbedienung 02 - Taste 3
   ccuflags   logCommand
   devStateIcon pressed:ios-off
   event-on-change-reading state
   event-on-update-reading .*
   group      Büro
   room       Homematic

Kann mir jemand das beantworten wie es auszuwerten ist und in einem DOIF einzufühgen ist?

Besten Dank.

MadMax-FHEM

Zitat von: Fabiango am 01 Dezember 2024, 19:05:03Kann mir jemand das beantworten wie es auszuwerten ist und in einem DOIF einzufühgen ist?
Eventmonitor öffnen (Filter setzen), drücken, warten was an Events angezeigt wird und dann notify/DOIF/... anlegen lassen...

https://wiki.fhem.de/wiki/Event_monitor

Zitat von: Fabiango am 01 Dezember 2024, 19:05:03event-on-change-reading state
   event-on-update-reading .*
Würde ich erst mal löschen...
Und irgendwie ist das doch "sinnfrei"?
Events für state "einschränken" und dann FÜR ALLES wieder "freigeben"?

Gruß, Joachim

P.S.: was heißt Flanke? Es kommt ein Event und gut...
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)

Fabiango

#13
Hallo Joachim,

habe nun beide Attribute gelöscht und bekomme nun folgende Einträge im Eventmonitor

2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 activity: alive
2024-12-01 21:42:06 HMCCUCHN HM FB02Taste03 rssidevice: -49
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 battery: ok
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 devstate: ok
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 hmstate: pressed
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 pressed
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 PRESS_SHORT: pressed
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 pressed: pressed
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 devstate: ok
2024-12-01 21:42:06 HMCCUCHN HM_FB02Taste03 hmstate: pressed

Welchen Eintrag soll ich für das DOIF verwenden?

Mit positiver Flanke meine ich das er nicht nur den Status zum schalten nimmt, sondern nur wenn die Taste wieder gedrückt wird (in FHEM Event genannt?)

Meiner Meinung nach wäre event-on-change-reading das richtige, aber das Problem ist das sich das Reading an sich immer gleich bleibt und nur das Datum /. Uhrzeit dahinter ändert

MadMax-FHEM

Ich würde mehrfach mit Abstand drücken und dann einen der Events nehmen, der pro drücken nur 1x kommt...

Wenn du dann davon ein notify/DOIF erzeugen lässt, dann wird es pro Druck ausgelöst (was du verm. mit Fkanke meinst)...

Setze doch einfach event-on-change und dann schau noch mal im Eventmonitor, wenn du dann mehrfach drückst...

Lesen was was macht kann auch helfen ;)

Datum/Uhrzeit des Readings und Event (Eventmonitor) sind beim Einsatz der genannten Attribute oft unterschiedlich...

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)