Indholdsfortegnelse:

Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak: 5 trin
Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak: 5 trin

Video: Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak: 5 trin

Video: Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak: 5 trin
Video: Klipning stige kaskade på medium tykt hår! Mesterklasse! Klipning trin for trin fra og til! 2024, Juli
Anonim
Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak
Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak
Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak
Læs elektricitets- og gasmåler (belgisk/hollandsk) og upload til Thingspeak

Hvis du er bekymret over dit energiforbrug eller bare lidt af en nørd, vil du sandsynligvis se dataene fra din smarte nye digitale måler på din smartphone.

I dette projekt vil vi indhente de aktuelle data fra en belgisk eller hollandsk digital el- og gasmåler og uploade dem til Thingspeak. Disse data omfatter det aktuelle og daglige strømforbrug og injektion (hvis du har solpaneler), spændinger og strømme og gasforbruget (hvis der er tilsluttet en digital gasmåler til elmåleren). Gennem en app kan disse værdier derefter aflæses i realtid på din smartphone.

Det fungerer for en belgisk eller hollandsk digital måler, der følger DSMR (Dutch Smart Meter Requirements) -protokollen, som burde være alle nylige målere. Hvis du bor et andet sted, vil din måler desværre sandsynligvis bruge en anden protokol. Så jeg er bange for, at denne instruktive er lidt regionalt begrænset.

Vi vil bruge P1-porten på måleren, der accepterer et RJ11/RJ12-kabel, i daglig tale kendt som et telefonkabel. Sørg for, at installatøren af måleren aktiverede P1 -porten. Følg f.eks. Disse instruktioner for Fluvius i Belgien.

For at behandle data og uploade til internettet bruger vi en ESP8266, som er en billig mikrochip med indbygget wifi. Det koster kun 2 dollar. Desuden kan den programmeres ved hjælp af Arduino IDE. Vi gemmer dataene i skyen på Thingspeak, som er gratis til maksimalt fire kanaler. Til dette projekt bruger vi kun en kanal. Dataene kan derefter vises på din smartphone ved hjælp af en app som IoT ThingSpeak.

Dele:

  • En ESP8266, som en nodemcu v2. Bemærk, at nodemcu v3 er for bred til et standard brødbræt, så jeg foretrækker v2.
  • Et mikro -USB til USB -kabel.
  • En USB oplader.
  • En BC547b NPN -transistor.
  • To 10k modstande og en 1k modstand.
  • Et RJ12 skrueterminalstik.
  • Et brødbræt.
  • Jumper ledninger.
  • Valgfrit: en 1nF kondensator.

I alt koster dette noget som 15 EUR på AliExpress eller lignende. Estimatet tager højde for, at nogle komponenter som modstande, transistorer og ledninger kommer i meget større mængder, end du har brug for til dette projekt. Så hvis du allerede har et komponentsæt, bliver det billigere.

Trin 1: Lær ESP8266 at kende

Jeg valgte NodeMCU v2, da ingen lodning er påkrævet, og den har en mikro -USB -forbindelse, der giver mulighed for let programmering. Fordelen ved NodeMCU v2 i forhold til NodeMCU v3 er, at den er lille nok til at passe på et brødbræt og efterlade frie huller i siden for at oprette forbindelser. Så det er bedre at undgå NodeMCU v3. Men hvis du foretrækker et andet ESP8266 -bord, er det også fint.

ESP8266 kan let programmeres ved hjælp af Arduino IDE. Der er andre instruktioner, der forklarer dette i detaljer, så jeg vil være meget kort her.

  • Download først Arduino IDE.
  • Anden installation af support til ESP8266 -kortet. I menuen Filer - Præferencer - Indstillinger tilføj URL'en https://arduino.esp8266.com/stable/package_esp8266com_index.json til yderligere Board Manager -webadresser. Næste i menuen Værktøjer - Board - Boards Manager installer esp8266 af esp8266 community.
  • For det tredje skal du vælge det tavle, der er tættest på din ESP8266. I mit tilfælde valgte jeg NodeMCU v1.0 (ESP 12-E Module).
  • Endelig vælges under Værktøjer - Flashstørrelse, en størrelse, der indeholder SPIFFS, f.eks. 4M (1M SPIFFS). I dette projekt bruger vi SPIFFS (SPI Flash File System) til at lagre daglige energiværdier, så de ikke går tabt, hvis ESP8266 mister strøm, og selv når det omprogrammeres.

Nu har vi alt på plads til at programmere ESP8266! Vi diskuterer den faktiske kode i et senere trin. Først opretter vi en Thingspeak -konto.

Trin 2: Opret en Thingspeak -konto og -kanal

Gå til https://thingspeak.com/ og opret en konto. Når du er logget ind, skal du klikke på knappen Ny kanal for at oprette en kanal. I kanalindstillingerne skal du udfylde navnet og beskrivelsen, som du vil. Dernæst navngiver vi kanalfelterne og aktiverer dem ved at markere afkrydsningsfelterne til højre. Hvis du bruger min kode uændret, er felterne som følger:

  • Felt 1: Spidsforbrug i dag (kWh)
  • Felt 2: forbrug uden for spidsbelastning i dag (kWh)
  • Felt 3: topindsprøjtning i dag (kWh)
  • Felt 4: Injektion uden for spidsen i dag (kWh)
  • Felt 5: strømforbrug (W)
  • Felt 6: strømindsprøjtning (W)
  • Felt 7: gasforbrug i dag (m3)

Her refererer peak og off-peak til el-taksten. I felterne 1 og 2 refererer forbruget til nettoforbruget i dag: forbrug af elektricitet i dag i toldperioden siden midnat minus indsprøjtning af elektricitet (produceret af solpaneler) i dag i toldperioden siden midnat med et minimum af nul. Sidstnævnte betyder, at hvis der var mere indsprøjtning end forbrug i dag, er værdien nul. På samme måde henviser injektion i felt 3 og 4 til nettoindsprøjtning af elektricitet. Felt 5 og 6 angiver nettoforbrug og injektion i øjeblikket. Endelig er felt 7 gasforbruget siden midnat.

For fremtidig reference nedskrive kanal -id'et, læs API -nøglen og skrive -API -nøglen, som findes i menuens API -nøgler.

Trin 3: Opbygning af det elektroniske kredsløb

Bygger det elektroniske kredsløb
Bygger det elektroniske kredsløb
Bygger det elektroniske kredsløb
Bygger det elektroniske kredsløb

Vi aflæser elmåleren ved hjælp af P1 -porten, som tager et RJ11- eller RJ12 -kabel. Forskellen er, at RJ12 -kablet har 6 ledninger, mens RJ11 kun har 4. I dette projekt driver vi ikke ESP8266 fra P1 -porten, så vi faktisk kun har brug for 4 ledninger, så en RJ11 ville gøre.

Jeg brugte RJ12 breakout vist på billedet. Den er lidt bred, og der er ikke meget plads omkring P1 -porten i min måler. Det passer, men det er stramt. Alternativt kan du bare bruge et RJ11- eller RJ12 -kabel og fjerne headeren i den ene ende.

Hvis du holder udbruddet som på billedet, er stifterne nummereret fra højre til venstre og har følgende betydning:

  • Pin 1: 5V Strømforsyning
  • Pin 2: Dataanmodning
  • Pin 3: Data Ground
  • Pin 4: ikke tilsluttet
  • Pin 5: Datalinje
  • Pin 6: Power jorden

Pin 1 og Pin 6 kunne bruges til at drive ESP8266, men jeg har ikke testet dette. Du bliver nødt til at slutte Pin 1 til Vin på ESP8266, så den interne spændingsregulator på kortet bruges til at reducere spændingen fra 5V til den 3.3V, som ESP8266 accepterer. Så tilslut det ikke til 3,3V -stiften, for det kan beskadige ESP8266. Også strøm fra P1 -porten ville med tiden dræne batteriet på den digitale måler.

Indstilling af pin 2 høj signalerer måleren til at sende datatelegrammer hvert sekund. De faktiske data sendes over Pin 5 med en baudhastighed på 115200 for en moderne digital måler (DSMR 4 og 5). Signalet vendes (lav er 1 og høj er 0). For en ældre type (DSMR 3 og derunder) er satsen 9600 baud. For en sådan måler skal du ændre baudhastigheden i firmwarekoden i det næste trin: ændre linjen Serial.begin (115200); i opsætning ().

NPN-transistorens rolle er todelt:

  • For at vende signalet, så ESP8266 kan forstå det.
  • For at ændre det logiske niveau fra 5V i P1-porten til det 3.3V, der forventes af RX-porten på ESP8266.

Så opret det elektroniske kredsløb på brødbrættet som i diagrammet. Kondensatoren øger stabiliteten, men den fungerer også uden.

Hold forbindelsen til RX -stiften nede, indtil du har programmeret ESP8266 i det næste trin. RX -stiften er faktisk også nødvendig for at kommunikere via USB mellem ESP8266 og din computer.

Trin 4: Upload koden

Jeg har gjort koden tilgængelig på GitHub, det er kun en fil: P1-Meter-Reader.ino. Bare download det og åbn det i Arduino IDE. Eller du kan vælge Fil - Ny og bare kopiere/indsætte koden.

Der er nogle oplysninger, du skal udfylde i begyndelsen af filen: navnet og adgangskoden til WLAN'et, og kanal -id'et og skrive -API -nøglen til ThingSpeak -kanalen.

Koden gør følgende:

  • Læser et datatelegram fra måleren hver UPDATE_INTERVAL (i millisekunder). Standardværdien er hvert 10. sekund. Normalt er der et datatelegram fra måleren hvert sekund, men hvis frekvensen indstilles til høj, overbelastes ESP8266, så den ikke længere kan køre webserveren.
  • Uploader strømdataene til Thingspeak -kanalen hver SEND_INTERVAL (i millisekunder). Standardværdien er hvert minut. For at beslutte om denne frekvens skal du tage højde for, at afsendelse af data tager noget tid (typisk et par sekunder), og at der er en grænse for opdateringsfrekvensen på Thingspeak for en gratis konto. Det er omkring 8200 beskeder om dagen, så den maksimale frekvens vil være cirka en gang hvert 10. sekund, hvis du ikke bruger Thingspeak til noget andet.
  • Uploader gasdataene, når de ændres. Typisk opdaterer måleren kun gasforbrugsdata hvert 4. minut eller deromkring.
  • Måleren holder styr på det samlede forbrug og injektionsværdier siden starten. Så for at opnå det daglige forbrug og injektion gemmer koden de samlede værdier ved midnat hver dag. Derefter trækkes disse værdier fra de nuværende samlede værdier. Værdierne ved midnat lagres i SPIFFS (SPI Flash File System), som fortsætter, hvis ESP8266 mister strøm, eller endda når den omprogrammeres.
  • ESP8266 kører en mini webserver. Hvis du åbner dens IP -adresse i din browser, får du et overblik over alle aktuelle el- og gasværdier. Disse er fra det seneste telegram og indeholder information, der ikke uploades til Thingspeak, f.eks. Spændinger og strømme pr. Fase. Standardindstillingen er, at IP -adressen bestemmes dynamisk af din router. Men det er mere bekvemt at bruge en statisk IP -adresse, som altid er den samme. I dette tilfælde skal du udfylde staticIP, gateway, dns og subnet i koden og fjerne kommentaren fra linjen WiFi.config (staticIP, dns, gateway, subnet); i funktionen connectWifi ().

Når du har foretaget disse ændringer, er du klar til at uploade firmwaren til ESP8266. Tilslut ESP8266 via USB -kablet til din computer, og tryk på ikonet med pilen i Arduino IDE. Hvis du ikke formår at oprette forbindelse til ESP8266, kan du prøve at ændre COM -porten under menuen Værktøjer - Port. Hvis det stadig ikke virker, er det muligt, at du manuelt skal installere driveren til den virtuelle USB -port i USB.

Trin 5: Test

Efter upload af firmwaren skal du tage USB -stikket ud og tilslutte RX -ledningen til ESP8266. Husk, vi havde brug for RX -kanalen i ESP8266 for at uploade firmwaren, så vi ikke forbandt den før. Tilslut nu RJ12 -breakout i den digitale måler, og tilslut ESP8266 igen til din computer.

I Arduino IDE skal du åbne Serial Monitor via menuen Værktøjer og sikre, at den er indstillet til 115200 baud. Hvis du skal ændre baudhastigheden, skal du måske lukke og genåbne Serial Monitor igen, før den virker.

Nu skal du se output fra koden i Serial Monitor. Du bør kontrollere, om der er fejlmeddelelser. Du bør også kunne se telegrammerne. For mig ser de sådan ud:

/FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Serienummer meter hexadecimal 0-0: 1.0.0 (200831181442S) // Tidsstempel S: sommertid (sommer), W: nej sommertid (vinter) 1-0: 1.8.1 (000016.308*kWh) // Total spidsforbrug netto 1-0: 1.8.2 (000029.666*kWh) // Samlet nettoforbrug uden for spidsbelastning 1-0: 2.8.1 (000138.634*kWh) // Total maksimal nettoinjektion 1-0: 2.8.2 (000042.415*kWh) // Total nettoindsprøjtning uden for peak 0-0: 96.14.0 (0001) // Tarif 1: top, 2: off-peak 1-0: 1.7.0 (00.000*kW) // Strømforbrug 1-0: 2.7.0 (00.553*kW) // Strømindsprøjtning 1-0: 32.7.0 (235.8*V) // Fase 1 spænding 1-0: 52.7.0 (237.0*V) // Fase 2 spænding 1-0: 72.7.0 (237.8*V) // Fase 3 spænding 1-0: 31.7.0 (001*A) // Fase 1 strøm 1-0: 51.7.0 (000*A) // Fase 2 strøm 1-0: 71.7.0 (004*A) // Fase 3 strøm 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 () // Besked 0-1: 24.1.0 (003) // andre enheder på M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Serienummer gasmete r hexadecimal 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615*m3) // Gas tidsstempel totalforbrug! E461 // CRC16 checksum

Hvis der er noget galt, kan du kontrollere, om du har de samme tags, og du skal muligvis ændre koden, der analyserer telegrammerne i funktionen readTelegram.

Hvis alt fungerer, kan du nu drive esp8266 fra USB -opladeren.

Installer IoT ThingSpeak Monitor -appen på din smartphone, udfyld kanal -id'et og læs API -nøglen, og du er færdig!

Anbefalede: