LUA récupérer température sonde ip en snmp

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
juliendebrest
Messages : 6
Inscription : 30 janv. 2017, 19:35

LUA récupérer température sonde ip en snmp

Message par juliendebrest »

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.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: LUA récupérer température sonde ip en snmp

Message par denis_brasseur »

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)
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?

viewtopic.php?f=17&t=8882&start=10
Pièces jointes
Capture.PNG
Capture.PNG (7.54 Kio) Consulté 2698 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

Message par juliendebrest »

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.
juliendebrest
Messages : 6
Inscription : 30 janv. 2017, 19:35

Re: LUA récupérer température sonde ip en snmp

Message par juliendebrest »

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.
juliendebrest
Messages : 6
Inscription : 30 janv. 2017, 19:35

Re: LUA récupérer température sonde ip en snmp

Message par juliendebrest »

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.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: LUA récupérer température sonde ip en snmp

Message par denis_brasseur »

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
Répondre