¯\_(ツ)_/¯
Dat is een standaard device van mijn P1 meter: (P1 Smart Meter USB)M.v.Veelen schreef op vrijdag 16 mei 2025 @ 12:11:
Dat is wel zo ongeveer wat ik bedoel. Kun je delen hoe je dit hebt gemaakt?
/f/image/QCbgO0OdbYadpN7KiRIN1zPe.png?f=fotoalbum_large)
Daar heb ik dus zelf bijzonder weinig voor hoeven doen.
/f/image/QEQ5nSV0BaGeHwPBY8HA7Ixt.png?f=fotoalbum_large)
[ Voor 26% gewijzigd door B@rt_d@_M@n op 16-05-2025 12:34 ]
¯\_(ツ)_/¯
Zet hem eens op het Dashboard (markeren als favoriet), dan ziet die er dus zo uit:M.v.Veelen schreef op vrijdag 16 mei 2025 @ 12:42:
Ja, dat is het device, maar het ziet er toch echt anders uit.
:strip_exif()/f/image/T4dHpcWGNorlgEJSkPw8lbMQ.png?f=user_large)
Onder tabblad overige ziet hij er bij mij zo uit:
:strip_exif()/f/image/LQEMEgmUgA13Bh28pjPY8NGV.png?f=user_large)
[ Voor 19% gewijzigd door rens-br op 16-05-2025 12:54 ]
Ik snap de vraag niet helemaal.M.v.Veelen schreef op vrijdag 16 mei 2025 @ 11:03:
Is er iets te bedenken dat in 1 (custom) device kan laten zien of er wordt teruggeleverd of juist verbruikt, misschien zelfs met tekst en de waardes?
Ben zelf handig genoeg om te weten wanneer de zonnepanelen zoveel terugleveren, dat ik kan inschatten dat juist nu de wasmachine moet draaien, de auto opgeladen kan worden, enz. enz. Maar zou het voor de WAF wat duidelijker willen maken in de vorm van een device op het (favorieten) dashboard.
Kijk, als de waarden zo zijn dat er meer opbrengst is door de zonnepanelen, dan zie je bij "Terugleveren" een positief getal. Maar nu de zon even achter een wolkje is verdwenen, zie je dat daar een 0 staat terwijl ik daar dan liever een - voor zie staan en zelfs, als het in een text-device kan, dat de tekst verandert in " Verbruik" of zoiets.
Kan me niet voorstellen dat ik de enige ben die het voor de vrouw wat inzichtelijker wil maken, misschien zijn er al oplossingen voor die ik nog niet heb kunnen vinden?
[Afbeelding]
Op device Elektra staat een waarde.
Bij een positieve waarde wordt vermogen van het net gehaald.
Bij een negatieve waarde wordt het overschot van de zonnepanelen aan het net geleverd.
Als alternatief:
Indien je een P1-meter van Homewizard hebt dan kan je dit ook zien op de app of desnoods op extern display..
Als je perse alles in één device wilt dan zou je een Virtual Sensor kunnen maken met Sensor Type Text.
De virtuele sensor kan je vullen met een Dzvents script gebaseerd op de info uit Elektra aangevuld met je eigen tekst. De aanvullende tekst in feite redundant.
Ik denk dat @M.v.Veelen een device wilt hebben zonder ubsnuk of wat dan ook, waaraan zijn vrouw kan zien dat de elektriciteit productie momenteel negatief is. Negatief = wasmachine aan.
Wat @rens-br zegt. Dus de actuele status.rens-br schreef op vrijdag 16 mei 2025 @ 12:56:
[...]
Ik denk dat @M.v.Veelen een device wilt hebben zonder ubsnuk of wat dan ook, waaraan zijn vrouw kan zien dat de elektriciteit productie momenteel negatief is. Negatief = wasmachine aan.
Ik heb het device op het dashboard gezet en dan ziet het er wel anders uit, maar toont het niet de actuele status maar opgeteld voor de hele dag.
:strip_exif()/f/image/hNm9Mwrmab0s58QoYvnddGNf.png?f=user_large)
¯\_(ツ)_/¯
Dat doet de mijne ook toch? Het verbruik / teruglevering (in jou geval 360W) is waar je naar moet kijken toch?M.v.Veelen schreef op vrijdag 16 mei 2025 @ 12:58:
[...]
Wat @rens-br zegt. Dus de actuele status.
Ik heb het device op het dashboard gezet en dan ziet het er wel anders uit, maar toont het niet de actuele status maar opgeteld voor de hele dag.
[Afbeelding]
:strip_exif()/f/image/HeOH27lAKEXeYquu7PC5i7Kt.png?f=user_large)
Dat is inderdaad al duidelijker. En toch wil ik eens kijken of het mogelijk is om een Text device te updaten met bepaalde text en values.
Thanks.
¯\_(ツ)_/¯
Dat kan, custom sensor en tekst vermelden via dz-vents.M.v.Veelen schreef op vrijdag 16 mei 2025 @ 13:26:
Oh, wacht even, ik had 'm nog niet in de min zien gaan. Dat doet ie nu wel:
[Afbeelding]
Dat is inderdaad al duidelijker. En toch wil ik eens kijken of het mogelijk is om een Text device te updaten met bepaalde text en values.
Thanks.
:strip_exif()/f/image/yQNE8ryvEa4FG2mr9siSmZTz.jpg?f=fotoalbum_large)
:strip_exif()/f/image/mf5C3sa8A7ZuCuBSZkPNiz0j.jpg?f=fotoalbum_large)
Ter informatie:M.v.Veelen schreef op vrijdag 16 mei 2025 @ 13:26:
Oh, wacht even, ik had 'm nog niet in de min zien gaan. Dat doet ie nu wel:
[Afbeelding]
Dat is inderdaad al duidelijker. En toch wil ik eens kijken of het mogelijk is om een Text device te updaten met bepaalde text en values.
Thanks.
Vermogen wordt uitgedrukt Watt [W].
Bij de P1-meter is dit het actuele vermogen.
Energie wordt uitgedrukt in Joules [J] of Kilowattuur [kWh].
3.6 MJ = 1kWh.
Bij de P1-meter is dit de energie dat vandaag is verbruikt en/of is teruggeleverd aan het net.
Het verschil tussen vermogen en energie is de factor tijd.
E = P * t
[ Voor 5% gewijzigd door Lawrentz op 17-05-2025 11:49 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| commandArray = {} local p1Name = 'Elektra' local textDeviceIdx = '2708' if devicechanged[p1Name] then local s = otherdevices_svalues[p1Name] print("Raw sValue: " .. tostring(s)) local _, _, _, _, actualUsage, actualReturn = s:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)") if actualUsage and actualReturn then local usageNow = tonumber(actualUsage) local returnNow = tonumber(actualReturn) local text = nil if returnNow > 0 then text = string.format("Teruglevering nu: %.0f Watt \n\n", returnNow) elseif usageNow > 0 then text = string.format("Verbruik nu: %.0f Watt \n\n", usageNow) end if text then text = text:gsub("|", "/") -- Sanitize print("Updating text device: " .. text) commandArray[#commandArray + 1] = { ['UpdateDevice'] = textDeviceIdx .. '|0|' .. text } else print("No grid flow detected — not updating.") end else print("⚠ Failed to parse usage/return values.") end end return commandArray |
Met als resultaat dat de tekst dus verandert als er wordt verbruikt of als er wordt teruggeleverd. Er wordt nu dus teruggeleverd:
:strip_exif()/f/image/6nRMXcQ6jXvPNnKq1Yy5TmEc.png?f=user_large)
¯\_(ツ)_/¯
Goed om te vernemen dat het is gelukt.M.v.Veelen schreef op zaterdag 24 mei 2025 @ 11:56:
Ik heb nu dit LUA script:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 commandArray = {} local p1Name = 'Elektra' local textDeviceIdx = '2708' if devicechanged[p1Name] then local s = otherdevices_svalues[p1Name] print("Raw sValue: " .. tostring(s)) local _, _, _, _, actualUsage, actualReturn = s:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)") if actualUsage and actualReturn then local usageNow = tonumber(actualUsage) local returnNow = tonumber(actualReturn) local text = nil if returnNow > 0 then text = string.format("Teruglevering nu: %.0f Watt \n\n", returnNow) elseif usageNow > 0 then text = string.format("Verbruik nu: %.0f Watt \n\n", usageNow) end if text then text = text:gsub("|", "/") -- Sanitize print("Updating text device: " .. text) commandArray[#commandArray + 1] = { ['UpdateDevice'] = textDeviceIdx .. '|0|' .. text } else print("No grid flow detected — not updating.") end else print("⚠ Failed to parse usage/return values.") end end return commandArray
Met als resultaat dat de tekst dus verandert als er wordt verbruikt of als er wordt teruggeleverd. Er wordt nu dus teruggeleverd:
[Afbeelding]
Ik zou alleen Power Now gebruiken ipv Energy Now.
Het gaat hier over vermogen en niet om energie.
Zie mijn post van vrijdag 16 mei 2025 om 14:53 uur.
:strip_exif()/f/image/glS81w9k43Zxw2sdWm41gB8t.png?f=user_large)
[ Voor 32% gewijzigd door M.v.Veelen op 25-05-2025 14:10 ]
¯\_(ツ)_/¯
2025-06-04 16:17:40.453 Error: P1 Slimme meter: Power usage to high/low! Usage: 8687 Watt. Max Usage configured: 6000. (NodeID: 0x0000, ChildID: 0x0008, SID: Actual Delivery (L1 + L2 + L3))
Bij hardware kan ik niet een maximum usage instellen.
herkent iemand dit ?
15kW solar, 800 Ltr hygiëneboiler, 80 Heatpipes, 2 * L/L, Pana monoblock 5F en 5J, HR++/+++ , gasloos sinds Feb 2015
Ik heb zelf Domoticz in het engels.hannibal2206 schreef op woensdag 4 juni 2025 @ 16:41:
Ik gebruik v 2024.4 en krijg dit soort meldingen in de log
2025-06-04 16:17:40.453 Error: P1 Slimme meter: Power usage to high/low! Usage: 8687 Watt. Max Usage configured: 6000. (NodeID: 0x0000, ChildID: 0x0008, SID: Actual Delivery (L1 + L2 + L3))
Bij hardware kan ik niet een maximum usage instellen.
herkent iemand dit ?
Deze setting is te vinden in: Setup/Settings/Meter-Counters/Max-Power
[ Voor 3% gewijzigd door ed1703 op 04-06-2025 16:53 ]
Aanvullend op de voorgaande post.hannibal2206 schreef op woensdag 4 juni 2025 @ 16:41:
Ik gebruik v 2024.4 en krijg dit soort meldingen in de log
2025-06-04 16:17:40.453 Error: P1 Slimme meter: Power usage to high/low! Usage: 8687 Watt. Max Usage configured: 6000. (NodeID: 0x0000, ChildID: 0x0008, SID: Actual Delivery (L1 + L2 + L3))
Bij hardware kan ik niet een maximum usage instellen.
herkent iemand dit ?
Het betreft een warning waarbij je verbruik boven de ingestelde waarde uitkomt.
Denk aan het gelijktijdig gebruik van een kookplaat, oven, waterkoker, stofzuiger en/of of EV.
Ik krijg de melding ook af en toe en vind het een prettige melding.
ik heb daar dit staaned1703 schreef op woensdag 4 juni 2025 @ 16:52:
[...]
Ik heb zelf Domoticz in het engels.
Deze setting is te vinden in: Setup/Settings/Meter-Counters/Max-Power
:strip_exif()/f/image/NmYmXRu7hTSzZuO8miafjuQU.jpg?f=fotoalbum_large)
15kW solar, 800 Ltr hygiëneboiler, 80 Heatpipes, 2 * L/L, Pana monoblock 5F en 5J, HR++/+++ , gasloos sinds Feb 2015
Is het ook wel. Maar 6000W is nogal laag als je een 3 fase aansluiting hebt. Daar ga ik met mijn ev laden (11kw) al ruim overheen namelijk. 17250W kan je maximaal uit een 3 fase aansluiting trekken en 8050W uit 1 fase. Uitgaande van afgezekerd op 25A/35A.Lawrentz schreef op woensdag 4 juni 2025 @ 18:14:
[...]
Aanvullend op de voorgaande post.
Het betreft een warning waarbij je verbruik boven de ingestelde waarde uitkomt.
Denk aan het gelijktijdig gebruik van een kookplaat, oven, waterkoker, stofzuiger en/of of EV.
Ik krijg de melding ook af en toe en vind het een prettige melding.
Heb nu even 1000 daar ingevuld, kijken wat er morgen gebeurt.rens-br schreef op woensdag 4 juni 2025 @ 19:23:
[...]
De max power staat bij jou op 0. Denk dat hij dat ook niet tof vind.
Is vooral bij teruglevering dacht ik, niet bij afname.
En, staat in de errorlog, niet bij info ..
15kW solar, 800 Ltr hygiëneboiler, 80 Heatpipes, 2 * L/L, Pana monoblock 5F en 5J, HR++/+++ , gasloos sinds Feb 2015
6kW laag voor een 3-fase aansluiting?rens-br schreef op woensdag 4 juni 2025 @ 19:20:
[...]
Is het ook wel. Maar 6000W is nogal laag als je een 3 fase aansluiting hebt. Daar ga ik met mijn ev laden (11kw) al ruim overheen namelijk. 17250W kan je maximaal uit een 3 fase aansluiting trekken en 8050W uit 1 fase. Uitgaande van afgezekerd op 25A/35A.
Dit is afhankelijk van de situatie, en geldt voor jouw situatie en voor andere eigenaren met een eigen laadpaal.
Ik heb ook een 3-fase aansluiting zonder EV en kom een paar keer per jaar boven de ingestelde waarde.
Inmiddels worden nieuwe aansluitingen opgeleverd met (minimaal) 3x25A waardoor er veel aansluitingen zijn zonder EV. En die aansluitingen komen ook niet vaak boven de 5 of 6kW uit.
Mee eens. Het hangt zeker van de situatie af. Maar ook zonder EV kwam ik geregeld erboven uit hoor. Kookplaat, oven, waterkoker tegelijk aan en je zit er zo overheen.Lawrentz schreef op woensdag 4 juni 2025 @ 20:45:
[...]
6kW laag voor een 3-fase aansluiting?
Dit is afhankelijk van de situatie, en geldt voor jouw situatie en voor andere eigenaren met een eigen laadpaal.
Ik heb ook een 3-fase aansluiting zonder EV en kom een paar keer per jaar boven de ingestelde waarde.
Inmiddels worden nieuwe aansluitingen opgeleverd met (minimaal) 3x25A waardoor er veel aansluitingen zijn zonder EV. En die aansluitingen komen ook niet vaak boven de 5 of 6kW uit.
Ik denk dat ik je niet begrijp, maar 3x25 is een prima aansluiting voor een EV toch?Lawrentz schreef op woensdag 4 juni 2025 @ 20:45:
[...]
6kW laag voor een 3-fase aansluiting?
Dit is afhankelijk van de situatie, en geldt voor jouw situatie en voor andere eigenaren met een eigen laadpaal.
Ik heb ook een 3-fase aansluiting zonder EV en kom een paar keer per jaar boven de ingestelde waarde.
Inmiddels worden nieuwe aansluitingen opgeleverd met (minimaal) 3x25A waardoor er veel aansluitingen zijn zonder EV. En die aansluitingen komen ook niet vaak boven de 5 of 6kW uit.
Ik reageerde op een post waarin stond dat 6000W is nogal laag als je een 3 fase aansluiting hebt.janne_nl schreef op donderdag 5 juni 2025 @ 12:43:
[...]
Ik denk dat ik je niet begrijp, maar 3x25 is een prima aansluiting voor een EV toch?
En daar ben ik het niet mee eens omdat dit afhankelijk is van de situatie en het gebruik.
Ik heb zelf een 3 fase aansluiting en kom een paar keer per jaar boven de 6kW uit.
Als er had gestaan dat 6000W is nogal laag als je een EV hebt dan snap ik het wel maar dat is niet waar de oorspronkelijke vraag over ging.
Verder laat deze vraagstelling voor wat het is want we beginnen dit draadje te vervuilen met een non-discussie dat niet over Domoticz gaat.
Zelfs een kookplaat haalt maar zelden tot nooit zijn maximum.
cd domoticz
./updatebeta
¯\_(ツ)_/¯
https://www.gamma.nl/asso...ekker-wifi-ip44/p/B152727
Nu is deze dus alleen in te stellen via een Qnect-app en kan ik die niet flashen met Tasmota ofzo.
Ik zou graag een slimme 16A buiten-stekker willen aansturen met Domoticz. Misschien gebruik ik niet de goede zoeksleutels, maar hopelijk weet iemand hier eentje die is te integreren in Domoticz.
Deze misschien?
https://www.smarthomekoni...MyuJUk8mgKmMaAhS0EALw_wcB
[ Voor 29% gewijzigd door M.v.Veelen op 13-06-2025 13:01 ]
¯\_(ツ)_/¯
Mocht je geen Zigbee hebben, dan is een Shelly Plug ook nog te overwegen. Ik zie echter nu dat die maar gaan tot 2500W, dus vallen daarmee denk ik ook af. 'Vroeger' had Shelly een grotere plug die tot 3650W ging.
Hoe stop je normaal de sessie dan? Mijn granny charger heeft geen knop om het aan of uit te zetten. Dus als ik de stekker eruit trek is dat naar mijn idee precies hetzelfde. En dus net zo goed / slecht voor de auto.janne_nl schreef op vrijdag 13 juni 2025 @ 14:37:
Ik heb dat een hele tijd gedaan toen ik de granny lader nog gebruikte. Ik begreep later dat het op deze manier bruut de spanning naar de granny stoppen, niet noodzakelijk goed is voor de apparatuur in de auto.
Wat de relais in zo'n stekker wel minder tof vind is op vol vermogen uitgeschakeld worden. Op gegeven moment blijft de relais dan ook plakken en werkt je plug niet meer.
Ik schakelde de stroom vooral uit als de wasmachine en de auto tegelijk bezig waren. Dat kwam niet heel veel voor.
Ik heb meerdere schakelaars die vermogen schakelen (max 10A). Daar heb ik nooit last mee gehad.
Relais blijven vooral hangen als ze heel lang achter elkaar bekrachtigd zijn geworden en al jaren oud zijn. Tenzij de kwaliteit minder is natuurlijk.
Ik heb Zigbee en die BlitzWolf zijn precies wat ik zoek, dankjewel voor de tip.rens-br schreef op vrijdag 13 juni 2025 @ 13:29:
@M.v.Veelen heb je iets van Zigbee draaien? Want ik gebruik zelf de stekkers van Blitzwolf hiervoor, ook die van Ikea hebben tegenwoordig power meeting.
Mocht je geen Zigbee hebben, dan is een Shelly Plug ook nog te overwegen. Ik zie echter nu dat die maar gaan tot 2500W, dus vallen daarmee denk ik ook af. 'Vroeger' had Shelly een grotere plug die tot 3650W ging.
Ik heb dit ruim een jaar gedaan nu met m'n Tucson en ik zie het probleem van het plotseling stoppen met laden niet eigenlijk. "plakken" van het relais? Lijkt me dat als je zulke switches op de markt brengt, dat ze daar wel rekening mee hebben gehouden.
¯\_(ツ)_/¯
Welke zijn dat dan? Gaan die ook tot >= 16A ?janne_nl schreef op maandag 23 juni 2025 @ 08:13:
Alle relais gaan uiteindelijk plakken. Ik gebruik de zigbee schakelaars van Robbshop, werken ook prima
¯\_(ツ)_/¯
Ook wel afhankelijk van hoe lang ze bekrachtigd zijn. Een relais dat 90% van zijn tijd bekrachtigd is zal sneller 'plakken' dan een relais dat maar kort bekrachtigd is steeds.
Het probleem met het afschakelen van de Granny charger is niet de charger, maar meer de auto die niet te tijd krijgt (al is het een paar ms) om het laden uit te schakelen.
¯\_(ツ)_/¯
[ Voor 103% gewijzigd door Opperhoof op 23-06-2025 09:20 ]
De buiten had ik gemist. Bij mij zitten ze onder een afdak en nooit in de regen.M.v.Veelen schreef op maandag 23 juni 2025 @ 08:32:
Ik zie diverse schakelaars, maar niet eentje met Zigbee protocol, 16A die ook geschikt is voor buiten. En dat is nu juist het probleem. Qnect schakelaar van de Gamma heeft dit wel, maar is niet met Zigbee protocol. Die schakelaar moet moeilijk-moeilijk via Smart Life App als ik die wil kunnen integreren in Domoticz. Pogingen gewaagd, maar nog niet gelukt.
Je zit in het verkeerde topic, dit is het topic voor Domoticz.Opperhoof schreef op maandag 23 juni 2025 @ 08:48:
Ik heb onze schuurdeur voorzien van een Aqala U200 deurslot. Deze wil ik natuurlijk ook met HA aansturen. Ik heb nog helemaal geen Thread/Matter hubs/(Open)Thread border routers in huis. Dus ik heb nu de HA Skyconnect gekocht. Mijn HA server staat op zolder en is middels een ethernet kabel aangesloten op mijn thuisnetwerk, welke goede wifi dekking heeft in de schuur.
Ik denk te hebben begrepen dat als ik in mijn netwerk een Thread border router heb, Matter ondersteunende apparaten over de wifi band verbinding kunnen maken. Klopt dat? Of moet ik de HA server verplaatsen naar de schuur, zodat het slot fysiek in de buurt is van de HA server met de Skyconnect dongle?
Knielen schreef op maandag 23 juni 2025 @ 09:18:
[...]
Je zit in het verkeerde topic, dit is het topic voor Domoticz.

Bij mij helaas wel. Ik zou dan zoiets kunnen overwegen, al vind ik het geen fijn gevoel ivm vocht dat toch binnen kan dringen:janne_nl schreef op maandag 23 juni 2025 @ 09:08:
[...]
De buiten had ik gemist. Bij mij zitten ze onder een afdak en nooit in de regen.
:no_upscale():strip_icc():strip_exif()/f/image/YpQpP9qM2SS1OGb8RJifFZeD.jpg?f=user_large)
¯\_(ツ)_/¯
Mocht je echt een tussenstekker willen hebben, hier een aantal zigbee tussenstekkers voor buiten, in de database van Z2M:
https://www.zigbee2mqtt.io/devices/4058075729322.html
https://www.zigbee2mqtt.io/devices/HG06619.html
https://www.zigbee2mqtt.io/devices/4099854293276.html
https://www.zigbee2mqtt.io/devices/AC26940_AC31266.html
https://www.zigbee2mqtt.io/devices/A4Z.html
https://www.zigbee2mqtt.io/devices/ZBPO130FWT.html
Je moet even zelf kijken of ze 16A aankunnen. De eerste heb ik voor je opgezocht en die is 16A: Ledvance compact outdoor plug EU.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Die heb ik ook, werkt prima, maar die meet dan weer geen spanning/stroom.Gizz schreef op maandag 23 juni 2025 @ 09:49:
Je moet even zelf kijken of ze 16A aankunnen. De eerste heb ik voor je opgezocht en die is 16A: Ledvance compact outdoor plug EU.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Edit: besteld :-)
Edit 2: binnen. Toegevoegd via de HUE bridge en in Domoticz een timer ingesteld. Ik heb de versie met stroommeting genomen, alleen zie ik dat nog niet terug.
[ Voor 40% gewijzigd door M.v.Veelen op 24-06-2025 14:07 ]
¯\_(ツ)_/¯
Dank, deze manier krijg je wel een melding. En die was dat ik geen OpenSSL 3 geïnstallleerd had. Ik nu de upgrade naar Debian 12 gedaan en nu werkt de update wel.M.v.Veelen schreef op zaterdag 7 juni 2025 @ 20:42:
Ik heb dit ook een keer gehad en sindsdien doe ik het via de CLI
cd domoticz
./updatebeta
Ik heb een script om elke maand mijn meterstanden uit te lezen en het script van mindergas.
Nu draaide deze nog op python2 en heb ze inmiddels omgezet naar python 3.
Echter als ik http://localhost:8080 gebruik krijg ik een error 401 unauthorized.
Ik heb mijn ip-adres van mijn netwerk toegevoegd aan trusten networks, maar blijft deze melding 401 houden.
script welke ik gebruik is het volgende:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #import sys import json import urllib.request, urllib.parse, urllib.error #import re #import time #import datetime class Domoticz(): def __init__(self, url): self.baseurl = url def __execute__(self, url): req = urllib.request.Request(url) return urllib.request.urlopen(req, timeout=5) def get_device(self, xid): """ Get the Domoticz device information. """ url = "%s/json.htm?type=devices&rid=%s" % (self.baseurl, xid) data = json.load(self.__execute__(url)) return data def get_el_values(url, device_id): """ Get electricity meter readings. """ device_data = Domoticz(url).get_device(device_id) data = device_data['result'][0]['Data'] ex = re.compile('^([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+)$') groups = ex.match(data).group meter_high = float(groups(1)) / 1000 meter_low = float(groups(2)) / 1000 out_high = float(groups(3)) / 1000 out_low = float(groups(4)) / 1000 actual_in = float(groups(5)) / 1000 actual_out = float(groups(6)) / 1000 return meter_high, meter_low, out_high, out_low, actual_in, actual_out def get_gas_values(url, device_id): """ Get gasmeter reading. """ device_data = Domoticz(url).get_device(device_id) data = device_data['result'][0]['Data'] ex = re.compile('^([0-9\.]+)$') groups = ex.match(data).group gasstand = float(groups(1)) #/ 1000 return gasstand # example usage domoticzurl = "http://localhost:8080" domoticzdeviceid_el = 1 domoticzdeviceid_gas = 2 ElectricityRateUsedPeak, ElectricityRateUsedOffPeak, ElectricityRateGeneratedPeak, ElectricityRateGeneratedOffPeak, ElectricityTotalUsed, ElectricityCurrentRateOut = get_el_values(domoticzurl, domoticzdeviceid_el) #ElectricityRateUsedOffPeak, ElectricityRateUsedPeak, ElectricityRateGeneratedPeak = get_el_values(domoticzurl, domoticzdeviceid_el) GasMeterReading = get_gas_values(domoticzurl, domoticzdeviceid_gas) |
[ Voor 66% gewijzigd door MdO82 op 30-06-2025 18:52 ]
2250 WP Zuid PVoutput
[ Voor 73% gewijzigd door WillemD61 op 30-06-2025 21:25 ]
Getest en krijg dan weer een 404 foutmeldingWillemD61 schreef op maandag 30 juni 2025 @ 21:24:
En als je echt het ip adres van de domoticz server gebruikt?

2250 WP Zuid PVoutput
Als ik het zo lees is dit een Python vraagstuk en niet een Dz vraagstuk.MdO82 schreef op maandag 30 juni 2025 @ 18:50:
Ik had mijn post geplaatst in Raspberry Pi: Ervaringen en Discussie - deel 2 omdat ik in eerste instantie vermoedde dat het probleem op een andere plek zat.
Ik heb een script om elke maand mijn meterstanden uit te lezen en het script van mindergas.
Nu draaide deze nog op python2 en heb ze inmiddels omgezet naar python 3.
Echter als ik http://localhost:8080 gebruik krijg ik een error 401 unauthorized.
Ik heb mijn ip-adres van mijn netwerk toegevoegd aan trusten networks, maar blijft deze melding 401 houden.
script welke ik gebruik is het volgende:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 #import sys import json import urllib.request, urllib.parse, urllib.error #import re #import time #import datetime class Domoticz(): def __init__(self, url): self.baseurl = url def __execute__(self, url): req = urllib.request.Request(url) return urllib.request.urlopen(req, timeout=5) def get_device(self, xid): """ Get the Domoticz device information. """ url = "%s/json.htm?type=devices&rid=%s" % (self.baseurl, xid) data = json.load(self.__execute__(url)) return data def get_el_values(url, device_id): """ Get electricity meter readings. """ device_data = Domoticz(url).get_device(device_id) data = device_data['result'][0]['Data'] ex = re.compile('^([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+);([0-9\.]+)$') groups = ex.match(data).group meter_high = float(groups(1)) / 1000 meter_low = float(groups(2)) / 1000 out_high = float(groups(3)) / 1000 out_low = float(groups(4)) / 1000 actual_in = float(groups(5)) / 1000 actual_out = float(groups(6)) / 1000 return meter_high, meter_low, out_high, out_low, actual_in, actual_out def get_gas_values(url, device_id): """ Get gasmeter reading. """ device_data = Domoticz(url).get_device(device_id) data = device_data['result'][0]['Data'] ex = re.compile('^([0-9\.]+)$') groups = ex.match(data).group gasstand = float(groups(1)) #/ 1000 return gasstand # example usage domoticzurl = "http://localhost:8080" domoticzdeviceid_el = 1 domoticzdeviceid_gas = 2 ElectricityRateUsedPeak, ElectricityRateUsedOffPeak, ElectricityRateGeneratedPeak, ElectricityRateGeneratedOffPeak, ElectricityTotalUsed, ElectricityCurrentRateOut = get_el_values(domoticzurl, domoticzdeviceid_el) #ElectricityRateUsedOffPeak, ElectricityRateUsedPeak, ElectricityRateGeneratedPeak = get_el_values(domoticzurl, domoticzdeviceid_el) GasMeterReading = get_gas_values(domoticzurl, domoticzdeviceid_gas)
Klopt mijn verondersteling?
Je kan wellicht gelijk hebben.Lawrentz schreef op dinsdag 1 juli 2025 @ 08:02:
[...]
Als ik het zo lees is dit een Python vraagstuk en niet een Dz vraagstuk.
Klopt mijn verondersteling?
Maar omdat ik schijnbaar geen toegang krijg zocht ik het binnen Dz.
Euvel is ontstaan sinds 1 juni, maar kan er geen duidelijkheid in krijgen waarom dit nu ineens speelt.
Ik veronderstel dat er een instelling/autorisaties niet klopt binnen Dz, maar kan er natuurlijk totaal naast zitten
2250 WP Zuid PVoutput
1
2
3
4
5
6
7
| def get_device(self, xid): """ Get the Domoticz device information. """ url = "%s/json.htm?type=devices&rid=%s" % (self.baseurl, xid) data = json.load(self.__execute__(url)) return data |
type=devices?
Weet natuurlijk niet welke versie je draait.Warning Stable 2023.2 (and newer)
For users using API calls from outside Domoticz there has been some changes in API calls. They now always should be of the form /json.htm?type=command¶m=**command**
For example
/json.htm?type=graph will be /json.htm?type=command¶m=graph
/json.htm?type=devices will be /json.htm?type=command¶m=getdevices
More info in Forum topic https://forum.domoticz.com/viewtopic.php?p=303581#p303581
The following old RType commands will keep working but will give a deprecation warning eg
[WebServer] Deprecated RType (devices) for API request. Handled via fallback (getdevices), please use correct API Command! (IP nnn.nnn.nnn.nnn)
http://localhost:8080/json.htm?type=command¶m=getdevices&rid=%s
en niet
http://localhost:8080/json.htm?type=devices&rid=%s
en je moet ook "import re" weer actief maken.
Ik denk dat je naast een Python upgrade ook een Domoticz upgrade hebt gedaan. Daarom moet je nu die nieuwe url gebruiken.
[ Voor 37% gewijzigd door WillemD61 op 01-07-2025 11:01 ]
Probeer het Python script eens buiten Dz om.MdO82 schreef op dinsdag 1 juli 2025 @ 09:41:
[...]
Je kan wellicht gelijk hebben.
Maar omdat ik schijnbaar geen toegang krijg zocht ik het binnen Dz.
Euvel is ontstaan sinds 1 juni, maar kan er geen duidelijkheid in krijgen waarom dit nu ineens speelt.
Ik veronderstel dat er een instelling/autorisaties niet klopt binnen Dz, maar kan er natuurlijk totaal naast zitten
Wellicht dat je nadere inzichten krijgt.
Inderdaad, als je gewoon de url naar je browser kopieert kom je tot de conclusie dat je de url moet aanpassen zoals hierboven aangegeven. (met %s vervangen door de device id van je device, b.v. 1)Lawrentz schreef op dinsdag 1 juli 2025 @ 11:42:
[...]
Probeer het Python script eens buiten Dz om.
Wellicht dat je nadere inzichten krijgt.
[ Voor 7% gewijzigd door WillemD61 op 01-07-2025 12:40 ]

[ Voor 85% gewijzigd door lnrdnl op 01-07-2025 13:05 . Reden: foutje ]
Ik had inderdaad een upgrade gedaan, maar het blijkt maar weer dat ik niet alles goed gelezen heb blijkbaarWillemD61 schreef op dinsdag 1 juli 2025 @ 10:48:
De url moet zijn
http://localhost:8080/json.htm?type=command¶m=getdevices&rid=%s
en niet
http://localhost:8080/json.htm?type=devices&rid=%s
en je moet ook "import re" weer actief maken.
Ik denk dat je naast een Python upgrade ook een Domoticz upgrade hebt gedaan. Daarom moet je nu die nieuwe url gebruiken.

En dan ga je zoveel kloten dat je er niet meer uitkomt.
Maar het aanpassen van de url is inderdaad de oplossing en krijg nu weer netjes de standen binnen.
Bedankt
2250 WP Zuid PVoutput
Iemand ervaringen met een water computer?
Als je zigbee2mqtt gebruikt zou ik ook daar de compabiliteit checken.
Wat zegt de site van Sonoff?
Ik gebruik Deconz (met een Combee 2 stick)janne_nl schreef op maandag 14 juli 2025 @ 16:06:
Als ik het zo lees, kun je afhankelijk van de bridge ook de capaciteit instellen.
Als je zigbee2mqtt gebruikt zou ik ook daar de compabiliteit checken.
Daar kom ik persoonlijk niet zo heel veel wijs uit.Wat zegt de site van Sonoff?
Ik heb op m’n dakterras (minder waterdruk) een 4-tal groepen aangelegd die ik apart kan schakelen. Aansturing gebeurt met zwave relais en de kleppen zijn van het wat professionelere raintech. Er is in de loop van de jaren van alles niet goed gegaan met de irrigatie, maar de relais en kleppen hebben me nooit in de steek gelaten.rens-br schreef op maandag 14 juli 2025 @ 15:35:
Momenteel zijn we bezig met het aanleggen van onze voor en achtertuin en voor zowel achter als voor ben ik op zoek naar een regencomputer die werkt met Domoticz / Home Assistant, met lichte voorkeur voor Zigbee aansturing. Ik kwam de Sonoff Zigbee Smart Water Valve al tegen, voor ongeveer 30 euro. Ben eigenlijk wel benieuwd hoe deze werkt, via Zigbee kan je immers wenig instellen denk ik zo.
Iemand ervaringen met een water computer?
Ook kun je met verschillende groepen verschillende soorten irrigatie dingen aansturen. Potten hebben doorgaans een andere behoefte dan grotere bakken / borders of bijv een grasveld. Ga je voor onesize fits all, dan krijgt de een te weinig of de ander teveel.
Edit: toevoeging verschillende soorten irrigatie
[ Voor 14% gewijzigd door Vollervo op 14-07-2025 19:00 ]
Domoticz Software is op dit moment de 2025.1.
Draait op een RPI4 met externe SSD.
Het SEMS portal heb ik nu weer gedeactiveerd en Domoticz heeft inmiddels weer een uptime van 14 dagen.
Ik heb ook een GoodWe omvormer en hier werkt het gewoon en welke integratie gebruik jij? Ik gebruik de standaard ingebouwde GoodWe solar inverter via sems portal api.Racer89 schreef op zondag 27 juli 2025 @ 10:15:
Toevallig nog iemand die het SEMS portal gekoppeld heeft aan Domoticz? Ik heb dit laatst nog eens geactiveerd echter loopt Domoticz binnen nog geen 24 uur weer vast en gaat deze offline. Alleen na een service restart via SSH komt deze weer terug.
Domoticz Software is op dit moment de 2025.1.
Draait op een RPI4 met externe SSD.
Het SEMS portal heb ik nu weer gedeactiveerd en Domoticz heeft inmiddels weer een uptime van 14 dagen.
Ja, die gebruik ik dus ook en werkt hier perfect. Vreemd dat hij bij jou zorgt voor crashes. Ik draai overigens nog wel versie 2024.7, had jij met die versie ook problemen?Racer89 schreef op zondag 27 juli 2025 @ 14:18:
@rens-br Idd gewoon de standaard plugin wat in Domoticz zit. Onder het Hardware tab.
Ja, ik had gehoopt dat het wellicht was opgelost met deze nieuwe update. Het crasht ook gewoon uit het niks. Als ik deze nu actief zet in de Hardware tab komen de gegevens ook direct binnen. Het is mij ook onduidelijk waarom deze vastloopt. Gemiddeld is het meestal binnen 24 uur dat hij vast loopt.rens-br schreef op zondag 27 juli 2025 @ 15:13:
[...]
Ja, die gebruik ik dus ook en werkt hier perfect. Vreemd dat hij bij jou zorgt voor crashes. Ik draai overigens nog wel versie 2024.7, had jij met die versie ook problemen?
Ik weet niet of het ermee te maken heeft dat ik 4 omvormers in het portal heb gekoppeld onder één account.
Ik heb maar één omvormer., dus het zou mogelijk daaraan kunnen liggen. Ik draai verder Domoticz in docker en niet native.Racer89 schreef op zondag 27 juli 2025 @ 20:25:
[...]
Ja, ik had gehoopt dat het wellicht was opgelost met deze nieuwe update. Het crasht ook gewoon uit het niks. Als ik deze nu actief zet in de Hardware tab komen de gegevens ook direct binnen. Het is mij ook onduidelijk waarom deze vastloopt. Gemiddeld is het meestal binnen 24 uur dat hij vast loopt.
Ik weet niet of het ermee te maken heeft dat ik 4 omvormers in het portal heb gekoppeld onder één account.
Heb je am gekeken in her domoticz forum of er meer mensen zijn met dit probleem?
Ik heb:rens-br schreef op maandag 14 juli 2025 @ 15:35:
Momenteel zijn we bezig met het aanleggen van onze voor en achtertuin en voor zowel achter als voor ben ik op zoek naar een regencomputer die werkt met Domoticz / Home Assistant, met lichte voorkeur voor Zigbee aansturing. Ik kwam de Sonoff Zigbee Smart Water Valve al tegen, voor ongeveer 30 euro. Ben eigenlijk wel benieuwd hoe deze werkt, via Zigbee kan je immers wenig instellen denk ik zo.
Iemand ervaringen met een water computer?
https://www.zigbee2mqtt.i...231392.html#tuya-zn231392
en
https://www.zigbee2mqtt.io/devices/R7060.html#woox-r7060
De laatste krijgt niet altijd een signaal, dus de automatisering stuurt 2x een signaal. ;-)
https://www.fam-oldenburger.nl/category/domotica/
Ben sowieso aan het kijken hoe ik verder wil met Domoticz. Heb nu e.e.a. via MQTT en Shelly gekoppeld. Aan de RPI hangen 2x 8 kanaal relais bordje. Alleen merk ik nu dat sommige relais defect beginnen te raken. Eentje werkt al helemaal niet meer en twee hoor ik wel klikken maar maken 9 van de 10 keer geen contact.
Ik heb nooit grote vermogens met de relais geschakeld omdat ik er nog 230 volt relais achter heb hangen die het daadwerkelijke vermogen schakelen.
Wellicht ook eens een compleet frisse installatie van Domoticz starten. Wellicht dat het SEMS portal probleem dan ook is verholpen.
Dankje! Ik heb inmiddels de Sonoff valves binnen en die werken prima. Ik krijg een schakelaar om hem aan / uit te zetten. En heb een alarm type die aangeeft of er daadwerkelijk water stroomt.BazemanKM schreef op dinsdag 29 juli 2025 @ 12:50:
[...]
Ik heb:
https://www.zigbee2mqtt.i...231392.html#tuya-zn231392
en
https://www.zigbee2mqtt.io/devices/R7060.html#woox-r7060
De laatste krijgt niet altijd een signaal, dus de automatisering stuurt 2x een signaal. ;-)
Helaas kan ik geen debiet instellen of uitlezen, volgens mij zou dat met de officiële sonoff bridge wel moeten kunnen.
[ Voor 5% gewijzigd door rens-br op 29-07-2025 14:41 ]
Hier ook issues met de laatste versie van Domoticz en de GOODWE Sems portal api plug-in:rens-br schreef op zondag 27 juli 2025 @ 21:47:
[...]
Ik heb maar één omvormer., dus het zou mogelijk daaraan kunnen liggen. Ik draai verder Domoticz in docker en niet native.
Heb je am gekeken in her domoticz forum of er meer mensen zijn met dit probleem?
1
| GoodWeSEMS) failed to load 'plugin.py', Python Path used was '/opt/domoticz/userdata/plugins/domoticz-GoodWeSEMS/:/usr/lib/python311.zip:/usr/lib/python3.11:/usr/lib/python3.11/lib-dynload:/usr/local/lib/python3.11/dist-packages:/usr/lib/python3/dist-packages:/usr/lib/python3.11/dist-packages'. |
Ik draai het in Docker op een Synology. Ik heb zelfs nog tegen beter weten in de python 3.11 package van de syno community geïnstalleerd maar dat helpt natuurlijk niet voor in een docker container.
:strip_exif()/f/image/SfDDu0s5OzEtLjAaQyeO1sZN.jpg?f=fotoalbum_large)
Op deze pagina https://www.gearbest.ma/p...ht-illumination-detector/Vollervo schreef op zaterdag 2 augustus 2025 @ 18:01:
Iemand betere ervaringen met de lichtsensor hieronder? Het enige teken van leven geeft ie als ik op het reset knopje druk. Ik probeer te koppelen met zigbee2mqtt, maar die geeft ook geen melding van een nieuw of onbekend device. Dat heb ik tot nu toe nog nooit gehad. Of is normaal voor onbekende devices dat die niet worden opgenomen in het netwerk?
[Afbeelding]
zie ik specifiek staan dat z2mqtt en homeassistant niet worden ondersteund.
Ook onder de qrcode op je foto staat dat de tuya gateway nodig is.
Op die site staat het er inderdaad luid en duidelijk bij. Op de site waar ik hem gekocht heb stond het nietLizard schreef op zaterdag 2 augustus 2025 @ 22:30:
[...]
Op deze pagina https://www.gearbest.ma/p...ht-illumination-detector/
zie ik specifiek staan dat z2mqtt en homeassistant niet worden ondersteund.
Ook onder de qrcode op je foto staat dat de tuya gateway nodig is.
Iemand nog een tip voor een vergelijkbaar iets dat alleen licht meet en wel compatible is? Ik neem aan dat al die multi sensoren meer batterij verbruiken dan een single sensor, of valt dat wel mee?
Het doel is vaststellen of de zon schijnt op een bepaalde gevel van het huis.
[ Voor 4% gewijzigd door Vollervo op 03-08-2025 19:40 . Reden: doel toegevoegd ]
Met dank aan het uitzoek werk van @bommel (https://github.com/rweijnen).
Hierbij een Domoticz plug-in voor de Marstek CT003:
https://github.com/Haaibaai/Domoticz-Marstek.
Omdat het om een gevel gaat:Vollervo schreef op zondag 3 augustus 2025 @ 19:18:
[...]
Op die site staat het er inderdaad luid en duidelijk bij. Op de site waar ik hem gekocht heb stond het niet
Iemand nog een tip voor een vergelijkbaar iets dat alleen licht meet en wel compatible is? Ik neem aan dat al die multi sensoren meer batterij verbruiken dan een single sensor, of valt dat wel mee?
Het doel is vaststellen of de zon schijnt op een bepaalde gevel van het huis.
Heb je ook gedacht aan de Sun Power van Buienradar?
Buienradar gebruik ik om mijn zonwering en verlichting te schakelen.
Je kan ook denken aan een DIY lichtsensor met Arduino.
Voor kant en klare lichtsensoren zijn meerdere opties te vinden.
Hiervoor is google je grootste vriend.
Gewenste functionaliteit:
Apart script dat periodiek de rolluikstand bijwerkt in Domoticz, zonder bedieningsfunctionaliteit.
Hardware/software:
Domoticz 2024.7 (dzVents 3.1.8)
Shelly 2PM
Als ik status ophaal via URL (http://xx.xx.xx.xx/rpc/Cover.GetStatus?id=0
krijg ik de volgende uitkomst:
1
| {"id":0, "source":"limit_switch", "state":"open","apower":0.0,"voltage":230.8,"current":0.000,"pf":0.00,"freq":50.0,"aenergy":{"total":53.187,"by_minute":[0.000,0.000,0.000],"minute_ts":1754290440},"temperature":{"tC":36.9, "tF":98.4},"pos_control":true,"last_direction":"open","current_pos":75} |
Echter ik krijg op geen mogelijkheid de huidige (acutele) status zichtbaar in Domoticz. Ik kan de Shelly 2PM wel gewoon bedienen via Domoticz. Huidige script (alleen bediening rolluik)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| -- Shelly 2PM Rolluikbediening return { on = { devices = {335}, -- Rolluik device IDX timer = {'every 15 seconds'}, -- Optimaler interval httpResponses = {'shelly_response'}, customEvents = {'force_status_update'} }, execute = function(domoticz, item) -- ============== INSTELLINGEN ============== local SHELLY_IP = "xx.xx.xx.xx" local ROLLUIK_IDX = 335 -- ========================================== local rolluik = domoticz.devices(ROLLUIK_IDX) if not rolluik then domoticz.log("FOUT: Rolluik device niet gevonden!", domoticz.LOG_ERROR) return end -- Verbeterde HTTP Request Handler local function sendToShelly(cmd) local url = 'http://'..SHELLY_IP..'/rpc/'..cmd domoticz.log("Verzonden naar Shelly: "..url, domoticz.LOG_DEBUG) domoticz.openURL({ url = url, method = 'GET', callback = 'shelly_response', -- Toegevoegde timeout voor betrouwbaarheid timeout = 5000 }) end -- 1. DIRECTE STATUSUPDATE BIJ HANDMATIGE BEDIENING if item.isCustomEvent then domoticz.log("Handmatige bediening gedetecteerd - directe statusupdate", domoticz.LOG_INFO) sendToShelly("Cover.GetStatus?id=0") return end -- 2. DOMOTICZ BEDIENING if item.isDevice then local target_pos = rolluik.level domoticz.log("Domoticz bediening: "..target_pos.."%", domoticz.LOG_INFO) if target_pos == 0 then sendToShelly("Cover.Close?id=0") elseif target_pos == 100 then sendToShelly("Cover.Open?id=0") else sendToShelly("Cover.GoToPosition?id=0&pos="..target_pos) end -- Voeg een extra statuscheck toe na 2 seconden domoticz.emitEvent('force_status_update').afterSec(2) return end -- 3. STATUS VERWERKING if item.isHTTPResponse then if item.ok then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success and data and data['cover:0'] then local new_pos = data['cover:0'].current_pos if new_pos ~= rolluik.level then rolluik.updatePercentage(new_pos) domoticz.log("STATUS BIJGEWERKT: "..new_pos.."%", domoticz.LOG_INFO) end else domoticz.log("Ongeldige Shelly response: "..(item.data or "geen data"), domoticz.LOG_ERROR) end else domoticz.log("HTTP Fout: "..item.statusCode, domoticz.LOG_ERROR) end end -- 4. PERIODIEKE SYNCHRONISATIE (backup) if item.isTimer then sendToShelly("Cover.GetStatus?id=0") end end } |
Nu heb ik geprobeerd een 2e script te maken die de status/current pos ophaalt maar dit werkt niet. Wie kan mij verder op weg helpen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| -- Shelly 2PM Status Updater (dzVents) return { active = true, on = { timer = { 'every 30 seconds' }, -- Aanpassen naar wens httpResponses = { 'shelly_status_update' } -- Unieke callback }, execute = function(domoticz, item) -- ============== CONFIGURATIE ============== local ROLLUIKEN = { { idx = 335, ip = 'xx.xx.xx.xx', name = "Badkamer" }, { idx = 330, ip = 'xx.xx.xx.xx', name = "Slaapkamer" }, } -- ========================================== -- 1. Timer: Start statusupdate if item.isTimer then for _, roller in ipairs(ROLLUIKEN) do domoticz.openURL({ url = 'http://'..roller.ip..'/rpc/Cover.GetStatus?id=0', method = 'GET', callback = 'shelly_status_update', -- Unieke callback _data = { idx = roller.idx, name = roller.name } }) domoticz.log("Status opvragen: "..roller.name, domoticz.LOG_DEBUG) end return end -- 2. Verwerk HTTP response if item.isHTTPResponse then local idx = item._data.idx local name = item._data.name or "Rolluik "..idx local device = domoticz.devices(idx) if not device then domoticz.log("Device niet gevonden: "..name, domoticz.LOG_ERROR) return end -- Debug: Log ruwe response domoticz.log("Response "..name..": "..(item.data or "geen data"), domoticz.LOG_DEBUG) if item.ok and item.data then -- Methode 1: Directe string matching (meest betrouwbaar) local current_pos = item.data:match('"current_pos":(%d+)') -- Methode 2: JSON parsing fallback if not current_pos then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success then current_pos = data.current_pos end end if current_pos then local newPos = tonumber(current_pos) if device.level ~= newPos then device.updatePercentage(newPos) domoticz.log(name..": "..newPos.."%", domoticz.LOG_INFO) end else domoticz.log("Geen geldige positie in response van "..name, domoticz.LOG_ERROR) end else local errorMsg = item.statusText or item.statusCode or "Geen verbinding" domoticz.log("Fout bij "..name..": "..errorMsg, domoticz.LOG_ERROR) end end end } |
Ik krijg in logboek ook geen foutmelding of iets... maar status wordt ook niet upgeupdate.
Ik heb bewust even een 2e script aangemaakt om te kijken of ik het probleem kan achterhalen. MAar als obv 1e (werkende) script natuurlijk e.e.a samengevoegd kan worden tot 1 script heeft dat natuurlijk voorkeur.
Probleem bij script 1 is dat als ik via Domoticz de rolluik bedien, dat alles gewoon werkt en actuele status wordt getoond maar als ik handmatig (via knop) dan wordt de status niet geupdate in Domoticz. Hierdoor kan het dus lijken dat rolluik dicht is in Domoticz, terwijl deze met de hand geopend is (en andersom).
[ Voor 3% gewijzigd door freestyler2 op 04-08-2025 12:24 ]
Tenzij je naam Google is hou op met te doen alsof je alles weet.
Shelly rpc is een lastige heb ik ervaren.freestyler2 schreef op maandag 4 augustus 2025 @ 12:19:
Mijn dzVents script voor statusupdates (alleen current_pos uitlezen) werkt niet. Handmatige API calls naar http://[IP]/rpc/Cover.GetStatus?id=0 geven wel correcte JSON (voorbeeld hieronder), maar het script lijkt niet te triggeren.
Gewenste functionaliteit:
Apart script dat periodiek de rolluikstand bijwerkt in Domoticz, zonder bedieningsfunctionaliteit.
Hardware/software:
Domoticz 2024.7 (dzVents 3.1.8)
Shelly 2PM
Als ik status ophaal via URL (http://xx.xx.xx.xx/rpc/Cover.GetStatus?id=0
krijg ik de volgende uitkomst:
code:
1 {"id":0, "source":"limit_switch", "state":"open","apower":0.0,"voltage":230.8,"current":0.000,"pf":0.00,"freq":50.0,"aenergy":{"total":53.187,"by_minute":[0.000,0.000,0.000],"minute_ts":1754290440},"temperature":{"tC":36.9, "tF":98.4},"pos_control":true,"last_direction":"open","current_pos":75}
Echter ik krijg op geen mogelijkheid de huidige (acutele) status zichtbaar in Domoticz. Ik kan de Shelly 2PM wel gewoon bedienen via Domoticz. Huidige script (alleen bediening rolluik)
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 -- Shelly 2PM Rolluikbediening return { on = { devices = {335}, -- Rolluik device IDX timer = {'every 15 seconds'}, -- Optimaler interval httpResponses = {'shelly_response'}, customEvents = {'force_status_update'} }, execute = function(domoticz, item) -- ============== INSTELLINGEN ============== local SHELLY_IP = "xx.xx.xx.xx" local ROLLUIK_IDX = 335 -- ========================================== local rolluik = domoticz.devices(ROLLUIK_IDX) if not rolluik then domoticz.log("FOUT: Rolluik device niet gevonden!", domoticz.LOG_ERROR) return end -- Verbeterde HTTP Request Handler local function sendToShelly(cmd) local url = 'http://'..SHELLY_IP..'/rpc/'..cmd domoticz.log("Verzonden naar Shelly: "..url, domoticz.LOG_DEBUG) domoticz.openURL({ url = url, method = 'GET', callback = 'shelly_response', -- Toegevoegde timeout voor betrouwbaarheid timeout = 5000 }) end -- 1. DIRECTE STATUSUPDATE BIJ HANDMATIGE BEDIENING if item.isCustomEvent then domoticz.log("Handmatige bediening gedetecteerd - directe statusupdate", domoticz.LOG_INFO) sendToShelly("Cover.GetStatus?id=0") return end -- 2. DOMOTICZ BEDIENING if item.isDevice then local target_pos = rolluik.level domoticz.log("Domoticz bediening: "..target_pos.."%", domoticz.LOG_INFO) if target_pos == 0 then sendToShelly("Cover.Close?id=0") elseif target_pos == 100 then sendToShelly("Cover.Open?id=0") else sendToShelly("Cover.GoToPosition?id=0&pos="..target_pos) end -- Voeg een extra statuscheck toe na 2 seconden domoticz.emitEvent('force_status_update').afterSec(2) return end -- 3. STATUS VERWERKING if item.isHTTPResponse then if item.ok then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success and data and data['cover:0'] then local new_pos = data['cover:0'].current_pos if new_pos ~= rolluik.level then rolluik.updatePercentage(new_pos) domoticz.log("STATUS BIJGEWERKT: "..new_pos.."%", domoticz.LOG_INFO) end else domoticz.log("Ongeldige Shelly response: "..(item.data or "geen data"), domoticz.LOG_ERROR) end else domoticz.log("HTTP Fout: "..item.statusCode, domoticz.LOG_ERROR) end end -- 4. PERIODIEKE SYNCHRONISATIE (backup) if item.isTimer then sendToShelly("Cover.GetStatus?id=0") end end }
Nu heb ik geprobeerd een 2e script te maken die de status/current pos ophaalt maar dit werkt niet. Wie kan mij verder op weg helpen?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 -- Shelly 2PM Status Updater (dzVents) return { active = true, on = { timer = { 'every 30 seconds' }, -- Aanpassen naar wens httpResponses = { 'shelly_status_update' } -- Unieke callback }, execute = function(domoticz, item) -- ============== CONFIGURATIE ============== local ROLLUIKEN = { { idx = 335, ip = 'xx.xx.xx.xx', name = "Badkamer" }, { idx = 330, ip = 'xx.xx.xx.xx', name = "Slaapkamer" }, } -- ========================================== -- 1. Timer: Start statusupdate if item.isTimer then for _, roller in ipairs(ROLLUIKEN) do domoticz.openURL({ url = 'http://'..roller.ip..'/rpc/Cover.GetStatus?id=0', method = 'GET', callback = 'shelly_status_update', -- Unieke callback _data = { idx = roller.idx, name = roller.name } }) domoticz.log("Status opvragen: "..roller.name, domoticz.LOG_DEBUG) end return end -- 2. Verwerk HTTP response if item.isHTTPResponse then local idx = item._data.idx local name = item._data.name or "Rolluik "..idx local device = domoticz.devices(idx) if not device then domoticz.log("Device niet gevonden: "..name, domoticz.LOG_ERROR) return end -- Debug: Log ruwe response domoticz.log("Response "..name..": "..(item.data or "geen data"), domoticz.LOG_DEBUG) if item.ok and item.data then -- Methode 1: Directe string matching (meest betrouwbaar) local current_pos = item.data:match('"current_pos":(%d+)') -- Methode 2: JSON parsing fallback if not current_pos then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success then current_pos = data.current_pos end end if current_pos then local newPos = tonumber(current_pos) if device.level ~= newPos then device.updatePercentage(newPos) domoticz.log(name..": "..newPos.."%", domoticz.LOG_INFO) end else domoticz.log("Geen geldige positie in response van "..name, domoticz.LOG_ERROR) end else local errorMsg = item.statusText or item.statusCode or "Geen verbinding" domoticz.log("Fout bij "..name..": "..errorMsg, domoticz.LOG_ERROR) end end end }
Ik krijg in logboek ook geen foutmelding of iets... maar status wordt ook niet upgeupdate.
Ik heb bewust even een 2e script aangemaakt om te kijken of ik het probleem kan achterhalen. MAar als obv 1e (werkende) script natuurlijk e.e.a samengevoegd kan worden tot 1 script heeft dat natuurlijk voorkeur.
Probleem bij script 1 is dat als ik via Domoticz de rolluik bedien, dat alles gewoon werkt en actuele status wordt getoond maar als ik handmatig (via knop) dan wordt de status niet geupdate in Domoticz. Hierdoor kan het dus lijken dat rolluik dicht is in Domoticz, terwijl deze met de hand geopend is (en andersom).
Er zijn, wat ik me kan herinneren, verschillende voorwaarden wanneer een specifiek rpc-endpoint al dan niet actief is.
Het eerst uitproberen vanaf de CLI heeft altijd de voorkeur.
Wat ik in altijd in dzvents doe.
- Het bovenaan plaatsen van alle locale variabelen. Dit houdt de code compact en leesbaar.
- Het splitsen van de triggers en responses in aparte LUA-scripts. Ook hier, dit houdt de code compact en leesbaar. Het voordeel is dat je in je logging ziet welk script actief is geweest, bijvoorbeeld eerst je trigger en daarna de response. Als je trigger werkt maar je response niet dan heb je een idee waar je het moet zoeken.
- Om te kijken of the if-then-elsjes werken kan je na elke then een tijdelijke logregel plaatsen. En de logregels bij voorkeur met nuttige info zoals de inhoud van variabelen. Zo kan je zien of je in een specifieke tak van je code belandt of niet en met welke variabele. Omdat je ook for-do gebruikt kan je de logregels hier ook toepassen.
Ik hoop dat ik je wat meer op gang help met deze ideeën.
Er vallen me een paar dingen op aan je scripts.freestyler2 schreef op maandag 4 augustus 2025 @ 12:19:
Mijn dzVents script voor statusupdates (alleen current_pos uitlezen) werkt niet. Handmatige API calls naar http://[IP]/rpc/Cover.GetStatus?id=0 geven wel correcte JSON (voorbeeld hieronder), maar het script lijkt niet te triggeren.
Gewenste functionaliteit:
Apart script dat periodiek de rolluikstand bijwerkt in Domoticz, zonder bedieningsfunctionaliteit.
Hardware/software:
Domoticz 2024.7 (dzVents 3.1.8)
Shelly 2PM
Als ik status ophaal via URL (http://xx.xx.xx.xx/rpc/Cover.GetStatus?id=0
krijg ik de volgende uitkomst:
code:
1 {"id":0, "source":"limit_switch", "state":"open","apower":0.0,"voltage":230.8,"current":0.000,"pf":0.00,"freq":50.0,"aenergy":{"total":53.187,"by_minute":[0.000,0.000,0.000],"minute_ts":1754290440},"temperature":{"tC":36.9, "tF":98.4},"pos_control":true,"last_direction":"open","current_pos":75}
Echter ik krijg op geen mogelijkheid de huidige (acutele) status zichtbaar in Domoticz. Ik kan de Shelly 2PM wel gewoon bedienen via Domoticz. Huidige script (alleen bediening rolluik)
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 -- Shelly 2PM Rolluikbediening return { on = { devices = {335}, -- Rolluik device IDX timer = {'every 15 seconds'}, -- Optimaler interval httpResponses = {'shelly_response'}, customEvents = {'force_status_update'} }, execute = function(domoticz, item) -- ============== INSTELLINGEN ============== local SHELLY_IP = "xx.xx.xx.xx" local ROLLUIK_IDX = 335 -- ========================================== local rolluik = domoticz.devices(ROLLUIK_IDX) if not rolluik then domoticz.log("FOUT: Rolluik device niet gevonden!", domoticz.LOG_ERROR) return end -- Verbeterde HTTP Request Handler local function sendToShelly(cmd) local url = 'http://'..SHELLY_IP..'/rpc/'..cmd domoticz.log("Verzonden naar Shelly: "..url, domoticz.LOG_DEBUG) domoticz.openURL({ url = url, method = 'GET', callback = 'shelly_response', -- Toegevoegde timeout voor betrouwbaarheid timeout = 5000 }) end -- 1. DIRECTE STATUSUPDATE BIJ HANDMATIGE BEDIENING if item.isCustomEvent then domoticz.log("Handmatige bediening gedetecteerd - directe statusupdate", domoticz.LOG_INFO) sendToShelly("Cover.GetStatus?id=0") return end -- 2. DOMOTICZ BEDIENING if item.isDevice then local target_pos = rolluik.level domoticz.log("Domoticz bediening: "..target_pos.."%", domoticz.LOG_INFO) if target_pos == 0 then sendToShelly("Cover.Close?id=0") elseif target_pos == 100 then sendToShelly("Cover.Open?id=0") else sendToShelly("Cover.GoToPosition?id=0&pos="..target_pos) end -- Voeg een extra statuscheck toe na 2 seconden domoticz.emitEvent('force_status_update').afterSec(2) return end -- 3. STATUS VERWERKING if item.isHTTPResponse then if item.ok then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success and data and data['cover:0'] then local new_pos = data['cover:0'].current_pos if new_pos ~= rolluik.level then rolluik.updatePercentage(new_pos) domoticz.log("STATUS BIJGEWERKT: "..new_pos.."%", domoticz.LOG_INFO) end else domoticz.log("Ongeldige Shelly response: "..(item.data or "geen data"), domoticz.LOG_ERROR) end else domoticz.log("HTTP Fout: "..item.statusCode, domoticz.LOG_ERROR) end end -- 4. PERIODIEKE SYNCHRONISATIE (backup) if item.isTimer then sendToShelly("Cover.GetStatus?id=0") end end }
Nu heb ik geprobeerd een 2e script te maken die de status/current pos ophaalt maar dit werkt niet. Wie kan mij verder op weg helpen?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 -- Shelly 2PM Status Updater (dzVents) return { active = true, on = { timer = { 'every 30 seconds' }, -- Aanpassen naar wens httpResponses = { 'shelly_status_update' } -- Unieke callback }, execute = function(domoticz, item) -- ============== CONFIGURATIE ============== local ROLLUIKEN = { { idx = 335, ip = 'xx.xx.xx.xx', name = "Badkamer" }, { idx = 330, ip = 'xx.xx.xx.xx', name = "Slaapkamer" }, } -- ========================================== -- 1. Timer: Start statusupdate if item.isTimer then for _, roller in ipairs(ROLLUIKEN) do domoticz.openURL({ url = 'http://'..roller.ip..'/rpc/Cover.GetStatus?id=0', method = 'GET', callback = 'shelly_status_update', -- Unieke callback _data = { idx = roller.idx, name = roller.name } }) domoticz.log("Status opvragen: "..roller.name, domoticz.LOG_DEBUG) end return end -- 2. Verwerk HTTP response if item.isHTTPResponse then local idx = item._data.idx local name = item._data.name or "Rolluik "..idx local device = domoticz.devices(idx) if not device then domoticz.log("Device niet gevonden: "..name, domoticz.LOG_ERROR) return end -- Debug: Log ruwe response domoticz.log("Response "..name..": "..(item.data or "geen data"), domoticz.LOG_DEBUG) if item.ok and item.data then -- Methode 1: Directe string matching (meest betrouwbaar) local current_pos = item.data:match('"current_pos":(%d+)') -- Methode 2: JSON parsing fallback if not current_pos then local success, data = pcall(domoticz.utils.fromJSON, item.data) if success then current_pos = data.current_pos end end if current_pos then local newPos = tonumber(current_pos) if device.level ~= newPos then device.updatePercentage(newPos) domoticz.log(name..": "..newPos.."%", domoticz.LOG_INFO) end else domoticz.log("Geen geldige positie in response van "..name, domoticz.LOG_ERROR) end else local errorMsg = item.statusText or item.statusCode or "Geen verbinding" domoticz.log("Fout bij "..name..": "..errorMsg, domoticz.LOG_ERROR) end end end }
Ik krijg in logboek ook geen foutmelding of iets... maar status wordt ook niet upgeupdate.
Ik heb bewust even een 2e script aangemaakt om te kijken of ik het probleem kan achterhalen. MAar als obv 1e (werkende) script natuurlijk e.e.a samengevoegd kan worden tot 1 script heeft dat natuurlijk voorkeur.
Probleem bij script 1 is dat als ik via Domoticz de rolluik bedien, dat alles gewoon werkt en actuele status wordt getoond maar als ik handmatig (via knop) dan wordt de status niet geupdate in Domoticz. Hierdoor kan het dus lijken dat rolluik dicht is in Domoticz, terwijl deze met de hand geopend is (en andersom).
1. Tussen on = ... en execute = ... mis ik een regel met een uieke identificatie van de scriptnaam zoals logging = {marker = 'Script 001'},
Als dit een bewuste keuze is dan is dat uiteraard prima.
Als voorbeeld.
1
2
3
4
5
6
7
| return { on = { httpResponses = {'shelly_response'}, }, logging = {marker = 'Script 001'}, -- <== Deze extra regel bedoel ik execute = function (domoticz, item) |
De level = laat ik achterwege want dat geeft meer problelem dan gemak.
2. In het tweede script zie ik een regel active = true,
De regel is niet goed of fout, maar ik zie de toegevoegde waarde niet.
Het script kan ook met de GUI worden aan of uitgezet, tenzij je van de CLI werkt natuurlijk.
Bron: https://wiki.domoticz.com...e_=_true/false_(optional)
3. In het tweede script maak je in de isHTTPResponse tak gebruik van _data die je definieert in de isTimer tak.
Ik verwacht dat de waarden in _data niet meer bruikbaar zijn in de isHTTPResponse tak.
4. In het tweede script wordt in de isTimer tak door de for do loop twee keer de openURL aangeroepen.
Je krijgt dan ook twee keer een HTTPResponse.
Dat is ook de bedoeling maar daar moet je ook op anticiperen door je te richten op de waarden in de item en item .data die je uit het responsebericht krijgt.
1
2
| domoticz .log (item) domoticz .log (item .data) |
5. Als je in het tweede script om welke reden dan ook geen onderscheid kan maken tussen de twee HTTPResponses dan kan je kiezen om in de openURL aparte callbacks te gebruiken.
6. Door de scripts op te delen in aparte scripts voor triggers en responses zie je in de logging wellicht beter de verschillen (maar nu val ik in herhaling.)
Bron: https://wiki.domoticz.com...synchronous_HTTP_requests
De volgende zaken werken sinds de update niet meer
:strip_exif()/f/image/Yppa7XxKxUwwspbKfTapZ62F.jpg?f=fotoalbum_large)
Heb al van alles geprobeerd, zoals updaten en upgraden van het besturingssysteem op mijn Pi (bullseye).
Ik krijg deze foutmelding in het log
1
2
3
4
5
| 2025-08-24 15:13:00.815 Error: Error opening url: http://127.0.0.1:8080/json.htm?type=graph&sensor=counter&range=month&idx=305 2025-08-24 15:13:00.948 Error: dzVents: HTTP/1.1 response: 404 ==>> Not Found 2025-08-24 15:13:00.959 Error: dzVents: Could not get (good) data from domoticz. Error (404) 2025-08-24 15:13:00.959 Error: dzVents: An error occurred when calling event handler YoulessMaand 2025-08-24 15:13:00.959 Error: dzVents: /home/pi/domoticz/scripts/dzVents/scripts/YoulessMaand.lua:53: attempt to index a nil value (global 'domoticz') |
Alles draait nu op:
Version: 2025.1
Build Hash: 89d5c900d
Compile Date: 2025-05-05 09:02:49
dzVents Version: 3.1.8
Python Version: 3.9.2 (default, Mar 20 2025, 02:07:39) [GCC 10.2.1 20210110]
Voor wat betreft de dag- en maand COP zeg de eerste log regel eigenlijk alles. De rest is een doorwerkfout. Als een basisgegeven niet kan worden opgehaald kan dzVents daar natuurlijk ook niet mee rekenen. idx 305 (stroomverbruik van de warmtepomp afkomstig van een Youless) wordt wel gewoon geüpdatet.
Zodra ik een systeembackup van enkele minuten voor de update terug zet werkt het wel weer gewoon. Maar ik wil gewoon steeds updaten als er een nieuwe stabiele versie uitkomt.
Hieronder nog het script voor het maandtotaal dat ik overigens niet zelf heb geschreven.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| local httpResponses = "monthTotal" return { on = { timer = { "every 1 minutes" }, httpResponses = { httpResponses .. "*" } }, logging = { level = domoticz.LOG_DEBUG, -- set to LOG_ERROR when script works as expected marker = httpResponse }, execute = function(dz, item) -- ****************************** Your settings below this line *************************************************** usageDevice = dz.devices(305) -- Replace xxxx with ID of energyDevice you want to track monthTotal = dz.devices(834) -- Create as virtual managed counter (energy) and change yyyy to the ID of the new device idx was 320 -- ****************************** No changes required below this line ********************************************* local function logWrite(str,level) dz.log(tostring(str),level or dz.LOG_DEBUG) end local function triggerJSON(id, period, delay) local delay = delay or 0 local URLString = dz.settings['Domoticz url'] .. "/json.htm?type=graph&sensor=counter&range=" .. period .. "&idx=" .. id dz.openURL({ url = URLString, method = "GET", callback = httpResponses .. "_" .. period}).afterSec(delay) end local function calculateMonthTotal(rt) local monthTotal = 0 local currentMonth = dz.time.rawDate:sub(1,7) for id, result in ipairs(rt) do if rt[id].d:sub(1,7) == currentMonth then logWrite(rt[id].d .. " ==>> " .. rt[id].v) monthTotal = monthTotal + rt[id].v end end return monthTotal --* 1000 oorspronkelijk script end if not item.isHTTPResponse then triggerJSON(usageDevice.id, "month") elseif item.ok then -- statusCode == 2xx monthTotal.update(0,calculateMonthTotal(item.json.result)) else logWrite("Could not get (good) data from domoticz. Error (" .. (item.statusCode or 999) .. ")" ,dz.LOG_ERROR) logWrite(item.data) domoticz.log('montTotal: '..monthTotal) domoticz.log('currentMonth: '..currentMonth) end end } |
Iemand ideeën hoe ik de irritante probleem kan oplossen zonder een verse installatie van de hele zooi?
[ Voor 41% gewijzigd door Copitano op 24-08-2025 17:53 ]
Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+/4B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp
Ik ben al een geruime tijd voorstander om de triggers en de reponses te scheiden.Copitano schreef op zondag 24 augustus 2025 @ 17:38:
Na enig treuzelen vorige week toch maar eens geüpdatet naar de laatste stabiele versie van Domoticz. Nu spijt van.
De volgende zaken werken sinds de update niet meer
[Afbeelding]
Heb al van alles geprobeerd, zoals updaten en upgraden van het besturingssysteem op mijn Pi (bullseye).
Ik krijg deze foutmelding in het log
code:
1 2 3 4 5 2025-08-24 15:13:00.815 Error: Error opening url: http://127.0.0.1:8080/json.htm?type=graph&sensor=counter&range=month&idx=305 2025-08-24 15:13:00.948 Error: dzVents: HTTP/1.1 response: 404 ==>> Not Found 2025-08-24 15:13:00.959 Error: dzVents: Could not get (good) data from domoticz. Error (404) 2025-08-24 15:13:00.959 Error: dzVents: An error occurred when calling event handler YoulessMaand 2025-08-24 15:13:00.959 Error: dzVents: /home/pi/domoticz/scripts/dzVents/scripts/YoulessMaand.lua:53: attempt to index a nil value (global 'domoticz')
Alles draait nu op:
Version: 2025.1
Build Hash: 89d5c900d
Compile Date: 2025-05-05 09:02:49
dzVents Version: 3.1.8
Python Version: 3.9.2 (default, Mar 20 2025, 02:07:39) [GCC 10.2.1 20210110]
Voor wat betreft de dag- en maand COP zeg de eerste log regel eigenlijk alles. De rest is een doorwerkfout. Als een basisgegeven niet kan worden opgehaald kan dzVents daar natuurlijk ook niet mee rekenen. idx 305 (stroomverbruik van de warmtepomp afkomstig van een Youless) wordt wel gewoon geüpdatet.
Zodra ik een systeembackup van enkele minuten voor de update terug zet werkt het wel weer gewoon. Maar ik wil gewoon steeds updaten als er een nieuwe stabiele versie uitkomt.
Hieronder nog het script voor het maandtotaal dat ik overigens niet zelf heb geschreven.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 local httpResponses = "monthTotal" return { on = { timer = { "every 1 minutes" }, httpResponses = { httpResponses .. "*" } }, logging = { level = domoticz.LOG_DEBUG, -- set to LOG_ERROR when script works as expected marker = httpResponse }, execute = function(dz, item) -- ****************************** Your settings below this line *************************************************** usageDevice = dz.devices(305) -- Replace xxxx with ID of energyDevice you want to track monthTotal = dz.devices(834) -- Create as virtual managed counter (energy) and change yyyy to the ID of the new device idx was 320 -- ****************************** No changes required below this line ********************************************* local function logWrite(str,level) dz.log(tostring(str),level or dz.LOG_DEBUG) end local function triggerJSON(id, period, delay) local delay = delay or 0 local URLString = dz.settings['Domoticz url'] .. "/json.htm?type=graph&sensor=counter&range=" .. period .. "&idx=" .. id dz.openURL({ url = URLString, method = "GET", callback = httpResponses .. "_" .. period}).afterSec(delay) end local function calculateMonthTotal(rt) local monthTotal = 0 local currentMonth = dz.time.rawDate:sub(1,7) for id, result in ipairs(rt) do if rt[id].d:sub(1,7) == currentMonth then logWrite(rt[id].d .. " ==>> " .. rt[id].v) monthTotal = monthTotal + rt[id].v end end return monthTotal --* 1000 oorspronkelijk script end if not item.isHTTPResponse then triggerJSON(usageDevice.id, "month") elseif item.ok then -- statusCode == 2xx monthTotal.update(0,calculateMonthTotal(item.json.result)) else logWrite("Could not get (good) data from domoticz. Error (" .. (item.statusCode or 999) .. ")" ,dz.LOG_ERROR) logWrite(item.data) domoticz.log('montTotal: '..monthTotal) domoticz.log('currentMonth: '..currentMonth) end end }
Iemand ideeën hoe ik de irritante probleem kan oplossen zonder een verse installatie van de hele zooi?
Dit maakt de code compacter en beter te analyseren.
Aan het eind van het script met de trigger log ik de scriptnaam dat hierna de response gaat verwerken.
Andersom, in het script dat de response verwerkt geef ik aan door welke scriptnaam de response is afgetrapt.
De markers geef ik dezelfde naam als de scriptnaam, (ondanks dat dit default is).
Dit vanwege de herkenning in de logging.
https://wiki.domoticz.com..._{_%E2%80%A6_}_(optional)
Wat ik nu als marker zie lijkt mij een niet gedeclareerde variabele httpResponse en geen string.
Dit interpreteer ik zo omdat de quotes rondom ontbreken.
De error op r53 lijkt te komen doordat in het script dz wordt gebruikt ipv domoticz.
Op r26 wordt de URLString obv een paar variabelen samengesteld. Zelf zou ik de uitkomst van de samenstelling altijd loggen en igv een url eerst handmatig uitproberen.
Mijn vraag: Werkt de URLString buiten dz om ook zoals in de browser en bij voorkeur dmv een http request vanaf de cli op de RPi?
Eigenlijk geldt het loggen ook voor de berekening op r39.
Het nut van de functie logWrite ontgaat me eerlijk gezegd.
Een functie met één regel code en de aanroep ervan lijkt me onnodig complex en de code meer vervuilen dan goed doen.
Bij de verwerking van item.json.result op r48 zou ik deze waarde ook eerst loggen.
De declaratie van de variabelen doe ik altijd als eerste, dus boven het begin met de return op r3.
Dit houdt de code compacter, overzichtelijker en makkelijker te analyseren.
Wat me in functie calculateMonthTotal opvalt is dat op r34 de monthTotal op 0 wordt gezet terwijl op r17 de monthTotal op dz.devices(834) wordt gezet. Gaat dit wel werken?
Om dit te controleren zou ik achter beide regels een logregel toevoegen met monthTotal.
Detail: van montTotal op r53 zou ik aanpassen in monthTotal.
Succes verder met je script(s) en upgrade van Dz.
Is dat niet hetzelfde?B@rt_d@_M@n schreef op zondag 24 augustus 2025 @ 19:48:
Volgens mij moet je http://127.0.0.1/ vervangen door het ip adres van je Raspberry Pi.
1
2
| $ cat /etc/hosts 127.0.0.1 localhost |
Btw, Als openURL in dzVents wordt gebruikt om gegevens uit de eigen dz te halen lijkt me dit een omslachtige manier en onnodig gebruik van resources.
Wellicht dat de API protection nog dicht staat.
https://wiki.domoticz.com/Security#Advanced_Security_setup
Edit: dit was easy. Juiste protocol aanzetten in de RFXcom (eerst updaten) en het werkt meteen. Eindelijk ook meteen geluid in de hal zodat ze buiten niet denken dat er niets gebeurt en op het raam gaan bonken, meerdere gongs gaan nu af (hal, werkkamer, zolder) en er wordt een snapshot gestuurd.
Nu hopen dat deze beldrukker ook echt IP55 waarmaakt en niet binnen no time defect is door vocht in het binnenwerk. Laat de herfst (en zachte winter) maar komen.
[ Voor 62% gewijzigd door M.v.Veelen op 05-09-2025 19:57 ]
¯\_(ツ)_/¯
Ik ben sinds gistermiddag over op 2025.1 en heb geen last van crashes icm de Sems portalplugin. Overigens gebruik ik hem als backup want ik lees de Goodwe gewoon lokaal uit. Dat is sneller en zo goed als realtime..Racer89 schreef op zondag 27 juli 2025 @ 20:25:
[...]
Ja, ik had gehoopt dat het wellicht was opgelost met deze nieuwe update. Het crasht ook gewoon uit het niks. Als ik deze nu actief zet in de Hardware tab komen de gegevens ook direct binnen. Het is mij ook onduidelijk waarom deze vastloopt. Gemiddeld is het meestal binnen 24 uur dat hij vast loopt.
Ik weet niet of het ermee te maken heeft dat ik 4 omvormers in het portal heb gekoppeld onder één account.
Hoe doe je dat? Ik wil eigenlijk van de cloud af namelijk.FreakNL schreef op donderdag 11 september 2025 @ 21:58:
[...]
Ik ben sinds gistermiddag over op 2025.1 en heb geen last van crashes icm de Sems portalplugin. Overigens gebruik ik hem als backup want ik lees de Goodwe gewoon lokaal uit. Dat is sneller en zo goed als realtime..
https://github.com/marcel...dwe/blob/master/README.md
Ik heb gewoon een sensor aangemaakt in Domoticz en die voedt ik door middel van een script (wat extern draait), gebaseerd op bovenstaande.
Als je wil kan ik hem delen.
[ Voor 3% gewijzigd door FreakNL op 11-09-2025 22:18 ]
Ja graag!FreakNL schreef op donderdag 11 september 2025 @ 22:17:
Met een beetje hulp van deze:
https://github.com/marcel...dwe/blob/master/README.md
Ik heb gewoon een sensor aangemaakt in Domoticz en die voedt ik door middel van een script (wat extern draait), gebaseerd op bovenstaande.
Als je wil kan ik hem delen.
Start-Goodwe.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| echo off cls set ip=192.168.0.55 ping -n 1 %ip% | find "TTL" if not errorlevel 1 goto update-idx-python if errorlevel 1 goto update-idx-zero :update-idx-python echo ping successfull echo will update idx through python echo ping-success-update-through-python > status.txt python E:\Domoticz\scripts\PV\get-goodwe.py GOTO :EOF :update-idx-zero echo ping not succesfull echo inverter down echo will set watt value to 0 and total value to value of text file echo ping-NOT-success-update-through-curl-idx > status.txt for /f "delims=" %%x in (total.txt) do set total1=%%x echo %total1% curl "http://192.168.0.100:8080/json.htm?type=command¶m=udevice&idx=1616&nvalue=0&svalue=0;%total1%" |
get-goodwe.py:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| import asyncio import goodwe import os import shutil import requests async def get_runtime_data(): ip_address = '192.168.0.50' inverter = await goodwe.connect(ip_address) runtime_data = await inverter.read_runtime_data() var1 = None var2 = None # Fetch ppv (current PV power in W) if 'ppv' in runtime_data: var1 = runtime_data['ppv'] print(f"ppv:\t\t DC Power = {var1} W") # Fetch e_total (total energy in kWh) if 'e_total' in runtime_data: var2 = runtime_data['e_total'] print(f"e_total:\t Total Energy = {var2} kWh") if var1 is not None and var2 is not None: print("printing var1 and var2 (Watt-now and Total kWh):") print(var1) print(var2) # Convert kWh → Wh var3 = var2 * 1000 print(f"Converted e_total: {var3} Wh") # If total.txt exists, back it up as total2.txt if os.path.exists("total.txt"): shutil.copyfile("total.txt", "total2.txt") print("Backed up total.txt → total2.txt") # Write new value to total.txt with open("total.txt", "w") as file: file.write(str(var3)) print("Wrote new value to total.txt") # Send values to Domoticz url = ( f"http://192.168.0.100:8080/json.htm?" f"type=command¶m=udevice&idx=1616&nvalue=0&svalue={var1};{var3}" ) try: r = requests.get(url, timeout=5) if r.status_code == 200: print("Domoticz updated successfully") else: print(f"Domoticz update failed, status: {r.status_code}") except Exception as e: print(f"Error updating Domoticz: {e}") asyncio.run(get_runtime_data()) |
In Domoticz maak je een IDX aan:
:strip_exif()/f/image/Pc9Geji87ntSkKEbFqiCtzPi.png?f=user_large)
(Electric: Instant+Counter)
Kan vast in 1 script in plaats van 2 (dat is een stuk netter) maar het is zo gegroeid.. Eerst had ik alleen de Python maar kwam erachter dat je ook iets moet doen als de inverter uit is (omdat er anders heel de nacht de laaste opwek (bijv 4 watt) in Domoticz blijft staan)
En het werkt al 2 jaar prima
[ Voor 12% gewijzigd door FreakNL op 12-09-2025 08:00 ]
¯\_(ツ)_/¯
- Scripts/code graag tussen ~[code] ~[/code] tags voor de leesbaarheid.
- dzVents vragen? Lees eerst even de wiki door!
- Lees ook de openingspost door!
- Sommige vragen kunnen opgelost worden door zelf even Google te gebruiken, probeer dat eerst voordat je een vraag hier stelt!