
Bij deze versie van de Slimme Meter Simulator kunnen de P1-telegrammen aangepast worden met HTTP-commando’s over WiFi. Zo kan bijvoorbeeld het opgenomen of teruggeleverde elektrisch vermogen ingesteld worden.
Heb je een eigen laadpaal voor je auto en wil je die zelf kunnen aansturen? Dan is deze Slimme Meter Simulator iets voor jou!
Of heb je een thuisaccu en wil je meer invloed op het energiemanagement? Dan kan deze Simulator daarbij helpen!
Dit is vooral handig voor zelfbouwers die hun laadstation voor de elektrische auto of hun thuisaccu willen besturen op een manier die normaal niet kan. Dat vergt enige toelichting.
Dit project is te koop: bestellen kan hier.
Laadpaal met Load Balancing
De meer geavanceerde laadstations zijn voorzien van ‘Dynamic Load Balancing’. Dat houdt in dat het laadpunt van de Slimme Meter doorgeseind krijgt hoeveel energie er in het hele huishouden wordt verbruikt. Het laadpunt weet zo hoeveel stroom er nog beschikbaar is om de auto op te laden. Hiermee wordt voorkomen dat je elektrische installatie overbelast wordt.
Over het algemeen moet je in het laadstation instellen wat de maximale stroom is die je uit het stroomnet kunt halen. Het laadstation berekent dan zelf het verschil tussen die ingestelde waarde en de door de Slimme Meter gemeten waarde en neemt zelf dat verschil op om de autoaccu op te laden.
Extra wensen
Maar soms wil je meer opties hebben. Enkele voorbeelden:
- Je wilt alleen opladen met zelf opgewekte zonnestroom.
- Of alleen ‘s nachts tegen het nacht/weekend tarief.
- En als je een dynamisch energiecontract hebt wil je waarschijnlijk laden wanneer de stroomprijs erg laag is.
Dit krijg je niet voor elkaar wanneer je het laadpunt aan je Slimme Meter koppelt. Maar wél als je hem aan deze Simulator koppelt en er vervolgens voor zorgt dat de Simulator berichten stuurt die ervoor zorgen dat je laadpunt de beslissing neemt die je wilt: laden of niet laden, en met welke stroom. Op die manier kun je de meeste laadpunten toch heel gedetailleerd besturen.
Wat heb je hier voor nodig?
- Een ‘domotica servertje’ (bijv. Raspberry Pi, maar het kan ook al met een ESP-variant)
- Een internet verbinding.
- Deze Slimme Meter Simulator.
- Een laadpaal met een P1-aansluiting.
In onderstaande figuur is aangegeven hoe deze onderdelen samenwerken om te regelen dat je auto-accu wordt geladen wanneer de stroomprijs het laagst is:

De ‘domotica-server’ haalt de dynamische tarieven van internet. Er zijn allerlei sites die de prijzen een dag van tevoren voorspellen. Op basis daarvan bepaalt een script wanneer je het beste kunt laden. Op die momenten stuur je een commando naar de Simulator die aan het laadpunt gekoppeld is. De Simulator stuurt het bijbehorende P1-telegram naar het laadpunt en die zal nu gaan laden (of juist niet) op basis van de inhoud van die berichten.
Wanneer de prijs laag is laat je de Simulator een P1-telegram sturen waarin staat dat er flink stroom teruggeleverd wordt. Het laadpunt weet dan dat hij dat allemaal kan gebruiken om de auto op te laden. Andersom, wanneer de prijs hoog is, moet je de Simulator een P1-telegram laten sturen met de boodschap dat er veel stroom verbruikt wordt. Zodat het laadpunt stopt met laden.
Helemaal ‘Smart’
Je kunt het allemaal nog slimmer maken door dit systeem aan je Slimme Meter te koppelen. Dat vergt nog een paar extra componenten:
- Je Slimme Meter
- Een Slimme Meterlogger
- Een ‘echte’ domotica server (bijv. Raspberry Pi) met domotica-software, bijv. Domoticz, OpenHAB, Home Assistant, etc.
Dat ziet er schematisch gezien zo uit:

De data van de Slimme Meter wordt door de Logger ingelezen en doorgestuurd naar de domotica-server. De domotica-software wordt geconfigureerd met de benodigde regels die bepalen onder welke condities de autoaccu opgeladen mag worden. Zo kun je bijvoorbeeld regelen dat je bij voorkeur de auto-accu oplaadt met zelf opgewekte zonnestroom. Of het liefst bij nacht/weekend-tarief. Of je kunt meerdere laadpunten aansturen en de beschikbare stroom optimaal verdelen. Op basis van deze regels stuurt de domotica-server commando’s naar de Simulator[s].
Omdat dit snel complex wordt, is het slim om hiervoor bestaande domotica-software te gebruiken. De meeste pakketten zijn flexibel te configureren en hebben ook de mogelijkheid om externe modules aan te sturen, zoals hier de Slimme Meter Simulator.
Webinterface
De Simulator bevat een complete website waarmee de inhoud van de verzonden P1-telegrammen bekeken kunnen worden en waarmee de WiFi-instellingen ingeregeld kunnen worden.
De API / HTTP-interface
De belangrijkste waardes binnen de verzonden P1-telegrammen zijn eenvoudig in te stellen via een HTTP GET-commando. Dit kan met een browser getest worden. Op dezelfde manier zijn ook enkele instellingen te configureren en kan de interne klok gesynchroniseerd worden.
Elektriciteit en gas
http://[IP-adres]/setvalue.cmd?fieldname=[fieldname]&value=ff.fff
Voor [IP-adres]
vul je het IP-adres in van de Simulator, of z’n DNS-name. Bijvoorbeeld:
- 192.168.4.2
- desimulator.local
En voor [fieldname]
moet één van de volgende waardes gebruikt worden:
electricity.tariff
(1 = laag, 2 = hoog tarief)electricity.current_L1
(default 30A)electricity.current_L2
(idem)electricity.current_L3
(idem)electricity.voltage_L1
(default 230V)electricity.voltage_L2
(idem)electricity.voltage_L3
(idem)gas.delivered
En tenslotte kun je met de waarde achter ‘value=
’ aangeven hoeveel stroom of gas er geleverd of gegenereerd wordt. Een positieve waarde betekent ‘geleverd door het net’ en een negatieve waarde betekent ‘teruggeleverd aan het net’ (bij gas is een negatieve waarde natuurlijk onzin…)
Timeout
Stel dat de WiFi-verbinding wegvalt of er treedt een andere storing op zodat de Simulator niet meer aangestuurd kan worden. Dan zou het kunnen gebeuren dat de Simulator het laadstation informatie geeft die ervoor zorgt dat de auto op volle kracht geladen wordt terwijl je dat eigenlijk helemaal niet zou willen, bijv. omdat de stroom op dat moment juist duur is. Daarom verwacht de Simulator elke 5 minuten een nieuw commando. Blijft dat uit, dan wordt teruggevallen op de standaard waardes: 20A verbruik zodat er niets overblijft voor de laadpaal.
Zowel de timeout-periode van 5 minuten als de standaard stroomwaarde kunnen ingesteld worden. Wanneer een timeout-periode = 0 wordt ingesteld, dan behoudt een eenmaal ingestelde stroom voor altijd deze waarde.
Klok
Ook kan de interne klok gelijkgezet worden. De [virtuele] klok start namelijk bij elke herstart op dezelfde datum/tjid. Om deze gelijk te zetten is het volgende commando beschikbaar:
http://[IP-adres]/setrtc.cmd?[name]=[value]
Hierbij zijn de volgende fieldname/value-combinaties mogelijk:
[name] | [value] |
date | format ‘yyyy-mm-dd’, bijv. 2025-03-11 |
time | format ‘hh-mm-ss’, bijv. 19:22:45 |
NB: de fieldnames zijn hoofdlettergevoelig!
Foutafhandeling
Wanneer je geen parameter ‘fieldname’ opgeeft, of een niet-bekende fieldname, dan bevat de HTTP-response de statuscode ‘400 Bad Request’. Idem wanneer je geen parameter ‘value’ opgeeft. De statusmessage geeft ook een tekstuele indicatie van de fout.
Voorbeelden
Als we willen aangeven dat er 391W wordt teruggeleverd op fase 1, dan moeten we een stroom van 391W/230V = 1.7A instellen. Dat levert de volgende URL op:
http://192.168.4.2/setvalue.cmd?fieldname=electricity.current_L1&value=-1.7
NB: Wanneer je meerdere fases (L1 t/m L3) wilt instellen, dan moet dat met 3 aparte commando’s.
De datum kun je als volgt instellen:
http://192.168.4.2/setrtc.cmd?date=2025-05-28
En de tijd:
http://192.168.4.2/setrtc.cmd?time=15:34:56
Of datum en tijd tegelijk:
http://192.168.4.2/setrtc.cmd?date=2025-05-28&time=15:34:56
Ter inspiratie
Aansturing vanuit Home Assistant werkt zo: https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger.
Hardware

Het schema is niet erg ingewikkeld:

Een ESP 8266 NodeMCU (die in de twee rijen pinheaders wordt geprikt) vormt het logische brein en een paar weerstanden en transistors vormen samen de elektrische interface die middels een RJ12-connector naar buiten beschikbaar wordt gesteld.
Er zijn 3 GPIO-pinnen naar buiten gevoerd naar een pin-header. Desgewenst kan hiermee ook een hardware-interface gemaakt worden om de P1-telegrammen te beïnvloeden.
Er zijn 2 types NodeMCU: een smalle en een brede, oftewel V2 en V3:

bron: https://shopofthings.ch/blog/2018/07/20/nodemcu-v2-vs-v3/
Beide types passen op de print omdat er dubbele pinheaders gebruikt zijn.
De opto-couplers die in een echte Slimme Meter horen te zitten, heb ik weggelaten. Die zijn er voor de galvanische scheiding tussen het binnenwerk van de Slimme Meter en de boze buitenwereld. De noodzaak van zo’n scheiding is hier niet aanwezig.
De NodeMCU werkt op 3.3V terwijl de P1-interface van 5V uitgaat. Daarom is er een spanningsdeler R2/R4 nodig om de 5V van de RTS-pin te verlagen naar ~3.3V.
De hele schakeling wordt gevoed vanuit de USB connector op de NodeMCU. De 5V voor de P1-interface wordt hiervan afgetakt.
Bij het smalle type NodeMCU is de uitgangsspanning ~4.5V. Dat komt omdat de betreffende pin Vin (op de foto hierboven de onderste pin links) via een diode gekoppeld is aan de 5V van de USB connector. Het brede type NodeMCU bevat ook een pin VU (de derde pin van boven links) die direct gekoppeld is aan de USB connector, dus die geeft echt 5V af . Daarom gebruik ik in deze schakeling bij voorkeur het brede type.
Software
De C++-code en is ontwikkeld in de Arduino IDE versie 1.8.19.
De software van deze Slimme Meter Simulator bestaat uit verschillende delen:
- De WiFi-module,
- Een HTTP-server,
- Het genereren en verzenden van P1-telegrammen.
WiFi
De WiFi-module staat bij levering ingesteld als een Access Point met SSID=DeSimulator en password=SlimmeRik. Wanner je met je computer of smartphone hiermee connectie maakt, kun je met je browser de index-pagina van de HTTP-server (zie hieronder) opvragen. Hiermee kun je navigeren naar de configuratiepagina voor de WiFi. Daarin heb je de keuze om de WiFi-module om te schakelen naar ‘Station-mode’ waarbij hij inlogt op de ingestelde WiFi-router. Je kunt hiervoor een SSID en bijbehorend wachtwoord instellen. Ook kan hier een ander SSID of wachtwoord instellen voor de Access Point-mode.
Wanneer de WiFi-module wordt gestart of herstart en hij is ingesteld als ‘Station’, dan zal hij proberen in te loggen op de ingestelde WiFi-router. Wanneer dat niet na 20 seconde nog steeds niet gelukt is, schakelt hij over naar Access Point-mode met het daarvoor ingestelde SSID/wachtwoord.
De HTTP-server
De HTTP-server kan een HTML-pagina genereren met daarin de belangrijkste waardes van het P1-telegram dat de Simulator genereert. En pagina’s om de WiFi-module in te stellen.
Daarnaast kan hij de HTTP-commando’s verwerken waarmee de waardes voor het stroom- en gasverbruik ingesteld kunnen worden.
Het genereren en verzenden van P1-telegrammen
Er is een datastructuur gedefinieerd voor de telegrammen. Een groot deel van de datavelden krijgen een vast ingestelde waarde. Een klein deel is in te stellen via de HTTP-interface. De Simulator heeft een interne klok die weliswaar een dummy datum/tijd genereert, maar die wel de juiste ‘snelheid’ heeft: een gesimuleerde seconde is even lang als een echte seconde. Hierdoor is het mogelijk om de tellerstanden nauwkeurig bij te werken op basis van het ingestelde vermogen.
Daarnaast is er een class gedefinieerd die deze datastructuur kan omzetten naar een P1-telegram inclusief alle codes, CRC-check en die deze doorstuurt naar de seriële poort. Het verzenden gebeurt met een tussentijd van 1 seconde, mits de Data Request-pin hoog is.
Super project
Ik heb je ook een bestelling gestuurd
Ik hoop hiermee mijn evapower te kunnen aansturen zodat deze gaat ontladen op basis van verbruik in huis icm tijd
En als er geen zon is de batterij te laden op goedkoop tarief
Mooi om te zien dat handige mensen nieuwe toepassingen vinden dan die ik aanvankelijk voor ogen had:
Op het Tweakers-form “Eva Power hybride thuisaccu” (https://gathering.tweakers.net/forum/list_messages/2285362/8) ontdekte gebruiker ‘arro3038’ op 31 maart 2025 deze Simulator en bestelde meteen een exemplaar om zo de P1-data voor zijn Eva Power thuisaccu te manipuleren.
Meerdere forum-leden vonden dit een goed idee zodat ik in korte tijd door m’n voorraad heen was. Die is inmiddels aangevuld.
En de opmerkingen en tips die ik kreeg naar aanleiding van de eerste versie zijn verwerkt in een nieuwe versie van de software. Nieuw is dit keer beter!
Voor wie aan de slag wil met deze Simulator in combinatie met Home Assistant: zie het duidelijke en uitgebreide stappenplan op: https://gathering.tweakers.net/forum/list_message/82213084#82213084
Je zou denk ik mensen blij maken als je voor jouw slimme meter logger een stukje software zou schrijven die de slimme meter simulatoren kan aansturen.
Dit voor mensen die meerdere thuis batterijen hebben .
Kwestie van een instelbare waarde hoeveel batterijen.
Dan deel je de waarde die je binnenkrijgt via de slimme meter logger door aantal batterijen en stuurt daarop webcall’s uit naar je slimme meter simulatoren .
Hier een zeer tevreden gebruiker van de slimme meter simulator. Werkt perfect om mijn thuisbatterij aan te sturen. Ik miste alleen nog iets om het board en de nodemcu een beetje te beschermen. Dat is nu ook opgelost middels een heel simpel 3d geprint doosje. Ik heb het op printables gezet voor wie het ook graag wil gebruiken:
https://www.printables.com/model/1307040-simple-housing-slimme-meter-simulator
Wat een geweldig project! Er zijn duizenden kastjes die een bestaande P1 poort kunnen uitlezen en doorsturen of weergeven. Maar dit is het enige apparaat dat ik kon vinden dat zelf P1 berichtjes kan maken, om zo bijvoorbeeld thuisbatterijen of opladers te beïnvloeden.
Is de software ergens te downloaden? Of krijg je die alleen als je het koopt? Wat ik goed kan begrijpen hoor 🙂
Goed gezien: je krijgt de download link na aanschaf van de Simulator. Je kunt dan de sourcecode en de handleiding downloaden. Ook evt. updates worden daar gepubliceerd.