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

Lesing av AMS data (AMS/HAN -> IoT)


Anbefalte innlegg

13 hours ago, OlavT said:

Har du noe Java kode å dele til inspirasjon? Jeg  tror jeg har skjønt det meste av meldingene nå, men  sliter litt med gode navn på de forskjellige delene.

Jeg fant løsningen i OpenMUC jDLMS, som nevnt et par poster over her. Åpenbaringen kom da jeg sendte meldingen (som begynner med 0109) inn i org.openmuc.jdlms.internal.asn1.cosem.Data klassen.  Så fikk jeg hele strukturen vist i toString().

Dette er ganske kompleks kode. Den er rekursiv på en finurlig måte. Den inneholder også funksjoner for å generere meldinger, de fjernet jeg for å kunne kompilere uten å dra inn alt for mye.

 

Det siste du spør om er 'scaler' og 'unit'. Hvis du har dokumentene fra tronde, se BS EN 62056-6-2:2013 side 30 : "Table 3 – Enumerated values for physical units"

 

 

Lenke til kommentar
Del på andre sider

5 minutes ago, OlavT said:

I Aidon eksempelet er "0f00" og "161b" gruppert sammen. Det får meg til å tro at de ikke skal tolkes som "0f 00" og "16 1b", men på en annen måte.


alt som er inne i en structure har et sammenheng, hvis det hadde vært en array da hadde det ikke hatt sammenheng...

0f = integer 8 blir da Math.pow(verdi fra dataen, verdi fra 0f)...


vet ikke hvilket språk du skriver i men du skjønner sikkert sammenhenget...

Lenke til kommentar
Del på andre sider

5 hours ago, antonkristensen said:


alt som er inne i en structure har et sammenheng, hvis det hadde vært en array da hadde det ikke hatt sammenheng...

0f = integer 8 blir da Math.pow(verdi fra dataen, verdi fra 0f)...


vet ikke hvilket språk du skriver i men du skjønner sikkert sammenhenget...

 

Ok, da har jeg laget kode for å parse Cosem meldingene slik:

 

04.02.2019 15:00:01.142 - INFO: Reading from HAN port

04.02.2019 15:00:02.386 - INFO: FormatType=10 FrameLength=42
04.02.2019 15:00:02.389 - INFO: DestinationAddressLength=1 SourceAddressLength=2
04.02.2019 15:00:02.391 - INFO: Control=19
04.02.2019 15:00:02.394 - INFO: buffer.Length=29
04.02.2019 15:00:02.401 - INFO: 0f 40 00 00 00 00 01 01 02 03 09 06 01 00 01 07 00 ff 06 00 00 06 f9 02 02 0f 00 16 1b
04.02.2019 15:00:02.403 - INFO: buffer.Length=23
04.02.2019 15:00:02.405 - INFO: 01 01 02 03 09 06 01 00 01 07 00 ff 06 00 00 06 f9 02 02 0f 00 16 1b
04.02.2019 15:00:02.407 - INFO: Creating CosemArray with 1 elements
04.02.2019 15:00:02.409 - INFO: Creating CosemStructure with 3 elements
04.02.2019 15:00:02.411 - INFO: Created CosemOctetString with Value=01 00 01 07 00 ff
04.02.2019 15:00:02.415 - INFO: Created CosemDoubleLongUnsigned with Value=1785
04.02.2019 15:00:02.417 - INFO: Creating CosemStructure with 2 elements
04.02.2019 15:00:02.419 - INFO: Created CosemInteger8 with Value=0
04.02.2019 15:00:02.422 - INFO: Created CosemEnum with Value=Watt
04.02.2019 15:00:02.425 - INFO: Created CosemStructure with 2 elements
04.02.2019 15:00:02.426 - INFO: Created CosemStructure with 3 elements
04.02.2019 15:00:02.429 - INFO: Created CosemArray with 1 elements

Lenke til kommentar
Del på andre sider

Det ser riktig ut.

Her er en alterativ måte å se det på. Kommer fra metoden jeg nevnte før i dag:

choice: {array: SEQUENCE OF{
    choice: {structure: SEQUENCE OF{
        choice: {octetString: 0100010700ff}, 
        choice: {doubleLongUnsigned: 1785}, 
        choice: {structure: SEQUENCE OF{
            choice: {integer: 0}, 
            choice: {enumerate: 27}}}}}}}
 

Lenke til kommentar
Del på andre sider

Takk for all hjelp. Da har jeg kode som leser og tolker alle Aidon HAN meldingene.

 

Det er nyttig å kunne sjekke dataene fra strømmåleren. Synes det er merkelig mye aktivitet på hytta som står med 6 grader innetemperatur. Det er sikkert panelovnene, men de går i såfall av og på hele tiden. Hadde trodd de skulle ha en hysterese som gjorde at de tok seg litt lengre pauser. Jeg får dobbeltsjekke etterhvert. Uansett artig og kunne få data.

Lenke til kommentar
Del på andre sider

Fant forøvrig en litt merkelig kWh måling i meldingen som blir sendt hver time. Den var  identisk to timer på rad enda det var rapportert effekt den timen.

 

Her er tallene:

00: 16787.3
01: 16788.54 (+1.24)
02: 16790.57 (+2.03)
03: 16790.57 (0.00)
04: 16793.37 (+2.80)
05: 16794.9 (+1.53)

 

Noen som har sett lignende?

Lenke til kommentar
Del på andre sider

På 5.2.2019 den 14.52, OlavT skrev:

Takk for all hjelp. Da har jeg kode som leser og tolker alle Aidon HAN meldingene.

 

Det er nyttig å kunne sjekke dataene fra strømmåleren. Synes det er merkelig mye aktivitet på hytta som står med 6 grader innetemperatur. Det er sikkert panelovnene, men de går i såfall av og på hele tiden. Hadde trodd de skulle ha en hysterese som gjorde at de tok seg litt lengre pauser. Jeg får dobbeltsjekke etterhvert. Uansett artig og kunne få data.

Vil du dele koden din, da jeg har koblet opp en ESP mot HAN porten men får dette i Serial Monitor:
HAN data is valid
Meter type Aidon is not yet implemented

 

Lenke til kommentar
Del på andre sider

Hiver meg på denne, har fått åpnet opp HAN port hos Hafslund. Men som andre så får jeg data som starter og slutter med 7e, som jeg forstår skal være korrekt data.

Men er det noen som har en ferdig løsning og kan være så snill å skrive guide for å dekode dataen?

Lenke til kommentar
Del på andre sider

Fikk åpnet porten på min Aidon-måler i dag, så har en fungerende parser i Python nå. HDLC-dekodingen er fullverdig (med sjekksum), men det gjøres mange antakelser/forenklinger rundt OBIS-feltene som antas å være som på en Hafslund-måler. 

 

https://github.com/skagmo/meter_reading

Endret av skagmo
Lenke til kommentar
Del på andre sider

Se der ja! Tusen hjertelig! :)
Har du brukt dataen videre mot node-red og grafana?
Kan lite om dette men skulle likt å fått leselig data inn i HA.


*Kremt* Ser nå at du har lagt med en forwarding mot influx, får prøve det :)

Endret av Singularity
Lenke til kommentar
Del på andre sider

Har laget et dashboard for Grafana ja. Se bilde. Kan legge det på Github f.eks. i morgen kveld hvis du vil ha det som utgangspunkt. Skal også legge til videresending til HA.

 

Gjenstår å lese ut meldinga med akkumulert forbruk (kWh) som kommer en gang i timen, så foreløpig populeres ikke dashbordet fullt ut. Hadde ikke tid til å inkludere den meldinga i går.

 

Må innrømme at jeg faktisk likte det forrige testformatet bedre, hvor man hadde høyere oppløsning på strøm, forbruk/kWh hvert minutt og nettfrekvens også. For meg var 1 minutt oppdateringsrate plenty...

grafana-stroem.png

  • Like 2
  • Thanks 1
Lenke til kommentar
Del på andre sider

On 07/02/2019 at 08:33, Singularity said:

Nydelig!
Det holder lang vei for oss og med oppdatering hvert minutt.

Ser frem til at du legger ut :)

 

Fikk fortsatt litt på det i går. Inkluderer nå videresending til Home Assistant og energi/kWh som kommer en gang i timen.

Lenke til kommentar
Del på andre sider

På 6.2.2019 den 23.07, skagmo skrev:

Fikk åpnet porten på min Aidon-måler i dag, så har en fungerende parser i Python nå. HDLC-dekodingen er fullverdig (med sjekksum), men det gjøres mange antakelser/forenklinger rundt OBIS-feltene som antas å være som på en Hafslund-måler. 

 

https://github.com/skagmo/meter_reading

 

Nydelig, hva skal til for å hente ut strøm på alle 3 fasene (har hafslund & aidon)?

Endret av jerasm
Lenke til kommentar
Del på andre sider

6 minutes ago, jerasm said:

 

Nydelig, hva skal til for å hente ut strøm på alle 3 fasene (har hafslund & aidon)?

Strøm på to av fasene hentes ut per i dag. Den tredje fasen måles ikke, da summen av de tre fasestrømmene vil være null. Du kan eventuelt regne ut den siste fasestrømmen om du er interessert i det.

 

Edit: Vel å merke om du har IT-nett, noe jeg regner med at du har siden denne parseren hadde feilet om måleren spyttet ut tre fasestrømmer.

Endret av skagmo
Lenke til kommentar
Del på andre sider

3 hours ago, skagmo said:

 

Fikk fortsatt litt på det i går. Inkluderer nå videresending til Home Assistant og energi/kWh som kommer en gang i timen.

Flotters, men hadde du et grafana dashboard? Skal prøve meg imorgen på videresending til home assistant. Har du vurdert å lage en komponent for at home assistant selv skal hente data fra influx eller liknende? Takker for den flotte jobben du har gjort :)

 

Endret av Singularity
Lenke til kommentar
Del på andre sider

Forsøkte å bruke influx komponenten til å hente data fra den eksterne ams influx databasen, men irriterende nok så virker det som at HA er satt opp som default at den da skal også logge til samme influx. Noen som har prøvd noe liknende og har noen forslag?

Lenke til kommentar
Del på andre sider

18 minutter siden, Singularity skrev:

Forsøkte å bruke influx komponenten til å hente data fra den eksterne ams influx databasen, men irriterende nok så virker det som at HA er satt opp som default at den da skal også logge til samme influx. Noen som har prøvd noe liknende og har noen forslag?

 

I grafana så kan influx datakilden kobles mot 1 database, men du kan lage flere influx datakilder mot samme influx installasjon med forskjellige databaser

 

Lenke til kommentar
Del på andre sider

Nå så forsøkte jeg å hoppe over grafana da jeg ikke har fått et fungerende dashboard på plass, og heller la HA hente data direkte fra influx instansen.
Men HA sin komponent virker å være skrudd sammen slik at den vil da som standard ha et ønske om å logge til influx, og vil ikke fungere når den ikke får den tilgangen.
 

Endret av Singularity
Lenke til kommentar
Del på andre sider

Har forsøkt på timesvis å få lagt inn self-signed sertifikat i den sentrale sertifikatlageret, men jeg får ikke requests til å akseptere å får denne feilmeldingen tross utallige hacks:
Failed HASS: HTTPSConnectionPool(host='www', port=123): Max retries exceeded with url: /api/states/sensor.aidon_power (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)'),))

Noen som har tips hvordan jeg enten kan bypasse det her, men aller helst få requests til å godta?

Lenke til kommentar
Del på andre sider

Hei.

Jeg øsnker å få "pushet" verdier fra HAN-port til dashboard i Node-Red.

Har kommet dit at jeg får logget de serielle dataene fra han-porten via DENNE som strømmer til en .txt fil slik som disse to linjene:

 

7EA02A410883130413E6E7000F40000000000101020309060100010700FF060000155002020F00161B78997E
7EA02A410883130413E6E7000F40000000000101020309060100010700FF060000155002020F00161B78997E

 

Noen som kan hjelpe meg med en .js som kan decode strengene til fornuftige målerdata?

 

eksempelet over er dataene som kommer hvert 2,5s. fra en Aidon måler. De andre strengene kommer også som de skal.

Lenke til kommentar
Del på andre sider

1 hour ago, Christopher Stenersen said:

Hei.

Jeg øsnker å få "pushet" verdier fra HAN-port til dashboard i Node-Red.

Har kommet dit at jeg får logget de serielle dataene fra han-porten via DENNE som strømmer til en .txt fil slik som disse to linjene:

 

7EA02A410883130413E6E7000F40000000000101020309060100010700FF060000155002020F00161B78997E
7EA02A410883130413E6E7000F40000000000101020309060100010700FF060000155002020F00161B78997E

 

Noen som kan hjelpe meg med en .js som kan decode strengene til fornuftige målerdata?

 

eksempelet over er dataene som kommer hvert 2,5s. fra en Aidon måler. De andre strengene kommer også som de skal.


Jeg har nylig pushet til github oppdatering på mitt program som er skrevet i nodejs(javascript), det har støtte for aidon og kamstrup, ikke helt klart ut av boksen men du kan sikkert stjele litt kode der ifra om du ønsker :)

 

https://github.com/antonedvard/han1

Lenke til kommentar
Del på andre sider

@skagmo Takker for kort og grei kode som var et godt utgangspunkt for å utforske meldingene og lære meg litt om de forskjellige protokollene og formatene.

Ønsket å få litt mer dynamisk tolkning av meldingene som kom, samt parse scaler-strukturene som gjør at en kan automatisk skalere og mappe enhet (V,W..) mot verdiene.

 

Hvis du eller andre skulle ha interesse så pushet jeg nå ut de endringene på et klonet repo som finnes på https://github.com/alekslt/meter_reading/tree/develop

 

Planen var å bruke dette som utgangspunkt for å kode videre på tilsvarende program for esp8266->mqtt så dette er nok ikke noe jeg kommer til å følge opp så veldig aktivt, men tenkte uansett å dele det i tilfelle andre kunne ha interesse.

 

Endret av AleksanderLT
Linkifisere linken.
  • Thanks 1
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.