Innehållsförteckning:

Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak: 5 steg
Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak: 5 steg

Video: Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak: 5 steg

Video: Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak: 5 steg
Video: Homey - Sänk din elräkning med 'Power by the Hour' 2024, Juli
Anonim
Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak
Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak
Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak
Läs el- och gasmätare (belgisk/nederländsk) och ladda upp till Thingspeak

Om du är orolig för din energiförbrukning eller bara en liten nörd, vill du förmodligen se data från din snygga nya digitala mätare på din smartphone.

I detta projekt kommer vi att få aktuell information från en belgisk eller nederländsk digital el- och gasmätare och ladda upp den till Thingspeak. Dessa data inkluderar ström och daglig strömförbrukning och injektion (om du har solpaneler), spänningar och strömmar och gasförbrukning (om en digital gasmätare är ansluten till elmätaren). Genom en app kan dessa värden sedan avläsas i realtid på din smartphone.

Det fungerar för en belgisk eller nederländsk digital mätare som följer DSMR -protokollet (Dutch Smart Meter Requirements), som bör vara alla senaste mätare. Om du bor någon annanstans kommer din mätare tyvärr troligen att använda ett annat protokoll. Så jag är rädd att denna Instructable är lite regionalt begränsad.

Vi kommer att använda P1-porten på mätaren, som accepterar en RJ11/RJ12-kabel, i folkmun kallad telefonkabel. Se till att mätarens installatör aktiverade P1 -porten. Till exempel, för Fluvius i Belgien, följ dessa instruktioner.

För att bearbeta data och ladda upp till internet använder vi en ESP8266, som är ett billigt mikrochip med inbyggt wifi. Det kostar bara 2 dollar. Dessutom kan den programmeras med Arduino IDE. Vi lagrar data i molnet på Thingspeak, som är gratis för högst fyra kanaler. För detta projekt använder vi bara en kanal. Data kan sedan visas på din smartphone med en app som IoT ThingSpeak.

Delar:

  • En ESP8266, som en nodemcu v2. Observera att nodemcu v3 är för bred för en vanlig brödbräda, så jag föredrar v2.
  • En mikro -USB till USB -kabel.
  • En USB -laddare.
  • En BC547b NPN -transistor.
  • Två 10k motstånd och ett 1k motstånd.
  • En RJ12 skruvanslutning.
  • En brödbräda.
  • Bygelkablar.
  • Valfritt: en 1nF kondensator.

Totalt kostar detta ungefär 15 EUR på AliExpress eller liknande. Uppskattningen tar hänsyn till att vissa komponenter som motstånd, transistorer och ledningar finns i mycket större mängder än du behöver för detta projekt. Så om du redan har ett komponentsats blir det billigare.

Steg 1: Lär känna ESP8266

Jag valde NodeMCU v2, eftersom ingen lödning krävs och den har en mikro -USB -anslutning som möjliggör enkel programmering. Fördelen med NodeMCU v2 jämfört med NodeMCU v3 är att den är tillräckligt liten för att passa på en brödbräda och lämna fria hål vid sidan för att göra anslutningar. Så det är bättre att undvika NodeMCU v3. Men om du föredrar ett annat ESP8266 -kort är det också bra.

ESP8266 kan enkelt programmeras med Arduino IDE. Det finns andra instruktioner som förklarar detta i detalj så jag kommer att vara mycket kort här.

  • Ladda ner först Arduino IDE.
  • Andra installationsstödet för ESP8266 -kortet. I menyn Arkiv - Inställningar - Inställningar lägger du till URL: en https://arduino.esp8266.com/stable/package_esp8266com_index.json till Ytterligare Board Manager -webbadresser. Nästa i menyn Tools - Board - Boards Manager installera esp8266 av esp8266 community.
  • Välj den tavla som ligger närmast din ESP8266. I mitt fall valde jag NodeMCU v1.0 (ESP 12-E Module).
  • Välj slutligen under Verktyg - Flashstorlek, en storlek som innehåller SPIFFS, som 4M (1M SPIFFS). I detta projekt använder vi SPIFFS (SPI Flash File System) för att lagra dagliga energivärden, så att de inte går förlorade om ESP8266 tappar ström och även när det omprogrammeras.

Nu har vi allt på plats för att programmera ESP8266! Vi kommer att diskutera den faktiska koden i ett senare steg. Först gör vi ett Thingspeak -konto.

Steg 2: Skapa ett Thingspeak -konto och en kanal

Gå till https://thingspeak.com/ och skapa ett konto. När du är inloggad klickar du på knappen Ny kanal för att skapa en kanal. Fyll i namn och beskrivning som du vill i kanalinställningarna. Därefter namnger vi kanalfälten och aktiverar dem genom att klicka i kryssrutorna till höger. Om du använder min kod oförändrad är fälten följande:

  • Fält 1: toppförbrukning idag (kWh)
  • Fält 2: förbrukning utanför topp idag (kWh)
  • Fält 3: toppinjektion idag (kWh)
  • Fält 4: injektion utanför topp idag (kWh)
  • Fält 5: strömförbrukning (W)
  • Fält 6: ströminjektion (W)
  • Fält 7: gasförbrukning idag (m3)

Här avser topp och lågtopp eltaxan. I fält 1 och 2 avser förbrukning netto elförbrukning idag: förbrukning av el idag i tullperioden sedan midnatt minus injektion av el (producerad av solpaneler) idag i tullperioden sedan midnatt med ett minimum av noll. Det senare innebär att om det fanns mer injektion än förbrukning idag är värdet noll. På samma sätt avser injektion i fält 3 och 4 nettoinsprutning av elektricitet. Fält 5 och 6 anger nettokonsumtion och injektion i det aktuella ögonblicket. Slutligen är fält 7 gasförbrukningen sedan midnatt.

För framtida referens, skriv ner kanal -ID, Read API Key och Write API Key, som finns i menyn API -nycklar.

Steg 3: Bygga den elektroniska kretsen

Bygga den elektroniska kretsen
Bygga den elektroniska kretsen
Bygga den elektroniska kretsen
Bygga den elektroniska kretsen

Vi läser av elmätaren med P1 -porten, som tar en RJ11- eller RJ12 -kabel. Skillnaden är att RJ12 -kabeln har 6 ledningar medan RJ11 bara har 4. I detta projekt driver vi inte ESP8266 från P1 -porten så vi behöver faktiskt bara 4 ledningar, så en RJ11 skulle göra.

Jag använde RJ12 -breakout som visas på bilden. Det är lite brett och det finns inte mycket utrymme runt P1 -porten i min mätare. Det passar, men det är tätt. Alternativt kan du bara använda en RJ11- eller RJ12 -kabel och ta bort rubriken i ena änden.

Om du håller utbrytningen som på bilden numreras stiften från höger till vänster och har följande betydelse:

  • Stift 1: 5V strömförsörjning
  • Pin 2: Data Request
  • Pin 3: Data Ground
  • Stift 4: ej ansluten
  • Pin 5: Datarad
  • Pin 6: Power ground

Pin 1 och Pin 6 kan användas för att driva ESP8266, men jag har inte testat detta. Du måste ansluta stift 1 till Vin på ESP8266, så den interna spänningsregulatorn på kortet används för att minska spänningen från 5V till den 3,3V som ESP8266 accepterar. Så anslut inte den till 3,3V -stiftet, eftersom det kan skada ESP8266. Även strömförsörjning från P1 -porten skulle med tiden tömma batteriet på den digitala mätaren.

Inställning av pin 2 hög signalerar mätaren att skicka datatelegram varje sekund. De faktiska uppgifterna skickas över Pin 5 med en överföringshastighet på 115200 för en modern digital mätare (DSMR 4 och 5). Signalen är omvänd (låg är 1 och hög är 0). För en äldre typ (DSMR 3 och lägre) är hastigheten 9600 baud. För en sådan mätare måste du ändra baudhastigheten i firmware -koden för nästa steg: ändra linjen Serial.begin (115200); i setup ().

NPN-transistorns roll är tvåfaldig:

  • För att vända signalen så att ESP8266 kan förstå den.
  • För att ändra logiknivån från 5V i P1-porten till den 3.3V som förväntas av RX-porten på ESP8266.

Så skapa den elektroniska kretsen på brödbrädan som i diagrammet. Kondensatorn ökar stabiliteten, men den fungerar också utan.

Håll ned anslutningen av RX -stiftet tills du har programmerat ESP8266 i nästa steg. Faktum är att RX -stiftet också behövs för att kommunicera via USB mellan ESP8266 och din dator.

Steg 4: Ladda upp koden

Jag har gjort koden tillgänglig på GitHub, det är bara en fil: P1-Meter-Reader.ino. Ladda bara ner den och öppna den i Arduino IDE. Eller så kan du välja Arkiv - Ny och bara kopiera/klistra in koden.

Det finns lite information du måste fylla i i början av filen: namnet och lösenordet för WLAN som du vill använda, och kanal -ID och skriv -API -nyckeln för ThingSpeak -kanalen.

Koden gör följande:

  • Läser ett datatelegram från mätaren varje UPDATE_INTERVAL (i millisekunder). Standardvärdet är var 10: e sekund. Normalt finns det ett datatelegram från mätaren varje sekund, men om du ställer in frekvensen till hög överbelastas ESP8266 så att den inte kan köra webbservern längre.
  • Överför eldata till Thingspeak -kanalen var SEND_INTERVAL (i millisekunder). Standardvärdet är varje minut. För att bestämma om denna frekvens, ta hänsyn till att det tar lite tid att skicka data (vanligtvis några sekunder) och att det finns en gräns för uppdateringsfrekvensen på Thingspeak för ett gratis konto. Det handlar om 8200 meddelanden per dag så den maximala frekvensen skulle vara ungefär en gång var tionde sekund om du inte använder Thingspeak för något annat.
  • Ladda upp gasdata när den ändras. Normalt uppdaterar mätaren gasförbrukningsdata bara var fjärde minut eller så.
  • Mätaren håller reda på den totala förbrukningen och injektionsvärdena sedan starten. Så för att få den dagliga förbrukningen och injektionen sparar koden de totala värdena vid midnatt varje dag. Därefter subtraheras dessa värden från de nuvarande totala värdena. Värdena vid midnatt lagras i SPIFFS (SPI Flash File System), som kvarstår om ESP8266 tappar ström eller till och med när den omprogrammeras.
  • ESP8266 driver en mini -webbserver. Om du öppnar IP -adressen i din webbläsare får du en översikt över alla aktuella el- och gasvärden. Dessa är från det senaste telegrammet och innehåller information som inte laddas upp till Thingspeak, som spänningar och strömmar per fas. Standardinställningen är att IP -adressen bestäms dynamiskt av din router. Men det är bekvämare att använda en statisk IP -adress, som alltid är densamma. I det här fallet måste du fylla i staticIP, gateway, dns och delnät i koden och avmarkera raden WiFi.config (staticIP, dns, gateway, subnet); i funktionen connectWifi ().

När du har gjort dessa ändringar är du redo att ladda upp firmware till ESP8266. Anslut ESP8266 via USB -kabeln till din dator och tryck på ikonen med pilen i Arduino IDE. Om du inte lyckas ansluta till ESP8266 kan du försöka ändra COM -porten under menyn Verktyg - Port. Om det fortfarande inte fungerar är det möjligt att du måste installera drivrutinen manuellt för USB virtuell COM -port.

Steg 5: Testning

När du har laddat upp firmware, koppla ur USB -enheten och anslut RX -kabeln till ESP8266. Kom ihåg att vi behövde RX -kanalen på ESP8266 för att ladda upp firmware så att vi inte anslöt den tidigare. Anslut nu RJ12 -utbrottet i den digitala mätaren och anslut ESP8266 till din dator igen.

I Arduino IDE, öppna Serial Monitor via Verktyg -menyn och se till att den är inställd på 115200 baud. Om du måste ändra överföringshastigheten kanske du måste stänga och öppna seriemonitorn igen innan den fungerar.

Nu bör du se utmatningen av koden i Serial Monitor. Du bör kontrollera om det finns några felmeddelanden. Du bör också kunna se telegrammen. För mig ser de ut så här:

/FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Serienummermätare hexadecimal 0-0: 1.0.0 (200831181442S) // Tidsstämpel S: sommartid (sommar), W: nej sommartid (vinter) 1-0: 1.8.1 (000016.308*kWh) // Total maximal nettoförbrukning 1-0: 1.8.2 (000029.666*kWh) // Total nettoförbrukning utanför topp 1-0: 2.8.1 (000138.634*kWh) // Total toppnätinjektion 1-0: 2.8.2 (000042.415*kWh) // Total nettoinjektion utanför topp 0-0: 96.14.0 (0001) // Tariff 1: topp, 2: off-peak 1-0: 1.7.0 (00.000*kW) // Strömförbrukning 1-0: 2.7.0 (00.553*kW) // Ströminsprutning 1-0: 32.7.0 (235.8*V) // Fas 1 spänning 1-0: 52.7.0 (237.0*V) // Fas 2 spänning 1-0: 72.7.0 (237.8*V) // Fas 3 spänning 1-0: 31.7.0 (001*A) // Fas 1 ström 1-0: 51.7.0 (000*A) // Fas 2 ström 1-0: 71.7.0 (004*A) // Fas 3 ström 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9*kW) // Max effekt 1-0: 31.4.0 (999*A) // Max ström 0-0: 96.13.0 () // Meddelande 0-1: 24.1.0 (003) // andra enheter på M-buss 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 tidsstämpel total förbrukning! E461 // CRC16 kontrollsumma

Om det är något fel kan du kontrollera om du har samma taggar och du måste eventuellt ändra koden som analyserar telegrammen i funktionen readTelegram.

Om allt fungerar kan du nu driva esp8266 från USB -laddaren.

Installera IoT ThingSpeak Monitor -appen på din smartphone, fyll i kanal -ID och läs API -nyckel och du är klar!

Rekommenderad: