Notification Telegram pour device type "mesure"

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Notification Telegram pour device type "mesure"

Message par garycooper »

Bonjour, j'ai suivi le tuto suivant https://domo.easter.fr/2019/10/04/octop ... -domoticz/ pour intégrer mon imprimante 3D à Domoticz. L'étape suivante est de recevoir une notification Telegram lorsque l'impression est terminée. Soit quand la mesure "Octoprint Time Left" passe à 0. Les mesures ne disposent pas du bouton "notifications" pour paramétrer facilement une notification. C'est donc là que ça se gate ... J'ai trouvé unscript lua pour envoyer des notifications Telegram lorsqu'un switch bascule de On à Off ou inversement mais je ne sais pas comment faire la même manip' pour un device de type "mesure".
Quelqu'un a-t'il ça dans sa bibliothèque ?
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Notification Telegram pour device type "mesure"

Message par denis_brasseur »

Code : Tout sélectionner

if devicechanged['Octoprint Time Left'] == 0 then
 
end
??
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Notification Telegram pour device type "mesure"

Message par garycooper »

j'ai essayé de mettre

Code : Tout sélectionner

if devicechanged['Octoprint Time Left'] == 0 then
message = 'L impression 3D est à présent terminée'
commandArray['SendNotification']='Ender 3#.. message#0###telegram'
end
Mais j'ai le défaut
Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_octoprint.lua: /home/pi/domoticz/scripts/lua/script_time_octoprint.lua:106: attempt to index global 'devicechanged' (a nil value)
dans les log
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Notification Telegram pour device type "mesure"

Message par denis_brasseur »

Mon premier script Lua dans Domoticz : Les fondations
Attention :

Sachez que suivant le type de script vous accéderez ou pas a telle ou telle table.

Les scripts_device utilisent 6 tables de Domoticz: devicechanged, otherdevices, otherdevices_lastupdate, otherdevices_svalues, uservariables et uservariables_lastupdate
Les scripts_variable : 6 tables : otherdevices, otherdevices_lastupdate, otherdevices_svalues, uservariables, uservariables_lastupdate et uservariablechanged
Les script_time connaissent 5 tables Domoticz : otherdevices, otherdevices_lastupdate, otherdevices_svalues, uservariables et uservariables_lastupdate
Cela signifie que dans un script_time_xxxx.lua si j’utilise la fonction devicechanged j’aurais une erreur :Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_xxxx.lua:9: attempt to index global ‘devicechanged’ (a nil value)

car cette fonction n’existe pas pour les script Time.
Tu ne peux pas utiliser devicechanged dans script de type 'time'. Passe par un script de type device.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Notification Telegram pour device type "mesure"

Message par garycooper »

Ok, merci. Dans mon idée, c'était de rajouter simplement une tigne dans le script existant mais du coup je vais faire le rajouter à un script device de notification
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Notification Telegram pour device type "mesure"

Message par garycooper »

Bon, j'ai essayé plusieurs méthode mais je n'y arrive pas (je n'ai jamais intégré les notifications dans les scripts).
Le scrit est en réalité de type "device" et pas "time" comme je l'avais fait auparavant ....
Le device "mesure" de type "texte" qui rapporte le temps d'impression restant ne passe pas à zero ... il reste sur la dernière valeur avant 0 ... Qu'à cela ne tienne, j'ai essayé de reporter la notification sur le device "mesure" de type "texte" qui renvoie l'état de l'impression ("Etat Octoprint"). En effet, quand l'impression est terminée, le device passe de l'état "Printing" à "Operational". J'ai donc rajouté ces lignes en fin du script :

Code : Tout sélectionner

-- envoi notification telegram en fin d impression
	local subsystem = "telegram"

	if (devicechanged['Etat Octoprint'] == 'Operational') then
	commandArray[#commandArray+1] = {['SendNotification'] = 'Ender 3# L impression 3D est à présent terminée !#0###'.. subsystem ..''}
	end
Mais quand l'impression est terminée, je ne reçois pas de notification. Pouvez-vous m'aider pour atteindre le but recherché ? J'ai posté sur le site du script, mais sans succès.
Merci d'avance !
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Notification Telegram pour device type "mesure"

Message par denis_brasseur »

Ton device mesure de type texte 'Etat Octoprint' change bien de valeur pour passer à 'Operational' ?

Auquel cas un print dans ta condition devrait de retourner quelque chose dans les log, afin d'identifier si c'est la condition ou l'envoi de notification qui déconne.

Code : Tout sélectionner

if devicechanged['Etat Octoprint'] == 'Operational' then
	--commandArray[#commandArray+1] = {['SendNotification'] = 'Ender 3# L impression 3D est à présent terminée !#0###'.. subsystem ..''}
	print('L impression 3D est à présent terminée !')
end
Syntaxe de SendNotification:
LUA : aide mémoire notifications by papoo

Code : Tout sélectionner

commandArray[#commandArray+1] = {['SendNotification'] ='subject#body#extraData#priority#sound#subsystem'}
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Notification Telegram pour device type "mesure"

Message par garycooper »

Effectivement, c'est un problème de notification plutôt que de script :
2020-03-11 23:28:37.280 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_octoprint.lua
2020-03-11 23:28:38.511 Notification sent (telegram) => Failed
2020-03-11 23:28:38.511 Error: Telegram: {"ok":false,"error_code":403,"description":"Forbidden: bot was blocked by the user"}
JJe viens de voir que j'avais désactivé le bot ... Je relance une impression et je te redis.
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Notification Telegram pour device type "mesure"

Message par garycooper »

Bon, ben, malgré que les notifications telegram fonctionnent pour les autres devices, l'impression lancée cette nuit n'a pas émis de notification. Les logs étant trop remplis par les différents scripts, je n'ai pas pu remonter suffisamment loin dans l'historique pour voir à 1h20 du matin si j'avais bien une ligne sur l'envoie de la notification.
Par contre, j'ai bien eu un changement d'état de "Printing" à "Operational".
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Notification Telegram pour device type "mesure"

Message par denis_brasseur »

Pourquoi ne pas modifier ton device text au lieu de relancer une impression 3D ?

https://easydomoticz.com/traduction-fra ... textsensor

Code : Tout sélectionner

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEXT
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre