Inhoudsopgave:

Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak: 5 stappen
Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak: 5 stappen

Video: Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak: 5 stappen

Video: Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak: 5 stappen
Video: Hoe lees je een digitale meter van de elektriciteit af? 2024, Juli-
Anonim
Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak
Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak
Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak
Elektriciteits- en gasmeter lezen (Belgisch/Nederlands) en uploaden naar Thingspeak

Als je je zorgen maakt over je energieverbruik of gewoon een beetje een nerd bent, wil je waarschijnlijk de gegevens van je mooie nieuwe digitale meter op je smartphone zien.

In dit project zullen we de actuele gegevens van een Belgische of Nederlandse digitale elektriciteits- en gasmeter halen en uploaden naar Thingspeak. Deze gegevens omvatten het huidige en dagelijkse stroomverbruik en injectie (indien u zonnepanelen heeft), spanningen en stromen en het gasverbruik (indien een digitale gasmeter is aangesloten op de elektriciteitsmeter). Via een app zijn deze waarden vervolgens realtime af te lezen op uw smartphone.

Het werkt voor een Belgische of Nederlandse digitale meter die het DSMR-protocol (Dutch Smart Meter Requirements) volgt, wat alle recente meters zouden moeten zijn. Als u ergens anders woont, zal uw meter helaas waarschijnlijk een ander protocol gebruiken. Dus ik ben bang dat dit Instructable een beetje regionaal beperkt is.

We zullen de P1-poort van de meter gebruiken, die een RJ11/RJ12-kabel accepteert, in de volksmond ook wel een telefoonkabel genoemd. Zorg ervoor dat de installateur van de meter de P1-poort heeft geactiveerd. Volg bijvoorbeeld voor Fluvius in België deze instructies.

Om de gegevens te verwerken en naar het internet te uploaden, gebruiken we een ESP8266, een goedkope microchip met ingebouwde wifi. Het kost maar iets van 2 dollar. Bovendien kan het worden geprogrammeerd met behulp van de Arduino IDE. De data slaan we op in de cloud op Thingspeak, die voor maximaal vier kanalen gratis is. Voor dit project gebruiken we maar één kanaal. De gegevens kunnen vervolgens worden weergegeven op uw smartphone met behulp van een app zoals IoT ThingSpeak.

Onderdelen:

  • Eén ESP8266, zoals een nodemcu v2. Merk op dat de nodemcu v3 te breed is voor een standaard breadboard, dus ik geef de voorkeur aan de v2.
  • Een micro-USB naar USB-kabel.
  • Een USB-oplader.
  • Eén BC547b NPN-transistor.
  • Twee weerstanden van 10k en één weerstand van 1k.
  • Eén RJ12-schroefaansluiting.
  • Een broodplank.
  • Jumper draden.
  • Optioneel: één 1nF condensator.

In totaal kost dit ongeveer 15 EUR op AliExpress of iets dergelijks. De schatting houdt er rekening mee dat sommige componenten, zoals de weerstanden, transistors en draden, in veel grotere hoeveelheden worden geleverd dan je nodig hebt voor dit project. Dus als je al een componentenkit hebt, is het goedkoper.

Stap 1: Kennismaken met de ESP8266

Ik koos voor de NodeMCU v2, omdat er geen solderen nodig is en hij een micro-USB-aansluiting heeft die eenvoudige programmering mogelijk maakt. Het voordeel van de NodeMCU v2 ten opzichte van de NodeMCU v3 is dat hij klein genoeg is om op een breadboard te passen en aan de zijkant vrije gaten laat om verbindingen te maken. Het is dus beter om de NodeMCU v3. Als je echter de voorkeur geeft aan een ander ESP8266-bord, is dat ook prima.

De ESP8266 kan eenvoudig worden geprogrammeerd met behulp van de Arduino IDE. Er zijn andere Instructables die dit in detail uitleggen, dus ik zal het hier heel kort houden.

  • Download eerst de Arduino IDE.
  • Tweede installeer ondersteuning voor het ESP8266-bord. Voeg in het menu Bestand - Voorkeuren - Instellingen de URL https://arduino.esp8266.com/stable/package_esp8266com_index.json toe aan Extra Board Manager URL's. Vervolgens in het menu Tools - Board - Boards Manager installeer esp8266 door esp8266 community.
  • Selecteer ten derde het bord dat zich het dichtst bij uw ESP8266 bevindt. In mijn geval koos ik voor NodeMCU v1.0 (ESP 12-E-module).
  • Selecteer ten slotte onder Tools - Flash Size, een grootte die SPIFFS bevat, zoals 4M (1M SPIFFS). In dit project gebruiken we de SPIFFS (SPI Flash File System) om dagelijkse energiewaarden op te slaan, zodat ze niet verloren gaan als de ESP8266 stroom verliest en zelfs wanneer deze opnieuw wordt geprogrammeerd.

Nu hebben we alles in huis om de ESP8266 te programmeren! We zullen de daadwerkelijke code in een latere stap bespreken. Eerst maken we een Thingspeak account aan.

Stap 2: Maak een Thingspeak-account en kanaal aan

Ga naar https://thingspeak.com/ en maak een account aan. Nadat u bent ingelogd, klikt u op de knop Nieuw kanaal om een kanaal aan te maken. Vul in de Kanaalinstellingen de naam en beschrijving in zoals je wilt. Vervolgens geven we de kanaalvelden een naam en activeren ze door op de selectievakjes rechts te klikken. Als je mijn code ongewijzigd gebruikt, zijn de velden als volgt:

  • Veld 1: piekverbruik vandaag (kWh)
  • Veld 2: Dalverbruik vandaag (kWh)
  • Veld 3: piekinjectie vandaag (kWh)
  • Veld 4: dalinjectie vandaag (kWh)
  • Veld 5: stroomverbruik (W)
  • Veld 6: stroominjectie (W)
  • Veld 7: gasverbruik vandaag (m3)

Hier verwijzen piek- en daluren naar het elektriciteitstarief. In velden 1 en 2 verwijst verbruik naar netto elektriciteitsverbruik vandaag: verbruik van elektriciteit vandaag in de tariefperiode sinds middernacht minus injectie van elektriciteit (opgewekt door zonnepanelen) vandaag in de tariefperiode sinds middernacht met een minimum van nul. Dat laatste betekent dat als er vandaag meer injectie dan verbruik was, de waarde nul is. Evenzo verwijst injectie in velden 3 en 4 naar netto-injectie van elektriciteit. Veld 5 en 6 geven het netto verbruik en de injectie op het huidige moment aan. Veld 7 tenslotte is het gasverbruik sinds middernacht.

Noteer voor toekomstig gebruik de kanaal-ID, de API-sleutel lezen en de API-sleutel schrijven, die u kunt vinden in het menu API-sleutels.

Stap 3: Het elektronische circuit bouwen

Het elektronische circuit bouwen
Het elektronische circuit bouwen
Het elektronische circuit bouwen
Het elektronische circuit bouwen

We lezen de elektriciteitsmeter af via de P1-poort, waar een RJ11- of RJ12-kabel voor nodig is. Het verschil is dat de RJ12-kabel 6 draden heeft, terwijl de RJ11 er maar 4 heeft. In dit project voeden we de ESP8266 niet via de P1-poort, dus we hebben eigenlijk maar 4 draden nodig, dus een RJ11 zou voldoende zijn.

Ik heb de RJ12-uitbraak gebruikt die op de afbeelding wordt getoond. Het is een beetje breed en er is niet veel ruimte rond de P1-poort in mijn meter. Het past, maar het zit strak. Als alternatief kunt u gewoon een RJ11- of RJ12-kabel gebruiken en de header aan één uiteinde verwijderen.

Als je de break-out vasthoudt zoals op de foto, dan zijn de pinnen van rechts naar links genummerd en hebben de volgende betekenis:

  • Pin 1: 5V voeding
  • Pin 2: Gegevensverzoek
  • Pin 3: Gegevensaarde
  • Pin 4: niet aangesloten
  • Pin 5: Datalijn
  • Pin 6: Voedingsaarde

Pin 1 en Pin 6 kunnen worden gebruikt om de ESP8266 van stroom te voorzien, maar ik heb dit niet getest. Je zou dan Pin 1 moeten verbinden met Vin van de ESP8266, dus de interne spanningsregelaar van het bord wordt gebruikt om de spanning te verlagen van 5V naar de 3,3V die de ESP8266 accepteert. Sluit hem dus niet aan op de 3.3V pin, want dat kan de ESP8266 beschadigen. Ook het voeden vanaf de P1-poort zou na verloop van tijd de batterij van de digitale meter leegmaken.

Als pin 2 hoog wordt gezet, geeft de meter aan om elke seconde datatelegrammen te verzenden. De eigenlijke data wordt via Pin 5 verzonden met een baudrate van 115200 voor een moderne digitale meter (DSMR 4 en 5). Het signaal is omgekeerd (laag is 1 en hoog is 0). Voor een ouder type (DSMR 3 en lager) is de snelheid 9600 baud. Voor zo'n meter moet je de baudrate wijzigen in de firmwarecode van de volgende stap: verander de regel Serial.begin(115200); in setup().

De rol van de NPN-transistor is tweeledig:

  • Om het signaal om te keren zodat de ESP8266 het kan begrijpen.
  • Om het logische niveau te wijzigen van de 5V van de P1-poort naar de 3,3V die wordt verwacht door de RX-poort van de ESP8266.

Maak dus het elektronische circuit op het breadboard zoals in het diagram. De condensator verhoogt de stabiliteit, maar werkt ook zonder.

Wacht met het aansluiten van de RX-pin totdat u de ESP8266 in de volgende stap hebt geprogrammeerd. Inderdaad, de RX-pin is ook nodig om via USB te communiceren tussen de ESP8266 en uw computer.

Stap 4: Upload de code

Ik heb de code beschikbaar gemaakt op GitHub, het is maar één bestand: P1-Meter-Reader.ino. Download het gewoon en open het in de Arduino IDE. Of u kunt Bestand - Nieuw selecteren en de code kopiëren/plakken.

Er is wat informatie die u aan het begin van het bestand moet invullen: de naam en het wachtwoord van het te gebruiken WLAN, en de kanaal-ID en schrijf-API-sleutel van het ThingSpeak-kanaal.

De code doet het volgende:

  • Leest elke UPDATE_INTERVAL (in milliseconden) een datatelegram van de meter. De standaardwaarde is elke 10 seconden. Normaal gesproken komt er elke seconde een datatelegram van de meter, maar als u de frequentie op hoog zet, wordt de ESP8266 overbelast, zodat deze de webserver niet meer kan draaien.
  • Uploadt de elektriciteitsgegevens elke SEND_INTERVAL naar het Thingspeak-kanaal (in milliseconden). De standaardwaarde is elke minuut. Houd er bij het bepalen van deze frequentie rekening mee dat het verzenden van de gegevens enige tijd duurt (meestal een paar seconden) en dat er een limiet is aan de updatefrequentie op Thingspeak voor een gratis account. Het zijn ongeveer 8200 berichten per dag, dus de maximale frequentie zou ongeveer eens per 10 seconden zijn als je Thingspeak nergens anders voor gebruikt.
  • Uploadt de gasgegevens wanneer deze veranderen. Doorgaans actualiseert de meter de gasverbruikgegevens slechts om de 4 minuten of zo.
  • De meter houdt vanaf de start de totale verbruiks- en injectiewaarden bij. Dus om de dagelijkse consumptie en injectie te verkrijgen, slaat de code elke dag om middernacht de totale waarden op. Vervolgens worden deze waarden afgetrokken van de huidige totaalwaarden. De waarden om middernacht worden opgeslagen in de SPIFFS (SPI Flash File System), die blijft bestaan als de ESP8266 stroom verliest of zelfs wanneer deze opnieuw wordt geprogrammeerd.
  • De ESP8266 heeft een mini-webserver. Als je het IP-adres opent in je browser, krijg je een overzicht van alle actuele elektriciteits- en gaswaarden. Deze zijn afkomstig uit het meest recente telegram en bevatten informatie die niet naar Thingspeak wordt geüpload, zoals spanningen en stromen per fase. De standaardinstelling is dat het IP-adres dynamisch wordt bepaald door uw router. Maar het is handiger om een statisch IP-adres te gebruiken, dat altijd hetzelfde is. In dit geval moet u staticIP, gateway, dns en subnet in de code invullen en de regel WiFi.config(staticIP, dns, gateway, subnet) verwijderen; in de functie connectWifi().

Nadat u deze wijzigingen heeft aangebracht, bent u klaar om de firmware naar de ESP8266 te uploaden. Sluit de ESP8266 via de USB-kabel aan op je computer en druk op het icoontje met de pijl in de Arduino IDE. Als het je niet lukt om verbinding te maken met de ESP8266, probeer dan de COM-poort te wijzigen onder het menu Extra - Poort. Als het nog steeds niet werkt, is het mogelijk dat u de driver voor de virtuele USB-COM-poort handmatig moet installeren.

Stap 5: Testen

Na het uploaden van de firmware, koppelt u de USB los en sluit u de RX-draad van de ESP8266 aan. Vergeet niet dat we het RX-kanaal van de ESP8266 nodig hadden voor het uploaden van de firmware, dus we hebben het niet eerder aangesloten. Sluit nu de RJ12-breakout aan op de digitale meter en sluit de ESP8266 opnieuw aan op uw computer.

Open in de Arduino IDE de seriële monitor via het menu Tools en zorg ervoor dat deze is ingesteld op 115200 baud. Als u de baudrate moet wijzigen, moet u misschien de seriële monitor sluiten en opnieuw openen voordat deze werkt.

Nu zou u de uitvoer van de code in de seriële monitor moeten zien. Controleer of er foutmeldingen zijn. Ook zou u de telegrammen moeten kunnen zien. Bij mij zien ze er zo uit:

/FLU5\xxxxxxxxx_x

0-0:96.1.4(50213) 0-0:96.1.1(3153414733313030313434363235) // Serienummer meter hexadecimaal 0-0:1.0.0 (200831181442S) // Tijdstempel S: zomertijd (zomer), W: nee zomertijd (winter) 1-0:1.8.1(000016.308*kWh) // Totaal netto piekverbruik 1-0:1.8.2(000029.666*kWh) // Totaal netto verbruik dal 1-0:2.8.1 (000138.634*kWh) // Totale netto-injectie piek 1-0:2.8.2(000042.415*kWh) // Totale netto-injectie dal 0-0:96.14.0(0001) // Tarief 1: piek, 2: daluren 1-0:1.7.0(00.000*kW) // Stroomverbruik 1-0:2.7.0 (00.553*kW) // Stroominjectie 1-0:32.7.0(235.8*V) // Fase 1 spanning 1-0:52.7.0(237.0*V) // Fase 2 spanning 1-0:72.7.0 (237.8*V) // Fase 3 spanning 1-0:31.7.0(001*A) // Fase 1-stroom 1-0:51.7.0(000*A) // Fase 2-stroom 1-0:71.7.0(004*A) // Fase 3-stroom 0-0:96.3.10(1) 0-0:17.0.0(999,9*kW) // Max vermogen 1-0:31.4.0(999*A) // Max stroom 0-0:96.13.0() // Bericht 0-1:24.1.0(003) // andere apparaten op M-bus 0-1:96.1.1(37464C4F32313230313037393338) // Serienummer gasmeter r hexadecimaal 0-1:24.4.0(1) 0-1:24.2.3(200831181002S)(00005.615*m3) // Gastijdstempel totaal verbruik !E461 // CRC16 checksum

Als er iets mis is, kun je controleren of je dezelfde tags hebt en moet je eventueel de code die de telegrammen ontleden in de functie readTelegram wijzigen.

Als alles werkt, kun je de esp8266 nu van stroom voorzien via de USB-oplader.

Installeer de IoT ThingSpeak Monitor app op je smartphone, vul de Channel ID en Read API Key in en je bent klaar!

Aanbevolen: