Aller au contenu

MAM78

Membres confirmés
  • Compteur de contenus

    2 515
  • Inscription

  • Dernière visite

  • Jours gagnés

    28

Tout ce qui a été posté par MAM78

  1. @Lazer Avec la ligne suivante : {device = {name = "Entrée Portail" , type = "MotionSensor" }, value = {command = "Get", argument = "D" , pin = "D2", formula = function(value) return not value end}} Lors d'une détection de mouvement du capteur j'ai bien le premier push URL ON qui met en alerte le motion sensor puis lorsque le capteur revient à position sans detection je reçois bien le push URL OFF. Les 2 push sont bien visibles dans le debug, mais sur le deuxième ça plante dans le fichier GCR au niveau de la ligne 27 : getValue = function(value) return tonumber(value) > 0 and true or false end, Du coup mon Child Device reste en position Alerte jusqu'à la prochaine boucle qui va rétablir le bon état. Tu trouveras ci-dessous la configuration au niveau de l'IPX. J'ai des erreurs d'execution du code ci-dessous : [02.11.2021] [21:05:24] [DEBUG] [QA_IPX800_397]: onAction: {"actionName":"push","deviceId":454,"args":[0]} [02.11.2021] [21:05:24] [DEBUG] [QA_IPX800_397]: GCE:convert(0, "value", "getValue") [02.11.2021] [21:05:24] [DEBUG] [QA_IPX800_397]: GCE:compute(false, "value") [02.11.2021] [21:05:24] [TRACE] [QA_IPX800_397]: Input D4 #454 Jardin Arrière value changed from false to true [02.11.2021] [21:05:29] [DEBUG] [QA_IPX800_397]: onAction: {"actionName":"push","deviceId":454,"args":["1"]} [02.11.2021] [21:05:29] [DEBUG] [QA_IPX800_397]: GCE:convert("1", "value", "getValue") [02.11.2021] [21:05:29] [DEBUG] [QA_IPX800_397]: ./include/GCE.lua:27: attempt to compare number with nil [02.11.2021] [21:05:29] [ERROR] [QUICKAPP397]: QuickApp crashed [02.11.2021] [21:05:29] [ERROR] [QUICKAPP397]: Unknown error occurred: handleJsonRpc Au niveau de l'IPX : j'ai configuré le Push de la façon suivante : Au niveau de la scène, j'ai mis ça :
  2. Merci pour la piste du tachymètre, mais il va me falloir trouver maintenant un composant de type contact sec qui aura en entrée une intensité (intensité 0 = Le ventilateur ne tourne pas et >0 = Le ventilateur tourne) et en sortie Ouvert ou Fermé.
  3. J'ai essayé, mais sans réussite. Je supposait que ton test sur UPS-MIB::upsOutputSource vérifiait si l'une des entrées sous-jacente était modifiée et donc lancer un check complet l'ensemble de points de mesures. Laisse tomber, l'actualisation toute les minutes est suffisante. Rien de critique, mes cas d'usage : une porte de baie info restée ouverte m'alerté si quelqu'un venait à trifouiller dans ma baie. Il faudra qu'il fasse vite pour ne pas être détecté Tu aurais une idée de composant à contact sec pour détecter un ou des ventilateurs qui ne tourneraient plus ?
  4. J'ai remarqué dans le QuickApp:loop() que tu avais mis en place un test pour detecter un changement de statut de l'UPS output et lancer plus rapidement une actualisation des mesures. Cf. : SNMP:get("UPS-MIB::upsOutputSource.0", { Compte-tenue que la racine de la MIB pour la sonde d'ambiance est différente (MG-SNMP-UPS-MIB:: vs UPS-MIB::). Est-ce que selon toi, il faudrait adapter le code du QuickApp:loop() pour le faire également le test avec cette racine de MBI (MG-SNMP-UPS-MIB:: vs IOD : 1.3.6.1.4.1.705.1.8) Ceci afin de ne pas avoir à attendre une minute, mais avoir une actualisation plus rapide dès lors que l'un des 2 éléments change ? Du genre : SNMP:get("MG-SNMP-UPS-MIB::upsmgEnviron.0", {
  5. J'ai enfin réussi à faire fonctionner les 2 capteurs (contacts secs) de la sonde EMP d'environnement raccordable à l'onduleur. Il s'agit d'un module optionnel qui se raccord par cable réseau. En fait c'est ultra simple quand on comprend comment fonctionne le QuickApp Dans le main, ajouter le code suivant : voici les device [13] et [14] que j'ai ajouté pour rendre cela fonctionnel : nota : Les 2 premières [12] et [13] correspondent à la sonde de température et d'humidité. Il convient d'adapter la numérotation des devices en fonction de ceux qui sont déjà instanciés dans votre QA. Vous pouvez modifier les valeurs emoji F et O par ceux de votre choix (l'éditeur du forum n'accepte pas les emojis autres que ceux proposés) moi j'ai choisi les cadenas Fermé et Ouvert. Vous pouvez également changer le type de device "com.fibaro.doorSensor" par d'autres types. Idem pour leur nommage. [11] = { name = "upsmgEnvironAmbientTemp", oid = "MG-SNMP-UPS-MIB::upsmgEnvironAmbientTemp.0", child = {type = "com.fibaro.temperatureSensor", name = "Température", property = "value", value = function(a) return a / 10 end}, }, [12] = { name = "upsmgEnvironAmbientHumidity", oid = "MG-SNMP-UPS-MIB::upsmgEnvironAmbientHumidity.0", child = {type = "com.fibaro.humiditySensor", name = "Humidité", property = "value", value = function(a) return a / 10 end, unit = ""}, }, [13] = { name = "upsmgEnvironmentInput1State", oid = "MG-SNMP-UPS-MIB::upsmgEnvironmentInput1State", message = function(a) return QuickApp.upsmgEnvironmentInput1States[a or 1].emoji .. " Porte Baie Info 1 " .. QuickApp.upsmgEnvironmentInputStates[a or 1].text end, child = {type = "com.fibaro.doorSensor", name = "Porte Baie Info 1", property = "value", value = function(a) if a==1 then return false elseif a==2 then return true else return false end end}, notification = {"push", "email", "sms"}, }, [14] = { name = "upsmgEnvironmentInput2State", oid = "MG-SNMP-UPS-MIB::upsmgEnvironmentInput2State", message = function(a) return QuickApp.upsmgEnvironmentInput1States[a or 1].emoji .. " Porte Baie Info 2 " .. QuickApp.upsmgEnvironmentInputStates[a or 1].text end, child = {type = "com.fibaro.doorSensor", name = "Porte Baie Info 2", property = "value", value = function(a) if a==1 then return false elseif a==2 then return true else return false end end}, notification = {"push", "email", "sms"}, }, } QuickApp.upsmgEnvironmentInputStates = { [1] = { value = "closed", emoji = "F", text = "Fermé"}, [2] = { value = "open", emoji = "O", text = "Ouvert"} } Toujours dans le fichier main : Ajouter dans le tableau initChildDevices, l'entrée suivante : ["com.fibaro.doorSensor"] = MyChild, A adapter selon le type choisi précédemment. -- Setup classes for child devices self:initChildDevices({ ["com.fibaro.temperatureSensor"] = MyChild, ["com.fibaro.humiditySensor"] = MyChild, ["com.fibaro.multilevelSensor"] = MyChild, ["com.fibaro.powerSensor"] = MyChild, ["com.fibaro.doorSensor"] = MyChild, }) Dans le fichier SNMP : Ajouté dans le tableau SNMP.MIB les lignes suivantes : ["MG-SNMP-UPS-MIB::upsmgEnvironAmbientTemp"] = ".1.3.6.1.4.1.705.1.8.1", ["MG-SNMP-UPS-MIB::upsmgEnvironAmbientHumidity"] = ".1.3.6.1.4.1.705.1.8.2", ["MG-SNMP-UPS-MIB::upsmgEnvironmentInput1State"] = ".1.3.6.1.4.1.705.1.8.7.1.9.1", ["MG-SNMP-UPS-MIB::upsmgEnvironmentInput2State"] = ".1.3.6.1.4.1.705.1.8.7.1.10.1", Il reste plus qu'à cliquer sur le bouton pour générer le child devices
  6. la honte, c'était juste un p.... de caractère qui c'était inséré dans le type de child "com.fibaro.binarylSensor"
  7. Très bien, comme dit le proverbe, aide-toi, le ciel t’aidera
  8. Je viens de commencer à le configurer mais je butte sur la création du ChildDevice. J'obtiens l'erreur suivante : [01.11.2021] [21:10:22] [ERROR] [QA_EATON_97]: ./quickApp.lua:156: attempt to index a nil value (local 'child') [01.11.2021] [21:10:22] [ERROR] [QA_EATON_97]: Error : child creation failed Le problème semble lié au fait que le Child est de type "com.fibaro.binarylSensor". Aurais-tu une idée de la cause et comment corriger ? L'erreur est générée dans le fichier tools, dans la fonction : function tools:createChild(param) au niveau de la ligne : -- Create child device local child = self:createChildDevice({ name = childName, type = childType, initialProperties = childProperties, }, childClass ) J'ai pourtant ajouté dans le fichier main les lignes suivantes : [13] = { name = "upsmgEnvironmentInput1State", oid = "MG-SNMP-UPS-MIB::upsmgEnvironmentInput1State.0", message = function(a) return QuickApp.upsmgEnvironmentInput1States[a or 1].emoji .. " Batterie " .. QuickApp.upsmgEnvironmentInput1States[a or 1].text end, child = {type = "com.fibaro.binarylSensor", name = "Porte Baie Informatique", property = "value", value = function(a) if a=="closed" then return false elseif a=="open" then return true else return false end end}, notification = {"push", "email", "sms"}, }, J'ai bien ajouté également ça : QuickApp.upsmgEnvironmentInput1States = { [1] = { value = "closed", emoji = "F", text = "Fermé"}, [2] = { value = "open", emoji = "O", text = "Ouvert"} } Mais aussi complété le tableau suivant : -- Setup classes for child devices self:initChildDevices({ ["com.fibaro.temperatureSensor"] = MyChild, ["com.fibaro.humiditySensor"] = MyChild, ["com.fibaro.multilevelSensor"] = MyChild, ["com.fibaro.binarylSensor"] = MyChildInput, }) Et finalement également ajouté ça : ---------------------------------------------------------------------------------------------------- -- QuickApp Child device - MyChildInput ---------------------------------------------------------------------------------------------------- class 'MyChildInput' (QuickAppChild) -- -- Constructor -- function MyChildInput:__init(device) QuickAppChild.__init(self, device) self:trace("QuickApp Eaton UPS - Initialization - Child device #",self.id , " (" , self.name,")") tools.log(self, "", 0) end Dans le fichier SNMP, j'ai ajouté les lignes suivantes : ["MG-SNMP-UPS-MIB::upsmgEnvironmentInput1State"] = ".1.3.6.1.4.1.705.1.8.7.1.9", ["MG-SNMP-UPS-MIB::upsmgEnvironmentInput2State"] = ".1.3.6.1.4.1.705.1.8.7.1.10",
  9. je vais essayer de le configurer. Ca pourrait être utilisé pour détecter l'ouverture de porte d'armoire informatique.
  10. J'ai une capteur EMP de température et humidité sur mon Onduleur. Aurais-tu déjà intégré ses 2 entrées binaires comme des Binary Switch dans ton Quick App ? Cf. Doc : http://lit.powerware.com/ll_download.asp?file=EMPManual1502A.pdf
  11. Ok la réponse me convient, je vais suivre si mes problèmes de batteries vont continuer et les remplacer le cas échant. Je vais regarder cette possibilité de notification sur l'onduleur directement.
  12. Sur l'écran de l'onduleur, il est possible de lancer le test qui dure environ 15 secondes. Mais je ne saisi pas s'il y a une incidence sur l'alimentation des équipements raccordés durant le test et si c'est très bons d'en lancer régulièrement ?
  13. et pour toi : upsTestQuickBatteryTest c'est du même acabit, c'est du trap SNMP ou est-ce qu'il est possible d'avoir une valeur de retour ? Je n'ai pas trouvé d'indication sur le code retour ? Hormis ça : upsTestQuickBatteryTest OBJECT-IDENTITY STATUS current DESCRIPTION "A test that is sufficient to determine if the battery needs replacement." ::= { upsWellKnownTests 4 }
  14. Je viens de voir : Fait du polling à intervalle régulier, ne supporte pas les Traps SNMP.
  15. J'ai essayé avec ça : QuickApp.VG = { -- Global Variables ["VG_BatteryStatus"] = "UPS_BatteryStatus", -- Battery stats : <string> (unknown|batteryNormal|batteryLow|batteryDepleted) ["VG_MinutesRemaining"] = "", -- Battery time left : <integer> (unit : minutes) ["VG_ChargeRemaining"] = "", -- Battery charge : <integer> (unit : %) ["VG_InputVoltage"] = "", -- UPS Main voltage : <integer> (unit : Volts) ["VG_OutputSource"] = "UPS_OutputSource", -- UPS output mode : <string> (other|none|normal|bypass|battery|booster|reducer) ["VG_BatteryBad"] = "UPS_BatteryBad", -- Battery bad : <string> (batteryNormal|batterybad) } QuickApp.MIB = { [1] = { name = "upsIdentModel", oid = "UPS-MIB::upsIdentModel.0", }, [2] = { name = "upsBatteryStatus", oid = "UPS-MIB::upsBatteryStatus.0", message = function(a) return QuickApp.upsBatteryStatuss[a or 1].emoji .. " Batterie " .. QuickApp.upsBatteryStatuss[a or 1].text end, vg = {name = "VG_BatteryStatus", value = function(a) return QuickApp.upsBatteryStatuss and QuickApp.upsBatteryStatuss[a or 1].value or "???" end}, notification = {"push", "email", "sms"}, }, [3] = { name = "upsSecondsOnBattery", oid = "UPS-MIB::upsSecondsOnBattery.0", }, [4] = { name = "upsEstimatedMinutesRemaining", oid = "UPS-MIB::upsEstimatedMinutesRemaining.0", vg = {name = "VG_MinutesRemaining", value = function(a) return a end}, child = {type = "com.fibaro.multilevelSensor", name = "Autonomie", property = "value", value = function(a) return a end, unit = "min"}, }, [5] = { name = "upsEstimatedChargeRemaining", oid = "UPS-MIB::upsEstimatedChargeRemaining.0", vg = {name = "VG_ChargeRemaining", value = function(a) return a end}, device = {property = "batteryLevel", value = function(a) return a end, interface = "battery"}, child = {type = "com.fibaro.multilevelSensor", name = "Charge", property = "value", value = function(a) return a end, unit = "%"}, }, [6] = { name = "upsInputVoltage", oid = "UPS-MIB::upsInputVoltage.1", vg = {name = "VG_InputVoltage", value = function(a) return a end}, child = {type = "com.fibaro.multilevelSensor", name = "Tension", property = "value", value = function(a) return a end, unit = "V"}, }, [7] = { name = "upsOutputSource", oid = "UPS-MIB::upsOutputSource.0", message = function(a) return QuickApp.upsOutputSources[a or 1].emoji .. " Sortie " .. QuickApp.upsOutputSources[a or 1].text end, vg = {name = "VG_OutputSource", value = function(a) return QuickApp.upsOutputSources[a or 1].value end}, device = {property = "value", value = function(a) return a ~= 3 and true or false end}, notification = {"push", "email", "sms"}, }, [8] = { name = "upsOutputPower", oid = "UPS-MIB::upsOutputPower.1", device = {property = "power", value = function(a) return a end, interface = "power"}, child = {type = "com.fibaro.powerSensor", name = "Consommation", property = "value", value = function(a) return a end, unit = "W"}, }, [9] = { name = "upsOutputPercentLoad", oid = "UPS-MIB::upsOutputPercentLoad.1", }, [10] = { name = "upsConfigOutputPower", oid = "UPS-MIB::upsConfigOutputPower.0", }, [11] = { name = "upsmgEnvironAmbientTemp", oid = "MG-SNMP-UPS-MIB::upsmgEnvironAmbientTemp.0", child = {type = "com.fibaro.temperatureSensor", name = "Température", property = "value", value = function(a) return a / 10 end}, }, [12] = { name = "upsmgEnvironAmbientHumidity", oid = "MG-SNMP-UPS-MIB::upsmgEnvironAmbientHumidity.0", child = {type = "com.fibaro.humiditySensor", name = "Humidité", property = "value", value = function(a) return a / 10 end}, }, [13] = { name = "upsAlarmBatteryBad", oid = "UPS-MIB::upsAlarmBatteryBad.0", message = function(a) return QuickApp.upsAlarmBatteryBads[a or 1].emoji .. " Batterie " .. upsAlarmBatteryBads[a or 1].text end, vg = {name = "VG_BatteryBad", value = function(a) return upsAlarmBatteryBads and upsAlarmBatteryBads[a or 1].value or "???" end}, notification = {"push", "email", "sms"}, }, } upsAlarmBatteryBads = { [1] = { value = "batteryNormal", emoji = "", text = "Normale"}, [2] = { value = "batteryBad", emoji = "", text = "Hors Service"} } QuickApp.upsBatteryStatuss = { [1] = { value = "unknown", emoji = "", text = "Inconnue"}, [2] = { value = "batteryNormal", emoji = "", text = "Normale"}, [3] = { value = "batteryLow", emoji = "", text = "Faible"}, [4] = { value = "batteryDepleted", emoji = "", text = "Vide"} } QuickApp.upsOutputSources = { [1] = { value = "other", emoji = "", text = "Autre"}, [2] = { value = "none", emoji = "", text = "Aucune"}, [3] = { value = "normal", emoji = "", text = "Normale"}, [4] = { value = "bypass", emoji = "", text = "Bypass"}, [5] = { value = "battery", emoji = "", text = "Batterie"}, [6] = { value = "booster", emoji = "", text = "Booster"}, [7] = { value = "reducer", emoji = "", text = "Réducteur"} } Mais la VG n'a pas été créée pour le moment. est-ce qu'elle le sera qu'au moment ou une trame sera détectée ? Je ne suis pas certain du tout de ce que j'ai indiqué dans le tableau "upsAlarmBatteryBads", j'ignore ce qui est remonté comme info sur cette entrée. Je pensais que ton QuickApp faisait des TRAP SNMP ?
  16. j'ai trouvé également ça : upsWellKnownAlarms OBJECT IDENTIFIER ::= { upsAlarm 3 } upsAlarmBatteryBad OBJECT-IDENTITY STATUS current DESCRIPTION "One or more batteries have been determined to require replacement." ::= { upsWellKnownAlarms 1 }
  17. De ce que j'ai pu trouver dans la documentation (en page 20 : ici http://pqsoftware.eaton.com/manual/mib/fra/mibagent.pdf) , ce serait UPS-MIB::upsAlarmBatteryBad Mais je n'ai pas trouvé les valeurs que peut prendre cette entrée. Est-ce un boolean ?
  18. @Lazer Mon onduleur à un problème de batteries, de temps en temps elles ne chargent plus et emmet des bips pendant un certain temps, je penses qu'elles sont HS. Le défaut batterie apparait bien dans l'historique des défauts. Je n'ai pas eu de notification par mail lors de ce type de problèmes. Seulement les notifications pour batterie faible. Actuellement elles sont à nouveau chargées, mais je ne sais pas quelle était la valeur de variable "UPS_BatteryStatus" au moment de la détection du problème, pas certain qu'elle avait une valeur désignant un problème. Comment est-ce qu'il faudrait procéder pour détecter le défaut de la batterie et éventuellement : obtenir une notification push/mail/sms ? changer l'état de la variable "UPS_BatteryStatus" à quelque chose comme "default battery" ?
  19. Merci Envoyé de mon iPhone en utilisant Tapatalk Pro
  20. Laisse tomber, j'ai récré mon Device en choisissant son type à la création. Au cas où, est-ce que tu sais s'il est possible de le modifier a-posteriori ?
  21. Hello @Lazer, j'ai remarqué que tu as réussi à changer le type du device principal en Capteur binaire "com.fibaro.binarySensor" et par la même occasion permis la modification son icône. Evidement je ne parle par des Childs J'ai essayé : self.type = "com.fibaro.binarySensor" Mais ça ne marche pas, ça doit être probablement plus subtile Pourrais-tu STP m'indiquer comment tu as fait ?
  22. En fait c’est bon. Il s’agissait d’un bug d’affichage de la fenêtre de sélection du macOS qui selon le mode d’affichage (regroupement par période) ne montrait pas les derniers fichiers du jour. En mode liste tous les fichiers sont bien présentés. Merci quand même pour la suggestion. Envoyé de mon iPhone en utilisant Tapatalk Pro
  23. Hello, J'ai fais la mise à jour, mais j'ai un comportement bizarre depuis. Lorsque j'exporte un Quick App (quel qu'il soit) au format "FQA", l'export se déroule bien. Mais lors j'essai de le réimporter il ne m'est pas proposé (même pas affiché) dans la liste de la boite de dialogue de sélection de fichier alors qu'il me propose les fichiers que j'avais créé hier. Petite précision, au cas où, je travail sur macOS Catalina. Pourriez-vous SVP le test et m'indiquer si vous avez le même comportement ?
  24. Merci c’était bien ça. Envoyé de mon iPhone en utilisant Tapatalk Pro
  25. Hello @Lazer Dans mon QuickApp Doorbird Manager, j'utilise ta fonction tools.createChild et je lui passe ce contenu : { "name":"Porte Garage", "type":"com.fibaro.doorLock", "variables":[ {"value":"Porte Garage","name":"DeviceID"}, {"value":"2","name":"DeviceNumber"},{"value":"DoorbirdRelay","name":"DeviceCategory"},{"value":"2","name":"RelayID"} ], "class":"MyChildInput", "properties":{ "value":true, "manufacturer":"Doorbird", "categories":["other"], "deviceControlType":20, "model":"DoorBird D2101V"} } Le Child est bien créé, mais la fonction retourne en erreur (false), mais je ne vois pas pourquoi, j'ai dans la console le message suivant : ./quickApp.lua:156: attempt to call a string value (local 'classRepresentation') Ca fait des heures que je cherche, mais je ne trouve pas la cause. Est-ce que tu aurais une idée STP ?
×
×
  • Créer...