Lazer Posté(e) le 29 juin 2020 Signaler Posté(e) le 29 juin 2020 (modifié) Network Monitor Version 2.12 Ce Quick App pour HC3 permet de surveiller des équipements sur le réseau (local et Internet), et d'envoyer des notifications en cas de problème détecté. Cela va bien au-delà du simple ping réseau, car ce QuickApp permet de vérifier le bon fonctionnement des services (envoi d'une requête, et vérification de la réponse) Il s'agit de la v2, car il fait suite au Module Virtuel Network Monitor v1.x initialement développé pour HC2. Screenshot peu esthétique, en espérant que Fibaro propose rapidement de personnaliser l'apparence visuelle des QA. Cependant, ce n'est pas son rôle premier, l'objectif est bien de recevoir des notifications instantanées en cas de souci détecté : Configuration : Importer le QuickApp (fichier fqa) de façon habituelle sur la box HC3, puis changer les paramètres suivants dans l'onglet Variables : Notif_Users : ID ou Nom des utilisateurs à qui envoyer un email en cas d'échec d'envoi du SMS, séparés par des virgules. La liste des utilisateurs peut être récupérée dans le panneau Accès de la HC3, ou directement via l'API /api/users. Par exemple : Asterix, Obelix Notif_Mobiles : ID ou Nom des smartphones à qui envoyer une notification Push en cas d'échec d'envoi du SMS, séparés par des virgules. La liste des mobiles peut être récupérée via l'API /api/iosDevices. Par exemple : Nokia 3310, iPhone 42 Notif_SMS : Nom du QuickApp et nom de sa fonction qui sera appelée pour exécuter un code LUA externe, par exemple envoyer un SMS, ou un mesage via Telegram, ou autre service de notification. Ensuite, aller dans l'onglet "Modifier et prévisualiser", puis cliquer sur le bouton "Modifier" afin d'entrer dans l'éditeur LUA. Il faut éditer le tableau DEVICES dans le fichier CONFIG. Exemple : DEVICES = { {name = "Serveur SSH" , address = "192.168.1.1" , port = 22, protocol = "tcp" , timeout = 1, senddata = nil , retdata = "OpenSSH", retry = 1, interval = 30, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "Ubiquiti Unifi AP-AC-Pro" , address = "192.168.1.2" , port = 22, protocol = "tcp" , timeout = 1, senddata = nil , retdata = "SSH" , retry = 1, interval = 60, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Ubiquiti Unifi Switch" , address = "192.168.1.3" , port = 22, protocol = "tcp" , timeout = 1, senddata = nil , retdata = "SSH" , retry = 1, interval = 60, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "Ubiquiti Unifi Controller" , address = "192.168.1.4" , port = 8443, protocol = "https", timeout = 2, url = "/manage/account/login" , retcode = 200, retdata = "UniFi Network" , retry = 1, interval = 60, notification = {"push", "email", }, vg = nil, conditions = nil}, {name = "Ubiquiti EdgeRouter" , address = "192.168.1.5" , port = 443, protocol = "https", timeout = 1, url = "/" , retcode = 200, retdata = "EdgeRouter" , retry = 1, interval = 30, notification = { "sms"}, vg = nil, conditions = nil}, {name = "Switch Cisco" , address = "192.168.1.6" , port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "cisco" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Switch Netgear GS105Ev2" , address = "192.168.1.7" , port = 80, protocol = "http" , timeout = 1, url = "/login.cgi" , retcode = 200, retdata = "NETGEAR" , retry = 1, interval = 60, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "Switch Netgear GS108Tv2" , address = "192.168.1.8" , port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "NETGEAR" , retry = 1, interval = 60, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "HP ProLiant Remote Access Card", address = "192.168.1.9" , port = 80, protocol = "http" , timeout = 1, url = "/login.html" , retcode = 200, retdata = "Remote Access Card" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = nil}, {name = "HP ProLiant Gen8 ILO" , address = "192.168.1.10" , port = 443, protocol = "https", timeout = 1, url = "/" , retcode = 200, retdata = "iLO" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = nil}, {name = "VMware ESXi" , address = "192.168.1.11" , port = 443, protocol = "https", timeout = 1, url = "/" , retcode = 200, retdata = "VMware ESXi" , retry = 1, interval = 60, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Onduleur Eaton 5P" , address = "192.168.1.12" , port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "Network Management Card", retry = 1, interval = 60, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "Synology DiskStation" , address = "192.168.1.13" , port = 5000, protocol = "http" , timeout = 5, url = "/" , retcode = 200, retdata = "DiskStation" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Serveur Web Apache" , address = "192.168.1.14" , port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "Apache" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = nil}, {name = "GCE Eco-Devices" , address = "192.168.1.15" , port = 80, protocol = "http" , timeout = 1, url = "/index1.htm" , retcode = 200, retdata = "Eco Devices" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "GCE IPX800 v4" , address = "192.168.1.16" , port = 80, protocol = "http" , timeout = 1, url = "/user/index2.htm" , retcode = 200, retdata = "IPX800" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Caméra Hikvision" , address = "192.168.1.17" , port = 80, protocol = "http" , timeout = 1, url = "/doc/page/login.asp" , retcode = 200, retdata = "login" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "Caméra Foscam" , address = "192.168.1.18" , port = 88, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "IPCam Client" , retry = 1, interval = 60, notification = {"push", "email", "sms"}, vg = nil, conditions = { vg = "Vacances" , operator = "==", value = "0"}, }, {name = "JPI SMS Gateway" , address = "192.168.1.19" , port = 8080, protocol = "http" , timeout = 10, url = "/JPI/" , retcode = 200, retdata = "JPI" , retry = 6, interval = 30, notification = {"push", "email" }, vg = nil, conditions = { vg = "Monitor_JPI" , operator = "==", value = "0"}, }, {name = "FHEM" , address = "192.168.1.20" , port = 8083, protocol = "http" , timeout = 1, url = "/fhem" , retcode = 401, retdata = "" , retry = 1, interval = 30, notification = {"push", "email", "sms"}, vg = nil, conditions = nil}, {name = "HA Bridge" , address = "192.168.1.21" , port = 80, protocol = "http" , timeout = 1, url = "/#!/" , retcode = 200, retdata = "HA Bridge" , retry = 1, interval = 60, notification = {"push", "email" }, vg = nil, conditions = nil}, {name = "Google" , address = "www.google.fr", port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 200, retdata = "Recherche Google" , retry = 1, interval = 1, notification = { "sms"}, vg = nil, conditions = nil}, {name = "Yamaha MusicCast" , address = "192.168.1.22" , port = 80, protocol = "http" , timeout = 1, url = "/YamahaExtendedControl", retcode = 200, retdata = "response_code" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = nil}, {name = "Projecteur Epson EH-TW9300" , address = "192.168.1.23" , port = 80, protocol = "http" , timeout = 1, url = "/" , retcode = 404, retdata = "Not Found" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = { vg = "Vacances" , operator = "==", value = "1"}, }, {name = "Nvidia Shield TV" , address = "192.168.1.24" , port = 8008, protocol = "http" , timeout = 1, url = "/" , retcode = 404, retdata = "" , retry = 1, interval = 60, notification = { "email" }, vg = nil, conditions = { operator = "any", conditions = { { profil = "" , operator = "==", value = "Vacances"}, { operator = "all", conditions = { { vg = "Chauffage", operator = "==", value = "Été"}, { operator = "any", conditions = { { profil = "", operator = "==", value = "Nuit"}, { profil = "", operator = "==", value = "Absent"} } } } } } } }, } Cela risque d'être peu lisible sur votre écran, dans ce cas il faut utiliser l'ascenseur horizontal pour faire défiler, ou alors insérer des sauts de lignes) Cependant j'aime bien cette présentation qui se rapproche d'un tableau et est parfaitement lisible sur un grand écran. Ce QuickApp est relativement complexe à paramétrer, car les options pour DEVICES sont nombreuses : name : obligatoire : string : Nom de l'équipement qui apparaitra dans la notification address : obligatoire : string : Adresse IP ou nom DNS de l'équipement à monitorer port : facultatif si protocole http/https | obligatoire si protocole tcp : Port TCP. Dans le cas des connexions HTTP et HTTPS, si ce n'est pas spécifié, le port par défaut sera utilisé (80 pour HTTP, et 443 pour HTTPS) protocol : obligatoire : string : "http" | "https" | "tcp" : ces 3 protocoles sont supportés. Le mode tcp est un mode raw, c'est à dire que les données sont lues/écrites telles quelles sur la socket. login : facultatif si protocole http/https | inutile si protocole tcp : string : Nom d'utilisateur à utiliser dans l'en-tête de la connexion HTTP/HTTPS. password : facultatif si protocole http/https | inutile si protocole tcp : string : Mot de passe à utiliser dans l'en-tête de la connexion HTTP/HTTPS. timeout : facultatif : integer : Valeur par défaut = 1 seconde : Durée autorisée de la connexion en secondes avant réponse du client. Doit être augmenté si le client met trop de temps à répondre. url : obligatoire si protocole http/https | inutile si protocole tcp : string : URL de la page Web à charger retcode : obligatoire si protocole http/https | inutile si protocole tcp : integer : code de retour HTTP attendu (200 la plupart du temps) senddata : inutile si protocole http/https | facultatif si protocole tcp : string : chaine de caractère à envoyer lors de l'établissement de la connexion TCP. Cela peut être nécessaire pour certains équipements qui n'envoient pas de réponse avant d'avoir reçu une instruction. retdata : facultatif : string : chaine de caractère recherchée dans la réponse retry : facultatif : integer : valeur par défaut = 1 : nombre de tentatives de connexion à effectuer. Augmenter cette valeur peut être utile pour certains équipements dont la connexion est instable, notamment via Wi-Fi. delay : facultatif : integer : valeur par défaut = 0 : délay en seconde avant d'effectuer une nouvelle tentative de connexion. Augmenter cette valeur peut être utile si l'équipement met un certain temps avant d'être de nouveau joignable après une déconnexion. interval : facultatif : integer : valeur par défaut = 1 minute : intervalle en minutes entre 2 vérifications. J'ai testé jusqu'à 1440 minutes, soit 24 heures. notification : obligatoire : table : "push" | "email" | "sms" | "vg" | "service" : type de notification à envoyer, configurée préalablement. vg : facultatif : string : nom facultatif d'une variable globale à incrémenter, celle-ci sera automatiquement créée si nécessaire. Elle est remise à 0 dès que l'appareil surveillé est de nouveau disponible. conditions : facultatif : table : permet d'annuler le monitoring d'un équipement particulier en fonction de conditions sur des variables globales. Les conditions sont combinables avec des instructions booléennes "any" (= or) et "all" (= and). La syntaxe est inspirée du moteur de triggers des scènes sur HC3. On peut utiliser des conditions de vg ou de profil. Téléchargement : Nouvelle installation : Network_Monitor_v2.12.fqa Mise à jour : Fichier main : Network Monitor v2.12.lua Fichier CONFIG : Network Monitor - Config Tuto.lua Fichier tools : Library - tools v2.20.lua Fichier Notifications : Library - Notifications v2.2.lua Modifié le 28 septembre 2021 par Lazer 5 1
mprinfo Posté(e) le 29 juin 2020 Signaler Posté(e) le 29 juin 2020 Et un QA de moins à faire la liste diminue doucement Comme le passage sur hc3 n'est pas pour demain je pense que l'on aura juste à faire la migration des devices zwave le jour où on fera la migration Envoyé de mon BLA-L29 en utilisant Tapatalk
henri-allauch Posté(e) le 18 février 2021 Signaler Posté(e) le 18 février 2021 @lazer J'ai essayé ton quickapp car j'utilisais la version Hc2, et c'est aussi un exemple pour apprendre les QA Il fonctionne parfaitement sauf que dans la version HC2 on avait la possibilité de mettre le user/passwd pour certain device Dans mon cas cela me gène pour le test d'anciennes caméra dlink et pour un serveur. Pour le moment j'ai mis 401 comme code retour ( Unauthorized ) qu'en penses tu ?
Lazer Posté(e) le 18 février 2021 Auteur Signaler Posté(e) le 18 février 2021 L'utilisateur et le mot de passe ? Euh... J'ai pas souvenir de ça... tu es certain que tu n'utilisais pas une version que tu avais customisé ? Cela dit, l'idée n'est pas bête, je l'ajouterai dans une prochaine version En attendant, oui tu peux tester le code de retour... 401 est le code qu'on reçoit le plus souvent quand le login est incorrect/manquant. C'est ce que j'utilise en tout cas chez moi.
henri-allauch Posté(e) le 18 février 2021 Signaler Posté(e) le 18 février 2021 Ok tu as raison ( évidement) je tourne sur la version 1.10 de Novembre 2015 et j'ai modifié -- ["Service Name"] = { IP Address , Port, Protocol, Data to send, Expected Rc, Expected data, Retry, {Notification methods}, user, pwd }, Comme j'ai démarré en Novembre 2015 avec la HC2 j'ai du me sentir un peu novice pour proposer une modification mais j'ai ajouté dans l'en-tête ---------------------------------------------------- Sur le travail de : -- Module : Network Monitor -- Author : Lazer with contribution of JM13 -- Version : 1.10 -- Date : November 2015 --------------------------------------------------
Domodial Posté(e) le 18 mars 2021 Signaler Posté(e) le 18 mars 2021 Hello, Superbe outils, et compliqué pour un vieux J'ai beaucoup d'alerte sur Google, ça me dit que je n'ai pas de connexion mais j'en ai vraiment une. Du coup pas mal de notifs en ce sens alors que je suis sur The Internet Je ne sais pas trop quoi faire... Pareil sur les 2 NAS, j'en ai un chez qui tout va bien et l'autre de notifs. Je ne comprends pas toutes les commandes aussi {name = "Google", address = "www.google.fr", port = 80, protocol = "http", timeout = 1, url = "/", retcode = 200, retdata = "Recherche Google", retry = 1, interval = 1, notification = {"push","email"}, vg = nil, conditions = nil},
Lazer Posté(e) le 18 mars 2021 Auteur Signaler Posté(e) le 18 mars 2021 C'est ta connexion Internet qui est trop lente ou instable, ça m'a fait le coup quand je suis passé d'Orange à Free (et là tu comprends la différence de prix....) Il faut que tu augmentes le timeout et le nombre de retry, par exemple pour Google tu mets : - timeout = 10 - retry = 10 Et là tu seras tranquille, si Networrk Monitor t'avertit que Google est injoignable, c'est que tu as une vraie panne Internet depuis 10*10 = 100 secondes Idem pour ton second NAS, s'il est trop vieux / trop lent, il faut augmenter les valeurs pour rendre Network Monitor moins sensible. 1
Domodial Posté(e) le 18 mars 2021 Signaler Posté(e) le 18 mars 2021 (modifié) humm tu veux dire que mon ping de 1ms et mes 898 mb/s c'est de la daube ? Pour le nas j'ai trouvé la panne, lol j'avais oublié qu'il était éteint de 00h00 à 4h30 mouarf ! Bon, je vais essayer les réglages que tu me conseil. EDIT : je pense qu'il y a de l'instabilité, 3 pannes déjà dans tous le quartier. Maintenant la fibre tient le coup mais certainement avec des instabilités en effet ! C'est la nuit, rien dans la journée. Modifié le 18 mars 2021 par Domodial
Lazer Posté(e) le 18 mars 2021 Auteur Signaler Posté(e) le 18 mars 2021 Moi aussi chez Free j'ai un bon ping et de bons débits, comme chez Orange, mais ça c'est en apparence. Ou plus précisément en situation de benchmark, sur un serveur Speedtest qui a été sélectionné car étant proche de chez toi, sur le même réseau (le réseau de Free) En pratique, session de surf, j'ai régulièrement des latences, notamment quand je consulte un nouveau site. Cela peut avoir plusieurs origines, des serveurs DNS qui sont lents à aller chercher l'adresse, des routeurs qui sont lents à calculer une nouvelle route, de mauvais accords de peering avec les réseaux des autres opérateurs. Et sur ce dernier points, Free est connu pour être très mauvais.... les problèmes avec Youtube par exemple, n'ont jamais été résolu. Même si en général ça fonctionne bien, il arrive régulièrement que je n'arrive pas à charger une vidéo, surtout aux heures de pointes, genre début de soirée. Et 1 heure après, comme par hasard, ça marche, chargement instantané même en 2160p. Chez Orange, je n'avais aucun de ces problèmes, mais l'abonnement était 2 fois plus cher... alors forcément, le réseau derrière n'est pas le même. Bref, Network Monitor a été conçu, avec tous ses paramètres, pour être adaptés à chaque cas d'usage. En ce qui concerne un serveur éteint la nuit, ou pendant les vacances, tu peux aussi utiliser les conditions dans le dernier champ pour exclure temporairement un appareil du monitoring grâce aux variables globales. J'ai donné des exemples dans le tuto.
henri-allauch Posté(e) le 26 août 2021 Signaler Posté(e) le 26 août 2021 @Lazer J'ai parfois des devices http qui ne répondent pas ( ex: Caméras ) , mais quelques secondes plus tard, interrogés par un navigateur ils sont OK. J'ai donc passé le retry de 1 à 3 mais il me semble que ce retry est immédiat donc sans effet dans ce cas. Est-ce qu'il te semble correct que pour essayer j'ajoute un délai de 5 secondes dans le setTimeout du retry ( vers la ligne 516 )
Lazer Posté(e) le 27 août 2021 Auteur Signaler Posté(e) le 27 août 2021 Il me semblait avoir mis un délai entre 2 retry de 1 seconde, mais apparemment ce n'est pas le cas (ça devait l'être sur HC2) Chez moi j'ai certains appareils avec jusqu'à 8 retry. Mais attention, tu as aussi un paramètre timeout sur lequel il faut jouer. J'ai jusqu'à 10 secondes pour certains appareils qui sont trop lents à répondre. La plupart des exemples donnés en haut de page ont un timeout de 1 seconde, ce qui est trop court. Donc si on met 8 retry avec un timeout de 10 seconde, ça laisse quand même 80 secondes à l'appareil pour se réveiller, ça devrait être large, sinon c'est que tu as un autre souci. Le numéro de ligne peut varier selon ta config, donc si tu veux faire la modif pour ajouter un délai entre 2 retry, voici le bloc concerné, il y a 2 lignes setTimeout() à modifier : remplacer le 0 par 5000. -- New try if device.protocol == "tcp" then fibaro.setTimeout(0, function() self:connectTCP(device, try+1) end) elseif device.protocol == "http" or device.protocol == "https" then fibaro.setTimeout(0, function() self:requestHTTP(device, try+1) end) else self:error("Unknown protocol :", device.protocol) end 1
Lazer Posté(e) le 27 septembre 2021 Auteur Signaler Posté(e) le 27 septembre 2021 Mise en ligne de la version 2.12 : Ajout des options login et password facultatives et utilisables avec les connexions HTTP et HTTPS (demande de @henri-allauch) Ajout de l'option delay facultative utilisable en cas de retry > 1 (demande de @henri-allauch) L'option conditions permet dorénavant de filtrer sur profil en plus de vg Messages en langue française/anglaise Correctifs et améliorations diverses Téléchargement du QuickApp complet dans le tuto, ou bien des fichiers individuels à copier/coller manuellement. Attention, en cas de mise à jour du QA v2.0 existant, il faudra créer les fichiers manuellement, et créer les 3 nouvelles Variables Notif_xxx dans l'onglet dédié du QuickApp. 5
henri-allauch Posté(e) le 6 octobre 2021 Signaler Posté(e) le 6 octobre 2021 @Lazer Cela ne porte pas spécialement sur Network Monitor mais c'est en préparant sa mise à jour que je me pose la question . Avant tu écrivais par exemple : function QuickApp:checkDevice(device) et tu appelait la fonction self:checkDevice(device) et c'est l'exemple que j'utilisait dans tout mes QA. Maintenant tu écris : local checkDevice checkDevice = function(self, device) et l'appel se fait par checkDevice(self, device) Je suppose qu'il y a des raisons. Peut-tu en dire plus. Rigueur d'écriture ? Portée de la fonction ? Utilisation de la mémoire ? ... Désolé mais à 72 ans je capte plus comme avant ... Merci pour ton aide
Lazer Posté(e) le 6 octobre 2021 Auteur Signaler Posté(e) le 6 octobre 2021 Cette fonction est maintenant en local, et n'est donc plus membre de la classe QuickApp, c'est pour qu'elle ne soit plus exportée en dehors du QA lui-même. Donc il n'est plus possible de l'exécuter depuis un autre QA/Scène. J'essaie maintenant de faire en sorte que seules les fonctions qui ont besoin d'être accessibles de l'extérieur le soient effectivement. Pas les autres. Je trouve cela plus propre, et surtout ça évite qu'un petit malin exécute des fonctions à tort et à travers et viennent se plaindre de dysfonctionnements du QA. Cela n'est pas encore arrivé, mais sait-on jamais. 1
henri-allauch Posté(e) le 6 octobre 2021 Signaler Posté(e) le 6 octobre 2021 OK merci parfaitement compris et j'appliquerai cela aussi
henri-allauch Posté(e) le 7 octobre 2021 Signaler Posté(e) le 7 octobre 2021 J'ai installé manuellement la nouvelle version en ajoutant les fichiers nécessaires. Question sur : notification = {"push", "email", "sms"} En principe je n'utilise pas notification SMS mais uniquement email. J'ai installé les variables Notif_Users Notif_Mobiles et Notif_SMS pour ne pas avoir de : warninfg Variable Notif_xxx not found Mais pour Notif_SMS IdQA:MyFunction cette fonction doit s'occuper de faire sa propre notification pour dire le SMS n'a pas fonctionné ? mais reçois t'elle en paramètre un texte ? Que préconises-tu si on n'a pas de fonction prévu j'ai mis "false" et donc il me dit naturellement [07.10.2021] [07:54:48] [WARNING] [QA_NETWORKMONITOR_29]: Empty notification "false" quickapp id[07.10.2021] [07:54:48] [WARNING] [QA_NETWORKMONITOR_29]: Empty notification "false" quickapp method
Lazer Posté(e) le 7 octobre 2021 Auteur Signaler Posté(e) le 7 octobre 2021 (modifié) Effectivement, j'ai oublié de préciser la syntaxe de la fonction externe appelée pour envoyer un SMS ou toute autre notification (Telegram, etc) Syntaxe de la variable : Nom_du_Quickapp=fonction_a_appeler Quand elle sera appelée, cette fonction recevra 2 arguments : 1er argument : message d'erreur. Exemple : Impossible de se connecter à Synology DiskStation 2nd argument : détail du message d'erreur. Exemple : Operation canceled Par SMS, je n'envoie que le message d'erreur sans le détail, mais tu fais comme tu veux. Perso j'utilise le QuickApp JPI (partagé sur le forum) pour envoyer les SMS via un vieux smartphone Android. Je configure la variable du QA Network Monitor comme ceci : Notif_SMS = "JPI=sendSMS" Du coup, le prototype de la fonction qui va devoir envoyer le SMS ressemble à quelque chose comme ça (en reprenant le nom sendSMS de mon exemple JPI) : function QuickApp:sendSMS(message, detail) -- Dans le cas de JPI je n'exploite que le contenu de l'argument message afin d'alléger le contenu du SMS end Évidemment tu peux nommer la fonction comme ça te plait. Modifié le 7 octobre 2021 par Lazer 1
henri-allauch Posté(e) le 7 octobre 2021 Signaler Posté(e) le 7 octobre 2021 J'ai mis en application c'est Parfait Merci
henri-allauch Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 @Lazer Par curiosité pourquoi : QuickApp.version = 2.12 QuickApp._VERSION = "2.12" une fois en number et une fois en string ? à priori tu l'utilise pour information dans le message trace d'initialisation mais QuickApp.version ou QuickApp._VERSION ont t'il d'autres usages au sens Fibaro ?
Lazer Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 Au sens Fibaro ça n'a aucune importance, c'est juste ma tambouille interne. J'ai trouvé logique d'avoir : - une variable version sous forme de "number", car il est facile de comparer cette valeur lors du démarrage du QA et ainsi vérifier la bonne version de la librairie (oui parce qu'en fait j'utilise ce principe dans toutes mes librairies dépendantes) - une variable _VERSION sous forme de "string", car il est plus facile à afficher à l'écran lors d'un self:debug(), sans avoir besoin de mettre en forme avec string.format()... d'ailleurs, doit-on afficher avec le formatage 2.10 ou 2.1 ? Avec une string, pas de question à se poser. Surtout si demain je décide de créer la version 2.125 par exemple (sur 3 digits donc) Pour en revenir au sens Fibaro, même si ça n'a aucune importance, je n'ai quand même par sorti ça de nul part, je me suis inspiré de ce que Fibaro a fait. Voir sur le topic suivant : _VERSION = "Lua 5.3" json._VERSION = "1.3.4" => ce sont des strings.
henri-allauch Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 Merci Ta tambouille interne est toujours une source d'inspiration
Dragoniacs Posté(e) le 18 janvier 2022 Signaler Posté(e) le 18 janvier 2022 Je viens d'installer ce QA qui fonctionne parfaitement !Juste une question sur les notifications : est-ce possible de mettre le message dans une VG ?Je crois comprendre que oui mais le mode d'emploi n'est pas complet Envoyé de mon M2012K11AG en utilisant Tapatalk
Lazer Posté(e) le 18 janvier 2022 Auteur Signaler Posté(e) le 18 janvier 2022 Euh non, mais pourquoi tu veux mettre le message dans une VG ? Si tu veux envoyer à un QuickApp pour faire du TTS, du Telegram, du SMS, ou que sais-je, tu peux utiliser la variable du QA Notif_SMS en précisant le nom du QA cible, et sa fonction. Le message sera passé en paramètre de la fonction. Le paramètre vg dans chaque ligne correspond à une VG qui sera incrémentée de 1. Par exemple, si ça fait 10 fois que Google ne répond plus, la variable contient 10, j'ai une règle GEA qui reboote la Freebox via le Wall Plug.
Dragoniacs Posté(e) le 19 janvier 2022 Signaler Posté(e) le 19 janvier 2022 C'est juste que j'ai une scène qui gère mes envois de push. C'est un des premiers trucs que j'ai mis en place sur ma HC3, quand je débutait. Je sais que c'est pas top, je vais essayer de changer de système pour passer via un QA.Après, dans ton guide, j'ai vu "VG" dans la liste des paramètres de notification, donc j'ai cru que cela marcherait pour mon système.T'embête pas, pas de besoin de modifier ton QA pour moi.Envoyé de mon M2012K11AG en utilisant Tapatalk
Messages recommandés