[Gelöst] HourCounter Problem

Begonnen von dk3572, 28 November 2021, 09:24:36

Vorheriges Thema - Nächstes Thema

dk3572

Hallo,

ich setze in einer Schaltsteckdose das reading "running on/off" per notify.
Mit HourCounter möchte ich die Betriebsstunden zählen.
Leider zählt es immer, obwohl running = off.
Kann hier jemand weiter helfen?
Danke im Voraus und VG Dieter.

Steckdose

CID        DVES_2EF549
   DEF        DVES_2EF549
   DEVICETOPIC Spuelmaschine
   FUUID      6092bc02-f33f-cd72-867e-e1ac1734d10b65f4
   FVERSION   10_MQTT2_DEVICE.pm:0.248610/2021-08-20
   IODev      MQTT2_Server
   LASTInputDev MQTT2_Server
   MQTT2_Server_MSGCNT 3151
   MQTT2_Server_TIME 2021-11-28 09:20:18
   MSGCNT     3151
   NAME       Spuelmaschine
   NR         494
   STATE      1:on
2:off
   TYPE       MQTT2_DEVICE
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   READINGS:
     2021-05-07 20:49:13   BASE            55
     2021-05-07 20:49:13   DeviceName      Spuelmaschine
     2021-11-28 09:20:18   ENERGY_ApparentPower 0
     2021-11-28 09:20:18   ENERGY_Current  0.000
     2021-11-28 09:20:18   ENERGY_Factor   0.00
     2021-11-28 09:20:18   ENERGY_Period   0
     2021-11-28 09:20:18   ENERGY_Power    0
     2021-11-28 09:20:18   ENERGY_ReactivePower 0
     2021-11-28 09:20:18   ENERGY_Today    0.000
     2021-11-28 09:20:18   ENERGY_Total    39.868
     2021-11-28 09:20:18   ENERGY_TotalStartTime 2021-05-05T15:34:42
     2021-11-28 09:20:18   ENERGY_Voltage  219
     2021-11-28 09:20:18   ENERGY_Yesterday 0.000
     2021-05-07 20:49:13   Emulation       0
     2021-05-07 20:49:13   FLAG            0
     2021-05-07 20:49:13   FriendlyName1   Spuelmaschine
     2021-05-07 20:49:13   FriendlyName2   
     2021-05-07 20:49:13   FriendlyName3   
     2021-05-07 20:49:13   FriendlyName4   
     2021-05-07 20:49:13   FriendlyName5   
     2021-05-07 20:49:13   FriendlyName6   
     2021-05-07 20:49:13   FriendlyName7   
     2021-05-07 20:49:13   FriendlyName8   
     2021-05-07 11:19:30   GPIO            Not supported
     2021-05-07 20:49:13   GPIO_1          0
     2021-05-07 20:49:13   GPIO_10         320
     2021-05-07 20:49:13   GPIO_11         224
     2021-05-07 20:49:13   GPIO_12         0
     2021-05-07 20:49:13   GPIO_13         0
     2021-05-07 20:49:13   GPIO_14         0
     2021-05-07 20:49:13   GPIO_2          321
     2021-05-07 20:49:13   GPIO_3          0
     2021-05-07 20:49:13   GPIO_4          32
     2021-05-07 20:49:13   GPIO_5          2720
     2021-05-07 20:49:13   GPIO_6          2656
     2021-05-07 20:49:13   GPIO_7          0
     2021-05-07 20:49:13   GPIO_8          0
     2021-05-07 20:49:13   GPIO_9          2624
     2021-11-28 09:20:18   Heap            27
     2021-11-27 07:04:26   IODev           MQTT2_Server
     2021-05-17 10:43:17   Info1_FallbackTopic cmnd/DVES_2EF549_fb/
     2021-05-17 10:43:17   Info1_GroupTopic cmnd/tasmotas/
     2021-05-17 10:43:17   Info1_Module    Gosund SP1 v23
     2021-05-17 10:43:17   Info1_Version   9.4.0.3(tasmota)
     2021-05-17 10:43:17   Info2_Hostname  tasmota_2EF549-5449
     2021-05-17 10:43:17   Info2_IPAddress 192.168.178.77
     2021-05-17 10:43:17   Info2_WebServerMode Admin
     2021-05-17 10:43:17   Info3_RestartReason Power On
     2021-11-28 06:01:15   LWT             Online
     2021-11-28 09:20:18   LoadAvg         19
     2021-05-07 20:49:13   Module_0        Gosund SP1 v23
     2021-05-07 11:19:30   Module_55       Gosund SP1 v23
     2021-11-28 09:20:18   MqttCount       186
     2021-05-07 20:49:13   NAME            Gosund SP1 v23
     2021-11-28 09:20:18   POWER           ON
     2021-05-07 13:38:05   PowerDelta1     10
     2021-05-07 20:49:13   SetOption3      ON
     2021-11-28 09:20:18   Sleep           50
     2021-11-28 09:20:18   SleepMode       Dynamic
     2021-11-28 09:20:18   Time            2021-11-28T09:20:18
     2021-05-05 20:55:42   Timezone        99
     2021-11-28 09:20:18   Uptime          194T23:37:05
     2021-11-28 09:20:18   UptimeSec       16846625
     2021-05-07 20:49:13   WebPassword     ****
     2021-11-28 09:20:18   Wifi_AP         1
     2021-11-28 09:20:18   Wifi_BSSId      38:10:D5:0E:36:13
     2021-11-28 09:20:18   Wifi_Channel    1
     2021-11-28 09:20:18   Wifi_Downtime   0T00:01:03
     2021-11-28 09:20:18   Wifi_LinkCount  29
     2021-11-28 09:20:18   Wifi_RSSI       62
     2021-11-28 09:20:18   Wifi_SSId       DK-Wlan
     2021-11-28 09:20:18   Wifi_Signal     -69
     2021-05-05 20:50:34   attrTemplateVersion 20200522 or prior
     2021-06-04 17:04:21   auto_SolarForecast 0
     2021-11-27 13:53:06   running         off
     2021-11-28 09:07:18   statENERGY_Current Hour: 0.000 Day: 0.000 Month: 0.000 Year: 0.000 (since: 2021-05-12 )
     2021-11-28 08:59:55   statENERGY_CurrentLast Hour: 0.000 Day: 0.000 Month: 0.000 Year: -
     2021-11-28 09:07:18   statENERGY_Power Hour: 0 Day: 0 Month: 0 Year: 0 (since: 2021-05-12 )
     2021-11-28 08:59:55   statENERGY_PowerLast Hour: 0 Day: 0 Month: 0 Year: -
     2021-05-11 13:20:45   statStateDay    on: 13:20:50 on_Count: 1
     2021-05-10 23:59:55   statStateDayLast on: 24:00:00 on_Count: 1
     2021-05-11 13:20:45   statStateMonth  on: 3d 16:37:17 on_Count: 1 (since: 2021-05-07_20:43:28)
     2021-05-11 13:20:45   statStateYear   on: 3d 16:37:17 on_Count: 1 (since: 2021-05-07_20:43:28)
     2021-06-04 17:04:25   state           on
     2021-05-08 16:14:43   subscriptions   cmnd/DVES_2EF549_fb/# cmnd/tasmota_2EF549/# cmnd/tasmotas/#
   helper:
     _98_statistics Statistik
Attributes:
   DbLogExclude .*
   alias      Spülmaschine
   auto_SF    0
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/cmnd/tasmota_2EF549/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   devStateIcon 1.on:rc_GREEN:off 1.off:rc_RED:on 2.on:general_an@green 2.off:general_aus
   event-min-interval ENERGY_Current:900,ENERGY_Power:900
   event-on-change-reading running,state,POWER,ENERGY_Current,ENERGY_Today,ENERGY_Total,ENERGY_Power,ENERGY_Voltage:5
   group      Schalten
   icon       scene_dishwasher
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_basic_state_power1
   readingList tele/tasmota_2EF549/LWT:.* LWT
  tele/tasmota_2EF549/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_2EF549/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_2EF549/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_2EF549/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_2EF549/POWER1:.* state
  stat/tasmota_2EF549/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       Küche
   setList    off:noArg    cmnd/tasmota_2EF549/POWER1 0
  on:noArg     cmnd/tasmota_2EF549/POWER1 1
  toggle:noArg cmnd/tasmota_2EF549/POWER1 2
  setOtaUrl:textField cmnd/tasmota_2EF549/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/tasmota_2EF549/upgrade 1
   stateFormat 1:state
2:running
   userattr   auto_SF:0,1
   webCmd     on:off


Notify

DEF        Spuelmaschine:ENERGY_Power:.* {
# Wenn die Spülmaschine eingeschaltet wurde
    if (ReadingsNum($NAME, "ENERGY_Power", 0) > 3 && ReadingsVal($NAME, "running", "off") eq "off") {
        fhem("sleep1; setreading $NAME running on");
    }

# Wenn die Spülmaschine länger als 30 Minuten lief und dann keinen Strom mehr verbraucht -> Notification
    if (ReadingsNum($NAME, "ENERGY_Power", 0) < 1 && ReadingsVal($NAME, "running", "off") eq "on") {
        if (secondsSinceReadingChange($NAME, "running") > 1800) {
            fhem ("set ECHO_G090LV03644201AX speak Die Spülmaschine ist fertig.");
            fhem ("defmod verzSpuelmaschine at +00:30:00 { TTSAddQueue(\"Hallo. Denkst du noch an die Spülmaschine?\") }");
           #fhem ("set hc_Spuelmaschine clear");
        }

        fhem("sleep1; setreading $NAME running off");
    }

# Wenn Fehler aufgetreten ist, und die Spülmaschine nach 4 Stunden nicht automatisch ausgegangen ist
    if (secondsSinceReadingChange($NAME, "running") > 14400 && ReadingsVal($NAME, "running", "off") eq "on") {
        fhem("sleep1; setreading $NAME running off");

        fhem("set ECHO_G090LV03644201AX speak Achtung. Die Spülmaschine läuft seit 4 Stunden und ist nicht ausgegangen");
    }
}
   FUUID      6093fd6f-f33f-cd72-31bd-f0e125a7a2c5e4c8
   FVERSION   91_notify.pm:0.252310/2021-11-15
   NAME       n_Spuelmaschine
   NOTIFYDEV  Spuelmaschine
   NR         496
   NTFY_ORDER 50-n_Spuelmaschine
   REGEXP     Spuelmaschine:ENERGY_Power:.*
   STATE      2021-11-28 09:22:18
   TRIGGERTIME 1638087738.70622
   TYPE       notify
   READINGS:
     2021-11-27 07:04:26   state           active
     2021-11-28 09:22:18   triggeredByDev  Spuelmaschine
     2021-11-28 09:22:18   triggeredByEvent ENERGY_Power: 0
Attributes:
   DbLogExclude .*


HourCounter

DEF        Spuelmaschine:running:.on Spuelmaschine:running:.off
   FUUID      6189251f-f33f-cd72-d758-6df4b620611e873a
   FVERSION   98_HourCounter.pm:v1.0.0-s11307/2016-04-25
   NAME       hc_Spuelmaschine
   NR         512
   NTFY_ORDER 50-hc_Spuelmaschine
   STATE      0
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   READINGS:
     2021-11-28 09:23:00   Laufzeit        562.983333333333
     2021-11-27 13:04:49   clearDate       2021-11-27 13:04:49
     2021-11-28 09:23:00   countsOverall   0
     2021-11-28 09:23:00   countsPerDay    0
     2021-11-28 09:23:00   pauseTimeEdge   0
     2021-11-28 09:23:00   pauseTimeIncrement 0
     2021-11-28 09:23:00   pauseTimeOverall 0
     2021-11-28 09:23:00   pauseTimePerDay 0
     2021-11-28 09:23:00   pulseTimeEdge   0
     2021-11-28 09:23:00   pulseTimeIncrement 73089
     2021-11-28 09:23:00   pulseTimeOverall 73089
     2021-11-28 09:23:00   pulseTimePerDay 33779
     2021-11-28 09:23:00   state           0
     2021-11-26 19:31:41   tickChanged     5
     2021-11-28 00:00:00   tickDay         1
     2021-11-28 09:00:00   tickHour        20
     2021-11-27 13:02:40   tickMonth       0
     2021-11-28 09:23:00   tickUpdated     538
     2021-11-28 00:00:00   tickWeek        1
     2021-11-27 13:02:40   tickYear        0
     2021-11-28 09:23:00   value           1
   helper:
     OFF_Regexp Spuelmaschine:running:.off
     ON_Regexp  Spuelmaschine:running:.on
     calledByEvent
     changedTimestamp 2021-11-28 09:23:00
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1638086400
     value      -1
     cmdQueue:
Attributes:
   DbLogExclude .*
   event-on-change-reading .*
   interval   1
   userReadings Laufzeit {ReadingsVal("hc_Spuelmaschine","pulseTimePerDay",0)/60}

Jewe

ZitatDEF        Spuelmaschine:running:.on Spuelmaschine:running:.off

Hey,
Du hast in Deiner definition .on und .off stehen. Der State ist doch aber on , also ohne den Punkt.

Grüssle, Jens

dk3572

Hallo Jens,

danke für deine Unterstützung.
Auch das habe ich bereits erfolglos ausprobiert.
Es wird trotzdem on gezählt obwohl running = off.

Ich vermute es hat mit dem MQTT2 Device zu tun.

VG Dieter

Wzut

Zitat von: Jewe am 30 November 2021, 22:24:25
Der State ist doch aber on , also ohne den Punkt.
das ist hier nicht das Thema da es nicht um state geht sondern ein Reading mit Namen running - und dieses Reading liegt direkt im notify.
IMHO ginge es wenn dieses eben nicht ein Bestandteil des ausführenden notify selbst wäre ($NAME) sondern ein extra stinknormler Dummy,
denn ich befürchte so wird der für HC notwendige Event erst gar nicht erzeugt - aber wie fast immer würde einem der Eventmonitor dies verraten :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

dk3572

Hallo Wzut,

Danke für deine Unterstützung.

Das reading wird von dem Notify in der Schaltsteckdose (Spuelmaschine) gesetzt.
Selbst wenn ich direkt in die Befehlszeile ein "setreading Spuelmaschine running on" eingebe, sehe ich im Eventmonitor nichts davon.



MadMax-FHEM

Naja, wenn running schon "on" ist/war, dann kommt nat. kein Event: event-on-change-reading...

Ich würde die Attribute mal löschen und dann sehen, ob Events kommen und wenn HC dann läuft die Attribute wieder setzen...

Wenn es dann nicht mehr geht: Attribute kontrollieren...

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)

pappn

Ich denke es liegt am notify und setreading.
Die Commandref schreibt:
Note: setreading won't generate an event for device X, if it is called from a notify for device X. Use "sleep 0.1; setreading X Y Z" in this case.
im notify ist sleep gem. commandref nicht korrekt benutzt es fehlt ein Leerzeichen.
sleep <sec|timespec|regex> [<id>] [quiet] => sleep 1 nicht sleep1
Das müsste eigentlich einen Fehler auslösen. Was steht denn da im Log?

Wenn sleep nicht kommt (weil syntaktisch falsch), gibt es vermutlich auch keinen Event und damit auch keinen Trigger für HC.
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

MadMax-FHEM

#7
Da ist nat. auch was dran...

EDIT: erklärt aber nicht das Ausbleiben eines Events bei manueller Eingabe von setreading... ;)

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)

pappn

#8
Da hast du recht. Bei manueller Eingabe kommt ein event (bei mir).
Mmmmh....

Dann bin ich bei Wzut.
Zitat von: Wzut am 01 Dezember 2021, 09:21:23
.... - aber wie fast immer würde einem der Eventmonitor dies verraten :)
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

MadMax-FHEM

#9
Naja, wenn ich richtig gelesen habe schreibt dk3572 doch, dass eben bei manueller Eingabe (auch) KEIN Event kommt...

https://forum.fhem.de/index.php/topic,124421.msg1190454.html#msg1190454

Damit kann es nicht (nur) am sleep liegen...
...meinte ich 8)

EDIT: solange keine (passenden) Events kommen kann es nicht funktionieren...

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)

pappn

Au, das habe ich übersehen.  ???
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

dk3572

Zitat von: MadMax-FHEM am 01 Dezember 2021, 20:32:55
Naja, wenn running schon "on" ist/war, dann kommt nat. kein Event: event-on-change-reading...

Ich würde die Attribute mal löschen und dann sehen, ob Events kommen und wenn HC dann läuft die Attribute wieder setzen...

Wenn es dann nicht mehr geht: Attribute kontrollieren...

Gruß, Joachim

Hallo Joachim,

Danke für deine Unterstützung.

Welche Attribute soll ich löschen?
Das running in event-on-change hatte ich bereits mal gelöscht. Ohne Erfolg.

Jetzt konnte ich durch ein manuelles setreading Events erzeugen.

2021-12-02 06:35:24.285 MQTT2_DEVICE Spuelmaschine running: on
2021-12-02 06:35:33.742 MQTT2_DEVICE Spuelmaschine running: off


Der hourCounter läuft allerdings immer noch als wäre running on.
Der lief sogar, als ich das reading running gelöscht hatte.

Hoffe auf weitere Vorschläge  ;)

Danke und VG Dieter

dk3572

Zitat von: pappn am 01 Dezember 2021, 21:30:30
Ich denke es liegt am notify und setreading.
Die Commandref schreibt:
Note: setreading won't generate an event for device X, if it is called from a notify for device X. Use "sleep 0.1; setreading X Y Z" in this case.
im notify ist sleep gem. commandref nicht korrekt benutzt es fehlt ein Leerzeichen.
sleep <sec|timespec|regex> [<id>] [quiet] => sleep 1 nicht sleep1
Das müsste eigentlich einen Fehler auslösen. Was steht denn da im Log?

Wenn sleep nicht kommt (weil syntaktisch falsch), gibt es vermutlich auch keinen Event und damit auch keinen Trigger für HC.

Hallo pappn,

auch dir Danke für die Hilfe.
Das notify funktioniert, weil running wird ordnungsgemäß auf on/off gesetzt.

VG Dieter

dk3572

Jetzt scheint es erst mal zu funktionieren.

Habe in hourCounter wieder den Punkt vor on gesetzt (Spuelmaschine:running:.on Spuelmaschine:running:.off)
Dann ein manuelles setreading Spuelmaschine running on und off.

Ich werde beobachten  ;)

Vielen Dank trotzdem an alle.

VG Dieter

MadMax-FHEM

Mit löschen hab ich gemeint: alle event-on-... zu löschen.

Wenn es "Probleme" mit Events gibt, bzw. Module, die Events benötigen, dann (erst mal) alle Events zulassen (also nichts einschränken) und zum Laufen kriegen und dann (bei Bedarf) wieder reduzieren...

Ein Löschen von nur running aus der Liste macht genau das Gegenteil von dem was du (verm.) wolltest...

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)