iotux / ElWiz

ElWiz - a program to read data from Tibber Pulse and similar devices
MIT License
107 stars 16 forks source link

Formatfeil/rusk frå pulse #9

Closed TurboJens closed 5 months ago

TurboJens commented 1 year ago

feilterm feil2 statusok feil1

Får litt snedige verdiar frå min tibber, den ser ut til å sende list1 og status på vettug måte, men resten vert berre rot. Eg har Kaifa måler, men modell MA304H4 (3fas 400V + N) så det burde jo vere likt.

Det ser ut som om feilen startar allereie hos tibber, kva i alle dager kan vere gale her?

hflatoey commented 1 year ago

Samme problem her i Node-Red... pulse

iotux commented 1 year ago

@TurboJens, @hflatoey Det kan ikke utelukkes at det finnes programfeil. Når det er sagt, så er det viktig å skille mellom data som kommer fra måleren/Tibber Puse, og det som produseres av ElWiz.

Hvis ElWiz er installert i hht README.md, så abonnerer ElWiz på topic "tibber". Dette skal bare brukes av ElWiz. Det skal ikke abbonneres på av brukere av ElWiz. Data som kommer fra Tibber Pulse er kodet i binært format og må dekodes til lesbart format. ElWiz dekoder dette binær-formatet til lesbart JSON-format.

Topics som skal brukes er "pulse/#" hvis man ikke ønsker å bruke integrasjonen mot Homeassistant. For bruk sammen med Homeassistant, er topic "elwis/sensor/#". Det er selvfølgelig mulig å abonnere på begge deler.

Det som presenteres i skjermdumper ovenfor, er binære meldinger fra topic "tibber". Det er ikke beregnet for bruk utenfor ElWiz. Jeg håper det er avklarende. Jeg er åpen for spørsmål og kommentarer via PM hos <https://hjemmeautomasjon.no/>. Samme nick.

hflatoey commented 1 year ago

Ah! Eg trudde Tibber Pulse ga ut lesbar data rett til MQTT broker :P

Mulig å installere ElWiz i docker? :)

TurboJens commented 1 year ago

@TurboJens, @hflatoey Det kan ikke utelukkes at det finnes programfeil. Når det er sagt, så er det viktig å skille mellom data som kommer fra måleren/Tibber Puse, og det som produseres av ElWiz.

Hvis ElWiz er installert i hht README.md, så abonnerer ElWiz på topic "tibber". Dette skal bare brukes av ElWiz. Det skal ikke abbonneres på av brukere av ElWiz. Data som kommer fra Tibber Pulse er kodet i binært format og må dekodes til lesbart format. ElWiz dekoder dette binær-formatet til lesbart JSON-format.

Topics som skal brukes er "pulse/#" hvis man ikke ønsker å bruke integrasjonen mot Homeassistant. For bruk sammen med Homeassistant, er topic "elwis/sensor/#". Det er selvfølgelig mulig å abonnere på begge deler.

Det som presenteres i skjermdumper ovenfor, er binære meldinger fra topic "tibber". Det er ikke beregnet for bruk utenfor ElWiz. Jeg håper det er avklarende. Jeg er åpen for spørsmål og kommentarer via PM hos <[https://hjemmeautomasjon.no/>](https://hjemmeautomasjon.no/**%3E). Samme nick.

@iotux Det gir meining, eg har ikkje tenkt å bruke tibber sin info, men prøvde å forstå kvifor det virka berre delvis.

Sidan det då åpenbart handlar om dekoding av den binære verdien så kan vi kanskje ta det her? Eg veit at min målar har meir data enn din, blandt anna volt på L2, kan det ha noko å seie på dekodinga?

Ah! Eg trudde Tibber Pulse ga ut lesbar data rett til MQTT broker :P

Mulig å installere ElWiz i docker? :)

@hflatoey Eg har ElWiz køyrande i docker på ein NAS boks. Det fungerar fint.

iotux commented 1 year ago

@TurboJens, @hflatoey, @leffen Jeg har laget et program som dumper output fra Pulse til JSON og HEX. Det bør kunne virke på alle varianter av AMS-målere.

Filene som lagres heter "list1, list2, list3 og list0" med ending .json eller .hex Fila "list0.*" bør fange opp resultatet hvis måleren er forskjellig fra den måleren som programmet er laget for.

Programmet finnes her: https://gist.github.com/iotux/0fbe8f766610ce0b6c17a66359436c39

Last ned programmet til samme katalog som ElWiz og start det litt før full time og la det gå til alle filvarianter er lagret. Resultatet kan lastes opp her for videre analyse.

hflatoey commented 1 year ago

Fekk det til med denne Node-Red noden :)

https://flows.nodered.org/node/node-red-contrib-ams-decoder

Takk for bruksanvising for å sitte opp Pulse med local MQTT broker :)

yusijs commented 1 year ago

@iotux jeg forsøker å kjøre dette scriptet ditt, og får kun "Raw data packet exception".

list0.hex: 7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000020002020f00161bc12c7e

list0.json:

{
  "type":"Buffer",
  "data":[126,160,42,65,8,131,19,4,19,230,231,0,15,64,0,0,0,0,1,1,2,3,9,6,1,0,1,7,0,255,6,0,0,1,255,2,2,15,0,22,27,180,40,126],
  "length":44
}

Opprettes ingen andre filer.

Raw-meldingen i mqtt ser slik ut: image

Har riktignok annen AMS måler, men snodig at jeg ikke får noen data ut bortsett fra list0? 🤔

pulse status:

{
  "rssi": -42,
  "ch": 11,
  "usbV": "2.53",
  "Vin": "23.61",
  "Vcap": "4.40",
  "Vbck": "4.55",
  "Build": "1.1.12",
  "Hw": "F",
  "ID": "10521c581980",
  "Uptime": 120,
  "mqttcon": 0,
  "pubcnt": 33,
  "rxcnt": 33,
  "wificon": 0,
  "wififail": 0,
  "bits": 68,
  "cSet": 98,
  "Ic": 0,
  "crcerr": 0,
  "cAx": 1.110685,
  "cB": 14,
  "heap": 211628,
  "baud": 2400,
  "meter": "Aidon_V2",
  "ntc": 29.66,
  "s/w": 0,
  "ct": 0,
  "dtims": 402
}
iotux commented 1 year ago

@yusijs Jeg ser at du har en Aidon-måler. Når du får lagret bare "list0.*", så betyr det at måleren ikke er kompatibel med ElWiz. Du får nok også andre typer pakker, men hver ny pakke overskriver den gamle. Du kan enten være kjapp når timespakken er lagret og stoppe programmet, eller vente til jeg har modifisert programmet til å lage flere filer. Det er nok ikke mye som trengs å endres i Elwiz for å gjøre det kompatibelt med Aidon

yusijs commented 1 year ago

@iotux jeg forsøker meg på å appende til filer en times tid nå. Fant noe dokumentasjon på Aidon måleren sin data her, så mulig det kan være noe der også som hjelper

iotux commented 1 year ago

@yusijs Jeg har gjort en mindre oppdatering på "elwiz.js" som forhåpentlig virker for Aidon. Jeg har ingen mulighet for å teste, men du kan prøve. Så får jeg en tilbakemelding fra deg

yusijs commented 1 year ago

List1 kom umiddelbart med noe mindre data (og noe morsomt på datoformatet )

{
  "date": "258-03-09T01:00:01",
  "powImpActive": 1.582
}

Ser utover kvelden om 2 / 3 kommer etterhvert.

iotux commented 1 year ago

@yusijs Fixen som jeg gjorde kommer fra denne forken: https://github.com/ways/ElWiz-Aidon Det er nok en forskyvning hele vegen ettersom offset er forskjellig. Jeg får se på det i morgen

yusijs commented 1 year ago

@iotux jeg begynte på en egen pakken basert på elwiz (skriver om til typescript, deler koden litt mer opp etc og tilpasser mitt behov). Når jeg holdt på med det, så var jeg inne og kikket på node-red pakken som @hflatoey linked til. Koden som ligger der ser ut til å funke veldig bra, så kunne kanskje vært en ide å kikke der for elwiz også? De har handler for både aidon og kamstrup, samt betapakke til Kaifa måler.

Var helt smertefritt å basically kopiere ut den koden, og tilpasse til modellen din. :)

TurboJens commented 1 year ago

@iotux eg prøvde å legge dette inn på ein raspberry sidan eg ikkje fekk til å køyre fetchprices eller tibdumper frå dockeren. I raspberry køyrer ikkje elwiz eller tibdumper, men fetchprices virkar... Truleg forbi min forståelse, eg er litt technerd men kan litt om mykje men ikkje ekspert på noko desverre. Får ei feilmelding som fortel meg absolutt ingen ting. Skal legge ut eit skjermbilde seinare.

Eg prøvde også den node-red pakken, og den dekodar Kaifa målaren min tilsynelatande perfekt.

jh1982 commented 1 year ago

Hei. Jeg har en Kaifa MA105H2E å dette er alle dataene jeg får. Noen tips til hva jeg kan prøve?

elwiz sensor status = online power = 1.044 minPower = 0.394 maxPower = 8.978 pulse meter list1 = { "powImpActive": 1.044, "minPower": 0.394, "maxPower": 8.978 } status = { "rssi": -60, "ch": 4, "ssid": "Thundercloud", "usbV": "1.92", "Vin": "25.99", "Vcap": "4.43", "Vbck": "4.55", "Build": "1.1.12", "Hw": "F", "bssid": "ac84c63967f2", "ID": "f008d179f368", "Uptime": 10800, "mqttcon": 0, "pubcnt": 60, "rxcnt": 60, "wificon": 0, "wififail": 0, "bits": 68, "cSet": 107, "Ic": 0, "crcerr": 0, "cAx": 1.179324, "cB": 14, "h… tibber =

jh1982 commented 1 year ago

@iotux eg prøvde å legge dette inn på ein raspberry sidan eg ikkje fekk til å køyre fetchprices eller tibdumper frå dockeren. I raspberry køyrer ikkje elwiz eller tibdumper, men fetchprices virkar... Truleg forbi min forståelse, eg er litt technerd men kan litt om mykje men ikkje ekspert på noko desverre. Får ei feilmelding som fortel meg absolutt ingen ting. Skal legge ut eit skjermbilde seinare.

Eg prøvde også den node-red pakken, og den dekodar Kaifa målaren min tilsynelatande perfekt.

Prøvde node red på min Kaifa MA105H2E men får bare deler av dataene der også..

TurboJens commented 1 year ago

Når eg køyrer elwiz.js på Raspberry får eg denne kryptiske meldinga: (akkurat same på tibdumper.js, fetchprices køyrer fint)

`xx@raspberrypi:~/Desktop/ElWiz-master $ node elwiz.js /home/xx/node_modules/util-deprecate/node.js:1 / ^

SyntaxError: Invalid regular expression: missing / at Object.compileFunction (node:vm:360:18) at wrapSafe (node:internal/modules/cjs/loader:1078:15) at Module._compile (node:internal/modules/cjs/loader:1113:27) at Module._extensions..js (node:internal/modules/cjs/loader:1203:10) at Module.load (node:internal/modules/cjs/loader:1027:32) at Module._load (node:internal/modules/cjs/loader:868:12) at Module.require (node:internal/modules/cjs/loader:1051:19) at require (node:internal/modules/cjs/helpers:103:18) at Object. (/home/xx/node_modules/readable-stream/lib/_stream_writable.js:60:14) at Module._compile (node:internal/modules/cjs/loader:1149:14)

Node.js v18.10.0 `

yusijs commented 1 year ago

@TurboJens ville forsøkt å kjøre med Node16 - node18 er litt.. snodig av og til. :)

iotux commented 1 year ago

@TurboJens, @hflatoey, @leffen, @yusijs Jeg har laget et program som dumper output fra Pulse til JSON og HEX. Det bør kunne virke på alle varianter av AMS-målere.

Jeg har gjort endringer på tibdumper.js som (forhåpentligvis) fanger opp data fra alle listetyper uansett målertype. Programmet lagrer 1 fil per listetype og heter "list1, list2 og list3 med ending .json

Data som ikke fanges opp av ElWiz blir lagret som "list0-xx:xx:xx.json" hvor "xx:xx:xx" er tidspunkt. Ettersom jeg bare har 1 måler å teste med, så setter jeg stor pris for bidrag her. Det gjør det mulig for meg å implementere dekoding for alle aktuelle målertyper.

Last opp resultatet her og gjerne oppgi målertype/modell.

Programmet finnes her: https://gist.github.com/iotux/70da06a2881830eb6f806075fa42018b

Last ned programmet til samme katalog som ElWiz og start det litt før full time og la det gå til alle filvarianter er lagret. Det er gjerne 2 til 3 sekunder mellom hver "list1" og 10 secunder mellom hver "list2". "list3" kommer hver hele time.

jh1982 commented 1 year ago

Hei. Jeg har en Kaifa MA105H2E å kjørt tibdumper.js en times tid nå. Men den eneste lista som blir opprettet er list1.json Og en del andre filer med dette innholdet: {"dec":[126,160,101,1,2,1,16,240,80,230,231,0,15,64,0,0,0,9,12,7,230,10,12,3,17,45,10,255,128,0,0,2,9,9,7,75,70,77,95,48,48,49,9,16,54,57,55,48,54,51,49,52,48,51,49,53,49,56,55,49,9,8,77,65,49,48,53,72,50,69,6,0,0,5,67,6,0,0,0,0,6,0,0,0,0,6,0,0,1,74,6,0,0,23,117,6,0,0,9,46,87,38,126],"hex":"7ea06501020110f050e6e7000f40000000090c07e60a0c03112d0aff800000020909074b464d5f30303109103639373036333134303331353138373109084d41313035483245060000054306000000000600000000060000014a0600001775060000092e57267e","length":103}

Og dette er fra terminalen: 8�� KFM_001 6970631403151871 MA105H2E��L �=~ Raw data packet exception : {"type":"Buffer","data":[126,160,101,1,2,1,16,240,80,230,231,0,15,64,0,0,0,9,12,7,230,10,12,3,17,56,0,255,128,0,0,2,9,9,7,75,70,77,95,48,48,49,9,16,54,57,55,48,54,51,49,52,48,51,49,53,49,56,55,49,9,8,77,65,49,48,53,72,50,69,6,0,0,6,205,6,0,0,0,0,6,0,0,0,0,6,0,0,1,128,6,0,0,30,76,6,0,0,9,29,144,61,126]}

yusijs commented 1 year ago

@iotux jeg venter på ny pulse (er noe busted med den jeg har, den rebooter vilkårlig 1-3 ganger i timen, så mangler mye data (spesielt list3)). Jeg skrev dog litt om på elwiz så jeg lagrer all dataen (hex verdiene) i en sqlite database som kanskje kan hjelpe:

List3, i dag kl 14.00: 7EA18A41088313EBFDE6E7000F40000000000112020209060101000281FF0A0B4149444F4E5F5630303031020209060000600100FF0A1037333539393932383931323337303238020209060000600107FF0A0436353334020309060100010700FF0600000D1C02020F00161B020309060100020700FF060000000002020F00161B020309060100030700FF060000000002020F00161D020309060100040700FF06000001AF02020F00161D0203090601001F0700FF10001102020FFF1621020309060100330700FF10008002020FFF1621020309060100470700FF10000202020FFF1621020309060100200700FF12091202020FFF1623020309060100340700FF12090102020FFF1623020309060100480700FF12093502020FFF1623020209060000010000FF090C07E60A0C03100000FF000000020309060100010800FF0600F9A7AB02020F01161E020309060100020800FF060000000002020F01161E020309060100030800FF06000154E102020F011620020309060100040800FF0600098DAB02020F01162099067E

List3, i dag kl 11.00: 7EA18A41088313EBFDE6E7000F40000000000112020209060101000281FF0A0B4149444F4E5F5630303031020209060000600100FF0A1037333539393932383931323337303238020209060000600107FF0A0436353334020309060100010700FF0600000E5602020F00161B020309060100020700FF060000000002020F00161B020309060100030700FF060000000002020F00161D020309060100040700FF06000001C702020F00161D0203090601001F0700FF10001802020FFF1621020309060100330700FF10003502020FFF1621020309060100470700FF10005202020FFF1621020309060100200700FF12091102020FFF1623020309060100340700FF12090D02020FFF1623020309060100480700FF12091E02020FFF1623020209060000010000FF090C07E60A0C030D0000FF000000020309060100010800FF0600F9A54202020F01161E020309060100020800FF060000000002020F01161E020309060100030800FF06000154E102020F011620020309060100040800FF0600098D4802020F01162090D87E

