Czas trwania stanu encji

Poproszę o pomoc w znalezieniu czasu trwania encji.


Jak widać na obrazku mam drzwi i potrzebuje w NR okreslic czas trwania tego ile czasu sa otwarte czy zamkniete. Nie chodzi o to co bylo tylko ile wynosi ten czas teraz. Czyli jak ulegnie zmianie stan, to juz nowy czas mi potrzebny.
Zamysł jest taki:

Ale za nic nie moge wyciągnąć czasu - poprosze o pomoc - gdzie go znajde? jak wyciągnąc czast trwania??

Prawe czy lewe?

Z każdego zdarzenia można uzyskać znacznik czasu, na podstawie różnicy można określić czas trwania stanu.
Żeby nie przepisywać zapoznaj się z

Hehe - tez o tym pomyślałem pisząc, ale do brzegu.
Czytałem link o którym wspomniałeś - mam go nawet zastosowanego (tzn bawiłem się nim) ale:
1 nie pokazuje mi czasu aktualnego tylko zlicza z jakiegos czasu - a ja potrzebuje czas jaki ma aktualny stan w tej chwili bez zliczania tego co byl 5 min wczesniej przed zmiana stanu,
2 to nie pokazuje mi wartosci 1h 55m tylko z przecinkami jakies wartosci
stosowałęm 2 rodzaje zapisów i w sumie bez wiekszych powodzen:


  - platform: history_stats
    name: czassdrzwi
    entity_id: binary_sensor.drzwi_wejsciowe_350
    state: "on"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}"

i taki

  - platform: history_stats
    name: czassdrzwi2
    entity_id: binary_sensor.drzwi_wejsciowe_350
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

Nie jakiś… tylko unixowy aktualny czas w msek od początku “epoki”.
Z niego możesz wyciągnąć wszystko co potrzebujesz.
Na pewno czytałeś tego linka (od przykładu 7)?

Poza tym sama encja raportuje czas zdarzenia

Encja pokazuje czas początku i konca ale nie daje samego czasu trwania.
W linku który podales moge pobrac czas (tzn ja tak kumam - popraw mnie prosze jezeli gadam glupoty), ale trzeba by pewnie dopisac cos madrego zeby policzyc czas pomiedzy startem a koncem.

Niczym to się nie różni od zliczania czasu włączenia TV - zapamiętujesz znacznik w momencie zmiany stanu, odejmujesz od znacznika “teraz” i masz czas trwania w msek.
Różnicę możesz przedstawić w dowolnej formie np 1h 55min.
Nie Ty pierwszy na tym forum się z tym borykasz :slight_smile: …temat jest w miarę rozpracowany.

Wiec jest tak:
Z ogromną pomocą @bartik22 - któremu bardzo dziękuje - wydłubaliśmy coś takiego:

[{"id":"82494c9d3ad6296e","type":"tab","label":"czas","disabled":false,"info":"","env":[]},{"id":"6b67813945fa3858","type":"server-state-changed","z":"82494c9d3ad6296e","name":"","server":"e2200088.99288","version":6,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["group.swiatlolazienka"],"substring":[],"regex":[]},"outputInitially":false,"stateType":"str","ifState":"on","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":190,"y":120,"wires":[["4c0d118d00771113"],["a61c99d17f2302fe","a773cd64514dc3e5","2744bddf866ee2c3"]]},{"id":"bea75a04b07f0ec6","type":"function","z":"82494c9d3ad6296e","name":"[s] to [hh:mm:ss]","func":"msg.payload = (new Date(msg.count * 1000)).toUTCString().match(/(\\d\\d:\\d\\d:\\d\\d)/)[0];\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":320,"wires":[["b59a3b4bea02177d"]]},{"id":"4c0d118d00771113","type":"delay","z":"82494c9d3ad6296e","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":520,"y":100,"wires":[["2fa640a3c7a53d2d"]]},{"id":"2fa640a3c7a53d2d","type":"trigger","z":"82494c9d3ad6296e","name":"","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"-1","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":700,"y":120,"wires":[["6b6b58afb4a88129"]]},{"id":"a773cd64514dc3e5","type":"change","z":"82494c9d3ad6296e","name":"Reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":180,"wires":[["6b6b58afb4a88129"]]},{"id":"6e743de8d9094453","type":"inject","z":"82494c9d3ad6296e","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 01 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":210,"y":180,"wires":[["a773cd64514dc3e5"]]},{"id":"6b6b58afb4a88129","type":"counter","z":"82494c9d3ad6296e","name":"","init":0,"step":"","lower":"","upper":"","mode":"increment","outputs":1,"x":860,"y":140,"wires":[["bea75a04b07f0ec6"]]},{"id":"b59a3b4bea02177d","type":"switch","z":"82494c9d3ad6296e","name":"czasy","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"00:15:00","vt":"str"},{"t":"eq","v":"00:30:00","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":320,"wires":[["7b0f56fca77b4c88"],["2ddfb2a906b355b4"]]},{"id":"7b0f56fca77b4c88","type":"function","z":"82494c9d3ad6296e","name":"czas","func":"msg.wiadomosc = \n    \"wlaczone przez \"+msg.payload+\".\";\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":300,"wires":[["0ea6b51b3a4ffa47"]]},{"id":"81b9447acab999bc","type":"function","z":"82494c9d3ad6296e","name":"Pełna wiadomość","func":"msg.payload =\n{\n    \"data\":\n    {\n        \"message\": msg.wiadomosc,\n    }\n}\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":420,"wires":[["5a0cb0d436511eee","1ba782deb1c5fc0c","d19a5b6a5a6b4632"]]},{"id":"a61c99d17f2302fe","type":"change","z":"82494c9d3ad6296e","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":140,"wires":[["2fa640a3c7a53d2d"]]},{"id":"5a0cb0d436511eee","type":"debug","z":"82494c9d3ad6296e","name":"debug 22","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":420,"y":480,"wires":[]},{"id":"c2e47ee78a8b537e","type":"inject","z":"82494c9d3ad6296e","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 01 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":210,"y":80,"wires":[["4c0d118d00771113"]]},{"id":"2ddfb2a906b355b4","type":"function","z":"82494c9d3ad6296e","name":"czas jeszcze","func":"msg.wiadomosc = \n    \"jeszcze wlaczone  \"+msg.payload+\" .\";\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":340,"wires":[["0ea6b51b3a4ffa47"]]},{"id":"d19a5b6a5a6b4632","type":"api-call-service","z":"82494c9d3ad6296e","name":"Głośnik","server":"e2200088.99288","version":7,"debugenabled":false,"action":"tts.reversotts_say","floorId":[],"areaId":[],"deviceId":[],"entityId":[],"labelId":[],"data":"{\"entity_id\":\"\",\"message\":\"My name is hanna\",\"language\":\"ru\",\"options\":\"platform specific\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":false,"domain":"tts","service":"reversotts_say","x":420,"y":400,"wires":[[]]},{"id":"0ea6b51b3a4ffa47","type":"api-call-service","z":"82494c9d3ad6296e","name":"glosnosc","server":"e2200088.99288","version":7,"debugenabled":false,"action":"media_player.volume_set","floorId":[],"areaId":[],"deviceId":[],"entityId":["media_player.lazienka_nowy"],"labelId":[],"data":"{\"volume_level\":\"0.2\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":false,"domain":"media_player","service":"volume_set","x":740,"y":320,"wires":[["81b9447acab999bc"]]},{"id":"1ba782deb1c5fc0c","type":"api-call-service","z":"82494c9d3ad6296e","name":"powiadomienie telegram","server":"e2200088.99288","version":7,"debugenabled":false,"action":"notify.domlili_bot","floorId":[],"areaId":[],"deviceId":[],"entityId":[],"labelId":[],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"data"}],"queue":"none","blockInputOverrides":false,"domain":"notify","service":"domlili_bot","x":470,"y":440,"wires":[[]]},{"id":"b3421da298068085","type":"comment","z":"82494c9d3ad6296e","name":"co bym chcial po tym jak sygnal bedzie \"off\"","info":"","x":470,"y":620,"wires":[]},{"id":"2744bddf866ee2c3","type":"ui_text_input","z":"82494c9d3ad6296e","name":"","label":"tu chcialbym aby policzylo laczny czas co do sekundy i wyslalo do glosnika","tooltip":"","group":"","order":0,"width":0,"height":0,"passthru":true,"mode":"text","delay":300,"topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":490,"y":680,"wires":[[]]},{"id":"353eaa1038f4b4e6","type":"comment","z":"82494c9d3ad6296e","name":"w powiadomieniu na glosnik aby nie mowil słowa \"godzina\"","info":"","x":710,"y":400,"wires":[]},{"id":"e2200088.99288","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

co wygląda tak:

Poprosze o pomoc w 2 kwestiach:
1 - w powiadomieniu na głośnik pada słowo “godzina” które chciałbym wyeliminować - kompletnie nie wiem jak.
2 - na koniec po osiągnieciu stanu “off” chciałbym aby na telegrama wysłana została wiadomość o łącznym czasie co do sekundy i na głośnik też bez słowa “godzina” jak wczesniej