Last Updated on 19 december 2023 by Syds
In deze tutorial leg ik stap voor stap uit hoe je een de HomeWizard P1 dongle installeert en configureert. De data opslaat in een MariaDB en Domoticz, en visualiseert in Google Data Studio. Benodigdheden:- HomeWizard P1 dongle
- Smartphone, Tablet of ander device met WiFi
- Domoticz
- 2.4Ghz WIFI-netwerk benaderbaar via andere SSID als je 5Ghz netwerk
- Node-Red
- MariaDB
- Download de HomeWizard Energy App via de playstore, en doorloop de volgende schermen:
- Hou de knop op de dongle zo’n 5 seconden ingedrukt, de LED begint blauw te knipperen. De dongle is nu in pairing mode (en creëert een AP met SSID “P1meterSetup” (wachtwoord is SetupPass))
- De volgende schermen verschijnen:
- Na verloop van tijd begint de data binnen te komen in de app
- Achterhaal in je router het IP-adres wat de dongle heeft gekregen. In mijn geval was het ip-adres 192.168.2.165. Een nslookup van dit adres leverde de hostnaam espressif.sydspost.nl (p.s. toen ik de dongle uitpakte en installeerde had de dongle de firmware versie 1.5.3, de nslookup leverde met deze firmware een hostnaam op die niet aan RFC942 voldeed, name “HW p1dongle 242B76”, een hostnaam met spaties dus. Blijkbaar heeft HomeWizard dit opgelost in de firmware versie die de dongle even later zelf geupdated had, firmware versie 2.3.0, de hostnaam is nu espressif.sydspost.nl)
- De API is te benaderen via http://espressif.sydspost.nl/api/v1/data, en geeft het volgende JSON bericht:
{
"smr_version": 50,
"meter_model": "ISKRA 2M550T-1011",
"wifi_ssid": "H369ABF8AF9",
"wifi_strength": 58,
"total_power_import_t1_kwh": 14943.6,
"total_power_import_t2_kwh": 7005.623,
"total_power_export_t1_kwh": 2567.151,
"total_power_export_t2_kwh": 6051.882,
"active_power_w": 1867,
"active_power_l1_w": 1067,
"active_power_l2_w": 12,
"active_power_l3_w": 794,
"total_gas_m3": 4338.403,
"gas_timestamp": 210521214009
}
- werkt dus als een trein
- Op basis van bovenstaande JSON bericht heb ik de tabel “Slimme meter” aangemaakt in mijn MariaDB “Energy” (zie ook eerdere tutorials zoals Zonnepanelen uitlezen, Slimme watermeter, Verbruik elektrische auto)
CREATE TABLE `slimme_meter` (
`sample datetime` datetime NOT NULL,
`levering tarief 1` float(10,3) DEFAULT NULL,
`levering tarief 2` float(10,3) DEFAULT NULL,
`teruglevering tarief 1` float(10,3) DEFAULT NULL,
`teruglevering tarief 2` float(10,3) DEFAULT NULL,
`actief vermogen` int(32) DEFAULT NULL,
`actief vermogen l1` int(32) DEFAULT NULL,
`actief vermogen l2` int(32) DEFAULT NULL,
`actief vermogen l3` int(32) DEFAULT NULL,
`levering gas` float(10,3) DEFAULT NULL,
`delta tarief 1` float(10,3) DEFAULT NULL,
`delta tarief 2` float(10,3) DEFAULT NULL,
`delta teruglevering tarief 1` float(10,3) DEFAULT NULL,
`delta teruglevering tarief 2` float(10,3) DEFAULT NULL,
`delta levering gas` float(10,3) DEFAULT NULL,
PRIMARY KEY (`sample datetime`)
);
- Vervolgens met onderstaand INSERT statement de huidige meterstanden ingevoerd als eerste record in de database. Dit ten behoeve van de Node-red flow in de volgende stap waarbij de laatste meterstanden worden opgevraagd om de delta tussen de huidige meting en en vorige meting te kunnen bepalen. Verander de rood gekleurde waarden (levering tarief 1, levering tarief 2, teruglevering tarief 1, teruglevering tarief 2, levering gas) in de meetwaarden van je eigen slimme meter, pas eventueel ook de datum aan (niet noodzakelijk)
INSERT INTO `` (`sample datetime`,`levering tarief 1`,`levering tarief 2`,`teruglevering tarief 1`,`teruglevering tarief 2`,`actief vermogen`,`actief vermogen l1`,`actief vermogen l2`,`actief vermogen l3`,`levering gas`,`delta tarief 1`,`delta tarief 2`,`delta teruglevering tarief 1`,`delta teruglevering tarief 2`,`delta levering gas`) VALUES ('2021-05-21 21:42:28',14943.600,7005.645,2567.151,6051.882,0,0,0,0,4338.403,0.000,0.000,0.000,0.000,0.000);
- Geef de MariaDB gebruiker “googledata” leesrechten op de tabel “slimme meter”, dit t.b.v. Google data studio
grant select on energy.slimme_meter to 'googledata'@'%';
Stap 5. Node-red flow aangemaakt
- Toelichting
Node | Doel |
Run once | Start dit deel van de flow eenmalig op bij het opstarten van Node-red |
Get last added values | Bouwt een SQL-statement op die de laatst toegevoegde meterstanden ophaalt uit de tabel “slimme meter” |
Database | Connectie naar de MariaDB database ‘Energy’ |
Set previous meter readings | Plaatst de meterstanden ‘levering tarief 1’, ‘levering tarief 2’, ‘teruglevering tarief 1’, ‘teruglevering tarief 2’ en ‘levering gas’ in de flow context |
Interval | Zorgt er voor dat iedere 5 minuten de waarden uit de API van de dongle worden ingelezen in de database |
HomeWizard Energy P1 | HTTP get “http://espressif.sydspost.nl/api/v1/data” |
Build SQL | Bouwt het INSERT statement op met waarden uit het JSON bericht uit de dongle, bepaalt de delta waarden tussen de huidige en de vorige meting, en zet de nieuwe meterstanden in de flow context |
Database | Connectie naar de MariaDB database ‘Energy’ |
Msg.topic | Debugging |
- Export van de flow
[{"id":"32a3499c.31c8a6","type":"tab","label":"Slimme meter","disabled":false,"info":""},{"id":"8c726c09.6e93b","type":"function","z":"32a3499c.31c8a6","name":"Build SQL","func":"// {\n// \"smr_version\": 50, \n// \"meter_model\": \"ISKRA 2M550T-101\",\n// \"wifi_ssid\": \"My Wi-Fi\",\n// \"wifi_strength\": 100,\n// \"total_power_import_t1_kwh\": 10830.511,\n// \"total_power_import_t2_kwh\": 2948.827,\n// \"total_power_export_t1_kwh\": 1285.951,\n// \"total_power_export_t2_kwh\": 2876.514,\n// \"active_power_w\": -543,\n// \"active_power_l1_w\": -676,\n// \"active_power_l2_w\": 133,\n// \"active_power_l3_w\": 0,\n// \"total_gas_m3\": 2569.646,\n// \"gas_timestamp\": 210606140010\n// }\n\nvar sql = \"insert into slimme_meter (`sample datetime`, `levering tarief 1`, `levering tarief 2`, `teruglevering tarief 1`, `teruglevering tarief 2`, `actief vermogen`, `actief vermogen l1`, `actief vermogen l2`, `actief vermogen l3`, `levering gas`, `delta tarief 1`, `delta tarief 2`, `delta teruglevering tarief 1`, `delta teruglevering tarief 2`,`delta levering gas`)\"\nsql = sql + \"values (:sample_datetime, :levering_tarief_1, :levering_tarief_2, :teruglevering_tarief_1, :teruglevering_tarief_2, :actief_vermogen, :actief_vermogen_l1, :actief_vermogen_l2, :actief_vermogen_l3, :levering_gas, :delta_tarief_1, :delta_tarief_2, :delta_teruglevering_tarief_1, :delta_teruglevering_tarief_2, :delta_levering_gas);\";\n\nmsg.payload.sample_datetime=new Date();\nmsg.payload.levering_tarief_1=msg.payload[\"total_power_import_t1_kwh\"];\nmsg.payload.levering_tarief_2=msg.payload[\"total_power_import_t2_kwh\"];\nmsg.payload.teruglevering_tarief_1=msg.payload[\"total_power_export_t1_kwh\"];\nmsg.payload.teruglevering_tarief_2=msg.payload[\"total_power_export_t2_kwh\"];\nmsg.payload.actief_vermogen=msg.payload[\"active_power_w\"];\nmsg.payload.actief_vermogen_l1=msg.payload[\"active_power_l1_w\"];\nmsg.payload.actief_vermogen_l2=msg.payload[\"active_power_l2_w\"];\nmsg.payload.actief_vermogen_l3=msg.payload[\"active_power_l3_w\"];\nmsg.payload.levering_gas=msg.payload[\"total_gas_m3\"];\nmsg.payload.delta_tarief_1=msg.payload[\"total_power_import_t1_kwh\"] - flow.get(\"levering_tarief_1\");\nmsg.payload.delta_tarief_2=msg.payload[\"total_power_import_t2_kwh\"] - flow.get(\"levering_tarief_2\");\nmsg.payload.delta_teruglevering_tarief_1=msg.payload[\"total_power_export_t1_kwh\"] - flow.get(\"teruglevering_tarief_1\");\nmsg.payload.delta_teruglevering_tarief_2=msg.payload[\"total_power_export_t2_kwh\"] - flow.get(\"teruglevering_tarief_2\");\nmsg.payload.delta_levering_gas=msg.payload[\"total_gas_m3\"] - flow.get(\"levering_gas\");\n\n// node.warn(flow.get(\"levering_tarief_1\"));\n// node.warn(flow.get(\"levering_tarief_2\"));\n// node.warn(flow.get(\"teruglevering_tarief_1\"));\n// node.warn(flow.get(\"teruglevering_tarief_2\"));\n// node.warn(flow.get(\"levering_gas\"));\n\nflow.set(\"levering_tarief_1\",msg.payload.levering_tarief_1);\nflow.set(\"levering_tarief_2\",msg.payload.levering_tarief_2);\nflow.set(\"teruglevering_tarief_1\",msg.payload.teruglevering_tarief_1);\nflow.set(\"teruglevering_tarief_2\",msg.payload.teruglevering_tarief_2);\nflow.set(\"levering_gas\",msg.payload.levering_gas);\n\nmsg.topic=sql;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":160,"wires":[["c05d4fa9.4a2a9"]]},{"id":"aefc334f.f0a0a","type":"debug","z":"32a3499c.31c8a6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"topic","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":160,"wires":[]},{"id":"c05d4fa9.4a2a9","type":"mysql","z":"32a3499c.31c8a6","mydb":"8056d2ce.5f8c8","name":"Database","x":820,"y":160,"wires":[["aefc334f.f0a0a"]]},{"id":"b2499835.eb3748","type":"inject","z":"32a3499c.31c8a6","name":"Run once","props":[],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","x":140,"y":80,"wires":[["f223071b.d8a678"]]},{"id":"f223071b.d8a678","type":"function","z":"32a3499c.31c8a6","name":"Get last added values","func":"var sql = \"select * from slimme_meter where `sample datetime` = (select max(`sample datetime`) from slimme_meter);\"\n\nmsg.topic=sql;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":360,"y":80,"wires":[["b6ab26c6.0552a8"]]},{"id":"b6ab26c6.0552a8","type":"mysql","z":"32a3499c.31c8a6","mydb":"8056d2ce.5f8c8","name":"Database","x":620,"y":80,"wires":[["9cabe089.395ad"]]},{"id":"9cabe089.395ad","type":"function","z":"32a3499c.31c8a6","name":"Set previous meter readings","func":"flow.set(\"levering_tarief_1\",msg.payload[0][\"levering tarief 1\"]);\nflow.set(\"levering_tarief_2\",msg.payload[0][\"levering tarief 2\"]);\nflow.set(\"teruglevering_tarief_1\",msg.payload[0][\"teruglevering tarief 1\"]);\nflow.set(\"teruglevering_tarief_2\",msg.payload[0][\"teruglevering tarief 2\"]);\nflow.set(\"levering_gas\",msg.payload[0][\"levering gas\"]);\n\n// node.warn(flow.get(\"levering_tarief_1\"));\n// node.warn(flow.get(\"levering_tarief_2\"));\n// node.warn(flow.get(\"teruglevering_tarief_1\"));\n// node.warn(flow.get(\"teruglevering_tarief_2\"));\n// node.warn(flow.get(\"levering_gas\"));\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":880,"y":80,"wires":[[]]},{"id":"5f757b69.1e0884","type":"inject","z":"32a3499c.31c8a6","name":"Interval","props":[],"repeat":"300","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":140,"y":160,"wires":[["a3b91f83.17e2d"]]},{"id":"a3b91f83.17e2d","type":"http request","z":"32a3499c.31c8a6","name":"HomeWizard Energy P1","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://espressif.sydspost.nl/api/v1/data","tls":"","persist":false,"proxy":"","authType":"","x":370,"y":160,"wires":[["8c726c09.6e93b"]]},{"id":"8056d2ce.5f8c8","type":"MySQLdatabase","z":"","name":"mysql","host":"localhost","port":"3306","db":"energy","tz":"","charset":"UTF8"}]
Stap 6. Domoticz geconfigureert
- Voor het inlezen van de meterstanden in Domoticz maak ik gebruik van een HTTP/HTTPS poller op het Hardware tab
- Toelichting op niet default waarden
Attribuut | Waarde | Toelichting |
Naam | P1 slimme meter | Zinvolle naam |
Type | HTTP/HTTPS poller | |
ContentType | application/json | API van dongle geeft een JSON bericht terug |
URL | http://espresif.sydspost.nl/api/v1/data | URL van de API |
Commando | p1.lua | Naam van het lua script wat uitgevoerd moet worden nadat het JSON bericht is opgehaald |
Vernieuwen | 300 | Om de 5 minuten het JSON bericht ophalen |
- Vervolgens twee virtuele sensors aangemaakt voor electra en gas
- Achterhaal op het tabblad Apparaten de IDX’en van beide virtuele sensoren:
-
- Tevens een lua script aangemaakt die de waarden toevoegt aan de virtuele sensors, dit lua script geplaatst in /home/pi/domoticz/scripts/lua_parsers (vervang de roodgekleurde waarden door de IDX van de door jou aangemaakte virtuele sensors)
- pi@raspberrypi:~/domoticz/scripts/lua_parsers $ cat p1.lua
—— BEGIN ——
— Read API values
s = request[‘content’];
—
— Gasmeter
—
local idGas = 229
local a = domoticz_applyJsonPath(s,’.total_gas_m3′)
domoticz_updateDevice(idGas,”,a*1000)
—
— Energiemeter
—
— Dal import value
local b = domoticz_applyJsonPath(s,’.total_power_import_t1_kwh’)
— Piek import value
local c = domoticz_applyJsonPath(s,’.total_power_import_t2_kwh’)
— Dal return value
local d = domoticz_applyJsonPath(s,’.total_power_export_t1_kwh’)
— Piek return value
local e = domoticz_applyJsonPath(s,’.total_power_export_t2_kwh’)
— Active Watt Usage
local f = domoticz_applyJsonPath(s,’.active_power_w’)
local g = math.abs(domoticz_applyJsonPath(s,’.active_power_w’))
if f<0 then f=0 elseif f>0 then g=0 end
local h = domoticz_applyJsonPath(s,’active_power_l1_w’)
local i = domoticz_applyJsonPath(s,’active_power_l2_w’)
local j = domoticz_applyJsonPath(s,’active_power_l3_w’)
—
local idEnergy = 228
domoticz_updateDevice(idEnergy,”,b*1000 ..”;”..c*1000 ..”;”..d*1000 ..”;”..e*1000 ..”;”..f..”;”..g)
—— END ——
- Tot slot de logging gechecked, en ta-da de waarden komen binnen
2021-06-01 18:24:13.095 Status: P1 slimme meter: Worker started…
2021-06-01 18:24:18.162 CLuaHandler (updateDevice from LUA) : idx=229 nvalue= svalue=4364593.0 invalue=0 signallevel=12 batterylevel=255
2021-06-01 18:24:18.173 CLuaHandler (updateDevice from LUA) : idx=228 nvalue= svalue=15145155.0;7042123.0;2602.256;6130.956;5157.0;0 invalue=0 signallevel=12 batterylevel=255
Stap 7. Google data studio rapportage gemaakt:
- Op het dashboard een tweetal staafdiagrammen toegevoegd die het stroomverbruik, en de teruglevering van stroom over de afgelopen week weergeeft
- Tevens een staafdiagram voor het gas verbruik
- Hiervoor heb ik de volgende SQL-statements gebruikt
Rapport element | SQL-statement |
Dashboard:
|
select `sample datetime` as ‘sample_datetime’, `levering tarief 1` as ‘levering_tarief_1’, `levering tarief 2` as ‘levering_tarief_2′, `teruglevering tarief 1` as ’teruglevering_tarief_1′, `teruglevering tarief 2` as ’teruglevering tarief 2′, `actief vermogen` as ‘actuele levering’, `levering gas` as ‘levering_gas’, `delta tarief 1` as ‘delta_tarief_1’, `delta tarief 2` as ‘delta_tarief_2’, `delta teruglevering tarief 1` as ‘delta_teruglevering_tarief_1’, `delta teruglevering tarief 2` as ‘delta_teruglevering_tarief_2’, `delta levering gas` as ‘delta_levering_gas’ from slimme_meter order by `sample datetime`; |
- En de volgende instellingen
- https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf
- https://energy.homewizard.net/nl/support/solutions/articles/19000117051-homewizard-energy-p1-meter-lokale-api
- https://www.domoticz.com/forum/viewtopic.php?p=270636
Hey, mooie post! helder en meteen uitgeprobeerd. Alles werkt exact zoals je beschrijft, behalve de datastudio. Mijn mariadb kan niet worden gevonden door een of andere firewall of zo…
Waar ik mee zit nog is het feit dat ik dit run op een chromebook-linux omgeving. Echter deze wil nog wel eens resetten waardoor ik er pas later achter kom dat ik een dag gemist heb.
Er is dacht ik geen API om historische data op te vragen toch?
enige wat ik zie is het abo… van home wizard, maar dat wilden we nou juist niet…
Marco,
Dank voor je compliment. Om datastudio met je lokale mariadb/mysql database te verbinden is best wel een lastige inderdaad. De user die je daarvoor gebruikt moet de juiste rechten op de tabellen hebben. Tevens moet je op de router een portforwarding opzetten naar je server op poort 3306. Zie voor meer info https://www.sydspost.nl/index.php/2021/03/23/opbrengst-zonnepanelen-uitlezen-2/. Onder aan deze pagina vindt je meer over het opzetten van een verbinding tussen je database en datastudio.
Wat dataverlies betreft, misschien is het een optie voor je om een raspberry pi zero 2w of banana pi m2 Zero aan te schaffen. Dit zijn heel kleine microcontrollers die weinig stroom gebruiken maar toch heel krachtig zijn. Op mijn site vind je meer info over hoe deze microcontrollers van Raspbian of Debian linux te voorzien. De raspberry pi zero 2w heb je al voor zo’n 18 euro maar zijn momenteel niet leverbaar. De banana pi m2 Zero is een kloon, is wat duurder maar volop verkrijgbaar. Daarmee je een constante datastroom garanderen. De microcontroller is ook krachtig genoeg om je mariadb en node-red te draaien. Je kunt er gewoon een 32gb of grotere mini SD kaart in stoppen.
De API draait lokaal op je HomeWizard dongle en slaat geen historie op.
Mooi project. Ik ben begonnen met Domoticz en probeer de gegevens van de home wizzard watermeter in Domoticz te krijgen. Ook zou ik graag de totaalstand bij willen houden. Ik loop tegen wat zaken aan.
Kun je me tegen vergoeding hiermee helpen?
Natuurlijk wil ik je helpen David, en geef die vergoeding maar aan een goed doel 🙂 Waarmee kan ik je helpen ?
Homewizzard gekocht en u geeft duidelijke uitleg maar het lukt me niet
Er staat steeds geen verbinding mogelijk met netwerk p1 meter setup
Wat kan ik verder doen? Bedankt!
Trees, klinkt alsof je telefoon de homewizard niet kan bereiken/vinden, kan een aantal oorzaken hebben:
1. Moderne telefoons/laptops pakken het 5ghz WIFI netwerk, echter de homewizard werkt uitsluitend op het 2.4Ghz netwerk. Mijn advies zou zijn om je 5Ghz en 2.4Ghz netwerk op je router een eigen SSID te geven, en met je telefoon/laptop aan dat WiFI netwerk te connecteren
2. Je homewizard heeft onvoldoende WiFi bereik. Ga eens met je telefoon of laptop naast de homewizard staan en kijk hoeveel streepjes bereik je hebt. Plaats eventueel een accesspoint naast je homewizard (heb ik ook moeten doen)
3. De homewizard krijgt geen IP address van je router/dhcp server, check je router/dhcp configuratie
Volgens mij staan er nog wel meer tips op de homewizard website. Mocht geen van bovenstaande tot een oplossing leiden, dan kun je daar eventueel ook nog te rade gaan
Veel succes,
Syds
Homewizzard gekocht en u geeft duidelijke uitleg maar het lukt me niet
Er staat steeds geen verbinding mogelijk met netwerk p1 meter setup
Wat kan ik verder doen? Bedankt!
Ik krijg deze melding wat kan dat zijn?
Error: CLuaHandler: C:\Program Files (x86)\Domoticz\scripts\lua_parsers\p1.lua:1: syntax error near ‘@’
Hoi,
Er hoort helemaal geen apestaartje @ in p1.lua te zitten, dus misschien is er iets misgegaan bij het knippen en plakken. Onderstaand mijn p1.lua
cat p1.lua
—— BEGIN ——
— Read API values
s = request[‘content’];
—
— Gasmeter
—
local idGas = 229
local a = domoticz_applyJsonPath(s,’.total_gas_m3′)
domoticz_updateDevice(idGas,”,a*1000)
—
— Energiemeter
—
— Dal import value
local b = domoticz_applyJsonPath(s,’.total_power_import_t1_kwh’)
— Piek import value
local c = domoticz_applyJsonPath(s,’.total_power_import_t2_kwh’)
— Dal return value
local d = domoticz_applyJsonPath(s,’.total_power_export_t1_kwh’)
— Piek return value
local e = domoticz_applyJsonPath(s,’.total_power_export_t2_kwh’)
— Active Watt Usage
local f = domoticz_applyJsonPath(s,’.active_power_w’)
local g = domoticz_applyJsonPath(s,’active_power_l1_w’)
local h = domoticz_applyJsonPath(s,’active_power_l2_w’)
local i = domoticz_applyJsonPath(s,’active_power_l3_w’)
—
local idEnergy = 228
domoticz_updateDevice(idEnergy,”,b*1000 ..”;”..c*1000 ..”;”..d..”;”..e..”;”..f. .”;”..’0′)
—— END ——
Kun je dit knippen en plakken in jou versie, uiteraard de device-id’s van jou domoticz devices aanpassen in idGas en idEnergy.
Hoor graag of het gelukt is,
Syds
hoi Syds,
wellicht al een heel ouwe post waarop ik reageer, maar… zou je een linkje naar een gezipte versie van je lua-script kunnen posten? als ik de text uit de browser copieer naar vi krijg ik ook allerlei rare “unexpected symbols” omdat de browser blijkbaar unicode-8 of zo rendert.
Leon,
Sorry dat ik zo laat reageer, maar had je reactie niet eerder gezien. Ik stuur je zo het lua script per mail.
Syds
Ik krijg nu deze melding
Error: CLuaHandler: C:\Program Files (x86)\Domoticz\scripts\lua_parsers\p1.lua:1: unexpected symbol near ”
Hi Syds
ik krijg deze melding :
2022-12-22 23:02:21.974 Error: CLuaHandler: C:\Program Files (x86)\Domoticz\scripts\lua_parsers\p1.lua:1: unexpected symbol near ”
dit script heb ik gecopieerd en aangepast
—— BEGIN ——
— Read API values
s = request[‘content’];
—
— Gasmeter
—
local idGas = 1
local a = domoticz_applyJsonPath(s,’.total_gas_m3′)
domoticz_updateDevice(idGas,”,a*1000)
—
— Energiemeter
—
— Dal import value
local b = domoticz_applyJsonPath(s,’.total_power_import_t1_kwh’)
— Piek import value
local c = domoticz_applyJsonPath(s,’.total_power_import_t2_kwh’)
— Dal return value
local d = domoticz_applyJsonPath(s,’.total_power_export_t1_kwh’)
— Piek return value
local e = domoticz_applyJsonPath(s,’.total_power_export_t2_kwh’)
— Active Watt Usage
local f = domoticz_applyJsonPath(s,’.active_power_w’)
local g = domoticz_applyJsonPath(s,’active_power_l1_w’)
local h = domoticz_applyJsonPath(s,’active_power_l2_w’)
local i = domoticz_applyJsonPath(s,’active_power_l3_w’)
—
local idEnergy = 2
domoticz_updateDevice(idEnergy,”,b*1000 ..”;”..c*1000 ..”;”..d..”;”..e..”;”..f. .”;”..’0′)
—— END ——
dir viel nog weg bij de error unexpected symbol near ”
bij near moet er 226 staan krijg het niet geupload wordt weg gefilterd
deze error hoop dat ie nu weegegeven wordt 226 moet tussen staan ik kan hem niet posten hij wordt eruit gefilterd!
CLuaHandler: C:\Program Files (x86)\Domoticz\scripts\lua_parsers\p1.lua:1: unexpected symbol near 226
Kan je het betand mailen ik denk dat er door de site veel tekentjes wegvallen nu worden den groter en kleiner dan weer weggefilterd. Mailadres lokaalbreda@hotmail.com gebruik deze maar. i..v.m. Spam
Ik kom er niet uit, zou je contact willen opnemen met mij via bovenstaande mail.
Alvast bedankt
R
Heb je het bestand p1.lua gemailed
Hi syds. Ik denk dat er toch wat dingen weggevallen zijn van plaatjes het probleem zit in nose-red
Ik weet niet goed hoe ik dat aan de gang moet krijgen. Ik heb een database op de server op een andere locatie draaien die ik wil benaderen. Dus buitenshuis.
Hoi, ik heb wat meer informatie nodig om je te kunnen helpen. a) is die database op een andere locatie een MariaDB of MySQL database? b) Indien MariaDB/MySQL, kun je hem vanaf de machine waarop je NodeRed hebt draaien met bijv. de command line tool mysql ? c) Heb je de tabel “slimme meter” al aangemaakt in het schema “energy” ? d) Heb je je actuele meterstanden handmatig toegevoegd aan de database mbv het insert statement e) Heb je de flow ingelezen ? f) Heb je de server instellingen aangepast in de database connectie g) Heb je een foutmelding voor me ?
Syds
Kunnen we eens bellen dat gaat denk ik makkelijker als je het wilt he.
Ik heb je mail trouwens
niet binnengekregen, wel fijn dat je me wilt helpen.
Goedendag,
Toevallig dat ik op deze site uitkom en hopelijk wil en kun jij mij verder helpen. De support pagina van homewizard laat op zich wachten.
Ik heb vandaag een P1 meter van hun geïnstalleerd. Aanvankelijk ging alles goed,verbinding maken, thuis wifi netwerk verbinden maken, totdat hij hem aan het huis wilde toevoegen en toen verscheen de melding; DevicePairingChallengeError (424)
Ik kan er nergens iets over vinden en de dongle brand gewoon groen. Verschillende keren geprobeerd maar telkens bleef de melding komen. Ik kan ook niets vinden over een reset doen of zo.
Hopelijk kun jij mij verder helpen. Groeten.
Inmiddels gelukt na er achter gekomen te zijn hoe de dongle te resetten. (knop vasthouden totdat hij wit gaat branden)
Fijn dat het opgelost is, succes!
Hey,
Mooi stukje werk ben het aan het proberen alleen snap ik die interval niet vanaf de P1 in de MariaDB 🙂 aangezien vind het nergens terug in je uitleg.
Mvg
Sven
Sven, dank voor je bericht. De interval staat inderdaad niet expliciet beschreven, zowel voor Domoticz als node-red is deze 5 minuten. Bij Domoticz vindt je dit terug bij de instellingen van de http-poller, namelijk 300 sec. Bij node-red vindt je dit terug in de instellingen van de interval node. Mvg, Syds
Hi,
top uitleg! Heb naast de P1 ook een 3 fasen meter voor de zonnepanelen. Die werkt t zelfde, komt alleen wat anders uit. Daarnaast ook de API van openweathermap.org toegevoegd. Nu alleen die MariaDB aan Google Analytics knopen. Ik heb wat moeite met toegang krijgen: Heb jij nog wat tips om die DB toegankelijk te maken voor Google Analytics?
Ik had wel eens met node-RED geklooid maar met jouw uitleg was t echt simpel en snel gedaan!
Thx
Robert
Robert, is al weer een tijdje geleden dat ik dat in elkaar gedraaid heb. Wat is me ervan herinner is dat het beste een eigen domein naam kunt hebben, anders heb je kans dat bij verandering van provider oid je al je Google data rapporten moet aanpassen. Verder moet je de poort van mariadb in je router openzetten. Een heel belangrijke stap is een user binnen mariadb aanmaken met de juiste rechten op de tabellen en die vanaf buiten je netwerk de data mag ophalen. Mocht je er niet uitkomen, ben tot volgende week dinsdag in Spanje, neem daarna weer even contact op met vermelding waar je vastloopt of welke foutmelding je krijgt. Groet, Syds
Hallo Syds,
Kent u deze: https://dashboard.gpx.nl/live/spijkerstraat en is het een idee voor Home Wizard om samen te werken met deze groepsmeter van GPX zodat we samen energieneutraal kunnen worden met een groep?
Egbert, heb me er even in verdiept en het vertalen van het json bericht wat uit de HomeWizard komt naar het json bericht benodigd voor de GPX site is vrij eenvoudig te doen. M.b.v. Node-red of Python moet dat eenvoudig te realiseren zijn. Heb met Postman geprobeerd een testmeting te posten naar https://dashboard.gpx.nl/api/meters/measurement/test/, en dat werkt en krijg het bericht in de body van de response terug. Als ik echter het bericht naar de standaard omgeving wil sturen, dan krijg ik een lege respons {} terug, en verschijnt er geen data in mijn meter overzicht. Enig idee wat er mis gaat ? Hieronder het testbericht wat ik stuur:
{
“power”: {
“sn”: “4530303334303037303030383633333137”,
“timestamp”: “240319165506S”,
“import_1”: “034533.202”,
“import_2”: “014966.282”,
“export_1”: “004847.549”,
“export_2”: “011535.991”,
“tariff”: 2,
“actual_import”: “01.000”,
“actual_export”: “00.000”
},
“gas”: {
“sn”: “4730303333353935393031353831333137”,
“timestamp”: “240319165005S”,
“gas”: “8317.048”
},
“solar”: null
}
Graag je reactie,
Syds
Is die wifi P1 ook uit te lezen met MJS Scripting ? Ik wil deze koppelen aan een Shelly
Reinier, ik vermoed van wel. Bij aanroep van de API krijgen je een JSON bericht terug die je verder kan verwerken in je script. Heb verder niet zoveel kennis van JavaScript, dus daarbij kan ik je niet helpen.