After a update of DSMR-Logger it is working with RestApi and now i need to make a new script for it but my skills in DZvents are not there yet.
Hope someone would help creating a script for it. Would be nice i you can get logging also.
When i go to URL http://192.168.0.24/api/v1/sm/actual i get:
Code: Select all
{"actual":[
{"name": "timestamp", "value": "200416155148S"},
{"name": "energy_delivered_tariff1", "value": 3037.105, "unit": "kWh"},
{"name": "energy_delivered_tariff2", "value": 1514.748, "unit": "kWh"},
{"name": "energy_returned_tariff1", "value": 0.000, "unit": "kWh"},
{"name": "energy_returned_tariff2", "value": 0.000, "unit": "kWh"},
{"name": "power_delivered", "value": 0.344, "unit": "kW"},
{"name": "power_returned", "value": 0.000, "unit": "kW"},
{"name": "voltage_l1", "value": 227.000, "unit": "V"},
{"name": "current_l1", "value": 1, "unit": "A"},
{"name": "power_delivered_l1", "value": 0.344, "unit": "kW"},
{"name": "power_returned_l1", "value": 0.000, "unit": "kW"},
{"name": "gas_delivered", "value": 1565.780, "unit": "m3"}
]}
The senors i use in Domoticz are
Code: Select all
Timestamp_IDX = -- Dummy = Text
Gas_Delivered_IDX = 4702 -- Dummy = Counter Incremental --> Gas
Energy_Delivered_Tariff1_IDX = 4707 -- Dummy = Counter Incremental --> Engergy
Energy_Delivered_Tariff2_IDX = 4706 -- Dummy = Counter Incremental --> Engergy
Power_Delivered_IDX = 4703 -- Dummy - Electric
Voltage_l1_IDX = 4710 -- Dummy - Voltage
Current_l1_IDX = 4711 -- Dummy - Amperage
Power_Delivered_l1_IDX = 4705 -- Dummy = Electric
Energy_Returned_Tariff1_IDX = -- Dummy = Counter Incremental --> Engergy
Energy_Returned_Tariff2_IDX = -- Dummy = Counter Incremental --> Engergy
Power_Returned_IDX = -- Dummy - Electric
Power_Returned_l1_IDX = -- Dummy = Electric
What i tried to create.
Code: Select all
-- dsmr.lua
return {
on = { timer = { "every minute" },},
logging = {
level = domoticz.LOG_DEBUG,
marker = "DSMR-Logger"
},
execute = function(dz)
local function logWrite(str,level) -- Support function for shorthand debug log statements
dz.log(tostring(str),level or dz.LOG_DEBUG)
end
local url = '{"actual":[{"name": "timestamp", "value": "200416155148S"}, {"name": "energy_delivered_tariff1", "value": 3037.105, "unit": "kWh"}, {"name": "energy_delivered_tariff2", "value": 1514.748, "unit": "kWh"}, {"name": "energy_returned_tariff1", "value": 0.000, "unit": "kWh"}, {"name": "energy_returned_tariff2", "value": 0.000, "unit": "kWh"}, {"name": "power_delivered", "value": 0.344, "unit": "kW"}, {"name": "power_returned", "value": 0.000, "unit": "kW"}, {"name": "voltage_l1", "value": 227.000, "unit": "V"}, {"name": "current_l1", "value": 1, "unit": "A"}, {"name": "power_delivered_l1", "value": 0.344, "unit": "kW"}, {"name": "power_returned_l1", "value": 0.000, "unit": "kW"}, {"name": "gas_delivered", "value": 1565.780, "unit": "m3"} ]}'
-- local url = "http://192.168.0.24/api/v1/sm/actual"
local rt = dz.utils.fromJSON(url) -- convert complete json to table
local dsmr = rt.actual[1] -- liveweer is a key in table (or "associative array") rt and contains one or more subtables. You want the first one for key, value in pairs(weer)
for key, value in pairs(dsmr) do
logWrite(key .. ": " .. tostring(value))
end
end
}