Rechercher dans la communauté
Affichage des résultats pour les étiquettes 'hc3'.
64 résultats trouvés
-
Bonjour, Suite à la domotisation de ma piscine (pompe à filtration + éclairage), voici mon retour d'expérience / mon partage Prérequis : 1x module Fibaro FGS-223 "Double Switch 2" https://www.domotique-store.fr/domotique/modules-domotiques/micromodules/micromodules-switch-domotique-sans-fil/668-fibaro-fgs-223-double-switch-2-micromodule-interrupteur-double-on-off-z-wave-avec-mesure-de-consommation.html?search_query=fibaro+fgs&results=92 1x module FGDW-001 (001 important car les nouveaux intègre le capteur de température) OU Aeotec ZWA008 - Door/Window Sensor 7 https://www.domotique-store.fr/domotique/modules-domotiques/detecteurs-capteurs-mesure/ouverture-porte-fenetre/1078-aeotec-zwa008-doorwindow-sensor-7-detecteur-z-wave-d-ouverture-de-portefenetre-avec-entree-contact-sec.html 1x 1/2 pouce - capteur ds18b20 con doigt de gant 1/2 acier inoxydable immersion pour thermomètre de 30mm ref = https://www.amazon.fr/gp/product/B07FH7BQVG/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&th=1 Installation dans le coffret : A savoir : Le bouton de filtration piscine possède 3 états : Filtration manuel / Eteint / Filtration programmé Le but est donc de se passer du module de programmation de la filtration. Mais que la filtration manuelle continue de marcher Voici une photo "schématique" du câblage : Une photo de ce que ca donne "IRL" dans mon coffret : Mais aussi de la sonde de température relié à mon FGDW-001 : Côté HC3, nous pouvons voir que tout remonte bien et que tout marche Programmation : Et maintenant on passe à la phase de "programmation" et donc mes questions : La filtration de la piscine dépend de beaucoup de facteur (nombre de personnes qui se baignent / température de l'eau / puissance de la pompe / etc.). Mon souhait serait "simple" : En dessous de 10°C = pas de filtration De 10°C à 15°C = 5h de filtration Au dessus de 15°C = température la plus haute détecté (Y) dans la journée de 8h à 20h / 2 = X qui serait le nombre d'heures de filtration Voilà, en éspérent que ca puisse en aider certain(e)s d'entre nous
- 28 réponses
-
- 2
-
-
- domotiser piscine
- hc3
-
(et %d en plus)
Étiqueté avec :
-
Pour ceux que ça intéresse : Les QA prennent tous leurs sens avec un IPX, c'est génial !! je partage : Principe ultra simple : Le QA permet de piloter la sortie de l'IPX. Le retour d'état de la sortie se fait via les messages PUSH de l'IPX. DANS LA HC3 : - il faut créer un utilisateur spécifique pour que l'IPX puisse se connecter à la HC3 (et prendre autre chose que le super user...) - il faut créer un QA avec comme type rôle Binary Swicth. - vous choisissez les icones qui vont bien, les différents réglages de notifications, la pièce, ... - Vous lui donnez un type (lights, sprinkler, ...) - vous créez 3 variables dans le QA : IP = adresse IP de l'IPX password = user:password encodé en base 64 (celui permettant de se connecter sur l'IPX) IpxOutNumber=N° de la sortie que vous voulez qu'il pilote - vous créez un label avec comme nom "LBL_State" (permettra de récupérer les éventuels messages d'erreur) et dans le code vous insérez cela : function QuickApp:onInit() self:debug("onInit") end ------------------------------------------------------------------------------------- -- Méthodes pouvant être appelées de partout ------------------------------------------------------------------------------------- function QuickApp:turnOn() self:Switch(self:getVariable("IpxOutNumber"),1) end function QuickApp:turnOff() self:Switch(self:getVariable("IpxOutNumber"),0) end ------------------------------------------------------------------------------------- -- Function pour actionner la sortie défini dans la variable ------------------------------------------------------------------------------------- function QuickApp:Switch(Num,State) self.http = net.HTTPClient({timeout=3000}) self.http:request("http://"..self:getVariable("IP").."/preset.htm?set"..Num.."="..State, { options = { headers = {['Authorization']='Basic '..self:getVariable("password")}, method = 'GET' }, success = function(response) self:updateView("LBL_State", "text", tostring(response.data)) end, error = function(err) self:updateView("LBL_State", "text", tostring(err)) end }) end ------------------------------------------------------------------------------------- -- Function pour réceptionner le retour d'état de la sortie ------------------------------------------------------------------------------------- function QuickApp:ReceiveState(status) self:debug(status) if status == 1 then self:updateProperty("value", true) else self:updateProperty("value", false) end end Dans l'IPX : les messages push de chaque sortie seront sous la forme : /api/callAction?deviceID=284&name=ReceiveState&arg1=1 en rouge = adresse IP de la HC3 en vert = le user:mot_de_passe (en clair) pour se connecter à la HC3 (avec l'utilisateur créé plus haut) en jaune = l'ID du QA que vous avez créé il ne faut pas oublier, dans la gestion des accès de la HC3, d'autoriser le user, créé spécifiquement plus haut, à utiliser le QA !!! pour piloter le QA depuis une scène en LUA : --pour le pilotage fibaro.call(284, "turnOn") --pour connaitre son status fibaro.getValue(284, "value") Divers : Pour créé rapidement d'autres QA, il suffit d'exporter le QA qui vient d'être créé (fichier .fqa) et de l'importer pour passer à une autre sortie. Il faudra alors, modifier la variable "IpxOutNumber" du QA. Attention de penser au droits d'accès pour ce nouveau QA du coup... Fichier DEMO : Demo_IPX.fqa
-
Xiaomi Roborock Vacuum Version 2.10 Présentation : Ce QuickApp permet de piloter les robots aspirateurs Xiaomi / Roborock Le mode est de type "Binary switch", c'est à dire qu'il est possible de lancer/stopper le nettoyage simplement en cliquant sur son icône (ou via les actions turnOn / turnOff du module) Autre intérêt, la visualisation immédiate de son activité / inactivité, particulièrement utile dans les scénarios de détection de mouvement (c'est à dire que tout mouvement dans une pièce peut être ignoré dans vos scénarios si le robot est en cours de mouvement, information qui se trouve dans sa propriété value) Remarque : le turnOff stoppe immédiatement le robot, c'est à dire qu'il ne rentre pas tout seul à la base, pour cela il faut cliquer sur le bouton dédié du QuickApp (ou appeler la méthode correspondante, voir plus loin dans ce tutoriel) Les actions suivantes sont possible dans la version actuelle : Démarrage du nettoyage Pause Arrêt du nettoyage Retour à la station Déplace le robot à une position spécifiée Lance le nettoyage d'une zone spécifiée Lance le nettoyage d'une ou plusieurs pièce(s) spécifiée(s) Trouvez-moi Réglage des 4 niveaux de puissance d'aspiration Réglage des 4 niveaux d'eau pour la serpillère A noter que le QuickApp est multi-langue, c'est à dire que son affichage (labels et boutons) change selon le langage paramétré dans la box HC3. Actuellement l'anglais et le français sont supportés (l'anglais est la langue par défaut si la langue est inconnue) Je l'ai testé avec le Roborock S6 MaxV, je ne sais pas comment le QuickApp se comportera avec les modèles moins évolués, j'attends vos retours à ce sujet Remarque : malheureusement ce QuickApp n'est pas compatible avec la box Home Center Lite, qui ne dispose pas du CPU suffisant pour effectuer les calculs du chiffrement nécessaire au protocole de communication avec l'aspirateur. Merci à @ADN182 pour l'inspiration et le module virtuel original pour HC2, même si ce QuickApp est une réécriture intégrale du code LUA : Pré-requis : Il faut obtenir le Token de votre aspirateur. Pour cela il est impératif que le robot soit géré avec l'application Xiaomi Home, car cela ne fonctionnera pas avec l'application Roborock : Google Play Store : https://play.google.com/store/apps/details?id=com.xiaomi.smarthome Apple App Store : https://apps.apple.com/fr/app/xiaomi-home-xiaomi-smarthome/id957323480 La méthode pour récupérer le token varie selon l'époque (Xiaomi ayant renforcé la sécurité) et la plateforme utilisée, je vous donne quelques pistes, vous choisissez celle qui vous convient : https://www.maison-et-domotique.com/76309-mini-guide-integrer-le-robot-aspirateur-xiaomi-dans-jeedom/ https://www.domotique-fibaro.fr/topic/11336-xiaomi-vaccum/?page=2&tab=comments#comment-186696 https://xiaomirobot.wordpress.com/android-recuperer-son-token-jeton-methode-1/ https://community.jeedom.com/t/xiaomi-home-token-new-way-pour-le-trouver/51896 Et plein d'autres disponibles sur votre moteur de recherche préféré... Personnellement j'ai procédé de la façon suivante : désinstaller Xiaomi Home installer une ancienne version de MI Home téléchargée ici : https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-9-release/mihome-5-0-9-android-apk-download/ lancer l'app et se connecter avec son compte Xiaomi, l'aspirateur est retrouvé automatiquement utiliser MiToolKit dispo ici https://github.com/ultrara1n/MiToolkit/releases (il faut avoir déjà Java installé sur le PC, avoir activé le débogage USB sur son smartphone, et avoir autorisé le PC, heureusement tout ça j'avais déjà fait) récupérer le token désinstaller Mi Home puis réinstaller la dernière version de Xiaomi Home sur le Play Store Installation du QuickApp : Importer le QuickApp (fichier fqa) de façon habituelle sur la box Home Center 3, puis changer les paramètres suivants dans l'onglet Variables : Address : adresse IP du robot aspirateur, par exemple : 192.168.1.1 Port : port de communication, normalement : 54321 Token : clé récupérée précédemment, par exemple : 0123456789abcdef0123456789abcdef RefreshON : intervalle de rafraichissement des informations en secondes lorsque l'aspirateur est en fonctionnement, par exemple : 10 RefreshOFF : intervalle de rafraichissement des informations en secondes lorsque l'aspirateur est à l'arrêt, par exemple : 60 Remarque : il n'est pas forcément judicieux de baisser les valeurs de rafraichissement, j'ai constaté que l'occupation CPU de la HC3 augmentait très significativement avec un intervalle de 10 seconde, à cause de la puissance requise pour les opérations de chiffrement/déchiffrement des trames échangées avec le robot) Icônes : Je vous propose les icônes suivantes, sinon d'autres sont disponibles sur le topic du VD pour HC2. ON OFF Utilisation : Depuis l'interface Web ou l'application mobile : Un clic sur l'icône du module permet de démarrer le nettoyage ou de l'arrêter immédiatement (pas de retour à la station) Un clic sur les boutons du QuickApp permet de piloter le robot Glisser le slider permet de régler le volume sonore des notifications Dans le code LUA d'un QuickApp ou d'une Scène, utiliser la fonction fibaro.call() avec l'une des syntaxes suivantes : fibaro.call(123, "turnOn") -- Démarre le nettoyage fibaro.call(123, "clean") -- Démarre le nettoyage fibaro.call(123, "turnOff") -- Arrête immédiatement le nettoyage et laisse le robot à la position en cours fibaro.call(123, "stop") -- Arrête immédiatement le nettoyage et laisse le robot à la position en cours fibaro.call(123, "pause") -- Met le nettoyage en pause fibaro.call(123, "dock") -- Arrête immédiatement le nettoyage et retourne à la station fibaro.call(123, "findRobot") -- Emmet un message vocal permettant de retrouver le robot fibaro.call(123, "setFanSilent") -- Règle la puissance d'aspiration sur Silencieux fibaro.call(123, "setFanNormal") -- Règle la puissance d'aspiration sur Normal fibaro.call(123, "setFanTurbo") -- Règle la puissance d'aspiration sur Turbo fibaro.call(123, "setFanMax") -- Règle la puissance d'aspiration sur Maximum fibaro.call(123, "setWaterOff") -- Règle la quantité d'eau de la serpillère sur Désactivé fibaro.call(123, "setWaterLow") -- Règle la quantité d'eau de la serpillère sur Faible fibaro.call(123, "setWaterMedium") -- Règle la quantité d'eau de la serpillère sur Moyen fibaro.call(123, "setWaterHigh") -- Règle la quantité d'eau de la serpillère sur Élevé fibaro.call(123, "setVolume", 100) -- Règle le volume audio des notifications sonores au niveau spécifié (0 à 100) fibaro.call(123, "testVolume") -- Teste le niveau audio des notifications sonores fibaro.call(123, "goTo", {x, y}) -- Déplace le robot aux coordonnées X et Y spécifiées en mm, sachant que {25000, 25000} correspond à l'emplacement de la base. Exemple : {27000, 22500} fibaro.call(123, "cleanZone", {x1, y1, x2, y2}) -- Lance le nettoyage de la zone spécifiée par ses coordonnées. Voir le tuto de @ADN182 pour utiliser la feuille de calcul Excel permettant de retrovuer les valeurs à utiliser. fibaro.call(123, "cleanRoom", 16) -- Si l'aspirateur le supporte, lance le nettoyage de la pièce spécifiée par son numéro (à partir de 16, voir la liste des pièces détectées dans le log au lancement du QuickApp). On peut aussi spécifier plusieurs numéros de pièces dans une table. Les propriétés suivantes peuvent être lues dans le JSON du module : value : boolean : true|false -- Statut de mouvement/arrêt du robot batteryLevel : integer : 0-100 -- Niveau de batterie en % model : string : "..." -- Modèle du robot dead : boolean : true|false -- Statut de la connexion réseau avec le robot Évidemment tous les Labels peuvent également être lus et exploités. Exemple d'utilisation basique avec GEA : GEA.add({"Profile", "Away"}, 5*60, "Plus personne à la maison depuis 5 minutes, lancement du nettoyage", {"TurnOn", id["XIAOMI"]}) GEA.add({{"Profile", "Home"}, {"(Value)", id["XIAOMI"], true}}, -1, "Voilà le chef, vite retour à la station", {"QuickApp", id["XIAOMI"], "dock"}) Optionnellement : gestion des pièces prédéfinies : Si votre modèle de robot aspirateur le supporte, les pièces configurées dans l'application mobile Xiaomi seront automatiquement détectées et affichées dans le journal de log au démarrage du QuickApp. Cependant, seuls les ID sont récupérables, le nom des pièces ne peut pas être obtenu. Il faudra donc procéder par essais successifs pour identifier les ID avec les pièces réelles de votre logement. Ces ID peuvent ensuite être utilisées avec la fonction cleanRoom(), comme décrit dans le paragraphe précédent. Optionnellement : créer un bouton personnalisé : Comme expliqué précédemment, toutes les fonctions peuvent être appelées depuis un autre QuickApp ou Scène dansa la HC3. En ce qui concerne les fonctions goTo(), cleanZone(), et cleanRoom(), elles nécessitent un paramètre pour spécifier les coordonnées précises. Ces coordonnées dépendent du lieu d'installation de chaque aspirateur. Par conséquent des boutons permettant d'appeler ces 3 fonctions n'existent pas par défaut. Noter qu'il est bien entendu possible d'appeler les 3 fonctions depuis un autre QuickApp ou Scène sans avoir besoin de créer ces boutons. Il est possible de créer ses propres boutons dans le QuickApp lui-même, si vous le souhaitez. Dans le mode d'édition du QuickApp, ouvrir le fichier custom, puis créer un nouveau bouton, lui donner un texte, et un nom qui doit correspondre au nom de la fonction dans le fichier custom, et spécifier vos propres coordonnées (utiliser le fichier Excel partagé par @ADN182) Changelog : v2.00 : Avril 2021 Version initiale v2.01 : Avril 2021 Ajout du support des modèles plus anciens v2.10 : Janvier 2022 Ajout de la fonction goTo() permettant de positionner le robot à la position désirée spécifiée par ses coordonnées Ajout de la fonction cleanZone() permettant de lancer le nettoyage d'une zone spécifiée par ses coordonnées Ajout de la fonction cleanRoom() permettant de lancer le nettoyage d'une pièce préconfigurée dans l'application mobile (pour les modèles d'aspirateur supportant cette fonctionnalité. Voir les journaux de log pour voir les pièces découvertes) Intervalle de rafraichissement variable en fonction de l'activité du robot Amélioration de la gestion du nœud mort en cas de problème de communication réseau, et gestion du réveil forcé Le statut en cours du robot est affiché dans la propriété log, donc également affiché sous l'icône du module Un message d'avertissement est affiché si le modèle d'aspirateur n'est pas supporté Améliorations et correctifs divers Téléchargement : Nouvelle installation : Xiaomi_Roborock_Vaccum_v2.10.fqa Mise à jour : Fichier main : Xiaomi Roborock Vacuum v2.10 - Main.lua Fichier Xiaomi : Library - Xiaomi v1.10.lua Fichier tools : Library - tools v2.20.lua
- 181 réponses
-
- 10
-
-
Quick App - Ecodevice v1 Gestion de la consommation en kWh, de la puissance en VA Pour les abonnements de type BASE, HPHC, EJP, TEMPO. Permet l’affichage de la puissance apparente, de l’énergie consommée durant la dernière minute, l’heure en cours, la journée en cours, le mois et l’année. Permet également d’afficher les coûts pour la journée, le mois et l’année. Ne possédant qu’un abonnement HPHC, je suis preneur des résultats de tests pour les autres abonnements, afin de vérifier la bonne adéquation entre la théorie et la pratique. Limites : les cumuls de consommation et les coûts ne sont calculés que pour T1, par défaut les unités de C1 sont en m3 ou litres et celles de C2 en kWh ; une éventuelle future version permettra peut-être de les personnaliser. Problèmes rencontrés : L’indigence de la documentation ; Le swagger qui plante régulièrement (get/plugins/getView par exemple) ; Les unités ne sont affichées qu’en lettres capitales et quand un child est agrandi, elles disparaissent ; Curieusement les childs apparaissent dans l’application portable et pas le QA, empêchant ainsi le respect de la graphie du système international (pour kWh notamment). Configuration pour le fonctionnement Celle-ci est effectuée par la définition de variables (attention au respect des majuscules et minuscules) : ipEcodevices : adresse IP de l'Eco-Devices <========= OBLIGATOIRE portEcodevices : numéro de port de de l'Eco-Devices (80 par défaut) debug : pour tracer plus copieusement le déroulement du programme (true ou false) Préférences Il s'agit de choix concernant les types de données que l'on souhaite afficher : refreshDelay : intervalle de relevé des mesures en secondes (60 recommandé et par défaut) iconId : numéro de l'icône à attribuer au QA. Tt oui, on peut attribuer une icône à un child mais pas au QA globalVarName : nom de la variable globale utilisée pour mémoriser les valeurs d'index afin d’en permettre l’accès à une scène ou un autre QA toBeDisplayed : compteurs à afficher sous forme de liste (par exemple : T1,C1,C2) par le QA CoutKW<abonnement> : sous la forme d'une liste des coûts TTC des kWh comme ci-dessous (cf. https://www.kelwatt.fr/prix/edf) : - CoutKWBASE : 0.1597 - CoutKWHPHC : 0.1798,0.1344 (dans l'ordre HP,HC) - CoutKWEJP : 0.1518,0.3114 (dans l'ordre HN,HPM) - CoutKWTEMPO : 0.1548,0.1246,0.1757,0.1397,0.6389,0.1491 (dans l'ordre HPJB,HCJB,HPJW,HCJW,HPJR,HCJR) CoutAnnuel<abonnement> : le coût annuel TTC de l'abonnement comme ci-dessous (exemple : valeurs de décembre 2020 pour une puissance de 9 kVA), si non défini, les coûts ne tiendront pas compte du prix de l’abonnement : - CoutAnnuelBASE : 152.64 - CoutAnnuelHPHC : 172.08 - CoutAnnuelEJP : 152.16 - CoutAnnuelTempo : 169.56 childs : liste de childs à lancer sous forme de liste (par exemple : T1kWhJour,C1,C2) voir chapitre ci-après. displayChilds : si les childs doivent être affichés (true ou false) displaySimul : pour simuler les coûts pour un abonnement BASE, il faudra impérativement renseigner les variables CoutAnnuelBASE et CoutKWBASE Les unités, pour chaque child, on peut modifier la valeur des unités de l'index et des valeurs affichées. Ainsi on pourra définir les variables : - C1IndexUnit et C2IndexUnit pour préciser l'unité de l'index du compteur (on peut également définir T1IndexUnit et T2IndexUnit, même si cela a un sens qui m'échappe) ; - Suivant les valeurs à afficher, les multiples d'unités pourront être affichées (k, m³, kVA, kW, k€, kWh...), dans ce cas la valeur affichée est arrondie à la première décimale. La simulation d’un tarif "BASE" Cette simulation n’est disponible que pour les abonnements HPHC, EJP et TEMPO. Les variables CoutAnnuelBASE et CoutKWBASE devront respectivement préciser le coût de l’abonnement "BASE" et le tarif du kWh. Les coûts simulés pourront être affichés sous la forme d'enfants ("children"). Les valeurs possibles pour la liste de la variable "childs" sont : Les "Enfants" Comme il faut bien découvrir, je me suis lâché… Même si la gestion des quatre types d’abonnement est à l’origine de l’inflation. Ne possédant qu’un abonnement HPHC, je n’ai pas pu tester les autres cas, merci de vos retours. Les valeurs possibles pour la liste de la variable "childs" sont : Compteur T1 : T1VA = T1 puissance, T1WhActuel = Conso. actuelle, T1WhHeure = Conso. heure, T1kWhJour = Conso. jour, T1kWhMois = Conso. mois, T1kWhAnnee = Conso. année, T1Index = index total (somme des index si plusieurs périodes tarifaires) Coûts par période : * T1JourEuro = coût pour le jour en cours, * T1MoisEuro = coût pour le mois en cours, * T1AnneeEuro = coût pour l’année en cours, * T1SimuBaseJour = coût simulé (tarif base) pour le jour en cours, * T1SimuBaseMois = coût simulé (tarif base) pour le mois en cours, * T1SimuBaseAnnee = coût simulé (tarif base) pour l’année en cours ; Consommation abonnement BASE par période * BASEHeure = Conso. BASE heure, * BASEJour = Conso. BASE jour, * BASEMois = Conso. BASE mois, * BASEAnnee = Conso. BASE année, * BASEIndex = index BASE ; Coûts abonnement BASE par période * BASEJourEuro = Coût BASE jour, * BASEMoisEuro = Coût BASE mois, * BASEAnneeEuro = Coût BASE année ; Consommation abonnement HPHC par période * HPHeure = Conso. HP heure, * HPJour = Conso. HP jour, * HPMois = Conso. HP mois, * HPAnnee = Conso. HP année, * HPIndex = index HP, * HCHeure = Conso. HP heure, * HCJour = Conso. HC jour, * HCMois = Conso. HC mois, * HCAnnee = Conso. HC année, * HCIndex = index HC ; Coûts abonnement HPHC par période * HPJourEuro = Coût HP jour, * HPMoisEuro = Coût HP mois, * HPAnneeEuro = Coût HP année, * HCJourEuro = Coût HC jour, * HCMoisEuro = Coût HC mois, * HCAnneeEuro = Coût HC année, Consommation abonnement EJP par période * EJPHNHeure = Conso. EJPHN heure, * EJPHNJour = Conso. EJPHN jour, * EJPHNMois = Conso. EJPHN mois, * EJPHNAnnee = Conso. EJPHN année, * EJPHNIndex = index EJPHN, * EJPHPMHeure = Conso. EJPHPM Heure, * EJPHPMJour = Conso. EJPHPM jour, * EJPHPMMois = Conso. EJPHPM mois, * EJPHPMAnnee = Conso. EJPHPM année, * EJPHPMIndex = index EJPHPM ; Coûts abonnement EJP par période : * EJPHNJourEuro = Coût EJPHN jour, * EJPHNMoisEuro = Coût EJPHN mois, * EJPHNAnneeEuro = Coût EJPHN année, * EJPHPMJourEuro = Coût EJPHPM jour, * EJPHPMMoisEuro = Coût EJPHPM mois, * EJPHPMAnneeEuro= Coût EJPHPM année ; Consommation abonnement TEMPO par période : * HPJBHeure = Coût HPJB heure, * HPJBJour = Coût HPJB jour, * HPJBMois = Coût HPJB mois, * HPJBAnnee = Coût HPJB année, * HPJBIndex = index HPJB, * HCJBHeure = Coût HCJB heure, * HCJBJour = Coût HCJB jour, * HCJBMois = Coût HCJB mois, * HCJBAnnee = Coût HCJB année, * HCJBIndex = index HPCB, * HPJWheure = Coût HPJW heure, * HPJWJour = Coût HPJW jour, * HPJWMois = Coût HPJW mois, * HPJWAnnee = Coût HPJW année, * HPJWIndex = index HPJW, * HCJWHeure = Coût HCJW heure, * HCJWJour = Coût HCJW jour, * HCJWMois = Coût HCJW mois, * HCJWAnnee = Coût HCJW année, * HCJWIndex = index HCJW, * HPJRHeure = Coût HPJR heure, * HPJRJour = Coût HPJR jour, * HPJRMois = Coût HPJR mois, * HPJRAnnee = Coût HPJR année, * HPJRIndex = index HPJR, * HCJRHeure = Coût HCJR heure, * HCJRJour = Coût HCJR jour, * HCJRMois = Coût HCJR mois, * HCJRAnnee = Coût HCJR année, * HCJRIndex = index HCJR; Coûts abonnement TEMPO par période : * HPJBJourEuro = Coût HPJB jour, * HPJBMoisEuro = Coût HPJB mois, * HPJBAnneeEuro = Coût HPJB année, * HCJBJourEuro = Coût HCJB jour, * HCJBMoisEuro = Coût HCJB mois, * HCJBAnneeEuro = Coût HCJB année, * HPJWJourEuro = Coût HPJW jour, * HPJWMoisEuro = Coût HPJW mois, * HPJWAnneeEuro = Coût HPJW année, * HCJWJourEuro = Coût HCJW jour, * HCJWMoisEuro = Coût HCJW mois, * HCJWAnneeEuro = Coût HCJW année, * HPJRJourEuro = Coût HPJR jour, * HPJRMoisEuro = Coût HPJR mois, * HPJRAnneeEuro = Coût HPJR année, * HCJRJourEuro = Coût HCJR jour, * HCJRMoisEuro = Coût HCJR mois, * HCJRAnneeEuro = Coût HCJR année ; Compteur T2 : T2VA = T2 puissance, T2WhActuel = T2 Conso. actuelle, T2WhHeure = T2 Conso. heure, T2kWhJour = T2 Conso. jour, T2kWhMois = T2 Conso. mois, T2kWhAnnee = T2 Conso. année, T2Index = index total du compteur. Compteur C1 : C1Index = C1 Index, C1Actuel = C1 Conso. actuelle, C1Heure = C1 Conso. heure, C1Jour = C1 Conso. jour, C1Mois = C1 Conso. mois, C1Annee = C1 Conso. année, Compteur C2 : C2Index = C2 Index, C2Actuel = C2 Conso. actuelle, C2Heure = C2 Conso. heure, C2Jour = C2 Conso. jour, C2Mois = C2 Conso. mois, C2Annee = C2 Conso. année, Installation/mise à jour Pour une première installation : Importer le fichier ".fqa" ci-dessous, puis : Renseigner les variables ipEcodevices, globalVarName, toBeDisplayed, displayChilds et childs. Remarque : une variable créée par le QA n’est pas modifiable par l’interface. Il suffit de la supprimer et de la recréer. Pour une mise à jour : Il est nécessaire de vérifier que l’interface du QA possède des labels jusqu’à "Lbl_25", sinon en rajouter sans trous dans la numérotation ; Puis il suffit de copier le contenu du fichier lua dans l’onglet main du QA. Version 0.800 (ajout de la variable portEcodevices, correction de divers bugs...). Version 0.900 : Eco-Devices-0.90.fqa Ajout des enfants pour les coûts globaux : T1JourEuro, T1MoisEuro, T1AnneeEuro ; Ajout de la simulation d'un abonnement "BASE" et possiblement des enfants T1SimuBaseJour, T1SimuBaseMois, T1SimuBaseAnnee ; Ajout de l’affichage des index et des enfants : BASEIndex, HPIndex, HCIndex, EJPHNIndex, EJPHPMIndex, HPJBIndex, HCJBIndex, HPJWIndex, HCJWIndex, HPJRIndex, HCJRIndex, T2Index ; Other minor bug fixes. Version 0.92 : Eco-Devices-0.92.fqa Amélioration de la robustesse du code (gestion de quelques cas tordus) ; Corrections cosmétiques. Version 0.95 : Eco-Devices-0.95.fqa Traitement du cas sans téléinfo ; Ajout des variables pour les unités pour les childs ; Amélioration de la robustesse du code (gestion de quelques cas tordus). Version 0.96 : Eco-Devices-0.96.fqa Gestion du cas du changement d'abonnement ; Correction du cas où une variable du QA se termine par une espace ; Multiples dans unités dans les valeurs affichées ; Corrections des anomalies. Eco-Device-0.96.fqa Ecodevices-0.96.lua.zip
-
Quick App - DomoCharts - Graphiques sur NAS pour HC3
Lazer a posté un sujet dans Quick App Developpeur
DomoCharts Version 7.11 Sommaire : 1. Présentation 2. Pré-requis 3. Installation 3.1 Synology 3.2 Pages Web 3.3 Plages horaires d'énergie électrique 3.4 Base de données MySQL/MariaDB 3.5 QuickApp 4. Mise à jour 5. Utilisation 6. Changelog 7. Téléchargement 1. Présentation Voici DomoCharts pour HC3, qui succède à DomoCharts sur HC2 introduit ici : Les fonctionnalités sont plus ou moins les mêmes, c'est à dire l'affichage de graphiques en plein écran sur une page Web hébergée sur un NAS, serveur Web en ligne, bref n'importe quel serveur Web faisant tourner le langage PHP et stockant les mesures dans une base de données MySQL/MariaDB. Le module virtuel récoltant les mesures sur la HC2 a été entièrement réécrit en QuickApp pour la HC3. Liste des capteurs supportés : Température (en °C) Humidité (en %HR) Luminosité (en lux) Pluie (en mm) Vent (en km/h) Eau (en litre) Gaz (en ppm) Son (en dB) Pression (en millibar) Particules (en μg/m3) Tension (en Volt) Courant (en Ampère) Puissance (en Watt) Energie (en kWh) Remarque : les modules cachés (hidden), morts (dead), ou désactivés (disabled) sont ignorés. DomoCharts se compose des éléments suivants : Un QuickApp à installer sur la box domotique HC3 qui collecte les données Un package ZIP (contenant des fichiers HTML, PHP, JavaScript, ...) à déployer sur un serveur Web Une base de données MySQL/MariaDB permettant de stocker les données, installé avec le serveur Web A noter que cette version de DomoCharts crée de nouvelles tables dans la base de données SQL, donc les données éventuellement existantes ne sont ni reprises ni supprimées. Je proposerai plus tard des requêtes SQL permettant de récupérer manuellement les données. Je n'ai pas voulu automatiser le processus car c'est un peu complexe, avec les ID qui changent, etc... je pense qu'il sera préférable de le faire à la main au cas par cas. 2. Pré-requis Un serveur Web supportant PHP (NAS Synology, hébergement mutualisé, ...) Un serveur hébergeant une base de données MySQL/MariaDB (Idem) Une Fibaro Home Center 3 / Home Center 3 Lite 3. Installation 3.1 Synology Etapes facultatives pour les utilisateurs débutants d'un NAS Synology avec DSM. Ces étapes doivent être effectuées à l'aide du compte admin via l'interface Web (accessible par défaut sur le port 5000). 3.1.1 Installation de WebStation Dans le Centre de paquets, rechercher et installer WebStation si ce n'est pas déjà fait : 3.1.2 Installation de PHP Dans le Centre de paquets, rechercher et installer la dernière version de PHP disponible (7.3 dans mon exemple) : 3.1.3 Installation de MariaDB (MySQL) Dans le Centre de paquets, rechercher et installer MariaDB : Dès que l'installation est terminée, cliquer sur l’icône de MariaDB afin d'accéder à l'écran de configuration, puis cliquer sur le bouton Changer le mot de passe : Noter également le numéro du port, DSM semble forcer le numéro 3307 depuis MariaDB 10. De plus, cocher la case "Activer la connexion TCP/IP". Par défaut, le mot de passe MariaDB est vide, cliquer alors sur le bouton Réinitialiser le mot de passe MariaDB : Confirmer en cliquant sur le bouton Oui : Le seul compte existant est root, il faut donc créer un mot de passe (note : ce compte root est différent du compte root du Syno, il est donc tout à fait possible d'avoir des mots de passes différents) : 3.1.4 Configuration de WebStation Dans le menu principal de DSM, ouvrir WebStation, la dernière version de PHP doit apparait installée en bas de la liste : Aller dans Paramètres généraux, et s'assurer que le profil PHP correspondant à la dernière version est sélectionné dans la liste déroulante : Aller dans les Paramètres PHP, sélectionner le profil correspondant à votre version de PHP, et cliquer sur le bouton Modifier : Il faut au minimum que l'extension pdo_mysql soit cochée : Le Syno est prêt. 3.2 Pages Web Transférer toute l'arborescence contenue dans le fichier ZIP vers le répertoire /domocharts sur le serveur Web via FTP ou montage réseau. Ensuite, éditer le fichier config.inc.php afin d'y modifier les paramètres de connexion à la base de données MySQL : // MySQL Server hostname or IP address $server = 'server'; // MySQL User account $login = 'login'; // MySQL User password $password = 'password'; // MySQL Database name $database = 'database'; Note : si vous utilisez le mini-tuto Synology ci-dessus, les paramètres devraient ressemble à quelques chose comme cela (seul le mot de passe doit être personnalisé) : // MySQL Server hostname or IP address $server = '127.0.0.1:3307'; // MySQL User account $login = 'root'; // MySQL User password $password = 'MonSuperPassword'; // MySQL Database name $database = 'domotique'; Note : Pour des raisons de sécurité, si vous maitrisez MySQL et phpMyAdmin, vous devez créer un utilisateur dédié (différent de root). Je ne détaille pas cette procédure qui est hors du cadre de ce tutoriel. 3.3 Plages horaires d'énergie électrique Dans le fichier config.inc.php, une rubrique concerne la configuration des horaires de l'abonnement au fournisseur d'électricité (imposés par le distributeur Enedis). La variable $TimeSource doit avoir la valeur 'STATIC' : //*** Teleinfo time for energy // // Variable = 'Value' // Comment : Allowed values // -------- ------- // ------------------------------------------ : --------------- $TimeSource = 'STATIC'; // Source of information for date and time : TELEINFO|STATIC // ---------------------------- // Valid only if TELEINFO TimeSource is used : --------------- $teleinfoTable = 'teleinfo'; // MySQL table name : xxxxxxxx $teleinfoDelay = 60; // Teleinfo Delay in Seconds : ss // ---------------------------- // Valid only if STATIC TimeSource is used : --------------- $TimeHCHP = array( // HC/HP start times for each EDF rate : 'hh:mm' => '<BASE|HC|HP>' '00:00' => 'HC', '06:30' => 'HP', '22:30' => 'HC' ); Sont actuellement supportés les abonnements de type Normal ('BASE'), et Heures Pleines/Heures Creuses ('HP' et 'HC'). Dans l'exemple du dessus, j'ai configuré les horaires HP de 6:30 à 22:30, et des horaires HC de 22:30 à 6:30. Notez que la variable $TimeHCHP doit obligatoirement commencer à 00:00. Vous pouvez ensuite ajouter autant de tranches horaires que nécessaires, car certains abonnements proposent 2 tranches HC réparties dans la journée. Si vous avez un abonnement Normal, c'est plus simple, puisqu'il suffit d'indiquer 'BASE' à partir de 00:00 : $TimeHCHP = array( '00:00' => 'BASE' ); Avec ces informations, le bouton Energy du module virtuel sera ensuite capable d'interroger l'API de la HC3 afin de récupérer les consommations des différentes équipements pour chaque tranche horaire de chaque journée. A l'heure actuelle, le graphique d'énergie électrique affiche la somme des kWh pour chaque journée, mais les informations nécessaires sont stockées dès aujourd'hui dans la base de données afin d'effectuer les calculs de coà»ts financiers ultérieurement. 3.4 Base de données SQL Afin de créer ou migrer les tables dans la base de données MySQL/MariaDB, il faut appeler la page /domocharts/install.php sur le serveur Web. Si tout se passe bien, la page affiche une longue liste de création de tables avec le statut OK, puis le message "Finished with success" : Sinon, vous pouvez demander du support sur le forum, en copiant/collant le texte des messages d'erreurs. 3.3 QuickApp pour HC3 Ce QuickApp est responsable de l'envoi des données vers la base de données SQL au travers de pages Web dédiées à l'insertion des données. Dans la HC3, aller dans Paramètres, puis Dispositifs, puis cliquer sur le bouton "+", choisir "Autre appareil", et enfin "Téléverser un fichier". Sélectionner aller le fichier DomoCharts_v7.0.fqa. Dans les Variables du QuickApp, il est possible de configurer les options suivantes : NAS_Protocol : protocole à utiliser, normalement : http NAS_Address : adresse IP du NAS, par exemple : 192.168.1.1 NAS_Port : port de communication, normalement : 80 (ne rien mettre) NAS_User : utilisateur optionnel, sinon ne rien mettre NAS_Password : mot de passe optionnel, sinon ne rien mettre NAS_Path : si vous avez suivi le tuto, c'est "/domocharts", mais vous pouvez changer le chemin Refresh : intervalle de rafraichissement des informations, par défaut 60 secondes Memory : nombre de mesures à conserver en mémoire en cas d'indisponibilité temporaire du NAS. J'ai testé jusqu'à 10000 sans aucun souci sur HC3. Si le QuickApp releve 100 mesures chaque minutes, dans ce cas cela fait une mémoire de 100 minutes, soit 1h40. Battery_Hour : heure à laquelle sont relevées les niveaux de batteries des modules, par exemple chaque soir à 23h debug : affiche plein d'informations dans la zone de debug du QuickApp, utile seulement pour demander de l'aide, valeur par défaut false. L'icône du QuickApp DomoCharts apparait dans l'interface, on peut la cacher si elle gêne : La zone de logs doit ressembler à ceci si la collecte des mesures et l'insertion en base de données se passent bien : 4. Mise à jour Rien pour le moment. 5. Utilisation Pour visualiser les graphes, il suffit d'aller chercher avec son navigateur l'adresse du serveur Web avec le chemin "/domocharts", par exemple : http://192.168.1.1/domocharts/ Pour l'administration, aller sur la page admin.php : http://192.168.1.1/domocharts/admin.php Cette page permet d'ordonner les modules, de donner une couleur à chaque courbe, et d'en cacher certains : Si une valeur aberrante apparait sur un graph, il zoomer suffisamment dans la zone temporelle, puis cliquer sur le point. Dans le popup qui apparait, un bouton Delete permet de supprimer la valeur, afin de conserver une courbe homogène : 6. Changelog : v7.00 : Février 2021 Version initiale v7.01 : Mars 2021 Correction des consommations d'énergies électriques quotidiennes qui ne sont pas générées dans certain cas v7.11 : Janvier 2022 Correctifs et améliorations diverses 7. Téléchargement Package pour le NAS : domocharts_v7.0.zip QuickApp : DomoCharts_v7.11.fqa Icône : Mise à jour du QuickApp existant (contenu à copier/coller par dessus le fichier original ) : Fichier main : DomoCharts v7.11.lua Fichier DomoCharts : Library - DomoCharts v7.10.lua Fichier tools : Library - tools v2.20.lua- 264 réponses
-
- 11
-
-
- domocharts
- hc3
-
(et %d en plus)
Étiqueté avec :
-
Quick App - Gestionnaire d'Événements Automatique - GEA pour HC3
Lazer a posté un sujet dans Quick App Developpeur
GEA Gestionnaire d’Événements Automatique Version 7.38 Voici le célèbre GEA de @Steven porté sur Home Center 3. Cette version de GEA est basée sur la version 6.13, les fonctionnalités sont donc identiques, à quelques différences près documentées plus bas. Ce n'est plus une scène, mais un QuickApp. La notion d'instances multiples des scènes n'a plus lieu d'être, car le QuickApp est mono-instance par nature, mais son principe d'exécution asynchrone du code LUA permet d'obtenir le même résultat, à savoir : - une boucle automatique de détection des événements à intervalle régulier de 30 secondes - un déclenchement instantané sur événement (avec le paramètre -1 pour la durée) Au sujet des événements, il n'y a plus besoin (et de toute façon il n'est pas possible) de définir des triggers pour le déclenchement. C'était une opération fastidieuse, car il fallait saisir manuellement les ID des modules dans l'en-tête de la scène. Cette nouvelle version de GEA détecte donc automatiquement les triggers, et surveille les événements via l'API refreshStates. Actuellement j'ai positionné cet intervalle de surveillance à 100 ms, c'est à dire un dixième de seconde. Ce n'est donc pas de l'instantanéité absolue, mais ça ne l'était de toute façon pas sur les scènes de la HC2, et ça reste inférieur au seuil de perception humain. Pour l'instant cela n'a posé aucun problème de performance lors de mes tests.... on verra ultérieurement s'il y a lieu de faire évoluer cet intervalle. La syntaxe de GEA est strictement identique à celle de la HC2 : GEA.add( ... ) Pour cette raison, ce topic est ouvert uniquement pour les discussions concernant le développement de GEA, les nouvelles fonctionnalités, et les rapports de bugs constatés. Pour les questions sur l'utilisation et la syntaxe de GEA, se reporter au topic unique "Support GEA" où vous trouverez toute l'aide nécessaire : En clair : Une règle GEA fonctionne sur HC2, mais ne fonctionne pas sur HC3 => je viens poster ici pour qu'on puisse corriger le bug Autrement : je supprimerai les messages sans préavis, j'ai autre chose à faire que de déplacer les messages postés sur le mauvais topic... avis aux contrevenants Le topic de référence concernant la syntaxe de GEA se trouve ici, comme d'habitude : Remarque : j'ai mis à jour le fichier de référence GEA_Syntaxe à télécharger en bas de ce message. Changements de GEA pour HC3 par rapport à HC2 Supprimé : "VirtualDevice", "VD" => remplacé par "QuickApp" et "QA" "SetrunConfigScenario" => remplacé par "SetRunModeScenario" et "RunModeScene" "RebootHC2" => remplacé par "RebootHC3" "ShutdownHC2" => remplacé par "ShutdownHC3" "multiAlarm" => remplacé par "Alarm" "setMode" => remplacé par "ThermostatMode" "setThermostatSetpoint" => remplacé par "CoolingThermostatSetpoint" et "HeatingThermostatSetpoint" "ThermostatLevel" "ThermostatTime" "DebugMessage" "PluginScenario" "Popup" Ajouté : "QuickApp" | "QA" : {"QuickApp", <id_module>, <méthode>, [paramètres]} "DeviceIcon" | "CurrentIcon" : {"CurrentIcon", <id_module>, <no_icon>} "Color" | "RGB" : {"Color", <id_module>, <intensité_rouge>, <intensité_vert>, <intensité_bleu>, <intensité_blanc>} "RunModeScene" | "SetRunModeScenario" : {"RunModeScene", <id_scene>} | {"SetRunModeScenario", <id_scene>, <run_valeur>} - <run_valeur> : "manual" | "automatic" "isSceneRunning" | "RunningScene" : {"isSceneRunning", <id_scene>} "ThermostatMode" : {"ThermostatMode", <id_thermostat>, <mode>} "ThermostatFanMode" : {"ThermostatFanMode", <id_thermostat>, <fan>} "CoolingThermostatSetpoint" : {"CoolingThermostatSetpoint", <id_thermostat>, <valeur>} "HeatingThermostatSetpoint" : {"HeatingThermostatSetpoint", <id_thermostat>, <valeur>} "Profile" : {"Profile", <id_profil>} "RebootHC3" : {"RebootHC3"} "SuspendHC3" : {"SuspendHC3"} "ShutdownHC3" : {"ShutdownHC3"} "Parameter" "Climate" "Breached" "VariableQuickApp" | "VariableQA" "CustomEvent" "WOL" "httpGet" "Call" "isEvenDay" Modifié : "Armed", "Disarmed", "setArmed", "setDisarmed" => Prend l'ID de la zone Amélioré : GEA.portables = {123, "Nokia 3310"} : ID du mobile, ou nom du mobile "Email" : ID du mobile, ou nom de l'utilisateur : {"Email", <id_user>, <"Message du mail">, <"Sujet du mail">} | {"Email", <id_user>, <"Message du mail">} "Picture" : ID ou nom de l'utilisateur : {"Picture", <id_camera>, <id_user>} | {"Picture", <id_camera>, <"nom_user">} "VariableCache" : utilisable dans les règles à déclenchement instantané avec -1 (en tant que condition, actions, mais pas comme déclencheur) "Alarm" : remplace "Alarm" et "MultiAlarm" : peut contenir autant d'alarmes que voulu "Ask" : exécute une scène, une méthode d'un QuickApp, ou une action GEA Les zones d'alarme, les profils, et les zones de climat peuvent être identifiés par leur nom Note : les actions "Reboot", "Suspend", et "Shutdown" ne fonctionnent plus depuis le firmware 5.050.13... Installation Importer le fichier fqa ci-joint. Ne modifier que le contenu de config pour vos propres règles : Mise à jour Copier/coller simplement tout le contenu du fichier LUA téléchargé dans le fichier main du QuickApp. Téléchargement Nouvelle installation : GEA_v7.38.fqa Mise à jour : Fichier main : GEA v7.38.lua Fichier tools : Library - tools v2.30.lua Documentation de référence sur la syntaxe : GEA v7.38 Syntaxe.lua- 608 réponses
-
- 12
-
-
-
Bonjour, Si comme moi, vous avez plus de 200 périphériques ZWAVE, il se peut que vous ne puissiez plus en ajouter d'autres. Voici l'erreur dans les log : [03.12.2021] [22:56:01] [TRACE] [ZWAVE]: Learning mode error. Try again. [03.12.2021] [22:56:02] [TRACE] [ZWAVE]: Adding devices complete Et voici "l'aide" (qui est plus un contournement) du support Fibaro : Si ça peut servir à d'autres... Bonne journée
-
Quick App - PSA Stellantis - Peugeot Citroen DS Opel
Lazer a posté un sujet dans Quick App Developpeur
PSA Stellantis Peugeot Citroen DS Opel Version 1.11 Présentation : Ce QuickApp permet de monitorer les voitures connectées du groupe PSA/Stellantis (Peugeot Citroen DS Opel). Il a été testé avec 2 voitures de chez Peugeot : 3008 et e-208, mais il devrait théoriquement pouvoir fonctionner avec n'importe quel modèle connecté des marques du groupe PSA. Exclusion : les marques Fiat/Chrysler/etc qui ont rejoint le groupe Stellantis ultérieurement ne sont pas prises en charge, car l'API est différente. Le module parent affiche toutes les informations récupérables dans des labels : Les modules enfants permettent d'utiliser les informations utiles directement dans des scénarios : Limitations : D'après ce que j'ai constaté, les voitures mettent à jour leur statut lors d'un changement d'état (début de la recharge, fin de la recharge, début et arrêt du trajet, lors du roulage), mais pas pendant la recharge C'est une grosse lacune des voitures du groupe, si bien qui n'est pas possible de surveiller l'avancée de la recharge (pourcentage, autonomie, etc). Le QuickApp obtient la durée estimée de recharge au début de celle-ci et affiche les informations de temps restant et d'heure de fin dans des labels du QuickApp. Cependant, si le courant varie au cours de la recharge, alors la durée ne pourra pas être recalculée dynamiquement... Les e-commandes à distance (climatisation, etc) et télémétrie (position GPS, etc) ne sont pas supportées par ce QuickApp car l'API est différente et nécessite une authentification renforcée (code PIN) Pré-requis : Il faut déjà avoir connecté son véhicule via l'application mobile du constructeur disponible sur le Play Store ou l'App Store, par exemple MyPeugeot, MyCitroen, etc... Installation du QuickApp : Importer le QuickApp (fichier fqa) de façon habituelle sur la box Home Center 3, puis changer les paramètres suivants dans l'onglet Variables : Brand : marque du véhicule, parmi les valeurs suivantes : "Peugeot", "Citroen", "DS", "Opel" User : adresse email utilisée pour la connexion sur l'application mobile du constructeur Password : Mot de passe associé au compte Refresh : intervalle de rafraichissement des informations en secondes, par exemple : 60 (la voiture ne remonte les informations sur le cloud PSA que toutes les 60 secondes au mieux) Puis ouvrir la vue du QuickApp et cliquer sur le bouton "Create devices" afin de créer tous les modules enfants. Utilisation : Les propriétés suivantes peuvent être lues dans le JSON des modules enfants : Prise branchée : value : boolean : true|false -- Câble de recharge branché/débranché Recharge : value : boolean : true|false -- Recharge en cours ou non batteryLevel : integer : 0-100 -- Niveau de la batterie en Pourcents Autonomie : value : integer : 123 -- Autonomie de la batterie en Kilomètres Courant : value : integer : 123 -- Courant de recharge en Ampères Kilométrage : value : integer : 123 -- Compteur kilométrique total Icônes : Je vous propose les icônes génériques suivantes, sinon vous pourrez créer vos icônes personnalisées à l'image de votre voiture (sa photo s'affiche dans le log du QA lors de son démarrage) Changelog : v1.00 : Mai 2022 Version initiale v1.01 : Juillet 2022 Correctif mineur v1.11 : Août 2023 Ajout de l'information de contact/arrêt du véhicule Correctif lié au changement d'API Téléchargement : Nouvelle installation : PSA Stellantis v1.11.fqa Mise à jour : Fichier main : PSA v1.11 - Main.lua Fichier PSA : Library - PSA v1.10.lua Fichier tools : Library - tools v2.30.lua -
Sauvegarde Home Center 3 sur NAS Synology Version 3.21 - Avril 2022 Voici un script Shell à installer sur un NAS Synology, permettant d'automatiser la sauvegarde de la box Home Center 3. La sauvegarde est externalisée et stockée sur le NAS. Un rapport par email est envoyé, ainsi qu'une notification dans l'interface Web de DSM. Installation Télécharger le fichier backup-hc3.sh ci-joint, et le copier sur le NAS. Modifier le script afin de paramétrer les options suivantes : HC3 Address HC3_ADDRESS : Adresse IP de la HC3. Par exemple "192.168.1.1" HC3 Authentication : echo -n 'user:password' | base64 ou https://www.base64encode.org/ HC3_AUTHENTICATION : Identifiants de connexions encodés en base64. Utiliser le site https://www.base64encode.org/ par exemple pour admin:password cela donne "YWRtaW46cGFzc3dvcmQ=". L'utilisateur doit avoir les droits "Administrateur" sur la box. HC3 Backup History HC3_BACKUP_HISTORY : doit prendre la valeur "YES" afin de sauvegarder l'historique. Si la sauvegarde est trop longue ou trop grosse, il est possible de désactiver la sauvegarde de l'historique en attribuant n'importe quelle autre valeur à cette variable, par exemple "NO". HC3 Global Variable HC3_VARIABLE_NAME : nom d'une variable à tester pour bloquer le déclenchement de la sauvegarde, par exemple "Vacances" HC3_VARIABLE_IS_VALUE : valeur que doit avoir la variable éventuellement définie pour déclencher la sauvegarde, par exemple "0" HC3 Active Profile (on peut filtrer sur aucun profil, 1 seul, ou les 2, dans ce dernier cas c'est un ET logique qui est effectué, c'est à dire que les 2 conditions doivent être vraies) : HC3_PROFIL_IS_VALUE : ID du profil actif permettant de déclencher la sauvegarde. Si le profil actif est égal à cette valeur, alors la sauvegarde est démarrée. HC3_PROFIL_NOT_VALUE : ID du profil qui ne doit pas être actif pour déclencher la sauvegarde. Si le profil actif est égal à cette valeur, alors la sauvegarde est bloquée. NAS NAS_PATH : chemin complet sur le NAS dans lequel copier le fichier sauvegarder, normalement il s'agit du même répertoire qui contient le script, par exemple "/volume1/backup/HC3" Email MAIL_FROM : adresse email source, par exemple : "HC3 <moi@domaine.com>" MAIL_TO : adresse email cible, par exemple "Moi <moi@domaine.com>" MAIL_SUBJECT : titre de l'email, par exemple "Backup HC3" Notification NOTIF_TO : destinataire des notifications sur le NAS, par exemple "@administrators" NOTIF_TITLE : titre de la notification, par exemple "Sauvegarde" Backup timeout TIMEOUT : durée maximale en secondes de la sauvegarde autorisée avant que le script ne considère que la box est plantée, par exemple pour 10 minutes : 600 Reboot CLEAN_REBOOT : focer un reboot complet de la box après chaque sauvegarde, valeur par défaut "No" FORCE_REBOOT : forcer le reboto de la box si les services n'ont pas correctement redémarrés après la sauvegarde, valeur par défaut "Yes" Sur l'interface Web de DSM, ouvrir le Panneau de configuration, sélectionner le Planificateur de tâches, puis Créer / Tâche planifiée / Script défini par l'utilisateur : Dans l'onglet "Général", taper un nom de tâche et utiliser le compte "admin" : Dans l'onglet "Programmer", sélectionner un jour et une heure, par exemple chaque dimanche à 3h du matin : Dans l'onglet "Paramèters de la tâche", entrer l'adresse email destinataire des rapports, et la commande suivante pour exécuter le script (remplacer éventuellement le chemin s'il est différent chez vous) : set -o pipefail; "/volume1/backup/HC3/backup-hc3.sh" 2>&1 | tee -a "/volume1/backup/HC3/backup-hc3.out" Utilisation Attendre... Lorsque la planification se déclenche, un email est envoyé : Une notification apparait dans l'interface Web de DSM : Un nouveau fichier fbi contenant la sauvegarde (chiffrée) est présent sur le NAS, ainsi qu'un fichier journal backup-hc3.out : Exécution immédiate : Si on est impatient et qu'on veut tester immédiatement le script, le plus efficace est d'ouvrir une session SSH en ligne de commande (utiliser PuTTY sous Windows) et de l'exécuter directement : admin@DiskStation:~$ /volume1/backup/HC3/backup-hc3.sh Backup Fibaro Home Center : Saturday 11/07/2020 19:10:03 Vérification de la valeur de la variable globale 'Vacances'... Variable globale 'Vacances' = '0' identique à '0' => Sauvegarde Vérification du profil actif... Profil actif = '1' => Sauvegarde Sauvegarde avec historique... ........................................................................... Sauvegarde terminée Téléchargement de backup_HC3-00000000_2020_07_11-19_10_28.fbi... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 794k 100 794k 0 0 8028k 0 --:--:-- --:--:-- --:--:-- 8108k Téléchargement terminé Pas de reboot du Home Center Backup terminé avec succès : Saturday 11/07/2020 19:12:02 (penser à activer préalablement le serveur SSH dans le panneau de configuration de DSM si ce n'est pas déjà fait) Téléchargement : backup-hc3.sh Bonus : script pour HC2 & HCL : backup-hc2.sh Pour HC2 à partir du firmware 4.621 : voir script de @speedoxx007 en page 4.
-
HEATING & COOLING MANAGER - THERMOSTAT PID POUR LA HC3 (QUICKAPP) Je démarre un nouveau sujet pour que la dernière version soit plus facile à trouver. Le Heating Manager original a été développé par @OJC pour la HC2, et adapté ensuite par @Dgille pour la HC3. J'ai réécrit une grande partie du code pour essayer de le fiabiliser et le simplifier mais les ajouts les plus visibles sont l'interface QuickApp (utilisation mono pièce) et la possibilité de piloter des climatiseurs (demande spéciale de @jojo). J'ai enlevé les modes de régulation non PID et ajouté quelques fonctions de sécurité (recherche d'un autre capteur de température si le capteur par défaut n'est plus valide, test intensif de la configuration au démarrage, etc.). Il y aussi beaucoup de messages dans les logs pour suivre ce qui se passe (pour ceux que ça intéresse). Ce QA est dédié à @Dgille qui a continué à le développer sur son lit d'hôpital pour nous alors qu'il se savait condamné. Remerciements à @jojo d'avoir pris le temps de le tester et pour toutes ses suggestions très utiles. HCM peut être commandé facilement par GEA, mais il est aussi possible de configurer des événements spéciaux qui imposent une consigne prioritaire dans certaines conditions (par exemple consigne fixée à 5° tant qu'une fenêtre est ouverte). Une fois l'événement terminé, la consigne précédente est rétablie et l'utilisateur peut reprendre la main. Il est aussi possible de le piloter par une zone de climat (ex. panneau de chauffage). Un mode "simulation" est disponible si vous voulez le tester sans perturber votre installation actuelle. Voici la dernière version pour une première installation: HCM.fqa Pour mettre à jour votre version actuelle sans modifier votre configuration, remplacez le contenu du fichier 'main' par: HCM v520.14.lua Attention, le fichier config a été modifié à partir de la 5.20.13 (remplacement de la fonction HM:setIndoorSensor par HM:setRoomSensor). Si vous upgradez d'une version antérieure, il est conseillé de mettre à jour votre configuration en utilisant ce modèle: config new.lua Voici le mode d'emploi complet (inclus dans le fqa, dans le fichier 'help'): mode emploi.lua Et enfin le guide de démarrage rapide (première partie du mode d'emploi): ===================================================== HEATING & COOLING MANAGER - GUIDE DE DEMARRAGE RAPIDE ===================================================== Ce QuickApp est un thermostat PID dédié à une seule pièce. Par défaut, le QA utilisera le capteur de température de la pièce. Ce capteur doit avoir un temps de réveil de 15 min max. 1) CHAUFFAGE OU CLIMATISATION ? Par défaut ce QA gère des radiateurs. Pour gérer des climatiseurs, vous devez utiliser le paramètre suivant dans les USER SETTINGS du fichier 'config': HMCF.coolingDevice = true -- false : chauffage, true : climatisation 2) PERSONNALISATION DES MODES 4 modes à consigne fixe sont disponibles par défaut: Confort, Eco, Vacances, et Manuel. Vous pouvez fixer les valeurs minimum et maximum pour chaque mode dans USER SETTINGS. Vous pouvez aussi ajuster la durée du mode Manuel (par défaut: 2 heures): HMCF.range.Confort = {19, 22} -- Valeurs {min, max} pour le mode Confort HMCF.range.Eco = {10, 21} -- Valeurs {min, max} pour le mode Eco HMCF.range.Vacation = { 5, 5} -- Valeurs {min, max} pour le mode Vacances HMCF.range.Manuel = { 5, 23} -- Valeurs {min, max} pour le mode Manuel HMCF.manualTimer = 2*60 -- Durée maximum (en minutes) du mode Manuel Le mode Auto peut être associé à une consigne externe comme une zone de climat, une variable globale, ou un même un autre thermostat. Des exemples sont disponibles dans la section UTILISATION AVANCEE ci-dessous. Si vous ne configurez pas le mode Auto, il sera par défaut équivalent au mode Confort. 3) AJOUT DES RADIATEURS / CLIMATISEURS Chaque appareil (si il y en a plus d'un dans la pièce) doit être ajouté dans la section HEATERS CONFIGURATION du fichier config avec la fonction HM:addHeater(). Dans la plupart des cas, le seul paramètre nécessaire est son id: => Ex: HM:addHeater({id=145}) -- ATTENTION: un seul appareil par commande HM:addheater() Par défaut, chaque appareil est commandé avec les commandes "turnOn"/"turnOff" et son retour d'état est vérifié avec la propriété "value". Si votre appareil n'est pas standard, des paramètres optionnels sont disponibles (cf. UTILISATION AVANCEE). Voilà! Votre Thermostat PID est configuré et prêt à être utilisé.
-
Exploration des variables, fonctions, et objets disponibles en LUA sur HC3
Lazer a posté un sujet dans Tutoriels
Voici 2 petits scripts LUA pour explorer les objets accessibles dans les QuickApps et les Scènes sur HC3. Quand on développe, il est toujours intéressant de découvrir des variables et fonctions non documentées, ou voir quelles fonctions sont disponibles dans les QuickApps ou dans les Scènes car il y a pas mal de différences. Cela permettra aussi de suivre les ajouts de fonctions par Fibaro au fur et à mesure des nouveaux firmwares. Les résultats donnés dans ce post sont été obtenus avec le firmware 5.031.33 QuickApps Créer un QA avec un seul bouton pour lancer l'exécution du code : function QuickApp:browse(racine, tableau) local variables, functions, objects = {}, {}, {} for k, v in pairs(tableau) do if type(v) == "table" then if v ~= _G then local variables2, functions2, objects2 = self:browse(racine .. k .. ".", v) for i = 1, #variables2 do variables[#variables+1] = variables2[i] end for i = 1, #functions2 do functions[#functions+1] = functions2[i] end for i = 1, #objects2 do objects[#objects+1] = objects2[i] end end elseif type(v) == "function" then functions[#functions+1] = racine .. k .. '()' elseif type(v) == "string" then variables[#variables+1] = racine .. k .. ' = "' .. v .. '"' elseif type(v) == "number" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) elseif type(v) == "integer" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) elseif type(v) == "boolean" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) else objects[#objects+1] = racine .. k .. " => " .. type(v) end end table.sort(variables) table.sort(functions) table.sort(objects) return variables, functions, objects end function QuickApp:onButtonClic(event) self:trace("") local variables, functions, objects = self:browse("", _G) self:trace("Variables :") for _, v in ipairs(variables) do self:debug(v) end self:trace("Fonctions :") for _, v in ipairs(functions) do self:debug(v) end self:trace("Objets :") for _, v in ipairs(objects) do self:debug(v) end self:debug("Terminé") end function QuickApp:onInit() end Résultat : Variables : _VERSION = "Lua 5.3" __TAG = "QuickApp152" json._COPYRIGHT = "Copyright (c) 2007-2017 Thomas Harning Jr. " json._DESCRIPTION = "LuaJSON : customizable JSON decoder/encoder" json._VERSION = "1.3.4" json.decode.simple.array.allowEmptyElement = false json.decode.simple.array.trailingComma = true json.decode.simple.calls.allowEmptyElement = false json.decode.simple.calls.allowUndefined = false json.decode.simple.calls.trailingComma = true json.decode.simple.number.exp = true json.decode.simple.number.frac = true json.decode.simple.number.hex = false json.decode.simple.number.inf = true json.decode.simple.number.nan = true json.decode.simple.object.allowEmptyElement = false json.decode.simple.object.identifier = true json.decode.simple.object.number = true json.decode.simple.object.trailingComma = true json.decode.simple.others.allowUndefined = true json.decode.simple.others.null = false json.decode.simple.others.undefined = false json.decode.simple.strings.additionalEscapes = false json.decode.simple.strings.badChars = "" json.decode.simple.strings.strict_quotes = false json.decode.strict.array.allowEmptyElement = false json.decode.strict.array.trailingComma = false json.decode.strict.calls.allowEmptyElement = false json.decode.strict.calls.allowUndefined = false json.decode.strict.calls.trailingComma = true json.decode.strict.initialObject = true json.decode.strict.nothrow = false json.decode.strict.number.exp = true json.decode.strict.number.frac = true json.decode.strict.number.hex = false json.decode.strict.number.inf = false json.decode.strict.number.nan = false json.decode.strict.object.allowEmptyElement = false json.decode.strict.object.identifier = false json.decode.strict.object.number = false json.decode.strict.object.trailingComma = false json.decode.strict.others.allowUndefined = false json.decode.strict.strings.additionalEscapes = false json.decode.strict.strings.badChars = " " json.decode.strict.strings.strict_quotes = true json.decode.strict.unicodeWhitespace = true json.decode.util.DecimalLpegVersion = 1.0 json.encode.default.number.inf = true json.encode.default.number.nan = true json.encode.default.others.allowUndefined = true json.encode.default.strings.encodeSet = "\"/%z-" json.encode.default.strings.xEncode = false json.encode.strict.initialObject = true json.encode.strict.number.inf = false json.encode.strict.number.nan = false json.encode.strict.others.allowUndefined = false json.encode.strict.strings.encodeSet = "\"/%z-" json.encode.strict.strings.xEncode = false logger.DEBUG = 1 logger.ERROR = 4 logger.FATAL = 5 logger.INFO = 2 logger.TRACE = 0 logger.WARNING = 3 math.huge = inf math.maxinteger = 9223372036854775807 math.mininteger = -9223372036854775808 math.pi = 3.1415926535898 plugin.mainDeviceId = 152 utf8.charpattern = "[-�-�][�-�]*" Fonctions : __assert_type() __fibaroSleep() __fibaroUseAsyncHandler() __fibaro_add_debug_message() __fibaro_get_device() __fibaro_get_device_property() __fibaro_get_devices() __fibaro_get_global_variable() __fibaro_get_room() __fibaro_get_scene() __print() __ternary() api.delete() api.get() api.post() api.put() assert() bit32.arshift() bit32.band() bit32.bnot() bit32.bor() bit32.btest() bit32.bxor() bit32.extract() bit32.lrotate() bit32.lshift() bit32.replace() bit32.rrotate() bit32.rshift() class() clearInterval() clearTimeout() collectgarbage() configure() error() fibaro.__houseAlarm() fibaro.alarm() fibaro.alert() fibaro.call() fibaro.callGroupAction() fibaro.clearTimeout() fibaro.debug() fibaro.emitCustomEvent() fibaro.error() fibaro.get() fibaro.getDevicesID() fibaro.getGlobalVariable() fibaro.getIds() fibaro.getName() fibaro.getRoomID() fibaro.getRoomName() fibaro.getRoomNameByDeviceID() fibaro.getSectionID() fibaro.getType() fibaro.getValue() fibaro.profile() fibaro.scene() fibaro.setGlobalVariable() fibaro.setTimeout() fibaro.sleep() fibaro.trace() fibaro.useAsyncHandler() fibaro.wakeUpDeadDevice() fibaro.warning() getHierarchy() ipairs() json.array() json.decode.decode() json.decode.getDecoder() json.decode.simple.object.setObjectKey() json.decode.simple.strings.decodeUnicode() json.decode.strict.object.setObjectKey() json.decode.strict.others.null() json.decode.strict.others.undefined() json.decode.strict.strings.decodeUnicode() json.decode.util.denied() json.decode.util.get_invalid_character_info() json.decode.util.setObjectKeyForceNumber() json.decode.util.unexpected() json.encode.default.array.isArray() json.encode.default.others.null() json.encode.default.others.undefined() json.encode.encode() json.encode.getEncoder() json.encode.strict.array.isArray() json.encode.strict.others.null() json.encode.strict.others.undefined() json.null() json.util.InitArray() json.util.IsArray() json.util.buildCall() json.util.clone() json.util.decodeCall() json.util.doOptionMerge() json.util.isCall() json.util.merge() json.util.null() json.util.printValue() json.util.undefined() logger.debug() logger.error() logger.fatal() logger.getLevel() logger.info() logger.log() logger.setLevel() logger.trace() logger.warning() math.abs() math.acos() math.asin() math.atan() math.atan2() math.ceil() math.cos() math.cosh() math.deg() math.exp() math.floor() math.fmod() math.frexp() math.ldexp() math.log() math.log10() math.max() math.min() math.modf() math.pow() math.rad() math.random() math.randomseed() math.sin() math.sinh() math.sqrt() math.tan() math.tanh() math.tointeger() math.type() math.ult() next() onAction() onUIEvent() os.clock() os.date() os.difftime() os.exit() os.time() pairs() pcall() plugin.createChildDevice() plugin.deleteDevice() plugin.getChildDevices() plugin.getDevice() plugin.getProperty() plugin.restart() print() property() rawlen() select() setInterval() setTimeout() string.byte() string.char() string.dump() string.find() string.format() string.gmatch() string.gsub() string.len() string.lower() string.match() string.pack() string.packsize() string.rep() string.reverse() string.split() string.starts() string.sub() string.unpack() string.upper() super() table.concat() table.insert() table.move() table.pack() table.remove() table.sort() table.unpack() tonumber() tostring() type() unpack() utf8.char() utf8.codepoint() utf8.codes() utf8.len() utf8.offset() xpcall() Objets : Device => userdata Hierarchy => userdata QuickApp => userdata QuickAppBase => userdata QuickAppChild => userdata core.EventTarget => userdata json.decode.simple.strings.escapeCheck => userdata json.decode.strict.strings.escapeCheck => userdata json.decode.util.ascii_ignored => userdata json.decode.util.ascii_space => userdata json.decode.util.comment => userdata json.decode.util.comments.c => userdata json.decode.util.comments.cpp => userdata json.decode.util.hex => userdata json.decode.util.hexpair => userdata json.decode.util.identifier => userdata json.decode.util.unicode_ignored => userdata json.decode.util.unicode_space => userdata mqtt.Client => userdata mqtt.ConnectReturnCode => userdata mqtt.QoS => userdata net.HTTPClient => userdata net.TCPSocket => userdata quickApp => userdata Scènes Créer une scène LUA en exécution manuelle avec ce code : local function browse(racine, tableau) local variables, functions, objects = {}, {}, {} for k, v in pairs(tableau) do if type(v) == "table" then if v ~= _G and v ~= _ENV and v ~= __index and k ~= "__index" then local variables2, functions2, objects2 = browse(racine .. k .. ".", v) for i = 1, #variables2 do variables[#variables+1] = variables2[i] end for i = 1, #functions2 do functions[#functions+1] = functions2[i] end for i = 1, #objects2 do objects[#objects+1] = objects2[i] end end elseif type(v) == "function" then functions[#functions+1] = racine .. k .. '()' elseif type(v) == "string" then variables[#variables+1] = racine .. k .. ' = "' .. v .. '"' elseif type(v) == "number" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) elseif type(v) == "integer" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) elseif type(v) == "boolean" then variables[#variables+1] = racine .. k .. ' = ' .. tostring(v) else objects[#objects+1] = racine .. k .. " => " .. type(v) end end table.sort(variables) table.sort(functions) table.sort(objects) return variables, functions, objects end fibaro.trace(tag, "") local variables, functions, objects = browse("", _ENV) fibaro.trace(tag, "Variables :") for _, v in ipairs(variables) do fibaro.debug(tag, v) end fibaro.trace(tag, "Fonctions :") for _, v in ipairs(functions) do fibaro.debug(tag, v) end fibaro.trace(tag, "Objets :") for _, v in ipairs(objects) do fibaro.debug(tag, v) end fibaro.debug(tag, "Terminé") Résultat : Variables : fibaro.version = "1.0.0" json._version = "0.1.0" math.huge = inf math.maxinteger = 9223372036854775807 math.mininteger = -9223372036854775808 math.pi = 3.1415926535898 sceneId = 10 sourceTrigger.id = 2 sourceTrigger.property = "execute" sourceTrigger.type = "user" tag = "Scene10" Fonctions : api.delete() api.get() api.post() api.put() assert() error() fibaro.alarm() fibaro.alert() fibaro.call() fibaro.callGroupAction() fibaro.debug() fibaro.emitCustomEvent() fibaro.error() fibaro.get() fibaro.getAllDeviceIds() fibaro.getDevicesID() fibaro.getGlobalVariable() fibaro.getIds() fibaro.getName() fibaro.getRoomID() fibaro.getRoomName() fibaro.getRoomNameByDeviceID() fibaro.getSectionID() fibaro.getType() fibaro.getValue() fibaro.homeCenter.climate.setClimateZoneToManualMode() fibaro.homeCenter.climate.setClimateZoneToScheduleMode() fibaro.homeCenter.climate.setClimateZoneToVacationMode() fibaro.homeCenter.notificationService.publish() fibaro.homeCenter.notificationService.remove() fibaro.homeCenter.notificationService.update() fibaro.homeCenter.popupService.publish() fibaro.homeCenter.systemService.reboot() fibaro.homeCenter.systemService.suspend() fibaro.profile() fibaro.scene() fibaro.setGlobalVariable() fibaro.setTimeout() fibaro.sleep() fibaro.trace() fibaro.wakeUpDeadDevice() fibaro.warning() ipairs() json.decode() json.encode() math.abs() math.acos() math.asin() math.atan() math.atan2() math.ceil() math.cos() math.cosh() math.deg() math.exp() math.floor() math.fmod() math.frexp() math.ldexp() math.log() math.log10() math.max() math.min() math.modf() math.pow() math.rad() math.random() math.randomseed() math.sin() math.sinh() math.sqrt() math.tan() math.tanh() math.tointeger() math.type() math.ult() net.HTTPClient.new() net.HTTPClient.request() next() os.date() os.time() pairs() pcall() print() select() string.byte() string.char() string.dump() string.find() string.format() string.gmatch() string.gsub() string.len() string.lower() string.match() string.pack() string.packsize() string.rep() string.reverse() string.sub() string.unpack() string.upper() table.concat() table.insert() table.move() table.pack() table.remove() table.sort() table.unpack() tonumber() tostring() type() -
Scene HC3 - Alerte Demarrage Box Cette scene est indispensable pour être alerté lors d'un démarrage de votre HC3. Type d'alerte : Push Mail Trace Dans : DÉCLARATIONS (Conditions/Déclencheurs) copier ce code { type = "se-start", property = "start", operator = "==", value = true, isTrigger = true } Dans ACTIONS copier ce code local tag = "Demarrage HC3" local heure = os.date("%R") local date = os.date("%d/%m/%Y") local data = api.get("/settings/info") local Version = data.softVersion local Serial = data.serialNumber local Message = string.format("Votre %s version %s à demarrée le %s à %s", Serial, Version, date, heure) fibaro.alert("push", {2}, Message) fibaro.alert("email", {2}, Message) fibaro.trace(tag, Message) On enregistre est c’est OK
-
Quick App - Chauffage Fil Pilote Qubino Bonjour, Voici un QA pour le pilotage du chauffage avec un Qubino Fil Pilote. Je n'ai pas ré-inventé la roue mais simplement inspiré l'un des VD trouvé sur le forum pour la HC2. Pour cette version j'utilise une variable globale (Chauffage_Salon). Le paramétrage est très simple, il suffit de changer l'ID de votre module Qubino FP ainsi que sa valeur en fonction de vos envies. Code: -- QA de gestion pour un chauffage électrique en fil pilote 6 ordres piloté par un module Qubino -- Fonnctionne avec une Variable Globale qu'il faut créer (pas de création automatique de la VG pour le moment) -- VG = Chauffage_Salon {Confort, Confort-1, Confort-2, Éco, Hors-Gel, Arrêt} -- Créé par fredokl pour le forum www.domotique-fibaro.fr -- Version: 1.0 function QuickApp:onInit() self:debug("onInit") __TAG = "QA_"..plugin.mainDeviceId.."Chauffage Salon" -- Mise à jour variable sur label local ModeCh = fibaro.getGlobalVariable("Chauffage_Salon") self:updateProperty("Temperature", ModeCh) self:updateView("lblMode", "text", "Le chauffage du Salon est en mode ".. ModeCh) self:TemperatureSalon() end -- Température du Salon function QuickApp:TemperatureSalon(event) local tempSalon = fibaro.getValue(34, "value") -- Capteur température self:updateProperty("Temperature", tempSalon) self:updateView("lblTemp", "text", "La température du Salon est de ".. tostring(tempSalon) .." C°") self:debug("Température du Salon ".. tostring(tempSalon) .." C°") -- Rafraîchissement toutes les 15 minutes fibaro.setTimeout(1000 * 60 * 15, function() self.TemperatureSalon() end) end -- Mode Confort function QuickApp:uiConfortOnR(event) fibaro.call(62, "setValue", 99) fibaro.setGlobalVariable("Chauffage_Salon", "Confort") self:debug("Chauffage en mode Confort") self:onInit() end -- Mode Confort-1 function QuickApp:uiConfort_1OnR(event) fibaro.call(62, "setValue", 41) fibaro.setGlobalVariable("Chauffage_Salon", "Confort-1") self:debug("Chauffage en mode Confort-1") self:onInit() end -- Mode Confort-2 function QuickApp:uiConfort_2OnR(event) fibaro.call(62, "setValue", 31) fibaro.setGlobalVariable("Chauffage_Salon", "Confort-2") self:debug("Chauffage en mode Confort-2") self:onInit() end -- Mode Éco function QuickApp:uiEcoOnR(event) fibaro.call(62, "setValue", 21) fibaro.setGlobalVariable("Chauffage_Salon", "Éco") self:debug("Chauffage en mode Éco") self:onInit() end -- Mode Hors-Gel function QuickApp:uiHGOnR(event) fibaro.call(62, "setValue", 11) fibaro.setGlobalVariable("Chauffage_Salon", "Hors-Gel") self:debug("Chauffage en mode Hors-Gel") self:onInit() end -- Mode Arrêt function QuickApp:uiArretOnR(event) fibaro.call(62, "setValue", 0) fibaro.setGlobalVariable("Chauffage_Salon", "Arrêt") self:debug("Chauffage à l'arrêt") self:onInit() end Bien entendu ce code peut être modifié selon vos désirs. QuickApp: QA-Chauffage_FP.fqa
-
Bonjour à toutes et tous, Je suis en train de refondre toutes mes scènes et plus particulièrement mes fonctions. L'une d'elles me sert pour l'envoi des push. J'ai effectué des tests tout fonctionnait - et depuis peu (maj en 5.030.45 en cause ?)b plus aucun push ne passe... ! J'utilise bien sûr la nouvelle syntaxe : fibaro.alert("push", {25}, "Hello Woolf !") J'ai vainement recherché des pistes dans les topics mais rien ne m'a permis de résoudre ce problème. Y a s'il une petite idée ? Merci d'avance
-
IMPORTANT NOTICE Version 5.130.64 is a hotfix of 5.130.45, it fixes following issues: Some cases encountered system booting issue after update. Scenes page hangs in some cases. Stability improvements. Thermostats do not always respond to manual setting from the climate panel. Minor UX improvements.
-
Pour ceux qui connaissent HC2 mais débutent en HC3, voici des réponses aux principales questions que je me suis posées ces derniers jours. Rien de nouveau, tout est sur le forum (et en plusieurs exemplaires !) mais l'idée est de faire un post avec les principes de base et questions fréquentes (actualisé si besoin en fonction de vos commentaires/corrections), pour les débutants en HC3 qui comme moi sont très mauvais avec les moteurs de recherche. Sources et liens essentiels: ils sont indiqués par @Lazer ici. Un grand merci à lui, beaucoup de mes apprentissages viennent de ses posts. Qu'est-ce qu'un QuickApp (QA) ? Un QA est 3 composants en 1 : Un script LUA, qui peut être organisé en plusieurs fichiers: par exemple un fichier pour votre programme principal ("main"), un fichier pour une librairie de tools, un fichier pour la config utilisateur, etc. Pour utiliser une fonction du fichier tools, il suffit de l'appeler par son nom dans l'onglet principal. Pour créer un nouveau fichier, cliquer sur l’icône Files dans la marge à gauche de l'interface UI. Un module virtuel (device). Contrairement aux VD de HC2, le module virtuel d'un QA simule un module physique (interrupteur, détecteur, sonde, etc.). C'est pour ça que chaque fois qu'on crée un QA il faut choisir le type de device associé. En fonction du type, vous aurez des propriétés ("lastBreached" pour un détecteur par exemple), des icônes, et une interface utilisateur spécifiques équivalentes à ce que vous auriez pour un QA physique du même type. L'idée est que ce module virtuel soit piloté par la HC3 de la même manière que s’il était réel, via des appels fibaro.get(), fibaro.getValue(), fibaro.call() et même via l’API. Le grand avantage est que vous pouvez personnaliser et modifier son « micro-programme » et son interface (UI), ce qui n'est pas possible pour un module réel. La liste des types disponibles et propriétés associées est ici (fichier excel à la fin du post). C'est aussi si besoin une interface (UI) avec des labels, boutons, sliders, comme un VD de HC2. Attention, l'interface par défaut dépend du type de device que vous sélectionnez à la création du QA (cf. ci-dessus). Chaque composant est optionnel. Comme illustré ici il est possible d'avoir des modules QA qui fonctionnent sans une ligne de code (pilotés par des calls externes). Et inversement, si vous n'avez pas besoin de module virtuel, vous pouvez sélectionner l'option "Appareil désactivé" ("Device disabled") dans l'onglet "Avancé" du QA : le QA ne pourra plus être appelé par des calls fibaro, mais le programme LUA fonctionnera normalement et l'interface UI aussi (par contre j'ai l'impression que ça fait disparaitre le QA de l'interface mobile, donc pas forcément une bonne idée...). Comment fonctionnent les variables persistantes dans un QA ? Dans HC2, si on veut une variable persistante, on a le choix entre un label de VD ou une variable globale. Les variables globales existent toujours dans la HC3, elles sont gérées par les fonctions fibaro.getGlobalVariable(var) et fibaro.setGlobalVariable(var, value). Par contre les labels de QA ne sont plus persistants (réinitialisés à chaque démarrage du QA), et leur contenu n'est pas facile à lire (pas de fonction fibaro, il faut passer par le JSON du QA). Mais heureusement ils sont remplacés par les "variables QA" (« quickVars ») : des variables persistantes, mais internes au QA. Ces variables sont gérées par les fonctions QuickApp:getVariable(var) et QuickApp:setVariable(var, value). A noter : Si la "quickVar" n'existe pas, QuickApp:getVariable() renverra une valeur "" et non nil. Il y aura juste un warning dans le log du QA si la variable n'existe pas. Si vous utilisez QuickApp:setVariable() sur une quickVar qui n'existe pas, elle sera créée. Les quickVars peuvent aussi être créées, modifiées ou supprimées dans les paramètres du QA (onglet Variables). MAIS : toute valeur saisie manuellement dans l’interface Web sera convertie en format string (« 99 » au lieu de 99). Pour utiliser un autre format (numérique ou table), il faut utiliser QuickApp:setVariable(). Il est possible de récupérer le contenu des quickVars d'autres QA par des fonctions détournées (mais ce n'était pas l'intention des développeurs). Les variables globales HC3 peuvent être gérées dans l'onglet Variables du menu Réglages/Général (basique, mais j'ai mis du temps à le trouver!). Comment fonctionnent les fonctions dans un QA ? Compte tenu de ce qui précède, ça ne devrait pas vous étonner qu’on ait deux types de fonction : les fonctions normales de n’importe quel code LUA (function test(x) return x+x end) et les fonctions QuickApp qui sont ajoutées au code du module virtuel (son « micro-programme » pour reprendre mon image initiale). L’intérêt principal des fonctions QuickApp est qu’elles sont appelables par d’autres QA. L’autre intérêt est que chaque QA vient avec des fonctions déjà existantes qui sont bien utiles (ex : QuickApp:debug(), QuickApp:getVariable(), etc.). La fonction de gestion de l’interface UI notamment est une fonction QuickApp. Le QA simule une logique de langage orienté objet. Pour faire un parallèle avec Python (le seul langage orienté objet que je pratique un peu), QuickApp est une classe qui contient des fonctions (ou méthodes) mais aussi des variables (QuickApp.id est l'id du QA par exemple). Au sein d'une fonction QuickApp les autres fonctions et variables du QA peuvent être appelées par self:fonction() ou self.variable. L’appel d'une fonction d’un autre QA se fait via fibaro.call(id, "maFonction", arg1, arg2, etc.). L'inconvénient de cette méthode est qu'il n'y a pas de retour (pas de confirmation de succès, ni possibilité de renvoyer une variable au QA d'origine). Là aussi, il est possible de régler le problème par des contournements, comme expliqué ici. Comment est structuré le code LUA d’un QA ? La structure normale du code LUA d’un QuickApp est comme suit : Le code est exécuté une première fois de haut en bas. C'est l'occasion de déclarer les variables et fonctions. Ensuite, le QA lance la fonction QuickApp:onInit() si elle existe. C'est dans cette fonction que votre code doit commencer normalement. Voici un exemple (fonctionne avec un QA de type "multilevel sensor", qui accepte des valeurs numériques pour sa propriété "value"): function QuickApp:turnOn() -- appelable par fibaro.call(id, "turnOn") self:updateProperty("value", "99") afficheValeur(self) end function QuickApp:turnOff() -- appelable par fibaro.call(id, "turnOff") self:updateProperty("value", "0") afficheValeur(self) end function afficheValeur(self) self:debug("Valeur du module "..self.id.." : "..self.properties.value) end function QuickApp:onInit() self:debug("onInit - Démarrage du module "..self.id) --afficheValeur(self) setTimeout(function() afficheValeur(self) end, 0) end Contrairement au code des VD HC2, le code des QA ne s’exécute qu’une seule fois. Si vous souhaitez une boucle, il faut créer une fonction mainLoop() appelée via une fonction setInterval(). Tout est expliqué ici. Pourquoi on voit souvent l'instruction setTimeout(function() maFonction(self) end, 0) à la fin de la fonction QuickApp:onInit() ? C’est expliqué ici. En résumé, ça permet d’avoir accès à une variable LUA globale « quickApp » qui contient toutes les propriétés et méthodes de la classe QuickApp (instanciation), mais qui ne s’initialise que si la fonction QuickApp:onInit() est terminée. Même si on n'utilise pas cette variable, c'est une bonne habitude de laisser la fonction QuickApp:onInit() se terminer avant de lancer la fonction suivante.
-
Bonjour à tous, Je suis à la recherche d’un quick app équivalent au Vd sur HC2 qui permettait de gérer une porte de garage. Pour faire fonctionner la VD sur HC2 j’avais installé un FGS pour l’activation de la porte et un Vision ZG8101 pour connaitre la position de la porte. le VD permettrait de disposer d’une télécommande qui gérait la fermeture ou l’ouverture de la porte par rapport à son état précédent. J’ai beau chercher je ne trouve pas d’équivalent quick app qui m’aiderait à faire la même chose. Merci pour votre aide.
-
Bonsoir J'ai un QA qui fonctionne sans problème depuis deux ans. Du jour au lendemain, j'ai cette erreur !! [28.12.2022] [17:01:00] [ERROR] [QUICKAPP136]: QuickApp crashed [28.12.2022] [17:01:00] [ERROR] [QUICKAPP136]: Unknown error occurred: handleJsonRpc Que signifie handleJsonRpc Merci d'avance si vous avez une idée
-
Je viens de recevoir un mail relatif à un module passerelle entre le système Nice et Fibaro (HC3). Le bidule s'appelle "BiDi-ZWave" Et voici le pdf de présentation : Nice BiDi-ZWave - InstalatON.pl.pdf Et les notices : Nice BiDi-ZWave - InstalatON.pl.pdf Guide FG-IBT4ZWAVE .pdf Déjà en vente chez Domadoo... Bonne lecture ! Notice IBT4ZWAVE.pdf
- 65 réponses
-
- 1
-
-
HC3 & HCL - 5.130.61 - BETA - 18/11/2022 Thank you for using our gateway! Be sure to update to the latest version to enjoy new features and improvements. IMPORTANT NOTICE Version 5.130.61 is a hotfix of 5.130.45, it fixes following issues: Some cases encountered system booting issue after update. Scenes page hangs in some cases. Stability improvements. Minor UX improvements. Main features: 1. Redesigned the way user access settings works From now on, it is possible to grant access to devices and scenes by entire sections or rooms in the system. Access to newly added devices and scenes will be automatically granted if an entire section or room is selected. New user will automatically have access to the entire system from the beginning. 2. Scenes can be assigned to rooms From now on, all types of scenes can be assigned to rooms, not just categories. 3. Z-Wave devices exclusion wizard Z-Wave exclusion is now available in new wizard style. Additionally there is an option to start exclusion directly from failed inclusion process. What's new: Devices Added Gateway filter to devices list. Added possibility to filter out power metering devices from mobile application energy panel. Changed UI for icons selection. Heatit ZM Single Relay 16A support. Heatit ZM Thermostat 16A support. Heatit Z-Push Wall Controller support. Heatit Leakage Stopper support. Network Automatic selection of network connection type in FTI if only one is available. Nice* Optimized support for OXIBD module. Other Optimized trim of events database. Performance improvements. Added system notification about potential performance loss due overheating. Added possibility to clear all system notifications at once. Profiles Changed UI for icons selection. Quick Apps Power sensor device type added to QuickApps. Removed password saving option in browser for secret variables. Rooms Changed UI for icons selection. Scenes Added validation for time inputs in block scenes. Devices used in scenarios and hidden later are now shown on the devices list. Scenes name limit is changed to 60 characters. Changed UI for icons selection. Update Translations support for devices Update Service.** Devices update now available using remote access. Z-Wave Performance improvements.** Bug fixes: Alarm Some alarm scenes are not listed in Alarm tab. Climate Panel Some devices set to "Hold" in manual mode returns to schedule anyway after 7 days. Climate zone deactivation does not work for some device types. Dashboard Favorite position label defined by user is not used on dashboard tiles and sidebar. Alarm status "dots" on sensors tiles does not change color according to current zone state. Scrolling long names does not always show the full text on device tiles. Devices Issue with displaying current values of bit-mask type configuration parameters. Cannot navigate to child device using "parent-child" tree when filters are enabled. Newly added device is not visible when filters are set. After adding a camera, modal for adding "other devices" stays open. Wrong battery status for Sensative strip Guard 700 in some cases. Binary sensor cannot be used for Video Gate linked device. Missing possibility to sort devices using battery level. Minor fixes in UX for new devices filters. Missing support for some actions related with color control (fading, enhancing, stop color change). HeatIt ZM Thermostat 16A set-point issue requires reconfiguration to work properly (introduced in 5.121.28 beta). Elero* Devices are marked as dead during binding procedure in rare cases. Gateway Connection Incorrect role handling for FIBARO RGBW 1. Missing possibility to exclude device from slave gateway. Nice* Redundant "Stop" button for gates on control dialog in mobile application. Removed redundant step in "pairing a remote in gateway" binding process. Other Fixed Recovery UI issues in German language. Wrong display of "not used" RAM value in diagnostics. Not saved system language during FTI in some cases. Notifications creation time is calculated according to browser time, not system one. Mismatched translations when leaving Recovery mode. Some cases encountered system booting issue after update (introduced in 5.121.28 beta). Incorrect notification about HC3 gateway overheating (introduced in 5.121.28 beta). Newly added devices access issues for mobile app and web interface users (introduced in 5.121.28 beta). Quick Apps Missing logs in console after page refresh. Quick App sprinkler device type is not supported in Garden Panel. QuickApps content loading issue while using the remote connection (introduced in 5.121.28 beta). Scenes Unnecessary popup with "unsaved changes" in some cases for Scenarios. Update Impossible to start second update for battery-operated device.** Last target in devices update stays in "In Progress" status even if whole process ended.** Z-Wave Engine crash in some cases during multiple network management operations.** Known issues: Z-Wave Engine 3.0 Some Z-Wave devices are not fully compatible with the new version of Z-Wave engine. Gateway connection is not available in the new Z-Wave engine version. * - does not apply to HC3L (Home Center 3 Lite) ** - applies only to Z-Wave Engine 3.0
-
Bonjour à tous, J’ai besoin de vos avis, je suis aujourd'hui heureux possesseur d’une HC2 qui fonctionne correctement mais je souhaite en changer pour plusieurs raisons. En effet, aujourd’hui je suis obligé « d’interfacer » via Jeedom certaines de mes « applications ». A ce jour je crois par exemple que Arlo n’est pas compatible HC2 voir même HC3. Je fais aussi « parler » mes Google Home via Jeedom. J’ai aussi un apriori sur l’évolution du Home center 3, les développements promis (Bluetooth, ZigBee, …) ne sont pas encore sortis. J’hésite à ce jour avec le future Homey Pro : https://homey.app/fr-fr/homey-pro/ Celle-ci me semble plus compatible ou plus ouverte je dirais et envisage déjà les futurs protocoles Matter ou Thread. J’ai besoin de votre retour d’expérience sur la HC3 et sur l’ancienne Homey Pro pour ceux qui ont basculé, mais aussi sur l’application mobile Android (Je n’aime pas du tout Yubii ) PS : je n’arrive pas à savoir si la Homey Pro procédera une interface locale, plutôt pratique sur la HC2. Merci pour vos retours.
-
Salut J'ai essayé d'ajouter une des caméras sur la HC3 mais j'ai pas de flux qui apparaît. Étrange car l'URL donnée par la HC3 avec l'ip et mes crédentials sont OK, j'ai bien la vidéo ! C'est correct chez vous ?
-
Showroom GEA pour HC3 Postez uniquement les fonctions testées et vérifiées. Pour plus de lisibilité NE POSEZ PAS DE QUESTIONS DANS CE FIL !!! Si vous voulez remercier pour un post, cliquez sur le bouton j'aime Si vous avez une question, allez dans le fil Support GEA et faites référence à un post ou copiez l'extrait de config pour laquelle vous voulez poser une question. Ce topic fait suite aux 2 Showrooms consacrés à GEA sur HC2 :
-
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
-
Bonjour à tous Je viens de découvrir que Logitech a stoppé la commercialisation de ses télécommandes et hub en 2021. De mon coté, j'utilise le hub harmony pour commander mes télés et sa fonction Bluetooth pour ma box télé Free. Le tout relié à ma HC3 bien entendu :=) Tout fonctionne encore, mais pour combien de temps ? De votre coté, avez vous trouvé sur le marché un produit similaire qui commande l'IR et bluetooth et connectable à une HC3 ou Jeedom ? Merci à vous