Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Lage en sensor som lagrer strømforbruk per dag innenfor måneden


MHR

Anbefalte innlegg

Hei

 

Jeg prøver å implementere powersaver.no sin "Capacity part of grid tariff" og har kommet til Get Consumption. Jeg bruker ikke Tibber, og jeg får ikke denne dataen fra min AMS leser. Derimot får jeg en kontinuerlig strøm av strøm akkurat nå, akkumulert kWt inneværende time, og akkumulert kWt inneværende dag. 

 

Kan jeg på en eller annen måte lage en sensor som bygger opp disse dataene basert på historikken som Home Assistant har på disse eksisterende sensorene? 

  • Like 1
Lenke til kommentar
Del på andre sider

Jeg ønsker å generere json som er på linken, dato/tid og strøm forbrukt per time. 

{ "viewer": { "home": { "consumption": { "nodes": [ { "from": "2022-06-01T00:00:00.000+02:00", "consumption": 4.307 }, { "from": "2022-06-01T01:00:00.000+02:00", "consumption": 3.648 },

Lenke til kommentar
Del på andre sider

1 hour ago, rawr said:

Dette er jeg også på jakt etter. Debug/output av NR-noden "Get consumption" viser følgende:

 

May be an image of text that says "debug 2022 1:00:01 node Get consumption Tibber debug msg.payload Object object nodes all object object consumption: object nodes: array[213] object from: 2022 11 01100:00:00.000+01:00" consumption: 6.19 object object object object object object object object object 159 69]"

Det virker jo som du bruker Tibber og får akkurat det du skal. Eller misforstår jeg deg nå?

Lenke til kommentar
Del på andre sider

MHR skrev (På 11.11.2022 den 10.33):

Det virker jo som du bruker Tibber og får akkurat det du skal. Eller misforstår jeg deg nå?

Jeg er Tibberkunde og har alle dems sensorer ja, men mtp stabilitet og hyppige utfall den siste måneden så er jeg på jakt etter en løsning som kan erstatte Tibber for min del. At Tibber blir en sekundær, redundant løsning i stedet for hovedløsningen. Dette vil også gjøre det lettere den dagen jeg evnt velger å bytte strømleverandør.

Jeg har nå to Pulse-enheter. Én for Tibber og én lokal med AMSHAN-integrasjonen. Og for at lastbalanseringen skal være stabil og faktisk gjøre jobben sin så MÅ data fra Pulse nå frem til min HA og flow'ene kontinuerlig. Det er nå på plass med den lokale Pulse'n. Og så lenge den er stabil så er Tibber sine sensorer en "bonus" og blir absolutt brukt, men jeg er ikke lenger 100% avhengig av stabiliteten.

Lenke til kommentar
Del på andre sider

Jeg har googlet masse og fant ulike tilnærminger, noen gamle og helt sikkert utdatert, og en som er enkel og virker. Når man baserer seg på data i HA så er det jo en forutsetning at dataene har strømmet riktig til HA og dermed lagret i HA sin lokale database. 

 

Noen lager en sensor som kobler seg direkte mot databasen: https://community.home-assistant.io/t/get-temperature-from-yesterday/146494/13

Noen nevnte Utility Meter i HA, men usikker på om det gir oss det vi er ute etter (ikke testet): https://www.home-assistant.io/integrations/utility_meter/

 

Når jeg endret google søket mot node-red så fant jeg den jeg driver å tester ut nå; "Get History"-noden. Denne lar en spesifisere dato fra og til og henter ut alle lagrede verdier mellom de datoene. Nå har jeg en sensor som viser meg live oppdatert (hvert 2. sekund) kWh per time. Dette vil jo generere enorm mye data hvis jeg skal hente alt tilbake fra første dag i måneden. Her er et eksempel på dump av dataene:

 

image.png.e27763d765617007ae3cac3e2b391eb2.png

 

Flowen ser slik ut 

image.png.807b488405e1bf7ab5c99933d578e58c.png

Flow kilde:

[{"id":"a2cb7aaba84a6225","type":"api-get-history","z":"061f27b0d92f0c71","name":"Get History","server":"9297fd47.ea6c7","version":0,"startdate":"2022-11-01T00:00:00+00:00","enddate":"2022-11-13T00:00:00+00:00","entityid":"sensor.amsleser_dayuse","entityidtype":"is","useRelativeTime":false,"relativeTime":"","flatten":true,"output_type":"array","output_location_type":"msg","output_location":"payload","x":370,"y":340,"wires":[["6bba0b29c315608b"]]},{"id":"6bba0b29c315608b","type":"debug","z":"061f27b0d92f0c71","name":"Dump history","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":550,"y":340,"wires":[]},{"id":"9397ce7db7c07b09","type":"inject","z":"061f27b0d92f0c71","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":150,"y":340,"wires":[["a2cb7aaba84a6225"]]},{"id":"9297fd47.ea6c7","type":"server","name":"Home Assistant","addon":true}]

 

Spørsmålet er om jeg skal lage en ny sensor som bare endrer seg en gang per dag, og bruke denne når jeg henter historikken. Det får jeg en verdi per dag som er det jeg ønsker.

 

Hva tenker dere?

 

Endret av MHR
Lenke til kommentar
Del på andre sider

Jeg skrev en liten javascript snutt som parser dataene fra Get-History noden og henter ut høyeste verdi per time (tar ikke hensyn til klokken, kun om verdien er høyere enn forrige). 

 

TODOs (som ikke er sikkert jeg kommer til å gjøre, da jeg heller kommer til å forsøke å hente dataene fra Elvia APIet)

- siden data fra HAN porten kommer ca hvert 2 eller 2,5 sekund så kan man havne over på neste time for å hente høyeste verdi. Klokkeverdien må overstyres

- Genere siste parametrene i json

 

[{"id":"0eaf62ddc2d3b6a2","type":"function","z":"061f27b0d92f0c71","name":"Generate hourly json","func":"var changedDate;\nvar currentMonth = new Date().getMonth() + 1;\nvar previousStateValue = 0;\nvar currentHourStateValue = 0;\nconst nodes = [];\n\nfor (var i = 0; i < msg.payload.length; i++) {\n    var item = msg.payload[i];\n    changedDate = (item.last_changed);\n    var changedDateParsed = new Date(changedDate);\n    var changedMonth = changedDateParsed.getMonth() + 1;\n\n    // Make sure we only handle current month and skip missing values\n    if (currentMonth == changedMonth && !Number.isNaN(Number.parseFloat(item.state))) {\n        if (previousStateValue < item.state) {\n            // Find total kwh hour used per hour\n            currentHourStateValue = item.state;\n            previousStateValue = currentHourStateValue;\n        }\n        // We have reached the highest state value\n        else if (previousStateValue > item.state) {\n            var nodeItem = '{\"from\":\"' + changedDate + '\", \"consumption\":' + previousStateValue + '}';\n            var itemJson = JSON.parse(nodeItem);\n            nodes.push(nodeItem);\n\n            // Reset previousStateValue\n            previousStateValue = 0;\n        }\n    }\n}\nnode.warn(nodes)\n//var jsondata = JSON.parse(nodes);\n//msg.payload = jsondata;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":340,"wires":[["6bba0b29c315608b"]]}]

 

Hvis noen fullfører scriptet gjerne del det tilbake :)

Endret av MHR
Lenke til kommentar
Del på andre sider

On 12/11/2022 at 16:52, rawr said:

Jeg er Tibberkunde og har alle dems sensorer ja, men mtp stabilitet og hyppige utfall den siste måneden så er jeg på jakt etter en løsning som kan erstatte Tibber for min del. At Tibber blir en sekundær, redundant løsning i stedet for hovedløsningen. Dette vil også gjøre det lettere den dagen jeg evnt velger å bytte strømleverandør.

Jeg har nå to Pulse-enheter. Én for Tibber og én lokal med AMSHAN-integrasjonen. Og for at lastbalanseringen skal være stabil og faktisk gjøre jobben sin så MÅ data fra Pulse nå frem til min HA og flow'ene kontinuerlig. Det er nå på plass med den lokale Pulse'n. Og så lenge den er stabil så er Tibber sine sensorer en "bonus" og blir absolutt brukt, men jeg er ikke lenger 100% avhengig av stabiliteten.

Har du forsøkt å bruke "Get History" noden? 

 

Jeg bruker Elvia apiet i stedet, som gir meg kwt per time for de dagene jeg spør etter. Jeg bruker da disse nodene som på linken, men jeg kommer til å erstatte inject noden med en function node som setter query parametrene dynamisk (fra første i måneden vi er i til dagens dato).

https://cookbook.nodered.org/http/set-query-string

Lenke til kommentar
Del på andre sider

17 minutes ago, iotux said:

@MHR Har du sjekket denne? Den er oppdatert i dag med integrering mot HA. Den strømmer data fra Tibber Pulse rett inn i HA. Enkel konfigurering og enkel installasjon.
https://github.com/iotux/ElWiz

Jeg bruker ikke Tibber, men løste mitt problem med Elvia sitt API :) Kanskje noe for @rawr, om det ikke var ustabiliteten på selve Tibber Pulse han klagde over.

Lenke til kommentar
Del på andre sider

MHR skrev (På 14.11.2022 den 21.05):

Jeg bruker ikke Tibber, men løste mitt problem med Elvia sitt API :) Kanskje noe for @rawr, om det ikke var ustabiliteten på selve Tibber Pulse han klagde over.

Det er uavhengigheten til Tibber pga dems ustabilitet jeg er ute etter ja 🙂

Lenke til kommentar
Del på andre sider

9 hours ago, rawr said:

Det er uavhengigheten til Tibber pga dems ustabilitet jeg er ute etter ja 🙂

Da må du nok hente dataene fra netteier. I mitt tilfelle er det Elvia, som har et API. Det var relativt enkelt å legge inn i Node-Red. HTTP Request noden trenger dynamiske query parametre som jeg har en function node for. Deretter tar jeg response fra HTTP requesten og genererer JSON som "find highest per day" støtter. si fra om du trenger noe mer :) 

 

image.png.a7f0df5445651f6f4e4794659a422e0b.png

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.