Aller au contenu

Messages recommandés

Posté(e)

mprinfo mais quelle feignasse j'y crois pas :2:

 

Bravo MAM78, c'est à ça que sert le forum, partager et améliorer.

Tu devrais juste partager le code LUA en plus du FQA, ça éviterai à ceux qui ont déjà importé le QuickApp de devoir en importer un nouveau, faire le ménage de l'ancien, gérer les nouveaux ID, etc.
Un copier/coller du code LUA c'est souvent plus rapide pour les mises à jour.

  • Like 1
  • 10 mois après...
Posté(e) (modifié)

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 :huh:

 

Pourrais-tu STP m'indiquer comment tu as fait ?

Modifié par MAM78
Posté(e)

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 ?

Posté(e)

Pour autant que je sache, il est impossible de modifier le type d'un module.

 

Il faut le choisir lors de la création (ce que tu as fait).

 

Il existe une astuce lorsque le type qu'on veut utiliser n'est pas disponible dans la liste déroulante lors de la création d'un QuickApp. Il faut choisir un type quelconque (approchant si possible), exporter le fichier fqa, modifier le type à la main dans un éditeur de texte, puis réimporter le fichier.

  • Like 1
Posté(e)

@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" ?
Posté(e)

Il faudrait trouver l'entrée dans l'arbre SNMP qui nous informe sur le défaut de batterie.... si cette entrée existe, ce qui n'est même pas sûr.

 

Après ça sera simple d'émettre une notification ou mettre à jour n'importe quelle variable.

Posté(e)

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 }

 

Posté(e)

Cette entrée upsAlarmBatteryBad n'est pas présente sur mon onduleur :(

 

Tout ce que je trouve c'est :

UPS-MIB::upsAlarmsPresent.0 = Gauge32: 0

C'est un compteur, et d'après la MIB : "The present number of active alarm conditions."

=> Donc moi je n'ai pas d'erreur, OK super.

 

Mais pour l'instant je n'en sais pas plus...

Posté(e)

Je viens de comprendre, upsAlarmBatteryBad est un TRAP, donc une trame spécifique (comme une notification push) envoyée vers un serveur capable de collecter les Traps SNMP et de les traiter (donc pas la box Fibaro).

Typiquement Nagios, ou les outils dans ce genre là.

 

http://pqsoftware.eaton.com/manual/mib/fra/mibagent.pdf

 

Donc pas exploitable dans un cadre domotique.

Posté(e) (modifié)

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 ?

 

 

Modifié par MAM78
Posté(e)

Voilà, c'est bien pour cela que j'indique dans mon message précédent qu'il faut un gestionnaire externe, comme Nagios (le plus connu). On sort complètement du cadre domotique, c'est de la supervision informatique.

Posté(e) (modifié)

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 }

 

Modifié par MAM78
Posté(e)

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 ?

 

Posté(e)

Là je ne sais pas, j'ai fait une rapide recherche mais je ne trouve rien non plus au sujet de ces tests.

 

Cela dit, je pense que tu fais fausse route, tu te prends la tête pour rien.

L'objectif de ce QuickApp est de remonter l'état de l'onduleur (coupure secteur, fonctionnement sur batterie, etc), cela afin de pouvoir déclencher des scénarios que ne sait pas faire l'onduleur tout seul (extinction des équipements, notification par SMS ou par Push sur l'appli mobile, etc)

 

L'administration de l'onduleur, en tant qu'équipement électronique, devrait être autonome.

Tu peux configurer l'envoi d'emails sur l'onduleur, et c'est lui qui t'informera en direct en cas de problème technique (batterie à remplacer, ou toute autre chose). Cela indépendamment de la domotique.

Posté(e)

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. 

 

Posté(e)

C'est mieux oui.

Il te faudra utiliser le serveur SMTP de ton fournisseur d'accès à Internet.

 

Je n'ai jamais testé les fonctions d'autotest de la batterie, mais je sais que l'onduleur fait certains tests tout seul, une fois de temps en temps, car je reçois une notification par email de bascule sur batterie pendant 1 seconde. De même que le Module Virtuel et le QuickApp qui relèvent également information, ce qui ne manque pas de me faire sursauter à chaque fois que je reçois cette notification.... qui est donc une fausse alerte.

Posté(e)

Non jamais car je ne les exploite pas.

Tu en as besoin ?

Je pourrais éventuellement l'ajouter plus tard... un jour quand j'aurai le temps, avec quelques bricoles que j'ai déjà sur ma toto-list pour ce QA.

Apparemment il s'agit de upsmgEnvironmentInput1State et upsmgEnvironmentInput2State accessibles sur 1.3.6.1.4.1.705.1.8.7.1.9 et 1.3.6.1.4.1.705.1.8.7.1.10 respectivement :

(j'écris ces infos ici même si ça ne parle à personne, juste parce que me servira de bloc note quand je m'y remettrai)

upsmgEnvironmentInput1State OBJECT-TYPE
        SYNTAX INTEGER {
                closed(1),
                open(2)
        }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
                "State of Input#1 : closed(1), open(2)."
        ::= { upsmgEnvironmentSensorEntry 9 }

upsmgEnvironmentInput2State OBJECT-TYPE
        SYNTAX INTEGER {
                closed(1),
                open(2)
        }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
                "State of Input#2 : closed(1), open(2)."
        ::= { upsmgEnvironmentSensorEntry 10 }

 

Posté(e)

je vais essayer de le configurer. Ca pourrait être utilisé pour détecter l'ouverture de porte d'armoire informatique.

 

×
×
  • Créer...