LUA récupérer température sonde ip en snmp
Publié : 25 sept. 2019, 22:40
Bonjour,
j'ai une sonde de température sur mon réseau joignable via snmp à partir de mon pi :
pi@raspberrypi:~ $ snmpget -v 2c -c public -O qv 10.29.10.34 .1.3.6.1.4.1.21796.4.1.3.1.4.2
"22.2"
Jusque la pas de soucis., 22.2 degrès mais valeur indiquée entre "" ?
A partir de domoticz / réglages / evenements j'ai adapté un script LUA (bien connu et initialement prévu pour monitorer un nas)
Voici ce que j'ai gardé du script :
local NasIp = "10.29.10.34" -- NAS IP Address
local CommunityPassword = "public" -- SNMP Password
local NAS = "Synology" -- NAS Switch
local NAS_TEMP = "Synology Temp"
local OID_NAS_TEMP = '.1.3.6.1.4.1.21796.4.1.3.1.4.2'
return {
active = true,
on = {
timer = {'every minute'}
},
logging = { level = domoticz.LOG_DEBUG,
-- level = domoticz.LOG_INFO,
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = "Synology Monitor v1.35 " },
execute = function(dz)
local i = 0
local results = {}
local command = 'snmpget -v 2c -c '..CommunityPassword..' -O qv '..NasIp..' '..OID_NAS_TEMP
local handle = assert(io.popen(command))
for line in handle:lines() do
results = format(line)
i = i + 1
end
handle:close()
if results[0] then
dz.log("NASTemp : "..results[0],dz.LOG_DEBUG)
if NAS_TEMP then dz.devices(NAS_TEMP).update(0,results[0]) end
end
end
}
J'ai adapté les valeurs :
communauté snmp/@ip/oid snmp/gardé qu'une seule valeur à récupéré dans la boucle;
J'ai aussi créé l'interrupteur virtuel dans Domoticz avec le bon nom : Synology Temp
Le script ne fonctionne pas (testé en mode time et mode device)
Voici les logs :
EventSystem: in Synology: [string "--------------------------------------------..."]:29: attempt to index global 'domoticz' (a nil value)
La ligne 29 correspond à :
logging = { level = domoticz.LOG_DEBUG,
J'ai donc commenté la partie logging et voici le message d'erreur :
Error: EventSystem: Lua script Synology did not return a commandArray
Pensez-vous que j'ai oublié des paramètres dans le script (pour évi.ter les erreurs je n'ai pour le moment pas renommer les variables vs l'original).
Merci pour votre aide.
Julien.
j'ai une sonde de température sur mon réseau joignable via snmp à partir de mon pi :
pi@raspberrypi:~ $ snmpget -v 2c -c public -O qv 10.29.10.34 .1.3.6.1.4.1.21796.4.1.3.1.4.2
"22.2"
Jusque la pas de soucis., 22.2 degrès mais valeur indiquée entre "" ?
A partir de domoticz / réglages / evenements j'ai adapté un script LUA (bien connu et initialement prévu pour monitorer un nas)
Voici ce que j'ai gardé du script :
local NasIp = "10.29.10.34" -- NAS IP Address
local CommunityPassword = "public" -- SNMP Password
local NAS = "Synology" -- NAS Switch
local NAS_TEMP = "Synology Temp"
local OID_NAS_TEMP = '.1.3.6.1.4.1.21796.4.1.3.1.4.2'
return {
active = true,
on = {
timer = {'every minute'}
},
logging = { level = domoticz.LOG_DEBUG,
-- level = domoticz.LOG_INFO,
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = "Synology Monitor v1.35 " },
execute = function(dz)
local i = 0
local results = {}
local command = 'snmpget -v 2c -c '..CommunityPassword..' -O qv '..NasIp..' '..OID_NAS_TEMP
local handle = assert(io.popen(command))
for line in handle:lines() do
results = format(line)
i = i + 1
end
handle:close()
if results[0] then
dz.log("NASTemp : "..results[0],dz.LOG_DEBUG)
if NAS_TEMP then dz.devices(NAS_TEMP).update(0,results[0]) end
end
end
}
J'ai adapté les valeurs :
communauté snmp/@ip/oid snmp/gardé qu'une seule valeur à récupéré dans la boucle;
J'ai aussi créé l'interrupteur virtuel dans Domoticz avec le bon nom : Synology Temp
Le script ne fonctionne pas (testé en mode time et mode device)
Voici les logs :
EventSystem: in Synology: [string "--------------------------------------------..."]:29: attempt to index global 'domoticz' (a nil value)
La ligne 29 correspond à :
logging = { level = domoticz.LOG_DEBUG,
J'ai donc commenté la partie logging et voici le message d'erreur :
Error: EventSystem: Lua script Synology did not return a commandArray
Pensez-vous que j'ai oublié des paramètres dans le script (pour évi.ter les erreurs je n'ai pour le moment pas renommer les variables vs l'original).
Merci pour votre aide.
Julien.