Notification Telegram pour device type "mesure"
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Notification Telegram pour device type "mesure"
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 ?
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"
Code : Tout sélectionner
if devicechanged['Octoprint Time Left'] == 0 then
endPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Notification Telegram pour device type "mesure"
j'ai essayé de mettre
Mais j'ai le défaut
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
dans les logError: 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)
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Notification Telegram pour device type "mesure"
Mon premier script Lua dans Domoticz : Les fondations
Tu ne peux pas utiliser devicechanged dans script de type 'time'. Passe par un script de type device.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.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Notification Telegram pour device type "mesure"
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"
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 :
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 !
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
Merci d'avance !
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Notification Telegram pour device type "mesure"
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.
Syntaxe de SendNotification:
LUA : aide mémoire notifications by papoo
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 !')
endLUA : 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"
Effectivement, c'est un problème de notification plutôt que de script :
JJe viens de voir que j'avais désactivé le bot ... Je relance une impression et je te redis.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"}
-
garycooper
- Messages : 453
- Inscription : 07 août 2017, 23:58
Re: Notification Telegram pour device type "mesure"
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".
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"
Pourquoi ne pas modifier ton device text au lieu de relancer une impression 3D ?
https://easydomoticz.com/traduction-fra ... textsensor
https://easydomoticz.com/traduction-fra ... textsensor
Code : Tout sélectionner
/json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=TEXTPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090