Je wilt graag je slimme meter gegevens verdelen over 4 sensoren zodat je weet wat je Verbruik laag & hoog en natuurlijk je Teruglevering laag & hoog is . Nu kan je dit zelf doen maar dit kan je ook automatische uit laten voeren. Dit gaat met het volgende timer script geschreven in lua voor Domoticz vanaf versie v2020.1 werkt dit goed daaronder onbekend.
Update : 29/08/2020-/-v1.10: verbeteringen in tegengaan van pieken in verwerkt
Wat is dubbeltarief?
Het dubbeltarief bestaat uit een normaal tarief (verbruik hoog en teruglevering hoog) en een daltarief (verbruik laag en teruglevering laag). Het daltarief betaalt u ’s nachts, in het weekend en tijdens feestdagen. We noemen dit ook wel daluren.
U betaalt het normaal tarief op werkdagen van 7.00 tot 21.00 uur of 23.00 uur. In de ene regio stopt het hoge tarief om 21.00 uur, en in de andere regio om 23.00 uur. De netbeheerder bepaalt of de daluren om 21.00 uur of om 23.00 uur beginnen. Vraag uw netbeheerder hoe laat in uw regio het daltarief begint.

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 :
Virtuele tellers maken
Eerst maak je een nieuwe dummy aan (onder hardware), en hier maak je 4 sensoren aan vanaf die dummy zodat je altijd weet waar wat bij hoort. (en 2 stuks als je geen zonnepanelen hebt)

Maak 4 dummy sensoren met de namen tussen de (‘ *** ‘) met als type virtueel apparaat, teller incrementeel dit is belangrijk anders werkt het niet!!

Voorbeeld tekst staat hier onder
local usageLow = dz.devices('Verbruik Laag') -- Metergebruik laag, virtueel apparaat, teller incrementeel local usageHigh = dz.devices('Verbruik Hoog') -- Metergebruik Hoog, Virtueel apparaat, teller incrementeel local returnLow = dz.devices('Teruglevering Laag') -- Meter Return Low, Virtueel apparaat, teller incrementeel local returnHigh = dz.devices('Teruglevering Hoog') -- Meter Return High, Virtual device, Virtueel apparaat, teller incrementeel
De naam en sensor type moeten overeen komen anders werkt het niet .

Deze 4 sensoren zou je nu moeten krijgen onder het knopje overige.
De kans is groot dat de eerste dag je geen goede gegevens krijgt maar de dag erna zou het goed moeten zijn. De eerste gegevens krijg je pas nadat het script gedraaid heeft.

Het script en de behorende uitleg volgt hieronder:
Nu mag je weer naar instellingen gaan , daarna naar meer opties.
Daarna naar Gebeurtenissen.
En mag je op het plusje drukken. (plaatje is van pvoutput maar stappen zijn het zelfde)

Hier ga je naar DZEVENTS en dan Timer.
(dit zorgt er voor dat het script een aantal minuten gaat aftellen en dan de schakelaar om haalt en je een bericht via telegram krijgt wat er gebeurd)

En hier geef je aan welke gegevens je wilt gaan gebruiken, verander tussen de () welke IDX je wilt gaan gebruiken.
local P1 = dz.devices(1) -- Electra, P1 Smart Meter device (idx or "name") (required)
De naam en sensor type moeten overeen komen anders werkt het niet .
local usageLow = dz.devices('Verbruik Laag') -- Metergebruik laag, virtueel apparaat, teller incrementeel local usageHigh = dz.devices('Verbruik Hoog') -- Metergebruik Hoog, Virtueel apparaat, teller incrementeel local returnLow = dz.devices('Teruglevering Laag') -- Meter Return Low, Virtueel apparaat, teller incrementeel local returnHigh = dz.devices('Teruglevering Hoog') -- Meter Return High, Virtual device, Virtueel apparaat, teller incrementeel
Deze 4 sensoren zou je nu moeten krijgen onder het knopje overige, bij geen zonnepanelen 2.

Heb je geen zonnepanelen dan kan je die regels uitzetten met — ervoor te plaatsten.
-- local returnLow = dz.devices('Teruglevering Laag') -- Meter Return Laag, Virtueel apparaat, teller incrementeel -- local returnHigh = dz.devices('Teruglevering Hoog') -- Meter Return Hoog, Virtueel apparaat, teller incrementeel -- updateCounter(returnLow, P1.return1, lastP1.return1) -- updateCounter(returnHigh, P1.return2, lastP1.return2) -- lastP1.return1 = P1.return1 -- lastP1.return2 = P1.return2
[wpdm_package id=’6372′]
De Complete gebruikte code staat hieronder en na eigen instellingen veranderen.
Of alleen je p1 als je de namen hetzelfde hebt overgenomen van mijn voorbeelden.
Nu selecteer je onderstaande script en plakt deze er in :
--[[ dzVents script dzVents script time om P1 Smart Meter Elektriciteitswaarde te ontleden in afzonderlijke Meterstanden. Houd er rekening mee dat de teller van vandaag aanvankelijk tot de volgende dag bij de GUI een verkeerde waarde zal weergeven. Script gedownload van huizebruin.nl www.huizebruin.nl/domoticz/slimme-meter-(p1)-opsplitsen-naar-4-tellers-domoticz-met-lua/ 29/08/2020-/-v1.10: verbeteringen in tegengaan van pieken in verwerkt Te gebruiken voor domoticz versie >= V4.11305 ]] -- local fetchIntervalMins = 20 -- (Geheel) Minutenfrequentie van deze scriptuitvoering 1 = elke minuut, 10 = elke 10 minuten, enz.) Moet een van (1,2,3,4,5,6,10,12,15,20,30) zijn. local ScriptVersion = '1.10' -- domoticz > V2020.1 / dzVents >= 2.4.28 return { on = { timer = { 'every ' .. fetchIntervalMins .. ' minutes' } }, logging = { level = domoticz.LOG_DEBUG, -- Maak commentaar op deze regel om de instelling van dzVents global logging te overschrijven marker = 'Afzonderlijke Meterstanden '.. ScriptVersion }, data = { lastP1 = { initial = {} }}, execute = function(dz, item) -- Voeg apparaatnamen toe tussen aanhalingstekens of apparaat-idx zonder aanhalingstekens local P1 = dz.devices(1) -- Electra, P1 Smart Meter device (idx or "name") (required) --[[ Voer namen / idx in voor apparaten die je wilt onder deze commentaarregels Deze apparaten moeten worden gemaakt als nieuwe incrementele tellers. Script kan verkeerde waarden opleveren bij gebruik met bestaande die al waarden bevatten De resterende regels kunnen worden verwijderd of becommentarieerd ]]-- local usageLow = dz.devices('Verbruik Laag') -- Metergebruik laag, virtueel apparaat, teller incrementeel local usageHigh = dz.devices('Verbruik Hoog') -- Metergebruik Hoog, Virtueel apparaat, teller incrementeel local returnLow = dz.devices('Teruglevering Laag') -- Meter Return Laag, Virtueel apparaat, teller incrementeel local returnHigh = dz.devices('Teruglevering Hoog') -- Meter Return Hoog, Virtueel apparaat, teller incrementeel -- Onder deze regel zijn geen wijzigingen vereist --- lastP1 = dz.data.lastP1 local function updateCounter(dv, value, previousValue ) if not(dv) then return end if not(previousValue) then dz.log("Geen eerdere gegevens voor " .. dv.name .. " nog; deze run overslaan",dz.LOG_DEBUG) return end if (dv.counter ~=0 or dv.counter ~= nil) then value = value - previousValue end dv.updateCounter(value) dz.log("Increment " .. dv.name .. " with: " .. value,dz.LOG_DEBUG) end -- Update the device updateCounter(usageLow, P1.usage1, lastP1.usage1) updateCounter(usageHigh, P1.usage2, lastP1.usage2) updateCounter(returnLow, P1.return1, lastP1.return1) updateCounter(returnHigh, P1.return2, lastP1.return2) lastP1.usage1 = P1.usage1 lastP1.usage2 = P1.usage2 lastP1.return1 = P1.return1 lastP1.return2 = P1.return2 end }
Deze sla je op als Afzonderlijke Meterstanden
Nu druk je op AAN en daarna op OPSLAAN.

Ik heb hem om de 20 minuten draaien omdat hij van mij niet elke minuut ververst hoeft te worden scheelt ook meer in schrijven van de sd kaart, als ik aan het einde van de dag maar een melding krijg op telegram met de laatste gegevens. (script komt zeer binnenkort online)
( voor de test of het werkt kan je de tijd aanpassen naar een paar minuten )
Mits je dit verandert hebt.
check je log voor eventuele fouten
Nee deze werkt niet met de npn sensor.
Maar je zou deze kunnen proberen:
TZT TL-W5MC1Â Â https://s.click.aliexpress.com/e/_DELCdTl
of
TCRT5000 Infrarood lijn detectie https://opencircuit.nl/product/tcrt5000-infrarood-lijn-detectie-module
Vanaf vandaag ook leverbaar: de p1 slimme meter kabel . Deze kabel heeft een ingebouwde FT232RL chip, waarmee je bijna alle slimme meters kan uitlezen. De RJ12 (6p6C) kabel kan direct op de slimme meter worden aangesloten, waardoor deze kan worden uitgelezen met bijvoorbeeld Domoticz. Maar er zijn uiteraard nog veel meer opties. De lengte van de kabel is 1,80 meter.
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.
ik had het script niet goed geplakt.
Bedankt voor de snelle reactie
ik had iets over het hoofd gezien nu is het opgelost.
Alleen de waardes kloppen niet helemaal. zie afbeelding.
[IMG]https://www.mupload.nl/img/ye8zy0iez8o.png[/IMG]
Hallo Peter,
Ik werk nu een jaar of 7 met Domoticz , maar nu een kleine 3 maand met het programmeren van Lua / dzvents.
Dit is voor mij ook nog redelijk nieuw.
Standaard loopt het script eens in de 20 minuten.
er zit inderdaad iets een verschil in met de kwh’s.
Zal me nog iets verder gaan verdiepen in deze scripts
Handig Script!,
Kom zelf net kijken in de wereld van domoticz, en dzvents.
Ik heb het script werkend, en de output tellers lijken in orde, maar ik zie toch iets geks.
Als ik het script laat draaien op het moment dat er een wijziging plaats vind op het P1 device dan worden uiteraard de tellers hoog of laag bijgewerkt afhankelijk van de tijd (hier is dat 23:00) Wat ik eigenlijk ook zou verwachten is dat het aantal Kwh (hoog of laag) gelijk zou zijn aan het aantal Watt wat de standaard teller aangeeft. Maar nu zit daar toch een aanzienlijk verschil in.
Alle tellers en het P1 device worden gelijktijdig bijgewerkt, ongeveer iedere seconde.
Enig idee?
Hallo ruud,
Heb je alle stappen doorlopen ?
en de complete code geplaatst omdat je een fout krijgt op regel 1.
Heel mooi script maar in de log krijg ik deze error.
2020-06-09 10:17:42.969 Error: dzVents: Error: (3.0.2) …dzVents/generated_scripts/Afzonderlijke Meterstanden.lua:1: attempt to index a nil value (global ‘dz’)
heb je enig idee waar dit aan ligt?
Hallo Lars,
Mooi dat het werkt Lars,
heb je de notificaties ook al werkend?
Er komt morgen een script online waarmee je ineens een hele rij krijgt plus de info
Leuk scriptje. Draait goed. Dank je.
Script geïnstalleerd! Nu even een dag laten draaien voor de juiste waardes. Nu via notificaties een melding aangemaakt voor Telegram.