Activer script LUA selon évènement

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 <\>.
mattx38
Messages : 36
Inscription : 27 janv. 2020, 22:55

Activer script LUA selon évènement

Message par mattx38 »

Bonsoir,

Est-il possible d'activer et de désactiver un script LUA en fonction d'un événement ?
J'ai un script LUA qui vient récupérer les métriques d'un serveur d'impression 3D OctoPrint. J'aimerais que ce script soit désactivé quand OctoPrint est éteint et qu'il s’exécute quand le serveur est démarré.

Merci d'avance pour vos conseils.
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Activer script LUA selon évènement

Message par boum »

Non, ce n'est pas possible.
Cependant, il est facile de rajouter une condition au début du script pour empêcher l'exécution de continuer.

En dzVents :

Code : Tout sélectionner

return {
  on = {
    -- déclencheur
  },
  
  execute = function(domoticz, item)
    if not domoticz.devices('Octo').active then -- condition pour activer/désactiver le script
      return
    end
    
    -- reste du script
  end
}
En Lua classique :

Code : Tout sélectionner

if otherdevices['Octo'] ~= 'On' then -- condition
  return {}
end

-- reste du script
-- ...
Pour la condition, cela peut être l'état d'un dispositif, un variable utilisateur modifiée par un autre script…
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Activer script LUA selon évènement

Message par Keros »

Et tu peux grouper ça avec le plugin Ping (je ne me souviens plus du nom exact mais je crois qu'il est par défaut dans DomoticZ).
Ce plugin fait un ping sur des adresses IP et gère un device : ON quand la connexion peut être faite & OFF quand il as perdu la connexion.

En pinggant l'IP de ton Octoprint, tu peux savoir s'il est allumé ou pas.

Il existe un plugin DomoticZ pour Octoprint. Je pense que tu peux y retrouver des infos comme le statut d'impression, etc (je ne l'ai pas testé).
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
mattx38
Messages : 36
Inscription : 27 janv. 2020, 22:55

Re: Activer script LUA selon évènement

Message par mattx38 »

Merci à tous les deux.

J'ai essayé d'ajouter le script au début de mon script LUA, mais ça ne change rien.
Ca m'écrit toujours : "Status: EventSystem: Script event triggered: Octoprint-LUA" dans les logs, même quand le serveur OctoPrint est éteint.

Sinon, j'ai bien mis en place le ping du serveur.
Je n'arrive pas à m'en servir pour adapter le script.
oddali
Messages : 68
Inscription : 19 mars 2016, 17:22
Localisation : TOURS

Re: Activer script LUA selon évènement

Message par oddali »

Bonjour
Octoprint, qui pilote une imprimante 3D, s'exécute sur un Raspberry Pi qui est censé fonctionner en permanence, même si l'imprimante 3D est arrêtée.
Le ping sur l'IP du Pi ( :) )n'est donc pas une bonne piste.
Pi3 (prod) + Pi3(sécurité)- Dz V:3.4834 - RFLink- Prises Phenix 4000B - OWL CM180 - FOSCAM - YANA.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Activer script LUA selon évènement

Message par Keros »

mattx38 a écrit : 17 sept. 2020, 22:01 J'aimerais que ce script soit désactivé quand OctoPrint est éteint et qu'il s’exécute quand le serveur est démarré.
En lisant sa demande, je pense que la solution du ping sur le serveur répond au besoin.

Mattx38, avec le ping sur le serveur, tu dois avoir un device à On quand Octoprint est allumé et Off quand Octoprint est éteint. Tu as bien ce fonctionnement dans les interrupteurs de DomoticZ ?
Si ça fonctionne, alors utilises ce device dans la condition de ton script.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
mattx38
Messages : 36
Inscription : 27 janv. 2020, 22:55

Re: Activer script LUA selon évènement

Message par mattx38 »

Tout à fait.
Octoprint me sert uniquement à stopper l'imprimante une fois l'impression terminée, quand j'ai des travaux qui se terminent en pleine nuit par exemple. Du coup, le reste du temps, j'arrête le RPI.

Donc j'ai inscrit ceci :

Code : Tout sélectionner

if otherdevices ['OctoPrint'] ~= 'On' then -- condition
  return {}
 end

-- Use Lua -> Time
-- For displaying debug messages
debug=false
Et j'obtiens cela comme log :
Error: EventSystem: Lua script Octoprint-LUA did not return a commandArray
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Activer script LUA selon évènement

Message par boum »

mattx38 a écrit : 21 sept. 2020, 23:06 Tout à fait.
Octoprint me sert uniquement à stopper l'imprimante une fois l'impression terminée, quand j'ai des travaux qui se terminent en pleine nuit par exemple. Du coup, le reste du temps, j'arrête le RPI.

Donc j'ai inscrit ceci :

Et j'obtiens cela comme log :
Error: EventSystem: Lua script Octoprint-LUA did not return a commandArray
Dans les scripts Lua classiques, la première instruction devrait toujours être :

Code : Tout sélectionner

commandArray = {}
On nous ment, on nous spolie.
J'ai vérifié le code et je ne sais pas si ça a toujours été comme ça, mais le système d'événement n'en a rien à péter que l'on retourne commandArray, un nombre ou la tête à Toto. Il regarde le contenu de la variable globale commandArray.
Ce message d'erreur est un mensonge ! ^^
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Activer script LUA selon évènement

Message par Keros »

Utilise la fonction de création de script dans Paramètres / Plus d'options / Évènements. Cela te créera la syntaxe de base pour tes scripts.

Tu trouveras plus d'info pour débuter en programmation dans ma signature.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre