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}
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
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
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 :)
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.
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
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.
Da ist nat. auch was dran...
EDIT: erklärt aber nicht das Ausbleiben eines Events bei manueller Eingabe von setreading... ;)
Gruß, Joachim
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 :)
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
Au, das habe ich übersehen. ???
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
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
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
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