Here is a test script you can use.
It gets the data from this S0 Pulse Meter.
I tried it at first with a 'normal'script.
Code: Select all
return {
on = {
devices = {'YourSwitch'},
timer = {},
variables = {},
scenes = {},
groups = {},
security = {},
httpResponses = {},
shellCommandResponses = {},
customEvents = {},
system = {},
},
data = {
whToday = { initial = nil },
whTotal = { initial = nil },
},
logging = {},
execute = function(domoticz, triggeredItem)
domoticz.devices('Laadpaal').dump()
domoticz.data.whTotal = domoticz.devices('Laadpaal').whTotal -- 3108061.75
domoticz.data.whToday = domoticz.devices('Laadpaal').whToday
domoticz.log("domoticz.data.whTotal" .. domoticz.data.whTotal, domoticz.LOG_INFO)
domoticz.log("domoticz.data.whToday" .. domoticz.data.whToday, domoticz.LOG_INFO)
end
}
Using a json call you will receive the data you want to receive.
Code: Select all
return {
on = {
devices = {'YourSwitch'},
timer = {},
variables = {},
scenes = {},
groups = {},
security = {},
httpResponses = {'LaadpaalData'}, -- Voeg een HTTP-response handler toe
shellCommandResponses = {},
customEvents = {},
system = {},
},
data = {
whToday = { initial = nil },
whTotal = { initial = nil },
},
logging = {
level = domoticz.LOG_DEBUG, -- Zet logging op DEBUG voor meer details
marker = "Laadpaaltest",
},
execute = function(domoticz, triggeredItem)
-- Controleer of de trigger een HTTP-response is
if triggeredItem.isHTTPResponse then
-- Log de volledige JSON-response voor debugging
domoticz.log("Volledige JSON-response: " .. triggeredItem.data, domoticz.LOG_DEBUG)
-- Verwerk de JSON-response
local json = triggeredItem.json
if json and json.result and json.result[1] then
-- Haal de waarden uit Data en CounterToday
local data = json.result[1].Data -- Bijvoorbeeld "3108.063 kWh"
local counterToday = json.result[1].CounterToday -- Bijvoorbeeld "3.882 kWh"
-- Verwijder de eenheid "kWh" en converteer naar een getal
domoticz.data.whTotal = tonumber(data:match("%d+%.%d+")) -- Haal alleen het numerieke deel
domoticz.data.whToday = tonumber(counterToday:match("%d+%.%d+")) -- Haal alleen het numerieke deel
-- Log de waarden
domoticz.log("domoticz.data.whTotal: " .. tostring(domoticz.data.whTotal), domoticz.LOG_INFO)
domoticz.log("domoticz.data.whToday: " .. tostring(domoticz.data.whToday), domoticz.LOG_INFO)
else
domoticz.log("Geen geldige JSON-response ontvangen", domoticz.LOG_ERROR)
end
else
-- Als de trigger een apparaat is, stuur dan een JSON-call
domoticz.openURL({
url = 'http://192.168.2.100:8383/json.htm?type=devices&rid=2457',
method = 'GET',
callback = 'LaadpaalData', -- Gebruik dezelfde naam als de HTTP-response handler
})
domoticz.log("JSON-call gestuurd om Laadpaal-gegevens op te halen", domoticz.LOG_INFO)
end
end
}
BTW
For testing purposes I use a switch device 'YourSwitch' to trigger a script. I used to use 'every 1 minutes' as a trigger but like the switch trigger better.