Page 1 sur 2
Notification Telegram pour device type "mesure"
Publié : 20 févr. 2020, 23:50
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 ?
Re: Notification Telegram pour device type "mesure"
Publié : 21 févr. 2020, 06:09
par denis_brasseur
Re: Notification Telegram pour device type "mesure"
Publié : 21 févr. 2020, 17:44
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
Re: Notification Telegram pour device type "mesure"
Publié : 22 févr. 2020, 07:32
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.
Re: Notification Telegram pour device type "mesure"
Publié : 22 févr. 2020, 08:53
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
Re: Notification Telegram pour device type "mesure"
Publié : 10 mars 2020, 22:10
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 !
Re: Notification Telegram pour device type "mesure"
Publié : 11 mars 2020, 05:01
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'}
Re: Notification Telegram pour device type "mesure"
Publié : 11 mars 2020, 23:46
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.
Re: Notification Telegram pour device type "mesure"
Publié : 12 mars 2020, 13:08
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".
Re: Notification Telegram pour device type "mesure"
Publié : 13 mars 2020, 07:10
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¶m=udevice&idx=IDX&nvalue=0&svalue=TEXT