Gå til innhold
  • Bli medlem

GUIDE: Lese Aidon-HAN med Raspberry Pi og visualisere i Grafana


Anbefalte innlegg

På 29.1.2020 den 19.44, Nexst skrev:

kanskje jeg må bytte om på paret? eller skal ikke det ha noe å si?

 

 

Hei, såvidt jeg har skjønt skal det ikke ha noe å si, mener også at jeg har prøvd begge veier med samme resultat..

 

Da kan det hende du får noe ut, kan du dumpe outputen fra test-scriptet? Har du satt opp Influx, og hva sier loggen der? Hos meg logges ihvertfall alt som kommer fra måleren.

Lenke til kommentar
Del på andre sider

  • 3 uker senere...
On 18/01/2020 at 15:46, rhesusminus said:

Beregning av fasestrømmer i IT-nett

 

Målt strøm i1
Målt strøm i2
i_l er målt effekt/målt spenning. Jeg tok effekten og delte på gjennomsnittet av fasespenningene. Forskjellen mellom fasene er ganske liten.

Denne utregnigen tar ikke hensyn til reaktiv effekt. Feilen blir minimal hos meg.


            x = (-pow(i_l,2)*(pow(i1,4) - 2*pow(i1,2)*pow(i2,2) - 2*pow(i1,2)*pow(i_l,2) + pow(i2,4) - 2*pow(i2,2)*pow(i_l,2) + pow(i_l,4)))
            if (x >= 0):            
                fields['ip1'] = (0.166667*(3*pow(i1,2)*i_l - 1.73205*math.sqrt(x) - 3*pow(i2,2)*i_l + 3*pow(i_l,3))/pow(i_l,2))
                fields['ip3'] = (0.166667*(-3*pow(i1,2)*i_l - 1.73205*math.sqrt(x) + 3*pow(i2,2)*i_l + 3*pow(i_l,3)))/pow(i_l,2) 
            x = (-pow(i_l,2)*(pow(i1,4) - 2*pow(i2,2)*pow(i1,2) - 2*pow(i_l,2)*pow(i1,2) + pow(i2,4) + pow(i_l,4) - 2*pow(i2,2)*pow(i_l,2)))
            if (x >= 0): 
                fields['ip2'] = (0.57735*math.sqrt(x))/pow(i_l,2)

 

 

Kan du fortelle hvordan dette regnestykket blir i normal regning utenom grafana?

 

Lenke til kommentar
Del på andre sider

På 18.1.2020 den 15.46, rhesusminus skrev:

Beregning av fasestrømmer i IT-nett

 

Målt strøm i1
Målt strøm i2
i_l er målt effekt/målt spenning. Jeg tok effekten og delte på gjennomsnittet av fasespenningene. Forskjellen mellom fasene er ganske liten.

Denne utregnigen tar ikke hensyn til reaktiv effekt. Feilen blir minimal hos meg.


            x = (-pow(i_l,2)*(pow(i1,4) - 2*pow(i1,2)*pow(i2,2) - 2*pow(i1,2)*pow(i_l,2) + pow(i2,4) - 2*pow(i2,2)*pow(i_l,2) + pow(i_l,4)))
            if (x >= 0):            
                fields['ip1'] = (0.166667*(3*pow(i1,2)*i_l - 1.73205*math.sqrt(x) - 3*pow(i2,2)*i_l + 3*pow(i_l,3))/pow(i_l,2))
                fields['ip3'] = (0.166667*(-3*pow(i1,2)*i_l - 1.73205*math.sqrt(x) + 3*pow(i2,2)*i_l + 3*pow(i_l,3)))/pow(i_l,2) 
            x = (-pow(i_l,2)*(pow(i1,4) - 2*pow(i2,2)*pow(i1,2) - 2*pow(i_l,2)*pow(i1,2) + pow(i2,4) + pow(i_l,4) - 2*pow(i2,2)*pow(i_l,2)))
            if (x >= 0): 
                fields['ip2'] = (0.57735*math.sqrt(x))/pow(i_l,2)

 

Det glitcher litt når det er store endringer i strømmen, det tror jeg er noe med rapporteringen fra Aidon. Ellers funker det greit.

 

grafana.jpg

 

Kan du forklare meg hvordan du legger dette inn i Grafana?

Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Har enda en variant basert på Skagmo sitt Aidon OBIS dekoder tilgjengelig her - med en del eksempler.

 

Denne varianten er testa med Aidon (1-fase) og Kamstrup (3-fase), og om noen kan peke meg på datastrømmer for andre målere kan jeg teste det også ved anledning.

 

Kan kjøres som en systemctl service for å mate Domoticz e.l. , og/eller brukes for seg selv til å se på datastrømmene på forskjellig vis

 

... det var mest for å lære meg litt mere Python . Og AMS da.... 

Lenke til kommentar
Del på andre sider

On 15/06/2019 at 07:44, larsi70 said:

 

Noen som har en oppskrift på en grei innpakning av denne MBUS slaven (som er angitt i linken)? Ser litt uryddigt ut med et åpent kretskort som henger og slenger i sikringsboksen...

Gjerne en 3D-print modell.

Lenke til kommentar
Del på andre sider

  • 4 uker senere...
På 15.3.2020 den 11.43, hansrune skrev:

Har enda en variant basert på Skagmo sitt Aidon OBIS dekoder tilgjengelig her - med en del eksempler.

 

Denne varianten er testa med Aidon (1-fase) og Kamstrup (3-fase), og om noen kan peke meg på datastrømmer for andre målere kan jeg teste det også ved anledning.

 

Kan kjøres som en systemctl service for å mate Domoticz e.l. , og/eller brukes for seg selv til å se på datastrømmene på forskjellig vis

 

... det var mest for å lære meg litt mere Python . Og AMS da.... 

 

Hei,

 

Opplegget ditt virker veldig lovende! Jeg ser output fra systemctl service og har et lite spørsmål i forbindelse med  Domoticz som er nytt for meg. Hvilken hardware device skal man velge i Domoticz for at den skal kunne lese data fra HANdomo service?  

Endret av magfi
Lenke til kommentar
Del på andre sider

 
Hei,
 
Opplegget ditt virker veldig lovende! Jeg ser output fra systemctl service og har et lite spørsmål i forbindelse med  Domoticz som er nytt for meg. Hvilken hardware device skal man velge i Domoticz for at den skal kunne lese data fra HANdomo service?  

Da har du fått til det vanskeligste. Det er HANdomo.py scriptet som oppdaterer lokal Domoticz enheter direkte v.h.a JSON API

Lag et kwMeter og evt kvHMeter device v.h.a Create Virtual Sensor (Dummy hardware device).

Oppdater deretter device idx du får under Devices inn i /etc/default/HANdomo. Du kan la være med kwhMeter og ha bare kwMeter, men ikke omvendt uten å endre koden. Restart HANdomo tjenesten.

Om Domoticz kjører på noe annet enn lokal port 8080, kan du endre det i koden
Lenke til kommentar
Del på andre sider

  • 4 måneder senere...
På 11.4.2020 den 13.23, hansrune skrev:


Da har du fått til det vanskeligste. Det er HANdomo.py scriptet som oppdaterer lokal Domoticz enheter direkte v.h.a JSON API

Lag et kwMeter og evt kvHMeter device v.h.a Create Virtual Sensor (Dummy hardware device).

Oppdater deretter device idx du får under Devices inn i /etc/default/HANdomo. Du kan la være med kwhMeter og ha bare kwMeter, men ikke omvendt uten å endre koden. Restart HANdomo tjenesten.

Om Domoticz kjører på noe annet enn lokal port 8080, kan du endre det i koden

 

Har alt oppe å kjøre, takk for alt arbeidet.

 

Har du kanskje et tips til hvordan jeg kan endre utseendet i domoticz?
Jeg får opp målerstanden i vitenskaplig notasjon (9.9545e+6 Watt), og skulle gjerne hatt det som kWh istedenfor.
Domoticz sin dokumentasjon er litt svak på dette punktet (eller så er jeg ikke flink nok til å google), og jeg regner med at du sikkert har fått en mer lesevennlig visnig.

 

Jeg tenker også å utvide koden litt for å få inn mer data til domoticz (volt etc), da jeg har merket meg at selve tjenesten henter all obis-data.
Jeg hadde satt stor pris på litt mer kommentarer til koden så den blir lettere å jobbe videre med. Programmering er ikke min sterkeste side.

Vil det være nok å sette inn en voltkey = "volt_L1" og kopiere og modifisere if-statementen som brukes til energykey, og legge til environment i service-filen? Eller er det noe jeg overser?

Lenke til kommentar
Del på andre sider

Kort fortalt ja til alt du foreslår. Virker som du har forstått hvordan ting henger sammen, og det var virkelig meninga at du skulle kunne utvide med de OBIS dataene du er interesssert i.
Hint: Jeg bruker ofte ‘journalctl -fu HANdomo’ for å se hva som sendes ut av måleren.

Lenke til kommentar
Del på andre sider

  • 7 måneder senere...

Takk for en fin tråd og god guide for å få dette til.  Har koblet opp og får avlesning i grafana. Jeg har en aidon måler på IT 3 fase. Det jeg lurer på hvorfor jeg av og til får negativ verdi på en av strømfasene. Har sett hva som lagres i influxdb, og der er det noen ganger negativ verdi på en av fasestrømmene. Noen som vet noe om dette?

Lenke til kommentar
Del på andre sider

  • 4 måneder senere...

Jeg hadde et prosjekt for en stund tilbake, hvor planen var å bruke meter_reading-koden og lage et oversikts-panel. Ved en tilfeldighet kom jeg over dette forumet og denne tråden, og valgte å gå for Grafana med InfluxDB istedenfor.

 

Ettersom jeg har en 400v 3-fase-måler (Aidon 6534), måtte jeg gjøre noen endringer i kildekoden for å få alt til å fungere. Mine endringer finnes her, føler det er viktig å dele tilbake.

Jeg gjorde også en del endringer i aidon_test.py, slik at data blir litt mer lettlest under testing, kan nesten brukes for seg selv i bakgrunnen uten noe ekstra om man ønsker det:

pi@volt:~/ams $ python aidon_test.py /dev/ttyUSB0 
P in / out (active)        : 1216 / 0
P in / out (reactive)      : 0 / 835
Voltage / Current (1)      : 241.5 / 0.5
Voltage / Current (2)      : 241.9 / 3.1
Voltage / Current (3)      : 240.8 / 2.7
Meter ID                   : 7359992xxxxxxxxx / Type: 6534 / Version: AIDON_V0001
----------------------------------------
P in (active)              : 1172
----------------------------------------
P in (active)              : 1191
---------------------------------------

 

Sluttresultatet ble jeg uansett ganske fornøyd med!

grafana.thumb.png.37f4a246958f186bbc97fa2b37ec0193.png

 

Til slutt: Det er en del pakker som feiler CRC-sjekk og ikke blir tatt med (jeg la inn en egen feilmelding for dette i min kode), er det andre som opplever det samme/vet hva det kommer av? Det kan hende jeg har en litt dårlig MBUS-slave, det ser ikke ut til å påvirke noe egentlig. Har kjørt oppsettet noen måneder, og det gir en fantastisk god oversikt!

Lenke til kommentar
Del på andre sider

Fantastisk å lese @Alexus! Dette er akkurat grunnen til at jeg tok meg tiden til å skrive "guiden". Noe av det begynner kanskje å bli utdatert nå, mitt oppsett har kjørt feilfritt over lengre tid nå. 

 

Har et par ting på ønskelisten, dog, som jeg kan dele om du føler for å utvikle videre en dag..

 

- Støtte for Influxdb 2.x (usikker på hva som egentlig er forskjellen i praksis, men tror "noe" må endres)

- Tilpasse koden til å kjøre i Python 3.x

- Mulighet for å velge IT/TN som inputargument til scriptet (eks. --meter_type IT)

- Mulighet for å lese argumenter fra configfil istede

 

Lenke til kommentar
Del på andre sider

On 03/08/2021 at 19:42, Alexus said:

 

Til slutt: Det er en del pakker som feiler CRC-sjekk og ikke blir tatt med (jeg la inn en egen feilmelding for dette i min kode), er det andre som opplever det samme/vet hva det kommer av? Det kan hende jeg har en litt dårlig MBUS-slave, det ser ikke ut til å påvirke noe egentlig. Har kjørt oppsettet noen måneder, og det gir en fantastisk god oversikt!


Prøv å ignorere escape håndtering inni datapakkene. Bare les alt byte for byte inntil full pakkelengde.  Se evt her for et eksempel på det.

Lenke til kommentar
Del på andre sider

hansrune skrev (3 timer siden):


Prøv å ignorere escape håndtering inni datapakkene. Bare les alt byte for byte inntil full pakkelengde.  Se evt her for et eksempel på det.

 

Takk for tipset. Denne typen programmering er litt over mitt nivå, så det krever en del for å forstå alt som skjer. For nå funker ting greit nok, men jeg forket koden din for å ha noe å gå etter når jeg finner motivasjon til å jobbe litt videre med dette :)

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.

 Del

×
×
  • Opprett ny...