Innholdsfortegnelse:

Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak: 5 trinn
Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak: 5 trinn

Video: Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak: 5 trinn

Video: Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak: 5 trinn
Video: 12 fantastiske hydroelektriske teknologier, der vil ændre vores verden 2024, Juni
Anonim
Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak
Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak
Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak
Les Elektrisitets- og gassmåler (belgisk/nederlandsk) og last opp til Thingspeak

Hvis du er bekymret for energiforbruket ditt eller bare litt av en nerd, vil du sannsynligvis se dataene fra den flotte nye digitale måleren din på smarttelefonen.

I dette prosjektet vil vi innhente gjeldende data fra en belgisk eller nederlandsk digital elektrisitets- og gassmåler og laste dem opp til Thingspeak. Disse dataene inkluderer strøm og daglig strømforbruk og injeksjon (hvis du har solcellepaneler), spenninger og strømmer og gassforbruk (hvis en digital gassmåler er koblet til elektrisitetsmåleren). Gjennom en app kan disse verdiene avleses i sanntid på smarttelefonen.

Det fungerer for en belgisk eller nederlandsk digital måler som følger DSMR -protokollen (Dutch Smart Meter Requirements), som skal være alle de siste målerne. Hvis du bor et annet sted, vil dessverre din måler sannsynligvis bruke en annen protokoll. Så jeg er redd for at Instructable er litt regionalt begrenset.

Vi bruker P1-porten på måleren, som godtar en RJ11/RJ12-kabel, kjent som en telefonkabel. Sørg for at installatøren av måleren aktiverte P1 -porten. For eksempel, for Fluvius i Belgia, følg disse instruksjonene.

For å behandle data og laste opp til internett bruker vi en ESP8266, som er en billig mikrochip med innebygd wifi. Det koster bare 2 dollar. Dessuten kan den programmeres ved hjelp av Arduino IDE. Vi lagrer dataene i skyen på Thingspeak, som er gratis for maksimalt fire kanaler. For dette prosjektet bruker vi bare en kanal. Dataene kan deretter vises på smarttelefonen din ved hjelp av en app som IoT ThingSpeak.

Deler:

  • En ESP8266, som en nodemcu v2. Vær oppmerksom på at nodemcu v3 er for bred for et standard brødbrett, så jeg foretrekker v2.
  • En mikro -USB til USB -kabel.
  • En USB -lader.
  • En BC547b NPN -transistor.
  • To 10k motstander og en 1k motstand.
  • En RJ12 -skrueklemme.
  • Et brødbrett.
  • Jumper ledninger.
  • Valgfritt: en 1nF kondensator.

Totalt koster dette omtrent 15 EUR på AliExpress eller lignende. Anslaget tar hensyn til at noen komponenter som motstander, transistorer og ledninger kommer i mye større mengder enn du trenger for dette prosjektet. Så hvis du allerede har et komponentsett, blir det billigere.

Trinn 1: Bli kjent med ESP8266

Jeg valgte NodeMCU v2, siden det ikke er nødvendig med lodding, og den har en mikro -USB -tilkobling som gjør det enkelt å programmere. Fordelen med NodeMCU v2 fremfor NodeMCU v3 er at den er liten nok til å passe på et brødbrett og la frie hull være på siden for å lage tilkoblinger. Så det er bedre å unngå NodeMCU v3. Men hvis du foretrekker et annet ESP8266 -kort, er det også bra.

ESP8266 kan enkelt programmeres ved hjelp av Arduino IDE. Det er andre instrukser som forklarer dette i detalj, så jeg skal være veldig kort her.

  • Last ned først Arduino IDE.
  • Andre installasjonsstøtte for ESP8266 -kortet. I menyen File - Preferences - Settings legger du til URL -adressen https://arduino.esp8266.com/stable/package_esp8266com_index.json til flere Board Manager -nettadresser. Neste i menyen Tools - Board - Boards Manager installer esp8266 av esp8266 community.
  • Tredje, velg brettet nærmest din ESP8266. I mitt tilfelle valgte jeg NodeMCU v1.0 (ESP 12-E Module).
  • Velg til slutt under Verktøy - Flashstørrelse, en størrelse som inkluderer SPIFFS, som 4M (1M SPIFFS). I dette prosjektet bruker vi SPIFFS (SPI Flash File System) til å lagre daglige energiverdier, slik at de ikke går tapt hvis ESP8266 mister strøm og selv når den omprogrammeres.

Nå har vi alt på plass for å programmere ESP8266! Vi vil diskutere den faktiske koden i et senere trinn. Først lager vi en Thingspeak -konto.

Trinn 2: Opprett en Thingspeak -konto og -kanal

Gå til https://thingspeak.com/ og opprett en konto. Når du er logget inn, klikker du på knappen Ny kanal for å opprette en kanal. I kanalinnstillingene fyller du ut navnet og beskrivelsen som du vil. Deretter navngir vi kanalfeltene og aktiverer dem ved å klikke i avmerkingsboksene til høyre. Hvis du bruker koden min uendret, er feltene som følger:

  • Felt 1: toppforbruk i dag (kWh)
  • Felt 2: forbruk utenfor toppen i dag (kWh)
  • Felt 3: toppinjeksjon i dag (kWh)
  • Felt 4: injeksjon utenom topp i dag (kWh)
  • Felt 5: strømforbruk (W)
  • Felt 6: nåværende injeksjon (W)
  • Felt 7: gassforbruk i dag (m3)

Her refererer peak og off-peak til strømtariffen. I felt 1 og 2 refererer forbruket til netto strømforbruk i dag: forbruk av elektrisitet i dag i tariffperioden siden midnatt minus injeksjon av elektrisitet (produsert av solcellepaneler) i dag i tariffperioden siden midnatt med minimum null. Sistnevnte betyr at hvis det var mer injeksjon enn forbruk i dag, er verdien null. På samme måte refererer injeksjon i felt 3 og 4 til netto injeksjon av elektrisitet. Felt 5 og 6 angir netto forbruk og injeksjon i øyeblikket. Endelig er felt 7 gassforbruket siden midnatt.

For fremtidig referanse, skriv ned kanal -ID, Read API -nøkkelen og Write API -nøkkelen, som du finner i menyen API -nøkler.

Trinn 3: Bygg den elektroniske kretsen

Bygg den elektroniske kretsen
Bygg den elektroniske kretsen
Bygg den elektroniske kretsen
Bygg den elektroniske kretsen

Vi leser av elektrisitetsmåleren ved hjelp av P1 -porten, som tar en RJ11- eller RJ12 -kabel. Forskjellen er at RJ12 -kabelen har 6 ledninger mens RJ11 bare har 4. I dette prosjektet driver vi ikke ESP8266 fra P1 -porten, så vi trenger faktisk bare 4 ledninger, så en RJ11 ville gjøre.

Jeg brukte RJ12 breakout vist på bildet. Det er litt bredt, og det er ikke mye plass rundt P1 -porten i måleren min. Den passer, men den er stram. Alternativt kan du bare bruke en RJ11 eller RJ12 kabel og fjerne hodet i den ene enden.

Hvis du holder utbruddet som på bildet, er pinnene nummerert fra høyre til venstre og har følgende betydning:

  • Pin 1: 5V Strømforsyning
  • Pin 2: Dataforespørsel
  • Pin 3: Data Ground
  • Pin 4: ikke tilkoblet
  • Pin 5: Datalinje
  • Pin 6: Power ground

Pin 1 og Pin 6 kan brukes til å drive ESP8266, men jeg har ikke testet dette. Du må koble pin 1 til Vin på ESP8266, så den interne spenningsregulatoren på kortet brukes til å redusere spenningen fra 5V til 3,3V som ESP8266 godtar. Så ikke koble den til 3.3V -pinnen, for det kan skade ESP8266. Også strøm fra P1 -porten ville over tid tømme batteriet til den digitale måleren.

Innstilling av pin 2 høy signaliserer at måleren sender datatelegrammer hvert sekund. De faktiske dataene sendes over Pin 5 med en baudhastighet på 115200 for en moderne digital måler (DSMR 4 og 5). Signalet er reversert (lav er 1 og høy er 0). For en eldre type (DSMR 3 og lavere) er prisen 9600 baud. For en slik måler må du endre baudhastigheten i fastvarekoden til neste trinn: endre linjen Serial.begin (115200); i oppsett ().

NPN-transistorens rolle er todelt:

  • For å reversere signalet slik at ESP8266 kan forstå det.
  • For å endre logikknivået fra 5V på P1-porten til 3,3V som forventes av RX-porten på ESP8266.

Så lag den elektroniske kretsen på brødbrettet som i diagrammet. Kondensatoren øker stabiliteten, men den fungerer også uten.

Hold på å koble RX -pinnen til du har programmert ESP8266 i neste trinn. RX -pinnen er faktisk også nødvendig for å kommunisere via USB mellom ESP8266 og datamaskinen din.

Trinn 4: Last opp koden

Jeg har gjort koden tilgjengelig på GitHub, det er bare en fil: P1-Meter-Reader.ino. Bare last den ned og åpne den i Arduino IDE. Eller du kan velge Fil - Ny og bare kopiere/lime inn koden.

Det er en del informasjon du må fylle ut i begynnelsen av filen: navnet og passordet til WLAN -et, og kanal -ID og skrive -API -nøkkelen til ThingSpeak -kanalen.

Koden gjør følgende:

  • Leser et datatelegram fra måleren hver UPDATE_INTERVAL (i millisekunder). Standardverdien er hvert 10. sekund. Normalt er det et datatelegram fra måleren hvert sekund, men hvis du setter frekvensen til høy vil overbelaste ESP8266, slik at den ikke kan kjøre webserveren lenger.
  • Laster opp strømdataene til Thingspeak -kanalen hver SEND_INTERVAL (i millisekunder). Standardverdien er hvert minutt. For å bestemme om denne frekvensen må du ta i betraktning at sending av dataene tar litt tid (vanligvis noen sekunder) og at det er en grense for oppdateringsfrekvensen på Thingspeak for en gratis konto. Det er omtrent 8200 meldinger per dag, så maksimal frekvens vil være omtrent en gang hvert tiende sekund hvis du ikke bruker Thingspeak til noe annet.
  • Laster opp gassdataene når de endres. Vanligvis oppdaterer måleren gassforbruksdata bare hvert 4. minutt.
  • Måleren holder oversikt over totalt forbruk og injeksjonsverdier siden starten. Så for å få daglig forbruk og injeksjon, lagrer koden de totale verdiene ved midnatt hver dag. Deretter trekkes disse verdiene fra gjeldende totale verdier. Verdiene ved midnatt lagres i SPIFFS (SPI Flash File System), som vedvarer hvis ESP8266 mister strøm eller til og med når den omprogrammeres.
  • ESP8266 kjører en mini webserver. Hvis du åpner IP -adressen i nettleseren din, får du en oversikt over alle nåværende strøm- og gassverdier. Disse er fra det siste telegrammet og inneholder informasjon som ikke er lastet opp til Thingspeak, som spenninger og strømninger per fase. Standardinnstillingen er at IP -adressen bestemmes dynamisk av ruteren din. Men det er mer praktisk å bruke en statisk IP -adresse, som alltid er den samme. I dette tilfellet må du fylle ut staticIP, gateway, dns og subnet i koden og fjerne kommentaren til linjen WiFi.config (staticIP, dns, gateway, subnet); i funksjonen connectWifi ().

Etter at du har gjort disse endringene, er du klar til å laste opp fastvaren til ESP8266. Koble ESP8266 gjennom USB -kabelen til datamaskinen og trykk på ikonet med pilen i Arduino IDE. Hvis du ikke klarer å koble til ESP8266, kan du prøve å endre COM -porten under menyen Verktøy - Port. Hvis det fortsatt ikke fungerer, er det mulig at du må installere driveren manuelt for den virtuelle USB -porten.

Trinn 5: Testing

Etter å ha lastet opp fastvaren, koble fra USB -en og koble RX -kabelen til ESP8266. Husk at vi trengte RX -kanalen til ESP8266 for å laste opp fastvaren, slik at vi ikke koblet den til før. Koble nå til RJ12 -utbruddet i den digitale måleren og koble ESP8266 til datamaskinen på nytt.

I Arduino IDE åpner du Serial Monitor via Verktøy -menyen og kontrollerer at den er satt til 115200 baud. Hvis du må endre overføringshastigheten, må du kanskje lukke og åpne seriemonitoren igjen før den fungerer.

Nå bør du se utgangen av koden i Serial Monitor. Du bør sjekke om det er noen feilmeldinger. Du bør også kunne se telegrammene. For meg ser de slik ut:

/FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Serienummer meter heksadesimal 0-0: 1.0.0 (200831181442S) // Tidsstempel S: sommertid (sommer), W: nei sommertid (vinter) 1-0: 1.8.1 (000016.308*kWh) // Total topp netto forbruk 1-0: 1.8.2 (000029.666*kWh) // Total nettforbruk utenom topp 1-0: 2.8.1 (000138.634*kWh) // Total topp netto injeksjon 1-0: 2.8.2 (000042.415*kWh) // Total off-peak netto injeksjon 0-0: 96.14.0 (0001) // Tariff 1: topp, 2: off-peak 1-0: 1.7.0 (00.000*kW) // Strømforbruk 1-0: 2.7.0 (00.553*kW) // Strøminnsprøytning 1-0: 32.7.0 (235.8*V) // Fase 1 spenning 1-0: 52.7.0 (237.0*V) // Fase 2 spenning 1-0: 72.7.0 (237.8*V) // Fase 3 spenning 1-0: 31.7.0 (001*A) // Fase 1 nåværende 1-0: 51.7.0 (000*A) // Fase 2 nåværende 1-0: 71.7.0 (004*A) // Fase 3 nåværende 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9*kW) // Maks effekt 1-0: 31.4.0 (999*A) // Maks strøm 0-0: 96.13.0 () // Melding 0-1: 24.1.0 (003) // andre enheter på M-buss 0-1: 96.1.1 (37464C4F32313230313037393338) // Serienummer gassmete r heksadesimal 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615*m3) // Gass tidsstempel totalt forbruk! E461 // CRC16 kontrollsum

Hvis det er noe galt, kan du sjekke om du har de samme taggene, og du må muligens endre koden som analyserer telegrammene i funksjonen readTelegram.

Hvis alt fungerer, kan du nå koble esp8266 fra USB -laderen.

Installer IoT ThingSpeak Monitor -appen på smarttelefonen din, fyll ut kanal -ID og les API -nøkkelen, og du er ferdig!

Anbefalt: