i changed the script from using device into item and then the error came up...
error
Code: Select all
2019-07-06 16:02:37.047 Error: dzVents: Error: (2.4.24) Watermeting: An error occurred when calling event handler DZ_regensensor
2019-07-06 16:02:37.047 Error: dzVents: Error: (2.4.24) Watermeting: ...icz/scripts/dzVents/generated_scripts/DZ_regensensor.lua:60: attempt to concatenate field 'name' (a nil value)
Code: Select all
-- meet het aantal keer dat de watersensor in een uur een on afgeeft.
-- als aantal keer on klopt dan gaat schakelaar hetregent aan voor een periode. In die periode wordt er niet autom gesproeid
-- als de schakelaar al aanstaat en er sensor is opgedroogd en het regent weer in de periode dat de schakelaar aanstaat , wordt er een nieuwe timer gezet (queue leeg en nieuw off commando)
return {
on = {devices = {'$tuinwatersensor'}},
logging = {
level = domoticz.LOG_ERROR , -- Uncomment to override the dzVents global logging setting
marker = "Watermeting"
},
data = {
raintable = { history = true, maxHours = 1 },
},
execute = function(dz, item, info)
local norm = 5 -- was 5 maar als bert de tuin sproeit duurt dat een half uur en 43 stuks
local huidwaarde = item.state
local now = os.time(os.date('*t'))
-- local DurTimer = 800 -- default 800 wort niet gebruikt zie DZ_schakelaar
local logcode = 3
local messageTable = {}
local add = 'add'
local del = 'del'
local chg = 'chg'
local function globalMessage(action, message, logcode)
if logcode == nil then logcode = 3 end
if action == add and logcode > 0 then
messageTable = dz.helpers.addMessage(dz, item, info, message, messageTable, logcode)
elseif action == del then
dz.globalData.mylogging = message
dz.devices('timerlog').updateText(message)
elseif action == chg then
dz.helpers.dumpMessages(dz, messageTable)
end
end
if huidwaarde == nil then -- onderstaande checks moeten na de locals omdat ze deze ook gebruiken!
dz.log("01 Sensor info = Geen waarde opgehaald")
else
dz.data.raintable.add(huidwaarde)
end
local aantal = 0
for i = dz.data.raintable.size,1,-1 do
aantal = aantal +1
item = dz.data.raintable.get(i)
dz.log("00 History data van " .. item.time.rawDate .. " " .. item.time.rawTime ..
" = " .. item.data)
end
dz.log("Deviceinfo---------------------------------------")
--dz.log("00 Sensor...........................= " .. item.name) --geeft n fout
dz.log("00 Switch-device....................= " .. dz.devices('hetregent').name)
--dz.log("00 Uitzetten na(in.min).............= " .. DurTimer)
dz.log("Sensor info-------------------------------------")
dz.log("00 Aantal norm......................= " .. norm)
dz.log("00 Aantal gemeten...................= " .. aantal)
dz.log("00 Aantal huidige waarde............= " .. huidwaarde)
dz.log("00 Laatste update...................= " .. tostring(dz.devices('hetregent').lastUpdate.rawTime)) -- deze is goed
dz.log("-------------------------------------------------")
if aantal >= norm then
-- .checkFirst() verwijderd bij dz.devices('hetregent') en dz.devices('regensensor') want de timer moet opnieuw worden gezet!
dz.devices('hetregent').cancelQueuedCommands()
dz.devices('hetregent').switchOn()
dz.devices('regensensor').cancelQueuedCommands()
dz.devices('regensensor').switchOn()
--dz.devices('hetregent').switchOff().afterMin(DurTimer)
globalMessage(add, ' SENSOR: Regendruppel signalen (' .. aantal .. ') is gelijk of boven de norm(' .. norm .. '), ' .. dz.devices('hetregent').name .. ' wordt geactiveerd...',logcode)
globalMessage(chg) -- dump
end
end
}