Je wilt graag je zonnepanelen in de gaten houden vanuit een andere locatie dan thuis. Natuurlijk kan je je domoticz met verschillende tools ook vanaf buiten huis gebruiken.
Maar je wilt nu gewoon simpel dat kan natuurlijk ook met een mooie grafiek erbij.
En ook weer een extra back-up natuurlijk zo.
Dit kan met de website van pvoutput.org zoals onze opbrengst.
Ik log dit met een s0 meter met daaraan een Arduino mini met code.
En deze zit in verbinding met de raspberry pi waar domoticz op draait.
Dit systeem is hier ook al eens eerder gepubliceerd.
Vanaf de update naar Buster en Domoticz v2020.1 werkt de oude methode niet meer, vandaar dat deze nieuwe handleiding online komt.
Om te beginnen ga je naar instellingen
en daarna ook instellingen
daarna klik je het knopje overige aan
Nu zal bijna onder aan het vakje DZEVENTS staan hier moet het vinkje voor staan. En nu moet je boven aan de pagina op Bewaar Instellingen drukken anders slaat hij het niet op.
Advertentie :
Nu mag je weer naar instellingen gaan , daarna naar meer opties.
Daarna naar Gebruikersvariabelen.
Daar vul je de gegevens in van je PVoutput.
PVoutput_ID | String | ***** | |
PVoutput_API | String | ******* |
Nu mag je weer naar instellingen gaan , daarna naar meer opties.
Daarna naar Gebeurtenissen.
En mag je op het plusje drukken.
Hier ga je naar DZEVENTS en dan Timer.
(dit zorgt er voor dat het script eens in de aantal minuten gaat draaien of 1x per minuut of zoals ik hem heb draaien 1x per 10 minuten)
Om een functie aan of uit te zetten haal of plaats de 2 streepjes voor de regel.
-- local P1 = dz.devices('P1 Power') -- P1-Slimme meter local generated = dz.devices('Solar Power') -- Uitvoer van S0 meter omvormer -- local consumed = dz.devices('Consumption') -- Verbruik virtueel apparaat local temperature = dz.devices('temp buiten voor') -- Temperatuur sensor -- local voltageDevice = dz.devices('uac1') -- Voltage meting van
Bijvoorbeeld bij:
Daar zal nu alleen de Solar power en temp buiten voor gegevens gebruikt worden nu.
de namen tussen (‘ ****** ‘) moet je veranderen naar de eigen gebruikte namen van je apparaten!!
Anders werkt het niet.
En hier geef je aan welke gegevens je wilt gaan uploaden naar PVoutput.
Ook hier kan je de regels aan of uit zetten met de — voor de tekst weg te halen om te gebruiken.
En ervoor te zetten om uit te schakelen.
-- Gebruik deze als u netto productie van zonnepanelen wilt '&v1=' .. round(generated.WhTotal,1) .. -- produced '&v2=' .. round(generated.actualWatt,1) .. -- Gebruik deze als u wilt dat je de gegevens van je slimme meter wilt gebruiken voor teruggave -- '&v1=' .. P1.return1 + P1.return2 .. -- returned to the grid -- '&v2=' .. P1.usageDelivered .. -- Gebruik deze als u wilt dat je de gegevens van je slimme meter wilt gebruiken voor gebruik -- '&v3=' .. P1.usage1 + P1.usage2 .. -- net values from your smart meter -- '&v4=' .. P1.usage .. -- Gebruik deze als je wilt wat er wordt berekend -- '&v3=' .. round(consumed.WhTotal,1) .. -- consumed -- '&v4=' .. round(consumed.actualWatt,1) .. -- Gebruik deze als je temperatuur en je voltage wilt uploaden '&v5=' .. round(temperature.temperature,1) .. -- '&v6=' .. voltage ..
de Complete gebruikte code staat hieronder en na eigen instellingen veranderen.
[wpdm_package id=’6275′]
Nu selecteer je onderstaande script en plakt deze er in :
--[[ dzVents version of pvOutput script. pvOutput.lua downloaded van https://www.huizebruin.nl/domoticz/pvoutput-systeem-koppelen-aan-domoticz-v2020-1/ Bron : https://domoticz.com/forum/viewtopic.php?f=61&t=4714&start=100 Om een functie aan of uit te zetten haal of plaats de 2 streepjes voor de regel weg. api-key and id stored in domoticz uservariables: PVoutput_API PVoutput_ID both as type string v1 - energy generated v2 - power generated W from v3 - energy consumption v4 - power consumption v5 - temperature v6 - voltage c1 - Cumulatieve vlag 1 Zowel v1- als v3-waarden zijn levenslange energiewaarden. Het verbruik en de opgewekte energie worden aan het begin van de dag op 0 gezet. 2 Alleen v1 gegenereerd is een levenslange energiewaarde. 3 Alleen v3-verbruik is een levenslange energiewaarde. n - Net flag Indien ingesteld op 1, geeft dit aan dat de vermogenswaarden netto export / import zijn. in plaats van bruto gegenereerd / verbruik. Deze optie wordt gebruikt voor apparaten die dat wel zijn niet in staat om bruto consumptiegegevens te rapporteren. De verstrekte import- / exportgegevens worden samengevoegd met bestaande gegenereerde gegevens om het verbruik af te leiden. Donation mode only parms ======================== '&delay=' .. Delay '&v7=' .. WaterConsumption '&v8=' .. InverterFrequency '&v11=' .. InverterTemp '&v12=' .. GasConsumption ]] local scriptVar = 'PVOutput' return { on = { timer = { 'every 10 minutes', --om de 10 minuten is voor mij voldoende }, httpResponses = { scriptVar, }, }, logging = { level = domoticz.LOG_DEBUG, -- change to LOG_ERROR when OK - was LOG_DEBUG marker = scriptVar, }, execute = function(dz, item) local function post2PVOutput(PVSettings, postData) dz.openURL({ url = PVSettings.url, method = 'POST', headers = { ['X-Pvoutput-Apikey'] = PVSettings.api, ['X-Pvoutput-SystemId'] = PVSettings.id }, callback = scriptVar, postData = postData }) end local function makepostData() -- local P1 = dz.devices('P1 Power') -- P1-Slimme meter local generated = dz.devices('Solar Power') -- Uitvoer van S0 meter omvormer -- local consumed = dz.devices('Consumption') -- Verbruik virtueel apparaat local temperature = dz.devices('temp buiten voor') -- Temperatuur sensor -- local voltageDevice = dz.devices('uac1') -- Voltage meting van local round = dz.utils.round -- local voltageString = voltageDevice.sValue -- local voltage = round(tonumber(voltageString:match('%d*%.*%d*')),1) -- To prevent error if 'V' is part of the string -- dz.log('P1 : ' .. P1.sValue,dz.LOG_DEBUG) dz.log('generated : ' .. generated.nValue .. ';' .. generated.sValue,dz.LOG_DEBUG) -- dz.log('consumed : ' .. consumed.nValue .. ';' .. consumed.sValue,dz.LOG_DEBUG) dz.log('Temperature: ' .. temperature.temperature,dz.LOG_DEBUG) -- dz.log('voltage : ' .. voltage,dz.LOG_DEBUG) local postdDataAsString = 'd=' .. os.date("%Y%m%d") .. '&t=' .. os.date("%H:%M") .. -- Gebruik deze als u netto productie van zonnepanelen wilt '&v1=' .. round(generated.WhTotal,1) .. -- produced '&v2=' .. round(generated.actualWatt,1) .. -- Gebruik deze als u wilt dat je de gegevens van je slimme meter wilt gebruiken voor teruggave -- '&v1=' .. P1.return1 + P1.return2 .. -- returned to the grid -- '&v2=' .. P1.usageDelivered .. -- Gebruik deze als u wilt dat je de gegevens van je slimme meter wilt gebruiken voor gebruik -- '&v3=' .. P1.usage1 + P1.usage2 .. -- net values from your smart meter -- '&v4=' .. P1.usage .. -- Gebruik deze als je wilt wat er wordt berekend -- '&v3=' .. round(consumed.WhTotal,1) .. -- consumed -- '&v4=' .. round(consumed.actualWatt,1) .. -- Gebruik deze als je temperatuur en je voltage wilt uploaden '&v5=' .. round(temperature.temperature,1) .. -- '&v6=' .. voltage .. '&c1=1' return postdDataAsString end -- hieronder hoef je niets te wijzigen if item.isHTTPResponse then dz.log("Return from PVOutput ==>> " .. item.data,dz.LOG_FORCE) else PVSettings = { url = 'HTTPS://pvoutput.org/service/r2/addstatus.jsp', api = dz.variables('PVoutput_API').value, id = dz.variables('PVoutput_ID').value, } post2PVOutput(PVSettings, makepostData()) end end }
Deze sla je op als pvOutput zoals onderstaande foto:
Nu druk je op AAN en daarna op OPSLAAN.
Nu zou je script 1x per 10 minuten gaan uploaden.
Voor de gratis versie van pvoutput kan je minimaal om de 5 minuten uploaden.
Mits je dit verandert hebt.
check je log voor eventuele fouten
Bron voor het script: domoticz.com/forum/
Uitleg door Huizebruin.nl
Spelfouten, taalfouten of inhoudelijke fouten ontdekt?
Stuur dan een mailtje naar de auteur van dit artikel!
Tevreden met deze website?
Als je dit artikel met interesse hebt gelezen klik dan op Vind ik Leuk .
Voor u een kleine moeite voor mij een compliment.
Alvast Bedankt.
Als je feedback, tips of iets anders hebt,
Aarzel dan niet om hieronder een reactie achter te laten.
Script werkt goed hier, bedankt!
Maar nu upload ik alleen de bruto opbrengst via S0. Slimme meter uitsplitsen via deze handleiding is ook gelukt https://www.huizebruin.nl/domoticz/slimme-meter-p1-opsplitsen-naar-4-tellers-domoticz-met-lua/.
Maar nu wil ik ook mijn echte verbruik naar pvoutput eigenlijk, dan heb ik dus de variabele ‘consumption’ nodig in jouw script. Dit is verbruik p1 + opbrengst S0 – teruglevering p1 toch? Maar hoe en waar bereken ik dat, heb je dat ook ergens uitgelegd? Alvast bedankt!
Hallo John
Bedankt voor je reactie.
mooi dat het gelukt is
ik gebruik momenteel geen pvoutput meer.
omdat ik over ben gestapt naar home assistant.
Momenteel zo aangepast dat alleen de P1 geupload wordt. Voor de zon gebruik ik de Youless die ik tijdelijk uit geschakeld heb ivm onderstaande foutmelding waarvan ik dacht dat er te vaak geupload werd naar Pvoutput.
—–
2020-06-08 13:45:01.430 Status: dzVents: Info: Handling httpResponse-events for: “PVOutput”
2020-06-08 13:45:01.430 Status: dzVents: Info: PVOutput: —— Start internal script: Pvoutput_up: HTTPResponse: “PVOutput”
2020-06-08 13:45:01.431 Status: dzVents: !Info: PVOutput: Return from PVOutput ==>> Bad request 400: Invalid Time [null]
2020-06-08 13:45:01.431 Status: dzVents: Info: PVOutput: —— Finished Pvoutput_up
2020-06-08 13:45:01.431 Error: dzVents: Error: (3.0.9) PVOutput: HTTP/1.1 response: 400 ==>> Bad Request
Hallo Ad,
Als je het script van hierboven hebt overgenomen gaat hij eens per 10 minuten uploaden.
als gratis varriant meende ik dat je om de 5 minuten mocht uploaden naar hun. heb dus iets meer een buffer ingebouwd.
En hij verstuurd beide in 1 keer, lijkt meer een probleem richting de youless iets verkeerd stuurt.
onder andere vanwege deze lijn
(2020-06-08 13:45:01.431 Status: dzVents: !Info: PVOutput: Return from PVOutput ==>> Bad request 400: Invalid Time [null])
Hierop heb ik zowel de Youless als het opvragen van data van PVoutput stopgezet. Jammer genoeg dezelfde foutmelding:
2020-06-09 07:15:00.540 Status: dzVents: Info: PVOutput: —— Start internal script: Pvoutput_up:, trigger: “every 5 minutes”
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: Processing device-adapter for Power: P1 smart meter energy device adapter
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: P1 : 17501272;11256395;1594784;3834667;220;0
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: OpenURL: url = https://pvoutput.org/service/r2/addstatus.jsp
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: OpenURL: method = POST
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: OpenURL: post data = d=20200609&t=07:15&v3=28757667&v4=220&c1=1
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: OpenURL: headers = {[“X-Pvoutput-Apikey”]=”aangepast”, [“X-Pvoutput-SystemId”]=”XXXXX”}
2020-06-09 07:15:00.559 Status: dzVents: Debug: PVOutput: OpenURL: callback = PVOutput
2020-06-09 07:15:00.559 Status: dzVents: Info: PVOutput: —— Finished Pvoutput_up
2020-06-09 07:15:00.561 Status: EventSystem: Script event triggered: /home/pi/domoticz/dzVents/runtime/dzVents.lua
2020-06-09 07:15:02.211 Status: dzVents: Info: Handling httpResponse-events for: “PVOutput”
2020-06-09 07:15:02.211 Status: dzVents: Info: PVOutput: —— Start internal script: Pvoutput_up: HTTPResponse: “PVOutput”
2020-06-09 07:15:02.211 Status: dzVents: !Info: PVOutput: Return from PVOutput ==>> Bad request 400: Invalid Time [null]
2020-06-09 07:15:02.211 Status: dzVents: Info: PVOutput: —— Finished Pvoutput_up
2020-06-09 07:15:02.211 Error: dzVents: Error: (3.0.9) PVOutput: HTTP/1.1 response: 400 ==>> Bad Request
2020-06-09 07:15:06.018 (Energie) P1 Smart Meter (Power)
Het werkt, in je voorbeeld staan fouten!! In het script wat je download niet!
Hallo Ad,
voorbeeld script is nu bijgewerkt.
Bedankt voor de terug koppeling
Hoi Wobbe, allereerst reuze bedankt voor het script! Zojuist liep ik ook tegen hetzelfde probleem aan. De issue is dat het script op de “site” niet goed omgaat met de “&” tbv de upload URL parameters. Als je het script copy paste vanaf de site, dan komt er “&” ipv “&” te staan, waarna het uiteraard niet werkt. Anyway, HTML, scripttalen, enz. 🙂
Wellicht slimmer om het hele script weg te halen, en alleen ter download aan te bieden?
Nogmaals bedankt!
–Mark