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.
LUA récupérer température sonde ip en snmp
-
juliendebrest
- Messages : 6
- Inscription : 30 janv. 2017, 19:35
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA récupérer température sonde ip en snmp
Le script que tu utilises est du DzVents, tu n'aurais pas choisi LUA lors de la création de ton script, et non pas dzVents?juliendebrest a écrit : 25 sept. 2019, 22:40
A partir de domoticz / réglages / evenements j'ai adapté un script LUA (bien connu et initialement prévu pour monitorer un nas)
viewtopic.php?f=17&t=8882&start=10
- Pièces jointes
-
- Capture.PNG (7.54 Kio) Consulté 2697 fois
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
juliendebrest
- Messages : 6
- Inscription : 30 janv. 2017, 19:35
Re: LUA récupérer température sonde ip en snmp
Il me semble avoir choisi LUA à la création, je vérifie cela se soir, quitte à le recréer.
Le code à l’intérieur c'est bien du LUA ? commentaire du script initial Synology2.lua
Lorsque l'on créé le script via l'interface web, il n'y a pas besoin de le rechercher en SSH sur le Pi avant de lui attribuer des droits exécutable ?
Merci.
Le code à l’intérieur c'est bien du LUA ? commentaire du script initial Synology2.lua
Lorsque l'on créé le script via l'interface web, il n'y a pas besoin de le rechercher en SSH sur le Pi avant de lui attribuer des droits exécutable ?
Merci.
-
juliendebrest
- Messages : 6
- Inscription : 30 janv. 2017, 19:35
Re: LUA récupérer température sonde ip en snmp
Bonjour,
je Viens de le recréer en DzVents, voici à présent l'erreur :
[2019-09-26 17:42:00.330 Status: dzVents: Error (2.4.19): Synology Monitor v1.35 : An error occured when calling event handler Synology2
2019-09-26 17:42:00.330 Status: dzVents: Error (2.4.19): Synology Monitor v1.35 : ...domoticz/scripts/dzVents/generated_scripts/Synology2.lua:41: attempt to call global 'format' (a nil value)
2019-09-26 17:42:00.330 Status: dzVents: Info: Synology Monitor v1.35 : ------ Finished Synology2
La ligne 41 correspond à :
results = format(line)
Merci pour votre aide.
Julien.
je Viens de le recréer en DzVents, voici à présent l'erreur :
[2019-09-26 17:42:00.330 Status: dzVents: Error (2.4.19): Synology Monitor v1.35 : An error occured when calling event handler Synology2
2019-09-26 17:42:00.330 Status: dzVents: Error (2.4.19): Synology Monitor v1.35 : ...domoticz/scripts/dzVents/generated_scripts/Synology2.lua:41: attempt to call global 'format' (a nil value)
2019-09-26 17:42:00.330 Status: dzVents: Info: Synology Monitor v1.35 : ------ Finished Synology2
La ligne 41 correspond à :
results = format(line)
Merci pour votre aide.
Julien.
-
juliendebrest
- Messages : 6
- Inscription : 30 janv. 2017, 19:35
Re: LUA récupérer température sonde ip en snmp
J'ai trouvé ce qui ne fonctionne pas.
Le dispositif créé dans domoticz de type température attend en retour qu'un chiffre.
Je l'ai passé en type texte, et la cela fonctionne.
Pour rappel le résultat de la commande snmp me renvoi la température entre "".
Est-il possible dan la commande snmp via une option ne récupéré que les chiffres sans "" ?
Ou-bien dans le script rajouter une commande qui permet de les enlever, et pouvoir ainsi créer mon interupteur en type sonde de température ?
Merci.
Le dispositif créé dans domoticz de type température attend en retour qu'un chiffre.
Je l'ai passé en type texte, et la cela fonctionne.
Pour rappel le résultat de la commande snmp me renvoi la température entre "".
Est-il possible dan la commande snmp via une option ne récupéré que les chiffres sans "" ?
Ou-bien dans le script rajouter une commande qui permet de les enlever, et pouvoir ainsi créer mon interupteur en type sonde de température ?
Merci.
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA récupérer température sonde ip en snmp
Qu'obtiens tu si tu fais un
Code : Tout sélectionner
...........................................................
if results[0] then
print('valeur brut ' .. results[0])
print('valeur string ' .. tostring(results[0]))
print('valeur number ' .. tonumber(results[0]))
.........................................
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090