Author: Security Brother

P1 monitor download 201902

P1 monitor download 201902

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden.  Zie hieronder hoe je dat daarna de rest van de ruimte op de SDHC card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik al gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Installeer het image op een groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend
  3. wis de browser cache als je layout problemen hebt.

Standaard wachtwoord besturingssysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is p1mon met het wachtwoord  verandermij.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.
Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.8 (Maxine)

Bug / feature fixes:
Bug fixes / Nieuwe zaken:

  • Alle pagina’s zijn aangepast met de nieuwe API’s gemiddeld worden ze sneller en de code is beter te onderhouden.
  • P1DbCopy aangepast zodat de logging is verminderd en alleen fouten aangeeft.
  • Layout van e-verbruik, e-levering en g-verbruik aangepast zodat kosten hoger dan 9.99 euro goed worden weergegeven, font kWh iets kleiner gemaakt zodat waarde tot 100.0 kWh verbruik goed worden weergegeven. Bedankt voor het melden Pieter Jan.
  • MAC-adressen van Wifi en Lan toegevoegd op het informatie scherm zodat het eenvoudiger wordt om in de DHCP server het IP adres vast te zetten.
  • Nieuwe REST API, alle data die in de database beschikbaar is kan nu worden gelezen. In het setup menu -> API worden deze weergegeven. Let op de oude API’s worden binnenkort verwijderd.
  • Upgrade assistent toegevoegd, bij een upgrade kan nu op een extra USB stick de configuratie worden bewaard zodat het upgraden eenvoudiger wordt met namen voor gebruikers die alleen WiFi gebruiken.
  • Security patches tot aan 16-02-2019.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

Als je een bijdrage wil leveren om de kosten te dekken van de website e.d. dan kan kun je hier een donatie doen.

P1 monitor roadmap

P1 monitor roadmap

De P1 monitor roadmap geeft aan welke opties of aanpassingen op de planning staan. Het geeft tevens de mogelijkheid ideeën aan te dragen voor de volgende versies. Als je wensen of ideeën hebt dan kun aangeven via een comment op deze pagina.  Alle ideeën zijn welkom. Het kan afhankelijk van de beschikbare tijd even duren voordat geplande opties daadwerkelijk worden gerealiseerd.

Deze pagina is niet bedoeld voor bugs of andere vragen. Plaats die op de download pagina. Als je een hier bug plaatst dan wordt deze genegeerd.

In planning:

API upgrade voor betere onderhoudbaarheid van de code en ontwikkeling van de IOS App.

Te onderzoeken :

De Lijstvolgorde geeft geen prioriteit aan, maar in volgorde van verzoeken.

  • Database export naar CSV/Excel format.
  • App voor de P1 monitor, dit wordt een IOS (Apple) versie.
  • Weer voorspelling toevoegen naast de huidige weer informatie.
  • Omnik, solaredge,  Goodwe 5000-D-NS (2mpp), zonnepanelen data uitlezen.
  • Watermeter uitlezen.
  • Reset / wissen van de database alsof het een nieuwe installatie is.
  • Een grafiek met het momentane vermogen van alle drie de fases in 1 grafiek.
  • Site responsive maken.
  • vergroten van het gekopieerde image naar de grootte van de sdhc card. Wordt een menu optie.
  • Export van gegevens naar Excel.
  • Optie om zelf historische gegevens toe te voegen.
  • Lange termijn overzicht van de meterstanden in plaats van het verbruik per uur, dag, maand, enz.
  • Wekelijks verbruik toe te voegen aan stroom en gas.
  • Alerting: bijvoorbeeld het ontvangen van een email als het verbruik niet 1x per b.v. 12 uur onder een in te stellen aantal Watt komt of als het verbruik per 24 uur boven een in te stellen waarde komt.
  • Gemiddelde temperatuur in kosten overzicht tooltip toevoegen.
  • Ondersteuning voor de multivallen 402 warmtemeter.
  • Serial device kunnen instellen voor het uitlezen van de P1 poort.
  • MQTT machine-to-machine (M2M)/”Internet of Things” connectivity protocol mogelijkheden onderzoeken.
  • “Dagteller” gas. Het zou handig zijn om een los tellertje te kunnen starten en stoppen. Om bijvoorbeeld bij starten van een douche beurt, of kook beurt, of gaskachel beurt, de teller te starten en er na te stoppen. Zo kan je (ongeveer) zien hoeveel 1 zo’n “beurt” aan gas kost (vermist er dan geen andere gebruikers zijn).
  • Weerlive.nl als alternatieve bron voor het weer gebruiken.
  • Docker based versie maken.
  • Mindergas.nl interface maken.
  • pvoutput.org interface maken.
  • Kalender optie om historische meterstanden op te vragen.
  • Een grafiek van jaar, maand of week waarbij de vorige jaren, maanden, of weken over heen worden geprojecteerd. Op die manier heb je een mooi overzicht van eenzelfde vergelijkbare periode.
  • RFC1918 check uit kunnen schakelen voor het setup menu zodat publieke IP adressen ook gebruikt kunnen worden.
  • kwh verbruik van dal en piek verbruik in de grafieken opnemen. Nu wordt daar geen verschil in gemaakt.
  • Graadagen toevoegen (gasverbruik).
  • mogelijk maken om eigen opmerkingen toe te voegen, die een verhoogd of verlaagd energiegebruik verklaren.
  • link / help in programma zelf toevoegen om makkelijk suggesties / problemen te kunnen melden.
  • Password van root en p1mon mee te nemen in de export en import, zodat bij een nieuwe versie de password(en) mee genomen worden.
  • Alarm via email als er geen P1 data binnen komt.
  • Meerdere EPS32DeltaTemp’s ondersteunen.
  • Een kompasroos(je) te laten zien voor de windrichting nu staat er bv. 330 als je met de muis over de gegevens gaat. maar er staat niets op de weer regel.
  • Onderzoek naar Messagebird waarmee een SMS kan worden gestuurd.
  • Extra USB drive voor de opslag van Wifi en andere data zodat migreren naar een andere versie eenvoudiger wordt.
  • Mac adressen te tonen van lan en wifi voor IP4.
  •  2 lijnen toe voegen om percentages van de grens waarden (bv 75% en 125%) weer te geven  in het kostenscherm. Dit omdat in de winter het elektriciteitsgebruik 25% hoger is dan gemiddeld en in de zomer vaak wat minder.
    En 80% van het gasverbruik (cv) gebeurt in de maanden september-april. En in de winter wordt zelfs 400% meer gas verbruikt dan in de zomer. 

Wordt niet verder onderzocht of uitgevoerd.

  • De P1 monitor te installeren op een bestaande Raspberry Pi 3 zoals Domoticz.
  • Engels als tweede taal toevoegen.
  • LCD scherm direct op de Pi maken die geleverd of teruggeleverd vermogen aangeeft.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

P1 monitor download 201901

P1 monitor download 201901

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden.  Zie hieronder hoe je dat daarna de rest van de ruimte op de SDHC card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik al gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Installeer het image op een groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend
  3. wis de browser cache als je layout problemen hebt.

Standaard wachtwoord besturingssysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is p1mon met het wachtwoord  verandermij.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.
Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.7 (Ron)

Bug / feature fixes:
Bug fixes / Nieuwe zaken:

Voorbeeld van voorspelling van gas data.
  • login scherm start nu met focus op het wachtwoord veld, er hoeft dus niet eerste op geklikt te worden.
  • Gasmeting per uur (main-2.php) laat een voorspelde waarde zien als er voor het huidige uur nog geen waarde binnen is gekomen. Tevens verschijnt een melding dat de voorspelling actief is, als de waarde wel berekende kan worden dan verdwijnt de melding. In de grafiek met tijdsverloop wordt de voorspelde waarde niet getoond. Deze optie is aan of uit te zetten via het setup menu in het UI-scherm.
  • Controle of er Internet beschikbaar is en wat het publieke IP-adres is minder frequent gemaakt. Het was elke 5 minuten en is nu eenmaal per uur.
  • Bug bij het inschakelen van een eigen (custom ui) opgelost met dank aan Patrick voor het aanleveren van de oplossing.
  • Webserver cache controle aangepast, waardoor bij een nieuwe P1 software versie van de software de cache van browser niet meer manueel gewist moet worden.
  • Probleem met gaswaarde opgelost voor sommige meters als de gas waarde 00000000 aangaf in plaats van 00000000.00 of 000000000.000.
  • API’s zijn alle op depricated gezet, er komt een volledige nieuwe API die meer REST compatible is. Als je deze wil proberen vraag dan /api/v1/smartmeter/info op.
  • Security patches tot aan 02-01-2019.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

Als je een bijdrage wil leveren om de kosten te dekken van de website e.d. dan kan kun je hier een donatie doen.

P1monitor IOS app

P1monitor IOS app

29-12-2018: versie 1.2 is beschikbaar in de app store.

  • Update van dropbox software API.
  • IP filter vervangen voor P1 systeem filter ID. (deze wordt automatisch gevuld).
  • Sneller data beschikbaar door verbeterde achtergrond updates indien Dropbox wordt gebruikt.

Met deze IOS (Apple) app kun je via je lokale netwerk (wifi) of via Dropbox een beperkte aantal gegevens van je slimme meter weergeven.

Waarom een beperkt aantal gegevens? Het gaat om een versie om de stabiliteit en betrouwbaarheid te testen. Als deze na verloop van tijd goed genoeg is komt er een uitgebreide app.

De app werkt alleen in samenwerking met de P1 monitor softwareversie 0.9.6 of hoger.

De app gebruikt Dropbox als tussenlaag zodat je de P1 monitor niet hoeft te koppelen met het Internet waardoor het gebruik veel veiliger is dan als je het grote boze internet toegang geeft tot je netwerk. Je kunt daarnaast ook alleen lokaal toegang geven door geen gebruikt te maken van Dropbox. Of andersom alleen Dropbox gebruiken. Of met ander woorden beide opties kunnen tegelijk aan staan of een van de twee opties

Activeren van app toegang in de P1 monitor.

Netwerk toegang: setup menu -> systeem -> activeer de optie “UDP broadcast deamon” aan.

UDP deamon aan

Dropbox toegang: setup menu -> bestanden -> DropBox API configuratie && Dropbox gegevens delen

dropbox delen van data

De app update de informatie onder normale omstandigheden met een vertraging tussen de 1 en 10 seconden.

Komt er ook een Android app? Nee de kans is verwaarloosbaar klein. Ons team is te klein om ook een Android app te ondersteunen. Er is genoeg informatie beschikbaar zodat wellicht een derde een Android app kan ontwikkelen.

Download on the app Store

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

P1 monitor software download

P1 monitor software download

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal. Deze software wordt gemaakt door thee om te zetten naar code.

Elke versie heeft een specifiek wachtwoord!

Let op alle wachtwoorden met hoofdletters
P1 monitor download 201812

P1 monitor download 201812

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden.  Zie hieronder hoe je dat daarna de rest van de ruimte op de SDHC card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik al gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Installeer het image op een groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend
  3. wis de browser cache als je layout problemen hebt.

Standaard wachtwoord besturingssysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is p1mon met het wachtwoord  verandermij.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.
Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.6 (Ron)

De CSS is aangepast wis de cache van je browser!

Bug / feature fixes:

Basic.json en udp broadcast nam de gas teller waarde niet mee. Waardoor deze niet in de IOS app werd weergegeven.
Naar Python 3 gemigreerd: P1SerReader.py, P1Backup.py, P1CryptoV2.py, P1FtpCopy.py, P1Weather.py.
Door de migratie van Python 2 naar Python 3 is er minder RAM-geheugen nodig.
Back-up bestanden bevatten de unieke P1 monitor ID zodat meerdere P1 monitors dezelfde FTP of Dropbox folders kunnen gebruiken.
In het tarieven scherm is het nu ook mogelijke een negatieve waarde in te voeren voor de vastrechtkosten.
Wachtwoord voor het setup menu werd niet opgeslagen bij een reboot.
Security setup scherm toegevoegd dat de unieke P1 monitor systeem ID weergeeft.
Icon bibliotheek naar de laatste versie gebracht (wis je browser cache als je iconen mist).
Basic.json (voor Dropbox en de UDP-berichten) bevat nu de nieuwe formaat van de P1 monitor systeem ID.
De UPD lister Daemon niet werd geactiveerd door via de UI.
De homepagina hield zijn voorkeur niet vast tussen browser sessies.
Security patches tot aan 10-12-2018.

Deze versie is noodzakelijk voor de IOS app die we aan het ontwikkelen zijn.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

P1 monitor download 201811

P1 monitor download 201811

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden.  Zie hieronder hoe je dat daarna de rest van de ruimte op de SDHC card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik al gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Installeer het image op een groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend
  3. wis de browser cache als je layout problemen hebt.

Standaard wachtwoord besturingsysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is p1mon met het wachtwoord  verandermij.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Creative Commons-Licentie

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.

Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.5 (Ron)

De CSS is aangepast wis de cache van je browser!

Bug / feature fixes:

De volgende scripts aangepast naar Pyhton3, dit is nodig om te kunnen garanderen dat de P1 monitor in de toekomst aangepast kan worden:
P1Scheduler (pip3 install python-crontab)
P1Watchdog.py (draait niet langer als root).
P1Semaphore.py
P1Db.py
P1SetWifi.py
semaphore.py vervangen voor semaphore3.py
utilnetwork3.py als Pyhton3 versie van de Pyhton2 versie.
Tests uitgevoerd of de ftp backup werkt naar folders onder de start folder dit werkt naar behoren naar /test en /test/twee. Probleem niet kunnen reproduceren.
P1monitor start script aangepast en draait als p1mon user en niet meer als root.
init.d startup vervangen voor SystemD startup. Herstart, start of stop van service kan via: sudo systemctl restart p1mon.service, sudo systemctl start p1mon.service, sudo systemctl stop p1mon.service.
P1SerReader.py, P1Db.Py, P1Watchdog.py, P1Weather.py, P1UdpDaemon.py aangepast zodat deze nu P1DbCopy gebruiken.
UI van actuele verwarming aangepast, zodat deze sneller laad en de time out indicator niet meer nodig is.
HighChart grafische bibliotheek vernieuwd naar de laatste versie 6.2.0
stats.php tooltip schoonheidsfoutje in afronding van de getallen aangepast.
Upgrade van de Nginx webserver naar versie: nginx/1.10.3
stats.php scherm in de navigator handels verwijderd, deze hebben voor dit scherm geen zin.

Nieuw:

basic json data (dropbox en udp) aangepast naar versie 5 en kamer temperatuur toegevoegd. IOS App P1 monitor aangepast naar versie 1.1 geeft nu ook de kamer temperatuur weer indien deze wordt gebruikt.
Nieuwe P1DbCopy script gemaakt. Dit vermindert de kans op data verlies.

Security patches tot aan 10-11-2018.

Deze versie is noodzakelijk voor de IOS app die we aan het ontwikkelen zijn.

Dit is niet de laatst versie deze staat als eerste artikel op de site. Voor historische versies zie hier.

Vul aub de app enquête in (rechts boven in de pagina) over de IOS (Apple) app.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

P1 monitor download 201810

P1 monitor download 201810

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden. De 4GB variant is bedoeld als het 8GB image niet werkt op een andere 8GB SDHC card als je de melding krijgt dat het image niet past!  Zie hieronder hoe je dat daarna de rest van de ruimte op de card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Het 4GB image is bedoeld als het 8GB image niet past op een andere 8GB SDHC card. Installeer het kleinere image op de groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend filesystem.

Standaard wachtwoord besturingsysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is p1mon met het wachtwoord  verandermij.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Creative Commons-Licentie

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.

Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.4 (Ron)

De CSS is aangepast wis de cache van je browser!

Bug / feature fixes:

Parameters van het backup scherm zijn nu te wissen.
P1UdpDeamon.py port naar Pyhton 3.
Tooltip datum/tijdstip gelijke gemaakt in alle schermen.
Tekst van webpagina titels aangepast voor diverse schermen.
Test van JSON dropbox data aangepast met systeem ID en versie nummer van json. Naam van het bestand is aangepast.
Verwijderd lege tabel uit weer historie database die bij een import onterecht werd aangemaakt.
Systeemdump bevat nu ook het path /var/log/ zodat we beter diagnose kunnen stellen.
Upgrade van Python 2 en 3 versies.

Nieuw:

SSH login (putty e.d.) op afstand met root / toor is niet meer mogelijk. Het werkt wel als je direct op de Pi wil inloggen via een aangesloten videoscherm en keyboard. Gebruik hiervoor de user p1mon met het wachtwoord “verandermij”.
CPU-temperatuur weergave toegevoegd aan het informatiescherm.
Op het informatiescherm kan per browser het alarm geluid aan of uit gezet worden met het icoon naast de melding rechtsboven aan de pagina.
Nieuwe optie toegevoegd waarbij met UDP-broadcast berichten de basisinformatie wordt aangeboden. Dit is nog in test maar zal in de toekomst worden gebruikt door een mobile app.
Op het informatiescherm wordt info over UDP-broadcast weergegeven wanneer deze actief is.

Security patches tot aan 10-10-2018.

Deze versie is noodzakelijk voor de IOS app die we aan het ontwikkelen zijn.

Dit is niet de laatst versie deze staat als eerste artikel op de site. Voor historische versies zie hier.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

P1 monitor download 201809

P1 monitor download 201809

P1 monitor is op de Raspberry PI 3 gebaseerde software om je slimme meter uit te lezen. Voor een meer uitgebreide beschrijving zie hier.

Upgrade of eerst installatie.

De software verkrijgen en installatie.

De P1 monitor software wordt geleverd als Raspberry Pi 3 B SDHC image die hieronder te downloaden is. Om de het image naar een SDHC card te kopiëren is een image tool nodig als je deze niet hebt dan kun je USB Image tool downloaden. De 4GB variant is bedoeld als het 8GB image niet werkt op een andere 8GB SDHC card als je de melding krijgt dat het image niet past!  Zie hieronder hoe je dat daarna de rest van de ruimte op de card kunt gebruiken met raspi-config tool.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

  1. download het P1 monitor image file uit de download overzicht hieronder.
  2. pak het zip file uit en lees de bijlagen.
  3. kopieer het p1monYYYYMMDD-NN.NN-X.img file via de USB tool naar de SDHC card van minimaal 8GB  Let op! data op de card wordt overschreven en is niet meer te herstellen. (had ik gehad over de export van data).
  4. Mocht je een groter SDHC card willen gebruiken dan kan je via de raspi-config tool de gehele SDHC card gebruiken. Dit is zeker aan te bevelen om slijtage van de SDHC card te verminderen.
  5. plaats de SDHC card in de Pi.
  6. start de Pi, netwerk en P1 kabel aangesloten.
  7. Importeer de data, als je al eerdere versie hebt gebruikt.

Veel plezier met de P1 monitor en laat weten hoe het bevalt.

Problemen oplossen.

Image past niet op de SDHC card:

  1. Je kunt proberen de donor SDHC card opnieuw te formatteren met een dergelijk tool als de SD formatter.
  2. Het 4GB image is bedoeld als het 8GB image niet past op een andere 8GB SDHC card. Installeer het kleinere image op de groter SDHC card. Het ongebruikte deel van de SDHC card kun je vrijgeven via de raspi-config tool met de optie extend filesystem.

Standaard wachtwoord besturingsysteem:

  1. Het standaard account en wachtwoord om in te kunnen loggen is root met het wachtwoord  toor.
  2. Het advies dit wachtwoord na installatie aan te passen.

Juridisch spul en zo

Creative Commons-Licentie

Dit werk valt onder een Creative Commons Naamsvermelding-NietCommercieel 4.0 Internationaal-licentie.

De rechten van onderliggende softwareproducten zijn qua licentierechten niet gewijzigd Dit geldt voor bijvoorbeeld het besturingssysteem en javascript bibliotheken. De rechten van onderliggende producten gaan voor deze licentie.

DE SOFTWARE IS GELEVERD “ZOALS”, ZONDER GARANTIE VAN ENIGE SOORT, INCLUSIEF MAAR NIET BEPERKT OP DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL. IN GEEN GEVAL ZAL HET AUTEURS OF COPYRIGHT HOLDERS AANSPRAKELIJK ZIJN VOOR ENIGE EISEN, SCHADE OF ANDERE AANSPRAKELIJKHEID IN VERBAND MET DE SOFTWARE OF HET GEBRUIK VAN DE SOFTWARE.

Samengevat: gebruik is voor eigen risico.

Mocht je een eerdere versie van de P1 monitor gebruiken exporteer dan deze data eerst!

DOWNLOAD

SDHC images

P1 monitor wordt alleen ondersteund op de Raspberry Pi 3B of Pi3 B+.

Een Pi 2 kan werken maar geen garanties.  Een Pi Zero is nooit getest. Van de Pi 1 is bekend dat deze fouten geeft en verloop van tijd stopt / crashed.

Wat is er veranderd in versie 0.9.3.1 (Ron)

info icon

Versie 0.9.3 bevat een bug dat bij de import en het gebruik van wifi de import faalt. Dit is opgelost is deze versie. Als er geen problemen optreden bij het importeren dan is deze versie niet nodig.

Wifi-instellingen aangepast waardoor een reboot minder nodig is bij de eerste keer instellen. Mocht er geen IP-adres verschijnen na ongeveer 5 minuten dan is er mogelijk een reboot nodig van de Pi.  Dit is een probleem in het besturingssysteem Raspbian en wordt hopelijk in de toekomst aangepast/opgelost.  

E-levering en E-gebruik gaf in de trend kWh weer wat Watt moest zijn.

Bij een import of na een initiële installatie delen uit ram geheugen niet naar SDHC kaart werden gekopieerd is hersteld.

Crypto aangepast, gevoelige geïmporteerde data wordt NIET geïmporteerd. Dus eerste veilige stellen voor import en met de hand weer invoeren.

Import en exportpagina javascript aangepast naar met asynchrone functies zodat wordt voldaan aan de laatste Javascript standaard.

Diverse API’s aangepast zodat de JSON-output netter is en voldoet aan de standaard:

  • API apiV1usage verwijderd, apiV2usage wordt in volgende versies verwijderd. ApiV3usage is de laatste versie
  • API apiV1weather.php wordt in volgende versies verwijderd. ApiV2weather.php is de laatste versie.
  • API apiV3basic wordt in volgende versies verwijderd. ApiV4basic is de laatste versie zodat de JSON-output netter is en eenvoudiger te gebruiken.
  • API apiV1countervalue wordt in volgende versies verwijderd. ApiV2countervalue is de laatste versie zodat de JSON-output netter is en eenvoudiger te gebruiken.

Bug in E-statistiek schermen dat levering en gebruik gelijk is in tooltip als deze niet geselecteerd is opgelost.

De CSS is aangepast wis de cache van je browser!

Nieuw:

Ondersteuning voor ESP32DeltaTemp toegevoegd zie https://www.ztatz.nl/python/espdeltatemp/

Info scherm aangepast geeft nu ook aan wanneer de UDP en Dropbox deamon gestart zijn.

Importfunctie geeft nu het percentage van verwerkte records weer en datum van de export. Let op dit werkt alleen voor exports vanaf deze versie (0.9.3 en hoger).

Verwarmingsdata wordt geëxporteerd en geïmporteerd (alleen van belang voor ESP32DeltaTemp gebruikers).

Alle gevoelige invoervelden (wachtwoorden e.d.) zijn nu gemaskeerd en kunnen met een oog icoon zichtbaar worden gemaakt.

Voor diegene die eigen aanpassingen maakt aan de software.

  • pip3 geïnstalleerd voor Pyhton 3 ondersteuning (apt-get install python3-pip)
  • Installatie van DropBox Pyhon api. (pip (pip3) install dropbox).
  • Diverse Pyhton scripts geschikt gemaakt voor Pyton versie 3.
  • Python 3 extra biblotheken:
  • pip3 install pytz
  • pip3 install psutil
Dropbox logo

Dropbox ondersteuning voor back-up en voor data. De data optie is een Beta test voor de ontwikkeling van app of andere programma’s die gebruik willen maken van de data.  Beide zijn los aan of uit te zetten, als je geen gebruik maakt van Dropbox laat deze dan uit staan dat verminderd het CPU & data gebruik.

Nieuw P1 versie

Automatische controle op nieuwe versie, in te schakelen via systeem menu. Staat standaard uit.

Waarde van geleverd kWh & Gas en geproduceerde home schermen is nu instelbaar.

Security patches tot aan 09-09-2018.

Dit is niet de laatst versie deze staat als eerste artikel op de site. Voor historische versies zie hier.

Als de P1 monitor software wil ondersteunen dan is een donatie mogelijke via PayPal

ESP32DeltaTemp

ESP32DeltaTemp

EPS32DeltaTemp is en zelfbouwproject gebaseerd op de ESP32 van Espressif Systeem. Dit kleine IoT apparaat is goedkoop en is relatief eenvoudig te programmeren. EP32DeltaTemp is gebouwd om in en uitgaande temperatuur te meten van vloerverwarming maar kan in principe voor elke toepassing worden gebruikt waar je de temperatuur wil meten. De centrale verwarming, de kamertemperatuur, enz.

Eigenschappen

Meet de temperatuur via twee digitale sensoren en geeft deze weer op het display van de ESP32, je kunt ook een ESP32 gebruiken zonder display.  Het display kan via een aanraaktoets  worden gewisseld tussen:

  1. De ingaande en uitgaande temperatuur met een grafiek die een indicatie geeft van het verschil tussen de twee temperaturen of de wifiverbinding actief is en wanneer de temperatuur wordt uitgelezen. De temperatuur wordt met een interval van 1 seconden gemeten.
  2. Het verschilscherm geef het verschil weer tussen de twee temperaturen en wanneer de meting plaats vindt.
  3. Info scherm: geeft de softwareversie weer, de gebruikt Service Set Identifier SSID (de naam van Wifi-netwerk) en het IP-adres dat de Eps32DeltTemp gebruikt.
  4. Tot slot: het scherm kan ook op zwart worden gezet.

De informatie wordt optioneel verzonden via wifi UDP-berichten die door elke ander applicatie/programma gelezen kan worden op het lokale netwerk. Het Wifi IP-adres wordt via DHCP opgehaald iets wat de meeste thuis routers standaard doen.

Benodigde hardware

De lijst die ik hier geef werkt en ik heb geen relatie met de genoemde leveranciers.
• 1 x Heltec EPS32 met oled display (10,55): link
• 2 x DS18B20 digitale temperatuur sensor (~€ 1,00): link
• 1 x Weerstand van 4K7: (€ 1,98) link
• Behuizing (optioneel) (€ 1,86): link
• Een USB – Naar micro usb kabel voor het programmeren en of de 5V voeding.
• Een Micro USB 5V voeding van minimaal 0.7 Ampère, een Raspberry Pi voeding is uitstekend. (Ongeveer € 4)
• Experimenteer print, een paar euro bijvoorbeeld link ( ongeveer € 7).
• Iets wat als tiptoets knop kan werken. Ik gebruik een 4mm schroefje.
Totaal ongeveer: € 30 euro afhankelijk van je voorkeur.
Uiteraard een soldeerbout, soldeertin en e.d. om de boel in elkaar te zetten.

Aansluitschema

ESP32 aansluitschema

Benodigde software.

De ESP32 is eenvoudig te programmeren via de Arduino IDE als je deze nog niet hebt geïnstalleerd volg dan deze handleiding van  randomnerdtutorials.com. Deze handleiding legt tevens uit hoe je de ESP32  uitbreiding moet toevoegen die zijn standaard niet geïnstalleerd.  

De code maakt gebruik van een extra softwarebibliotheken die eenvoudig via de Arduino IDE te installeren zijn.  Deze kun je via de IDE  Sketch -> Include Libary -> Manage Libraries toevoegen.

  • OneWire
  • U8G2
  • DallasTemperature

Laad onderstaande code in de editor en pas eventueel de WIFI instellingen aan als je daar gebruik van wil maken en compileer deze door linksboven op verify te klikken.  Als dat goed gaat kun je de ESP32 aansluiten via de USB-kabel en de code uploaden naar de ESP32.   Om de code te kunnen testen moeten we de temperatuur sensors worden aangesloten zijn.  


#include <U8g2lib.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include <WiFiUdp.h>

/* note, the bat(tery) led rapid blinking is a hardware "feature" of the heltec board and can not be disabled by software */

/* user setting, change these to your needs. */
/*********************************************/
/* leave SSID empty if you don't need the UDP / WIFI messages *ssid = "" */
const char *ssid                = ""; // your SSID. 
const char *pwd                 = ""; // your WPA WIFI password. 
const uint8_t udp_send_interval = 45;      // interval when an udp message will be send in 0.1 secs interval 45 = ~5 secs.
                                           // use a value between 1 and a maximum of 599.                                                       
const float temp_in_adjustmend  =  0.36;  // test en adjust these to values to compensate for differences 
const float temp_out_adjustmend =  1.4;    // in the readout of the temp sensors and general offset error.
/***************** end of user settings ******/

#define TOUCH_PIN T7                      // connected to pin 27
#define ONE_WIRE_BUS 13                   // DS18B20 on GPIO 13.
#define STR_BUF_SIZE 32                   

#define VERSION      "versie 1.0"         // Software version.
#define TEMPERATURE_PRECISION 12          // set temp precision (9-12).
#define DISPLAY_WIDTH 128
#define DISPLAY_HEIGHT 64

OneWire           oneWire(ONE_WIRE_BUS);  // setup OneWire devices.
DallasTemperature tempSensors(&oneWire);  // tempSensor data.
DeviceAddress     tempDeviceAddress;      // temp adress for devices.
WiFiUDP           udp;                    // UDP sender.

int     numberOfDevices = 0;              // number of temperature devices found.
char    strbuf[STR_BUF_SIZE];             // buffer for display and serial print.
float   temp_in;
float   temp_out;
float   temp_in_avg; 
float   temp_out_avg;
uint8_t temp_vdelta_arr_graphic[DISPLAY_WIDTH];
int     touch_value = 300;
boolean WIFIconnected = false;

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ 16, /* clock=*/15, /* data=*/4);   // (rotation, [reset [, clock, data]])

// IP address to send UDP data to.
const char *udpAddress = "255.255.255.255";  // udp broadcast address for the local lan only
const int   udpPort    = 30721;              // udp port number to listen to as a client.

void setup() {
  Serial.begin(115200);

  u8g2.begin();
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB12_tf);
  u8g2.drawStr(20,40,"ZTATZ.NL");
  u8g2.sendBuffer();
  delay(3000);
  
  // load temperature sensors.
  tempSensors.begin();
   
  // check if we can find the two temp sensors.
  u8g2.clearBuffer();
  while ( setTempPrecision() < 2 ) {
    tempSensors.begin();
    u8g2.drawStr(1,12,"wacht op");
    u8g2.drawStr(1,26,"temperatuur");
    u8g2.drawStr(1,40,"sensors.");
    u8g2.sendBuffer();
    delay(500);
  }

  // make sure we have some temperature values.
  readTemperatures();

  if ( String(ssid).length() > 0 ) {

    // try to connect to wifi.
    connectToWiFi(ssid, pwd);

    // Wait for connection
    for (uint8_t i = 0; i < 60; i++) { 
      if (WiFi.status() == WL_CONNECTED ) {
        break; // we have a network connection
      }
      u8g2.clearBuffer();
      u8g2.drawStr(1,12,"wacht op");
      u8g2.drawStr(1,27,"wifi");
      u8g2.drawStr(1,41,"verbinding.");
      String str = "seconden: " + String( i );
      str.toCharArray(strbuf, STR_BUF_SIZE);
      u8g2.drawStr(1,57,strbuf);   
      u8g2.sendBuffer(); 
      delay(1000); // try every 1 secs
    }
  }
}

void loop()
{
  static uint8_t display_select_counter = 0;
  static uint8_t pseudo_secs = 0;
  static uint8_t touch_counter = 0;
  static uint8_t udp_send_counter = 0;
  static bool    wifi_retry_is_on = false;
  
  // pseudo timer.
  pseudo_secs++; 
  if ( pseudo_secs > 599 ) {pseudo_secs = 0; } // reset secs to 0

  // read temperature values from sensors and update data buffers.
  // every second
   if ( (pseudo_secs%10 ) == 0 ) {
    readTemperatures();
    fillGraphicBufferValues();
    calcAvgTemperature( temp_in, temp_out );
    showDisplay(display_select_counter);
  }

  // Send UDP broadcast messages. 
  if (WIFIconnected) {
    udp_send_counter++;
    if ( udp_send_counter > udp_send_interval ) { 
      udpSendMessage( makeJsonMessage() );
      udp_send_counter=0;
    }
  }
  
  // touch selection.
  touch_value = touchRead(TOUCH_PIN);
 
  if (touch_value < 50 ) {
    touch_counter++;
    if ( touch_counter > 4 ) { // must held the touch contact to filter out noise.
      touch_counter = 0;
      display_select_counter++;
      if ( display_select_counter > 3 ) { display_select_counter = 0; }
      showDisplay(display_select_counter); // to get quick feedback on pressing touch "button".
    }   
  } else {
    touch_counter = 0; //reset the touch counter,
  }

  delay(100); // 0.1 sec delay.
}

void connectToWiFi(const char * ssid, const char * pwd){
  Serial.println("Connecting to WiFi network: " + String(ssid));

  // delete old config
  WiFi.disconnect(true);
  //register event handler
  WiFi.onEvent(WiFiEvent);
  
  //Initiate connection
  WiFi.begin(ssid, pwd);

}

//wifi event handler
void WiFiEvent(WiFiEvent_t event){
    Serial.print("WiFiEvent_t: ");
    Serial.println(event);
    switch(event) {
      case SYSTEM_EVENT_STA_GOT_IP:
          //When connected set 
          Serial.print("WiFi verbonden! IP address: ");
          Serial.println(WiFi.localIP());  
          //initializes the UDP state
          //This initializes the transfer buffer
          udp.begin(WiFi.localIP(),udpPort);
          WIFIconnected = true;
          break;
      case SYSTEM_EVENT_STA_DISCONNECTED:
          Serial.println("WiFi verbinding veloren.");
          WIFIconnected = false;
          WiFi.disconnect(true);
          WiFi.begin(ssid, pwd);
          break;
    }
}

// function select display mode
void showDisplay(uint8_t index) {
   switch(index) {
      case 0:
        showTempInfo();
        break; 
      case 1:
        showDeltaTempInfo();
        break; 
      case 2:
        showInitInfo();
        break;
       case 3:
        // blank screen
        u8g2.clearBuffer();
        u8g2.sendBuffer();
        break;
  }
}


// function to show temperature on display.
void showDeltaTempInfo() {
  static bool temp_icon;

  floatTempFormater(temp_in_avg - temp_out_avg).toCharArray(strbuf, STR_BUF_SIZE);
  
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_fub30_tf);
  u8g2.drawStr(   5,  35, strbuf);
  u8g2.drawGlyph( 85, 35, 176 );
  u8g2.drawStr(   95, 35, "C" );

  u8g2.setFont(u8g2_font_ncenB18_tf);
  u8g2.drawStr( 8, 60, "verschil" );

  // activity icon toggle.
  u8g2.setFont(u8g2_font_open_iconic_gui_2x_t);
  if (temp_icon == true ) {
    u8g2.drawGlyph(112,60,66);
    temp_icon = false;
  } else {
    u8g2.drawGlyph(112,60,67);
    temp_icon = true;
  }

  u8g2.sendBuffer();
}

void showInitInfo() {

  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_courB10_tf);
  String str = VERSION;
  str.toCharArray(strbuf, STR_BUF_SIZE);
  u8g2.drawStr(1,15,strbuf);

  str = "SSID:" + String( ssid );
  str.toCharArray(strbuf, STR_BUF_SIZE);
  u8g2.drawStr(1,30,strbuf);

  str = IpAddress2String( WiFi.localIP() );
  str.toCharArray(strbuf, STR_BUF_SIZE);
  u8g2.drawStr(1,45,strbuf);

  u8g2.sendBuffer();
}

// function to show temperature on display.
void showTempInfo() {
  static bool temp_icon;
  
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB18_tf);
  u8g2.drawStr(    0,18,"in"  );
  u8g2.drawStr(    0,40,"uit" );
  
  floatTempFormater(temp_in_avg).toCharArray(strbuf, STR_BUF_SIZE);
  u8g2.drawStr(38,18,strbuf);
  
  floatTempFormater(temp_out_avg).toCharArray(strbuf, STR_BUF_SIZE);
  u8g2.drawStr(38,40,strbuf);

  u8g2.setFont(u8g2_font_ncenB14_tf);
  u8g2.drawStr(   97,16,"C" );
  u8g2.drawStr(   97,38,"C" );
  u8g2.drawGlyph( 90,16,176 );
  u8g2.drawGlyph( 90,38,176 );
  
  for (uint8_t i=0; i <DISPLAY_WIDTH; i++ ) {
      u8g2.drawLine(i,64, i, DISPLAY_HEIGHT - temp_vdelta_arr_graphic[i] );
  }

  // activity icon toggle.
  //u8g2.setFont(u8g2_font_siji_t_6x10);
  u8g2.setFont(u8g2_font_open_iconic_all_2x_t);
  if (temp_icon == true ) {
    u8g2.drawGlyph(112,20,141);
    //u8g2.drawGlyph(111,20,57551);
    temp_icon = false;
  } else {
    //u8g2.drawGlyph(113,20,57373);
    temp_icon = true;
  }

  if (WIFIconnected) {
    u8g2.setFont(u8g2_font_open_iconic_all_2x_t);
    u8g2.drawGlyph( 112,40,247 );
  }
  
  u8g2.sendBuffer();
}


// function IPAdress conversion to string
String IpAddress2String(const IPAddress& ipAddress)
{
  return String(ipAddress[0]) + String(".") +\
  String(ipAddress[1]) + String(".") +\
  String(ipAddress[2]) + String(".") +\
  String(ipAddress[3])  ; 
}


// function to format json string.
String makeJsonMessage() {
  static unsigned int sequenceNumber;
  char  tmpbuf[8];
  
  dtostrf( temp_in, 2, 3, tmpbuf );
  String str_tmp_in = String(tmpbuf);
  dtostrf( temp_out, 2, 3, tmpbuf );
  String str_tmp_out = String(tmpbuf);

  //{ "t_in": 23.1, "t_out":45.6, "seq":65000 }
  String msg = "{\"id\":\"ztatz_dt\",\"version\":1.0,\"t_unit\":\"C\"";
  msg = msg + ",\"t_in_avg\":" +
  floatTempFormater(temp_in_avg) +
  ",\"t_out_avg\":" +
  floatTempFormater(temp_out_avg) +
   ",\"t_in\":" +
  str_tmp_in +
   ",\"t_out\":" +
  str_tmp_out +
  ",\"seq\":" + sequenceNumber +
  "}";
  
  sequenceNumber++;
  if ( sequenceNumber > 32768 ) { sequenceNumber = 0; } //wrap around to zero.
  return msg;
}

void udpSendMessage(String msg) {
   
    //alloc buffer space 
    uint8_t bufsize = msg.length()+1;
    uint8_t buffer[bufsize];
    msg.getBytes(buffer, bufsize);
   
    udp.beginPacket(udpAddress, udpPort);
    udp.write(buffer, bufsize-1); //skip trailing zero.
    udp.endPacket();
}


// function to calculate the average values, based in AVG_TEMP_ARRAY_SIZE value
void calcAvgTemperature(float in, float out) {
  #define AVG_TEMP_ARRAY_SIZE 30
  static uint8_t sample_count=0;
  static float temp_in_array[AVG_TEMP_ARRAY_SIZE];
  static float temp_out_array[AVG_TEMP_ARRAY_SIZE];
  static bool  enough_data = false; // only average value when there is enough data

  // shift array 
  for (uint8_t i = AVG_TEMP_ARRAY_SIZE-1; i > 0; i--) {
       // Serial.print  ("i = ");
       // Serial.println(i , DEC);
       temp_in_array[i]  = temp_in_array[i-1];
       temp_out_array[i] = temp_out_array[i-1];
  }
  temp_in_array[0]  = in;
  temp_out_array[0] = out;
 
  sample_count++;
  if ( sample_count == AVG_TEMP_ARRAY_SIZE ) {
      enough_data = true;
  } else {
    // we don't have enough data so just send current non average value
    temp_in_avg  = in;
    temp_out_avg = out;
  }

  if (enough_data == true ) { // ready to calc avg value
     temp_in_avg = temp_out_avg = 0;
     for (uint8_t i = 0; i < AVG_TEMP_ARRAY_SIZE; i++) {
       temp_in_avg  = temp_in_avg  + temp_in_array[i];
       temp_out_avg = temp_out_avg + temp_out_array[i];
     }
     temp_in_avg  = temp_in_avg  / AVG_TEMP_ARRAY_SIZE;
     temp_out_avg = temp_out_avg / AVG_TEMP_ARRAY_SIZE;
  } 

   /* remove comments to test and adjust offset values */
   /*
   Serial.print(" in =");
   Serial.print(in,DEC); 
   Serial.print(" out =");
   Serial.print(out ,DEC); 
   Serial.print(" delta(raw) =");
   Serial.print( floatTempFormater(out-in));
   Serial.print(" temp_in_avg =");
   Serial.print(temp_in_avg,DEC);
   Serial.print(" temp_out_avg =");
   Serial.print(temp_out_avg,DEC);
   Serial.print(" delta(avg) =");
   Serial.println(floatTempFormater(temp_out_avg - temp_in_avg));
   */
}

// function to format float type.
String floatTempFormater(float in) {
  char  tmpbuf[10];
  dtostrf( in, 2, 1, tmpbuf );
  String str = String(tmpbuf);
  
  if ( str.length() < 4) {
     str = "0"+str;
  }
  return str;
}

// function to fill buffer with offset values to draw a graph.
void fillGraphicBufferValues() {
  
  uint8_t delta_value = abs(temp_in - temp_out)* 2; //two pixels is a degree. 

  temp_vdelta_arr_graphic[0] = delta_value;
  if  ( temp_vdelta_arr_graphic[0] > 22 ) { temp_vdelta_arr_graphic[0]=22; } // cap maximum graph height. 

  for (uint8_t i=DISPLAY_WIDTH-1; i >0; i-- ) {
      temp_vdelta_arr_graphic[i] = temp_vdelta_arr_graphic[i-1];
  }
}

// function to show temperature on display.
void readTemperatures() {
  /* important add or subtract values to make sure both sensors give the right temperature.
   *  this must be done manualy once! See top of code!
   */
  tempSensors.requestTemperatures();
  temp_in  = tempSensors.getTempCByIndex(0)+ (temp_in_adjustmend);  // error offset. 
  temp_out = tempSensors.getTempCByIndex(1)+ (temp_out_adjustmend);  // error offset.
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}

// function to set temp device precision.
int setTempPrecision() {
  numberOfDevices = tempSensors.getDeviceCount();
  if ( numberOfDevices < 1 ) {
     Serial.println("Fout geen devices gevonden!");
     return 0;
  }
  // Loop through each device, print out address
  for(int i=0;i<numberOfDevices; i++)
  {
    // Search the wire for address
    if(tempSensors.getAddress(tempDeviceAddress, i)) {
      Serial.print("device gevonden ");
      Serial.print(i, DEC);
      Serial.print(" met adres: ");
      printAddress(tempDeviceAddress);
      Serial.println();
    
      Serial.print("Resolutie gezet op ");
      Serial.print(TEMPERATURE_PRECISION, DEC);
      Serial.println(" bits.");
    
      // set the resolution to TEMPERATURE_PRECISION bit (Each Dallas/Maxim device is capable of several different resolutions)
      tempSensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
    
      Serial.print("Daadwerkelijke resolutie die gezet is : ");
      Serial.print(tempSensors.getResolution(tempDeviceAddress), DEC);
      Serial.println();
    }else{
      Serial.print("Spook device op adres ");
      Serial.print(i, DEC);
      Serial.print(" adress niet gevonden, controleer voeding en bekabeling.");
    }
  }
  return numberOfDevices;
}

Afstellen van de temperatuur sensors.

De sensors die ik gebruikt heb voor het testen wijken soms wel 1 graad Celsius of iets meer af van de werkelijkheid. Als je het belangrijk vindt dat de juiste temperatuur wordt aangeven dan kun je de sensors ijken. Dit kan via de UTP berichten of via de seriële logging van de Arduino IDE. Als je de seriële logging wil gebruiken dan moet je de commentaar karakters verwijderen.

/* remove comments to test and adjust offset values */
   /*
   Serial.print(" in =");
   Serial.print(in,DEC); 
   Serial.print(" out =");
   Serial.print(out ,DEC); 
   Serial.print(" delta(raw) =");
   Serial.print( floatTempFormater(out-in));
   Serial.print(" temp_in_avg =");
   Serial.print(temp_in_avg,DEC);
   Serial.print(" temp_out_avg =");
   Serial.print(temp_out_avg,DEC);
   Serial.print(" delta(avg) =");
   Serial.println(floatTempFormater(temp_out_avg - temp_in_avg));
   */

Met de twee variabelen temp_in_adjustmend en temp_out_adjustmend kun je de aanpassingen doorvoeren. Het is een kwestie van testen en aanpassen, testen aanpassen, enz. Het werkt het eenvoudigst als je eerst zorgt dat dezelfde waarde aangeven en daarna de waarde voor de werkelijke temperatuur aangeeft door bij beide dezelfde waarde aan te passen. Ik heb beide sensoren met duct tape bij elkaar geplaatst en in een doek gedaan tegen tocht e.d.

const float temp_in_adjustmend  =  0.36;
const float temp_out_adjustmend =  1.4;

UDP berichten

De UDP berichten zijn in JSON formaat.

{
"id":"ztatz_dt",
"version":1.0,
"t_unit":"C",
"t_in_avg":24.1,
"t_out_avg":22.0,
"t_in":24.298,
"t_out":22.150,
"seq":24464
}
  •  id: geeft de unieke naam aan van het type bericht.
  • version: versie van het bericht, in de toekomst kan het bericht uitgebreid worden.
  • t_unit: C is graden Celsius.
  • t_in_avg: de gemiddelde temperatuur in over de afgelopen 30 seconden.
  • t_out_avg: de gemiddelde temperatuur uit over de afgelopen 30 seconden.
  • t_in: de ruwe temperatuur in, wordt elke seconde gemeten.
  • t_uit: de ruwe temperatuur uit, wordt elke seconde gemeten.
  • seq: volgorde nummers van het bericht met een waarde van 1 tot 32768. Als de waarde 32769 wordt bereikt dan is het volgende nummer 1. Bij een reboot wordt altijd gestart met de waarde 1. Het doel is dat ontvangers kunnen vaststellen of ze een waarde al gehad hebben of er een gemist.

Onderstaande code geeft een simpele voorbeeld hoe je met Python de berichten kunt uitlezen.

#!/usr/bin/python

import socket
import time
import datetime

# bind all IP
HOST = '0.0.0.0' 
# Listen on Port 
PORT = 30721 
#Size of receive buffer   
BUFFER_SIZE = 1024    
# Create a TCP/IP socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind the socket to the host and port
s.bind((HOST, PORT))
while True:
    # Receive BUFFER_SIZE bytes data
    # data is a list with 2 elements
    # first is data
    #second is client address
    data = s.recvfrom(BUFFER_SIZE)
    if data:
        #print received data
        print( datetime.datetime.fromtimestamp(time.time()).strftime('%H:%M:%S') +' ' + str(data[0]) )
# Close connection
s.close()

P1 Monitor geschikt

In een van de volgende versies van de P1 monitor wordt de ESP32DeltaTemp ondersteund.