List2, i dag kl 15:55:51: 7EA11E41088313EEEEE6E7000F4000000000010D020209060101000281FF0A0B4149444F4E5F5630303031020209060000600100FF0A1037333539393932383931323337303238020209060000600107FF0A0436353334020309060100010700FF06000011B402020F00161B020309060100020700FF060000000002020F00161B020309060100030700FF060000000002020F00161D020309060100040700FF06000001B702020F00161D0203090601001F0700FF10001302020FFF1621020309060100330700FF10006202020FFF1621020309060100470700FF10005302020FFF1621020309060100200700FF12091502020FFF1623020309060100340700FF12090002020FFF1623020309060100480700FF12092B02020FFF162309497E

List2, i dag kl 15:55:41: 7EA11E41088313EEEEE6E7000F4000000000010D020209060101000281FF0A0B4149444F4E5F5630303031020209060000600100FF0A1037333539393932383931323337303238020209060000600107FF0A0436353334020309060100010700FF06000011D102020F00161B020309060100020700FF060000000002020F00161B020309060100030700FF060000000002020F00161D020309060100040700FF06000001C002020F00161D0203090601001F0700FF10001302020FFF1621020309060100330700FF10006202020FFF1621020309060100470700FF10005302020FFF1621020309060100200700FF12091602020FFF1623020309060100340700FF1208FF02020FFF1623020309060100480700FF12092902020FFF162304357E

List1 - ikke timestamp fra payload: 7EA02A410883130413E6E7000F40000000000101020309060100010700FF060000149702020F00161BC49E7E 7EA02A410883130413E6E7000F40000000000101020309060100010700FF06000014B302020F00161B31927E

iotux commented 1 year ago

@yusijs Rimer det (bortsett fra kommafeil og timejustering til localtime)?

{
  meterVersion: 'AIDON_V0001',
  meterID: '7359992891237028',
  meterModel: '6534',
  power: 3670,
  powerReactive: 0,
  powerProduction: 0,
  powerProductionReactive: 455,
  currentL1: 24,
  currentL2: 53,
  currentL3: 82,
  voltagePhase1: 2321,
  voltagePhase2: 2317,
  voltagePhase3: 2334,
  meterDate: '2022-10-12T13:00:00',
  lastMeterConsumption: 16360770,
  lastMeterConsumptionReactive: 87265,
  lastMeterProduction: 0,
  lastMeterProductionReactive: 625992
}

{
  meterVersion: 'AIDON_V0001',
  meterID: '7359992891237028',
  meterModel: '6534',
  power: 3356,
  powerReactive: 0,
  powerProduction: 0,
  powerProductionReactive: 431,
  currentL1: 17,
  currentL2: 128,
  currentL3: 2,
  voltagePhase1: 2322,
  voltagePhase2: 2305,
  voltagePhase3: 2357,
  meterDate: '2022-10-12T16:00:00',
  lastMeterConsumption: 16361387,
  lastMeterConsumptionReactive: 87265,
  lastMeterProduction: 0,
  lastMeterProductionReactive: 626091
}

Det vil ta litt tid å implementere

yusijs commented 1 year ago

Yes, det ser riktig ut det! :)

iotux commented 1 year ago

@jh1982 Det er en Kaifa 1-fase måler som du har. Pakken som du har dumpet over er en list2-pakke. Jeg har dekodet den slik:

{
  meterVersion: 'KFM_001',
  meterID: '6970631403xxxxxx',
  meterModel: 'MA105H2E',
  power: 1347,
  powerProduction: 0,
  powerReactive: 0,
  powerProductionReactive: 330,
  currentL1: 6005,
  voltagePhase1: 2350
}

Jeg har dessverre ikke tilgang til en slik måler, men det vil være en stor hjelp hvis du vil ta deg bryet med å kjøre "tibdumper.js" for meg og kopiere resultatet hit. Det er først og fremst den største pakken (hver hele time) som jeg er intressert i. Jeg trenger bare en.

Denne versjonen av "tibdumper.js" er det du skal bruke: https://gist.github.com/iotux/70da06a2881830eb6f806075fa42018b

Se også denne for sikkerhets skyld: https://github.com/iotux/ElWiz/issues/9#issuecomment-1275919617

yusijs commented 1 year ago

@iotux litt offtopic - har du anledning til å sjekke hvilken firmware versjon du har på din tibber pulse? Min er ekstremt ustabil (har forsøkt med en ny + den gamle), og lurer på om det kan være noe med firmware utgaven. Ser at status som rapporteres status-noticen fra Elwiz sier "Build = 1.1.12", men tibber pulse sier 1.1.15 når den kaller update-endepunktet jeg har satt opp.

Vil egentlig bare se om det rett og slett kan være noe som er ødelagt i den siste utgaven av tibber pulse firmware og at jeg bare bør "gi opp" å bruke mer tid på å stabilisere den..

Jeg kjørte gjennom natten, og her er oppe / nedetiden:

  'Up from 2022-10-13 23:43:50 to 2022-10-13 23:22:58 for 21 minutes, Down for 9 minutes',
  'Up from 2022-10-14 00:10:10 to 2022-10-13 23:53:12 for 17 minutes, Down for 3 minutes',
  'Up from 2022-10-14 00:30:05 to 2022-10-14 00:13:29 for 17 minutes, Down for 10 minutes',
  'Up from 2022-10-14 01:01:51 to 2022-10-14 00:39:49 for 22 minutes, Down for 15 minutes',
  'Up from 2022-10-14 01:28:23 to 2022-10-14 01:16:23 for 12 minutes, Down for 8 minutes',
  'Up from 2022-10-14 01:54:45 to 2022-10-14 01:36:40 for 18 minutes, Down for 8 minutes',
  'Up from 2022-10-14 02:24:53 to 2022-10-14 02:02:53 for 22 minutes, Down for 8 minutes',
  'Up from 2022-10-14 02:40:16 to 2022-10-14 02:33:07 for 7 minutes, Down for 9 minutes',
  'Up from 2022-10-14 03:06:13 to 2022-10-14 02:49:21 for 17 minutes, Down for 9 minutes',
  'Up from 2022-10-14 03:31:39 to 2022-10-14 03:15:33 for 16 minutes, Down for 8 minutes',
  'Up from 2022-10-14 03:50:41 to 2022-10-14 03:39:57 for 11 minutes, Down for 10 minutes',
  'Up from 2022-10-14 04:09:31 to 2022-10-14 04:00:17 for 9 minutes, Down for 9 minutes',
  'Up from 2022-10-14 04:40:06 to 2022-10-14 04:18:37 for 21 minutes, Down for 9 minutes',
  'Up from 2022-10-14 05:10:19 to 2022-10-14 04:48:57 for 21 minutes, Down for 9 minutes',
  'Up from 2022-10-14 05:39:45 to 2022-10-14 05:19:11 for 21 minutes, Down for 10 minutes',

Det virker som den forsøker å gjøre en call-home til tibber på relativt jevne intervaller (svært mange ganger er den oppe i ca. 20 minutter, før den går offline i mellom 8-10 minutter). Pulsen blinker rødt som er signalet for "Ikke kontakt med tibber servere" . Jeg antok dette kunne være enten update-endepunktet, men det kalles kun ved pairing & boot. Ergo må det enten være mqtt serveren (som jeg vet er oppe, jeg sitter og ser på den i mqtt explorer, samt pulse er den eneste tjenesten som kneler), wifi (ingenting annet dropper ut, jeg har flere esp32 enheter påkoblet som er helt stabile) eller noe gæli med tibber pulse.

Min tinfoil-hat teori er at den forsøker å lese ett eller annet fra en url som er hardkodet i pulse-firmwaren, og at dette gjør at pulse av en eller annen grunn kneler.

iotux commented 1 year ago

@yusijs Versjonen jeg har er rett gammel. Bortsett fra noen sporadiske bortfall, så er den ganske stabil. Den til og med overlevde ved utkobling av hovedsikringen da jeg fikk installert elbillader for noen dager siden. Jeg bør kanskje avstå fra noen som helst oppgradering. Du har hele pakken her.

{
  "status":{
    "rssi":-60, 
    "ssid":"xxxxxxxxx", 
    "usbV":"2.11", 
    "Vin":"26.58", 
    "Vcap":"4.36", 
    "Vbck":"4.53", 
    "Build":"0.11.4-beta", 
    "Hw":"F",  
    "bssid":"7824afxxxxxx",  
    "ID":"7CF057xxxxxx",  
    "Uptime":251041, 
    "mqttcon":0, 
    "pubcnt":60, 
    "rxcnt":60, 
    "wificon":0, 
    "wififail":0, 
    "bits":68, 
    "cSet":88, 
    "Ic":16.81, 
    "crcerr":0, 
    "cAx":1.145295, 
    "cB":16, 
    "heap":176516, 
    "baud":2400, 
    "meter":
    "Kaifa", 
    "ntc":27.76
  }
}

Hva slags endepunkt er det du nevner? Jeg har prøvd å finne URL til oppdatering uten å lykkes, men jeg har funnet et par kommandoer som den reagerer på. "reboot" og "update" om jeg ikke husker feil. Jeg tror det er nevnt i README.md for ElWiz.

yusijs commented 1 year ago

Riktig. Jeg har kjørt min opprinnelige mot tibber sin app tidligere (før jeg sa opp Tibber), og den nye koblet jeg rett mot mqtt, men den var allerede på siste versjon (1.1.5).

jeg vet ikke hva det originale endepunktet er eller hva det returnerer, men etter jeg satte opp en egen /update side til å fylle ut i update url feltet i oppsett-siden, så kalles dette: [13/Oct/2022:20:01:22 +0200] "GET /update?version=1.1.15&context=boot&power=USB&rev=revF&meter=Aidon_V2 HTTP/1.0" 200 0 "-" "ESP32-http-Update"

Jeg venter på svar fra Tibber på om de vet hva som er problemet med pulse for tiden. Det samme skjer når den er koblet til Tibber appen, og det virket fint frem til for ca. en måneds tid siden. Hvis de ikke har noe godt svar til meg, tenker jeg å prøve å sette opp ett MITM AP jeg (forhåpentligvis) kan bruke til å spoofe trafikken og finne ut hva som skjer.

jh1982 commented 1 year ago

@jh1982 Det er en Kaifa 1-fase måler som du har. Pakken som du har dumpet over er en list2-pakke. Jeg har dekodet den slik:

{
  meterVersion: 'KFM_001',
  meterID: '6970631403xxxxxx',
  meterModel: 'MA105H2E',
  power: 1347,
  powerProduction: 0,
  powerReactive: 0,
  powerProductionReactive: 330,
  currentL1: 6005,
  voltagePhase1: 2350
}

Jeg har dessverre ikke tilgang til en slik måler, men det vil være en stor hjelp hvis du vil ta deg bryet med å kjøre "tibdumper.js" for meg og kopiere resultatet hit. Det er først og fremst den største pakken (hver hele time) som jeg er intressert i. Jeg trenger bare en.

Denne versjonen av "tibdumper.js" er det du skal bruke: https://gist.github.com/iotux/70da06a2881830eb6f806075fa42018b

Se også denne for sikkerhets skyld: #9 (comment)

Dette ser ut til å være den lengste pakken jeg mottar: {"dec":[126,160,135,1,2,1,16,158,109,230,231,0,15,64,0,0,0,9,12,7,230,10,14,5,21,0,10,255,128,0,0,2,14,9,7,75,70,77,95,48,48,49,9,16,54,57,55,48,54,51,49,52,48,51,49,53,49,56,55,49,9,8,77,65,49,48,53,72,50,69,6,0,0,7,10,6,0,0,0,0,6,0,0,0,0,6,0,0,1,77,6,0,0,30,251,6,0,0,9,36,9,12,7,230,10,14,5,21,0,10,255,128,0,0,6,5,192,175,164,6,0,0,0,0,6,0,3,123,13,6,0,147,207,2,230,22,126],"hex":"7ea087010201109e6de6e7000f40000000090c07e60a0e0515000aff800000020e09074b464d5f30303109103639373036333134303331353138373109084d41313035483245060000070a06000000000600000000060000014d0600001efb0600000924090c07e60a0e0515000aff8000000605c0afa406000000000600037b0d060093cf02e6167e","length":137}

Den kom 21:00 ,håper det er den rette.

iotux commented 1 year ago

"7ea087010201109e6de6e7000f40000000090c07e60a0e0515000aff800000020e09074b464d5f30303109103639373036333134303331353138373109084d41313035483245060000070a06000000000600000000060000014d0600001efb0600000924090c07e60a0e0515000aff8000000605c0afa406000000000600037b0d060093cf02e6167e"

Det er utmerket. Dette er List3-pakken. Her er resultatet:

{
  meterVersion: 'KFM_001',
  meterID: '6970631403xxxxxx',
  meterModel: 'MA105H2E',
  power: 1802,
  powerProduction: 0,
  powerReactive: 0,
  powerProductionReactive: 333,
  currentL1: 7931,
  voltagePhase1: 2340,
  meterDate: '2022 10 14 5:21:0',
  act_energy_pos: 101040303,
  act_energy_neg: 100663296,
  react_energy_pos: 100664187,
  react_energy_neg: 100701135
}

Jeg jobber med saken!

TurboJens commented 1 year ago

@iotux etter å ha nedgradert til Node16 som anbefalt av @yusijs så køyrer elwiz og fetchprices men tibdumper virkar tilsynelatande til å køyre, men får ikkje noko output verken til fil eller console. Heller ingen feilmelding.

yusijs commented 1 year ago

@TurboJens husk at hvis du kjører tibdumper samtidig med elwiz er det kun en av de som plukker meldingen. Prøv å stanse elwiz og kjør tibdumper, og se om det funker kanskje?

TurboJens commented 1 year ago

@yusijs brukar ikkje elwiz for tida, sidan eg berre får list1, men eg tok berre klipp og lim frå konsollen, reknar med dette er list2 og list3: Kaifa MA304H4 (3-fas TN nett)

@iotux `List2? 22.10.22 ca 2255 Raw data packet exception : {"type":"Buffer","data":[126,160,120,1,2,1,16,196,152,230,231,0,15,64,0,0,0,9,12,7,230,10,22,6,22,55,40,255,128,0,0,2,13,9,7,75,70,77,95,48,48,49,9,16,54,57,55,48,54,51,49,52,48,57,48,51,56,52,56,48,9,7,77,65,51,48,52,72,52,6,0,0,1,114,6,0,0,0,0,6,0,0,0,0,6,0,0,1,145,6,0,0,4,0,6,0,0,2,186,6,0,0,3,136,6,0,0,9,87,6,0,0,9,78,6,0,0,9,81,231,2,126]}

List3? 22.10.22 kl 2300 Raw data packet exception : {"type":"Buffer","data":[126,160,154,1,2,1,16,170,165,230,231,0,15,64,0,0,0,9,12,7,230,10,22,6,23,0,10,255,128,0,0,2,18,9,7,75,70,77,95,48,48,49,9,16,54,57,55,48,54,51,49,52,48,57,48,51,56,52,56,48,9,7,77,65,51,48,52,72,52,6,0,0,1,108,6,0,0,0,0,6,0,0,0,0,6,0,0,1,145,6,0,0,3,244,6,0,0,2,169,6,0,0,3,141,6,0,0,9,86,6,0,0,9,80,6,0,0,9,80,9,12,7,230,10,22,6,23,0,10,255,128,0,0,6,0,32,22,101,6,0,0,0,0,6,0,0,1,36,6,0,20,212,49,104,77,126]}`

yusijs commented 1 year ago

@TurboJens ser dette riktig ut?

  {
    type: 'list2',
    power: 370,
    powerProduction: 0,
    powerReactive: 0,
    powerProductionReactive: 401,
    currentL1: 1024,
    currentL2: 698,
    currentL3: 904,
    voltagePhase1: 2391,
    voltagePhase2: 2382,
    voltagePhase3: 2385,
    lastMeterConsumption: null,
    lastMeterProduction: null,
    lastMeterConsumptionReactive: null,
    lastMeterProductionReactive: null,
    meterVersion: 'KFM_00',
    meterId: '697063140903848',
    meterType: 'MA304H',
  }
{
    type: 'list3',
    power: 364,
    powerProduction: 0,
    powerReactive: 0,
    powerProductionReactive: 401,
    currentL1: 1012,
    currentL2: 681,
    currentL3: 909,
    voltagePhase1: 2390,
    voltagePhase2: 2384,
    voltagePhase3: 2384,
    lastMeterConsumption: 2102885,
    lastMeterProduction: 0,
    lastMeterConsumptionReactive: 292,
    lastMeterProductionReactive: 1365041,
    meterVersion: 'KFM_00',
    meterId: '697063140903848',
    meterType: 'MA304H',
    meterDate: '2022-11-22 23:00:10'
  }
TurboJens commented 1 year ago

@yusijs strøkent :-) Har dog litt lite kjennskap til desse reaktive verdiane. Sikkert riktig.

iotux commented 1 year ago

@TurboJens , @yusijs Sikker på at det ikke mangler et tegn på slutten av meterVersion, meterID og meterModel? Her er mine:

{
  "timestamp": "2022-11-23T13:17:20",
  "meterVersion": "KFM_001",
  "meterID": "6970631403757615",
  "meterModel": "MA304H3E",
  "power": 3.714,
  "minPower": 0.814,
  "maxPower": 5.961,
  "powerProduction": 0,
  "powerReactive": 4.161,
  "powerProductionReactive": 0,
  "currentL1": 14.656,
  "currentL2": 14.329,
  "currentL3": 12.559,
  "voltagePhase1": 234.5,
  "voltagePhase2": 234,
  "voltagePhase3": 234
}

Lengden og mønsteret på "meterID" tyder på det. 6970631403757615 697063140903848

Det er forøvrig en oppdatering på gang

TurboJens commented 1 year ago

@iotux du har nok rett, her er verdi frå MQTT der eg bruka den node-red pluginen:

{ "obis_list_version": "KFM_001", "meter_ID": "6970631409038480", "meter_model": "MA304H4", "act_pow_pos": 374, "act_pow_neg": 0, "react_pow_pos": 0, "react_pow_neg": 408, "curr_L1": 1115, "curr_L2": 705, "curr_L3": 835, "volt_L1": 2372, "volt_L2": 2363, "volt_L3": 2365 }

Legg til list3 når den dukkar opp

yusijs commented 1 year ago

Helt riktig @iotux - jeg hadde bomma litt med offseten min (ikke tatt høyde for forskjell på 1-fase kontra 3-fase måler)

TurboJens commented 1 year ago

@yusijs kan legge til at heilt ut av det blå så begynte min Pulse å tulle og. Den klagar på lav spenning og restartar omtrent like raskt som den er oppe å gå. Litt usikker på kor lenge den evt. har helde på med detta sidan eg ikkje sitte å ser på den heile tida, men veit at den viste uptime 7x xxx i går.

312646123_1077581819608127_8383409171353203439_n

yusijs commented 1 year ago

Oida, den virker jo lei. Jeg har begynt å gi opp å få min helt stabil egentlig. Har ett siste forsøk jeg vil gjøre (teste ssl på mosquitto brokeren), men jeg har egentlig testet alt jeg kan komme på nå (eget wifi punkt, med/uten auth, oppdatert, ekstern strømforsyning, montere utenpå sikringsskap osv). Kjører nå kontrollerte reboots :45 og :55, da krasjer den iallefall bare 1 gang i timen 🙈 og jeg får stort sett med meg list3 som er den viktigste.

TurboJens commented 1 year ago

Min Pulse er no heilt ubrukeleg, den er stort sett oppe ein eller fleire gongar i døgnet slik at døgnstatistikken i HomeAssistant blir sånn nogenlunde men ikkje noko meir enn det.

Litt vanskeleg å klage på den kanskje når eg ikkje er Tibberkunde så håpar nokon her forstår seg på den. Ut i frå feilmeldingane så kan det virke som om det er noko problem med spenningsforsyninga frå AMS målaren, har tenkt på koble til en powerbank for å sjå om den blir meir stabil.

yusijs commented 1 year ago

Forsøkt å kjøre den med en ekstern strømforsyning?

iotux commented 1 year ago

@yusijs @TurboJens Jeg har laget en ny branch. Det er tildels radikale endringer i struktur. Forhåpentligvis virker det for Kaifa også https://github.com/iotux/ElWiz/tree/ElWiz-2022

marcelcastrobr commented 1 year ago

Hi @iotux, I går tested jeg din branch ElWiz-2022 og den virker i min Aidon måler. Jeg for folgende data: data: { power: 3.165, minPower: 0.333, maxPower: 10.306 } Og notice status ser det ut san:

Notice: Pulse status: meter/status  {
  status: {
    rssi: -47,
    ch: 11,
    ssid: 'XXX,
    usbV: '2.05',
    Vin: '23.79',
    Vcap: '4.45',
    Vbck: '4.55',
    Build: '1.1.14',
    Hw: 'F',
    bssid: 'XXX',
    ID: 'XXX',
    Uptime: 37080,
    mqttcon: 0,
    pubcnt: 48,
    rxcnt: 48,
    wificon: 0,
    wififail: 0,
    bits: 70,
    cSet: 93,
    Ic: 0,
    crcerr: 0,
    cAx: 1.167324,
    cB: 13,
    heap: 211320,
    baud: 2400,
    meter: 'Aidon_V2',
    ntc: 21.26,
    's/w': 0,
    ct: 0,
    dtims: 1177
  }
}

Er det andre parameter from måler bortsett fra power, minPower, maxPower som man kan leser?

iotux commented 1 year ago

@marcelcastrobr Her er hva du skal få ut hvert 10. sekund:

List2: plugselector {
  timestamp: '2023-01-16T08:00:00+01:00',
  power: 0.637,
  powerProduction: 0,
  powerReactive: 0,
  powerProductionReactive: 0.182,
  currentL1: 2.298,
  currentL2: 2.106,
  currentL3: 1.383,
  voltagePhase1: 234.3,
  voltagePhase2: 233,
  voltagePhase3: 232.3,
  minPower: 0.59,
  maxPower: 3.716,
  averagePower: 0,
  publisher: 'hassPublish'
}

Her er hva du skal få ut hver time:

List3: plugselector {
  timestamp: '2023-01-16T08:00:10+01:00',
  power: 0.641,
  powerProduction: 0,
  powerReactive: 0,
  powerProductionReactive: 0.182,
  currentL1: 2.317,
  currentL2: 2.13,
  currentL3: 1.384,
  voltagePhase1: 234.3,
  voltagePhase2: 233,
  voltagePhase3: 232.4,
  meterDate: '2023-01-16T08:00:10+01:00',
  lastMeterConsumption: 86617.484,
  lastMeterProduction: 0,
  lastMeterConsumptionReactive: 38284.119,
  lastMeterProductionReactive: 2335.872,
  minPower: 0.59,
  maxPower: 3.716,
  averagePower: 0,
  accumulatedConsumptionLastHour: 1.425,
  accumulatedProductionLastHour: 0,
  accumulatedConsumption: 12.071,
  accumulatedProduction: 0,
  curHour: '08:00',
  spotPrice: 0.9599,
  startTime: '2023-01-16T08:00:00',
  endTime: '2023-01-16T09:00:00',
  minPrice: 0.7299,
  maxPrice: 1.0678,
  avgPrice: 0.884,
  peakPrice: 0.9711,
  offPeakPrice1: 0.7974,
  offPeakPrice2: 0.7961,
  spotPriceDay2: 0.9599,
  startTimeDay2: '2023-01-16T08:00:00',
  endTimeDay2: '2023-01-16T09:00:00',
  minPriceDay2: 0.7299,
  maxPriceDay2: 1.0678,
  avgPriceDay2: 0.884,
  peakPriceDay2: 0.9711,
  offPeakPrice1Day2: 0.7974,
  offPeakPrice2Day2: 0.7961,
  customerPrice: 2.1433,
  costLastHour: 3.0542,
  accumulatedCost: NaN,
  rewardLastHour: 0,
  accumulatedReward: NaN,
  publisher: 'hassPublish'
}

Jeg er i Asia med litt kummerlige arbeidsforhold, men det vil komme en oppdatering om kort tid

marcelcastrobr commented 1 year ago

Hei @iotux, Thanks for the quick answer. Jeg har en Aidon 6525 (Aidon 6483SE RF500). Jeg har subscribed til min mqtt broker med "elwiz/#" men får bara list1. list2 og list3 kommer ikke. Er det noen i config.yaml filen min?

Min config.yaml filer er her: https://github.com/marcelcastrobr/ElWiz/blob/ElWiz-2022/config.yaml .

iotux commented 1 year ago

Jeg har dessverre ikke Aidon måler for å teste. Jeg kan imidlertid teste hvis jeg får rådata fra måleren i HEX-format. Hvis du leser oppover i tråden, så finner du eksempler.Det finnes også en gist du kan laste ned og kjøre. Du finner antakelig en link oppe i tråden. Du kan også sjekke fila "ams/aidon.jsJeg er dessverre bare på mobil akkurat nå, så jeg får ikke gjort noe før senere  -------- Original message --------From: Marcel Castro @.> Date: 1/16/23 15:30 (GMT+07:00) To: iotux/ElWiz @.> Cc: iotux @.>, Mention @.> Subject: Re: [iotux/ElWiz] Formatfeil/rusk frå pulse (Issue #9)

Hei @iotux,

Thanks for the quick answer.

Jeg har en Aidon 6525 (Aidon 6483SE RF500).

Jeg har subscribed til min mqtt broker med "elwiz/#" men får bara list1. list2 og list3 kommer ikke.

Er det noen i config.yaml filen min?

Min config.yaml filer er her: https://github.com/marcelcastrobr/ElWiz/blob/ElWiz-2022/config.yaml .

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

marcelcastrobr commented 1 year ago

Hei, takk for hjelp. Her kommer to eksempler på hex pakke med tibdumper.js . Jeg har kjørte flere minuter men det ser ut at bara list0-xxx.json kommer ut. Jeg ser ikke list2-xxx.json som skulle være etter 10 sekunder.

pi@raspberrypi:~/ElWiz $ more list0-12:13:18.json
{"dec":[126,160,42,65,8,131,19,4,19,230,231,0,15,64,0,0,0,0,1,1,2,3,9,6,1,0,1,7,0,255,6,0,0,7,0,2,2,15,0,22,27,
160,187,126],"hex":"7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000070002020f00161ba0bb7e","
length":44}
pi@raspberrypi:~/ElWiz $ more list0-12:19:33.json
{"dec":[126,160,42,65,8,131,19,4,19,230,231,0,15,64,0,0,0,0,1,1,2,3,9,6,1,0,1,7,0,255,6,0,0,7,20,2,2,15,0,22,27
,31,97,126],"hex":"7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000071402020f00161b1f617e","l
ength":44}

Er dette ok, eller trenger du flere logs?

iotux commented 1 year ago

Du kan laste ned denne og la den kjøre i samme directory som ElWiz. Den lager en ny datert HEX-fil hvert 10. minutt. Du kan la den kjøre så lenge du orker. Etterpå må aidon.js fores med disse filene. Det kan du muligens prøve selv hvis du leser aidon.js.

Du kan prøve å legge en slik HEX-streng som en constant over linje 58 og deretter sette inn navnet på constanten i funksjonen på linje 58 slik:

const hex = "7EA079010201108093E6E7000F40000000090C07E60B0E01091E00FF800--------"; const listDecode = async function (hex) {

Så blir det spennende å se om du får meningsfylt output. Dessverre så er jeg ikke oppsatt med software lab her. Jeg har en skarve laptop og SIM-basert WiFi her jeg bor. Båndbredden er elendig.

Her finner du programmet: https://gist.github.com/iotux/9210e914e838f0188709b2ef07ebb7c7