Aller au contenu

sumsum

Membres confirmés
  • Compteur de contenus

    57
  • Inscription

  • Dernière visite

Tout ce qui a été posté par sumsum

  1. sumsum

    Support Gea

    @jojo Il faut deux lignes car il faut changer le statut de profile à Away une fois qu'il était à Home GEA.add( {"Or", {"Value", 188, false}, {"Value", 202, false} }, 30, "Bernard, Nathalie ou les deux sont absents changé à Away", {{"Profile", "Away"}, {"Portable", Phone_Bernard}}) GEA.add( {{"Value", 188, true}, {"Value", 202, true}, }, 30, "Bernard, Nathalie sont présents changé à Home", {{"Profile", "Home"}, {"Portable", Phone_Bernard}}) PS je n'ai pas testé, mais ça devrait couvrir tes besoins
  2. sumsum

    Support Gea

    @Domodial j'essaie de simplifier ton besoin pour limiter le nombre de conditions et donc de lignes. Comme @jojo je suis pour la simplicité. Si je lis les commentaires que tu as mis dans ton code, j'y vois des conditions qui s'annulent. Par exemple le changement de l'état de la box: Condition 1: Si je suis absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas mon smartphone Condition 2: Si je suis présent (true), passe le mode HC3 à 1 (HOME) Condition 3: Si Nathalie est absent, change le mode de la box à 2 (AWAY), s'il ne détecte pas son smartphone Condition 4: Si Nathalie est présent (true), passe le mode HC3 à 1 (HOME) Comme vous êtes 2 il faut impérativement inclure les deux variables dans les conditions, sinon, la condition 1 et 2 sera annulée par la 3 ou la 4 et c'est là que la table dont je parlais plus haut prend tout son sens. Nathalie 0 = absente 1 = Présente Bernard 0 = absent 1 = Présent Etat Box 2 = AWAY 1 = HOME Etat Lumière 0 = éteinte 1 = allumée 0 0 2 0 0 1 1 0 1 0 1 0 1 1 1 1 Vérifie/confirme ou modifie la table ci-dessus pour que tes conditions et tes actions correspondent à ce que tu veux que GEA fasse. En lisant tes commentaires dans ton code et analysant ton code, les deux ne correspondent pas. Comme dit plus haut, si tu travailles aux conditions de Nathalie et de Bernard ligne par ligne, tu ne couvriras pas le cas de Bernard et Nathalie présents les deux ou absents les deux. PS dans tes actions de pilotage de ta lampe tu mets "Value+". Value+ est prévu pour tester une valeur plus grande que... dans les conditions. Pour les actions, c'est "Value" qu'il faut employer. Une fois ta table confirmée il restera à créer les lignes GEA qui engloberont tes conditions et tes actions. Redis-moi et je t'assiste pour les créer, cela te permet d'avoir le strict nécessaire de lignes et des actions qui correspondent exactement à ce que tu souhaites.
  3. sumsum

    Support Gea

    Pour ce type de réflexions, rien ne vaut la création d'une table de vérité, employée lorsqu'on simplifie des fonctions avec l'algèbre booleen. Par exemple: A = Bernard B = Nathalie A peut prendre les valeurs suivantes: Bernard Présent = 1 Bernard Absent = 0 B peut prendre les valeurs suivantes: Nathalie Présente = 1 Nathalie Absente = 0 La création de la table de vérité permet d'envisager tous les cas de figure. Le nombre de variables d'entrées ne se limite pas qu'a 2. Dans ton exemple, la table pour XOR (OU exclusif) ressemble à cela: En passant par cette approche, tu définis clairement la fonction puis il ne te reste plus qu'à employer la bonne fonction ET, OU, OU Exclusif, etc... L'exemple ci dessus provient d'un exemple créé par Didier Müller qui a publié le document complet sous https://www.apprendre-en-ligne.net/info/logique/logique.pdf Cette approche permet de gagner beaucoup de temps et d'éviter d'omettre des conditions.
  4. sumsum

    rajout de module impossible

    Même problème avec version 4.540 impossible d'ajouter ou supprimer un module. Effectué un restore, avec reboot et cela fonctionne
  5. sumsum

    Surveillance Station Manager

    @MAM78 Je continue les tests Lorsque j'actionne un bouton du VD, "Arrêt cameras" ou "Snapshot", en général la fonction s'exécute correctement pour 2 des 4 caméras. Lorsque je regarde le débug de plus près, je constate que l'adresse IP de l'instruction API est ":0". As-tu déjà rencontré ce cas de figure ? Voici un extrait du débug:
  6. sumsum

    Surveillance Station Manager

    @MAM78 je propose une modif pour faciliter l'obtention des Cam_ID en une seule fois, sans bug dans la boucle principale du VD. Dans l'entête on rajoute une variable SetupMode qui est à true lors de l'installation du VD. Dans ce cas la boucle n'essaie pas d'exécuter la récupération de l'état des caméras, mais on exécute quelques lignes de code qui affichent dans la fenêtre de débug et dans les labels des caméras du VD, les numéros d'ID des caméras trouvées dans Surveillance Station. Une fois les valeurs récupérées, on remplace les ID_CAM_xx par les Cam_ID récupérés dans la code de la boucle principale du VD. On change la variable SetupMode à faux et la boucle du VD s'exécute normalement. Voici un exemple de l'affichage des ID affichés dans les labels, ayant mis la variable SetupMode à true. Je peux te fournir le code modifié
  7. sumsum

    Surveillance Station Manager

    Voici la ligne 517 de mon code En y regardant de plus près, j'ai rajouté une ligne de DEBUG pour obtenir l'ID de la cam local Cam_Name = jsonTable.data.cameras[i].name local Cam_ID = jsonTable.data.cameras[i].id local Cam_VD_Id = "" --- Code inséré ---- self:message("white", "Caméra ID : "..Cam_ID) --- Fin Code inséré --- cameras = cameras..Cam_ID if i < nbcameras then cameras = cameras .."," end Du coup en cliquant sur le bouton "Déboguer" de la boucle principale du VD principal, juste avant le message d'erreur de la plantée du code, j'obtiens le Cam_ID. Je remplace le ID_CAM_xx par le Cam_ID récupéré dans le débug, je sauve et je recommence l'opération jusqu'à obtenir le Cam_ID de chacune de mes caméras. A mon avis il faut revoir la procédure pour affecter les Cam_ID ce n'est pas viable de cette manière. PS: Il y a plusieurs erreurs d'anglais dans les textes débug du code dans cette zone. Voici les textes modifiés: if Cam_VD_Id ~= nil and Cam_VD_Id ~= "" then if debug then self:message("green", "Found VD ID : "..Cam_VD_Id.." for Camera ID "..Cam_ID..', Name '..Cam_Name) end else self:message("purple", "VD ID not found for Camera ID "..Cam_ID..', Name '..Cam_Name.." in the table List_CAM in then Users parameters") end
  8. sumsum

    Surveillance Station Manager

    Il n'y a rien d'affiché sur mon VD Général, j'imagine que c'est lié au message d'erreur dans mon debug
  9. sumsum

    Surveillance Station Manager

    Super module, merci ! Je teste actuellement avec 4 caméras. J'ai la même question que @DoR.Technique et je ne sais pas où trouver les ID caméras. J'ai installé le VD principal et un VD par caméra. Je m'imaginais qu'on trouve les ID dans le debug. Voici la copie écran que je trouve dans le debug:
  10. J'ai testé cette solution et ça résout les API not found, mais surtout ça résout les latences d'exécution des instructions à déclenchement instantané. Voir mon post dans le topic Support GEA
  11. sumsum

    Support Gea

    J'ai implémenté la ligne mentionnée ci-dessus et mes problèmes de latences sur l'exécution d'instruction à déclenchement instantanés ont disparu. Donc le message d'erreur "API not found" semblait ne pas perturber le fonctionnement de GEA, comme mentionné dans plusieurs posts, par contre il ralentissait de manière très aléatoire les instructions à déclenchement instantanés. Avez-vous constaté la même chose @ymarchive et @fredokl ? Merci @oldelvis @pepite @Felig Ma box est en version 4.511B et GEA est en version 6.07 (incluant les modifs proposées)
  12. sumsum

    Support Gea

    Idem chez moi que @oldelvis, @ymarchive et @fredokl La latence est parfois de plus de 30 à 40 secondes. Ce sont surtout les déclenchements instantanés qui posent problèmes. Bizarrement, c'est comme si toutes les instructions se stockaient dans un buffer et qu'elles s'exécutent d'un coup. Le problème existe depuis la FW 4.510 Je suis passé à al FW 4.511B mais aucune amélioration. EDIT: Résolu voir mon post plus bas
  13. idem ici, lenteurs, fonctionnement aléatoire. Rien ne se passe pour 1 minute, puis toutes les actions qui auraient dû se dérouler s'exécutent à la suite, comme s'il y avait un stack d'instruction qui se vide.
  14. sumsum

    Support Gea

    @schwinny de mémoire les déclarations des ID "999 value" dans l'entête doivent être placés juste après %% properties et avant %% events. Après %% globals, tu déclare les variables globales. Dans des posts précédents j'avais demandé de l'aide pour des fonctionnements erronés ou aléatoires des déclenchements instantanés et en supprimant des lignes vides entre les déclarations, le problème avait disparu! Les déclarations dans l'entêtes sont sensibles au niveau de la syntaxe et ils n'y a pas de message d'erreur. Voici la syntaxe. J'ai rajouté %% events qui manquait. PS: Es-tu sûr que tu as autant de modules qui sont employés dans une instruction GEA avec déclenchement instantané -1 ? On ne déclare que les ID des modules qui sont employés dans une ligne GEA avec -1 --[[ %% autostart %% properties 8 value 60 value 74 value 65 value 13 value 18 value 70 value 317 value 85 value 265 value 23 value 92 value 236 value 97 value 209 value 311 value 291 value 241 value 188 value 176 value 182 value 259 value 253 value 165 value 272 value 313 value 293 value 243 value 190 value 178 value 184 value 261 value 255 value 167 value 274 value 312 value 292 value 242 value 189 value 177 value 183 value 260 value 254 value 166 value 273 value 238 value 279 value 287 value 52 value 43 value 42 value 44 value 357 value 324 value 327 value 330 value 78 value 26 value 30 value 82 value 303 value 337 value 345 value 259 value %% events %% globals TimeOfDay PresentState CycleLaveVaisselle CycleLaveLinge --]]
  15. sumsum

    Velux Active with Netatmo

    J'ai passé commande du kit de base aujourd'hui, pour faire des tests. Dès que je reçois le matériel je vous tiens au courant.
  16. sumsum

    Velux Active with Netatmo

    J'ai voulu passer commande, mais le produit est épuisé. J'attends un délai du revendeur.
  17. sumsum

    Support Gea

    @Steven @pepite @971jmd merci pour vos suggestions. J'ai trouvé ce qui provoque le problème en me penchant de manière systématique sur mon code et en réussissant à provoquer l'erreur. Mon extrait de code problèmatique: GEA.add({"Or", {"Value+", id["OEIL_SALON_FENETRE_GAUCHE"],LuminositeMaxSalon}, {"Value+", id["OEIL_SALON_FENETRE_DROITE"],LuminositeMaxSalon}}, 2*60, "Il y a TROP de luminosité, la valeur mesurée est de #value[1]# et #value[2]# fermeture des stores", {{"Days", "Weekend"}, {"Time", "08:30", "18:00"}, {"Close", {id["STORE_GAUCHE"],id["STORE_MILIEU"],id["STORE_DROITE"]},90}} ) c'est la syntaxe #value[1]# et #value[2]#qui pose problèmes. Si je remplace par #value# le code fonctionne et il n'y a plus de message d'erreur. Mon extrait de code qui fonctionne: GEA.add({"Or", {"Value+", id["OEIL_SALON_FENETRE_GAUCHE"],LuminositeMaxSalon}, {"Value+", id["OEIL_SALON_FENETRE_DROITE"],LuminositeMaxSalon}}, 2*60, "Il y a TROP de luminosité, la valeur mesurée est de #value# fermeture des stores", {{"Days", "Weekend"}, {"Time", "08:30", "18:00"}, {"Close", {id["STORE_GAUCHE"],id["STORE_MILIEU"],id["STORE_DROITE"]},90}} ) Par contre le message récupéré sur mon téléphone mobile est le suivant: "Il y a TROP de luminosité, la valeur mesurée est de true fermeture des stores" Je suis satisfait que mon code re-fonctionne et ne plante plus avec cette modification. Par contre je ne sais pas quelle syntaxe mettre si je veux indiquer la valeur en lux de mes deux détecteurs. Si quelqu'un a une idée je suis preneur.
  18. sumsum

    Support Gea

    @pepite non je n'ai pas essayé car malheureusement ce problème n'est pas permanent. Une fois que j'ai ce message d'erreur, tous les timers ne réagissent plus. Le seul moyen que j'ai trouvé pour m'en sortir, c'est de redémarrer ma HC2.
  19. sumsum

    Support Gea

    @Steven et @pepite Désolé, je n'avais pas beaucoup de temps ce matin en partant. Ci-dessous les quelques lignes où j'ai une durée d'une minute. (est-ce bien celles-ci que vous voulez voir ?) GEA.add({id["DETECTEUR_PORTE_ENTREE"]}, -1,"Ouverture porte entrée à #time# le #date#",{"turnOn", id["LUMIERE_ENTREE"],1*60}) GEA.add({id["DETECTEUR_PORTE_CAVE"]}, -1,"Ouverture porte cave à #time# le #date#",{"turnOn", {id["LUMIERE_ESCALIER_CAVE_BAS"],id["LUMIERE_PORTE_ENTREE_EXT"]},1*60}) GEA.add({id["DETECTEUR_PORTE_ARM_GAUCHE"]}, -1,"",{"turnOn", id["LUMIERE_ENTREE"],1*60}) GEA.add({id["DETECTEUR_PORTE_ARM_DROITE"]}, -1,"",{"turnOn", id["LUMIERE_ENTREE"],1*60}) GEA.add({"Or", {"Value+", id["OEIL_SALON_FENETRE_GAUCHE"],LuminositeMaxSalon}, {"Value+", id["OEIL_SALON_FENETRE_DROITE"],LuminositeMaxSalon}}, 1*60, "Il y a trop de luminosité au salon, #value[1]# et #value[2]# lux, extinction des lumières", {"turnOff", id["SALON_ECLAIRAGE_PLAFOND"]}) GEA.add({{"Value", id["OEIL_MEUBLE_SDB"], 0},{"Value", id["OEIL_COULOIR_DRESSING"],0}}, 2*30, "", {"turnOff", id["STRIP_LED_MEUBLE_SDB"]})
  20. sumsum

    Support Gea

    Merci @971jmd dans ta proposition Tu supprimes le "Or" et tu passes par une variable globale. Quel est le but ? Le code fonctionne, c'est simplement que subitement j'ai un message d'erreur timer que je n'arrive pas à identifier. A partir de ce moment là, la plupart des lignes qui contiennent un temps ne fonctionnent plus. Je dois donc redémarrer le HC2
  21. sumsum

    Support Gea

    Salut @Steven et Salut @pepite Je vous joins l'entier de mon code. Il y a des lignes en commentaires car en phase de remise en état après des travaux importants chez moi. 23.06.2018 -> J'ai supprimé l'entier de mon code pour alléger le forum.
  22. sumsum

    Support Gea

    Bonjour, Vous avez déjà eu le message d'erreur [error] timer handler failed with error ? J'ai beau analyser, je ne sais pas où chercher. L'erreur suit le code qui pilote la descente des stores à lamelles en cas de luminosité trop importante. GEA.add({"Or", {"Value+", id["OEIL_SALON_FENETRE_GAUCHE"],LuminositeMaxSalon}, {"Value+", id["OEIL_SALON_FENETRE_DROITE"],LuminositeMaxSalon}}, 2*60, "Il y a TROP de luminosité, la valeur mesurée est de #value[1]# et #value[2]#", {{"Days", "Weekend"}, {"Time", "08:30", "18:00"}, {"Close", {id["STORE_GAUCHE"],id["STORE_MILIEU"],id["STORE_DROITE"]},90}} )
  23. Ok pris note mais comme ça tu ne pourras pas comparer ton logfile avec d'autres ;-) donc définir si c'est mécanique ou pas. Your choice
  24. Les miens fonctionnent de manière aléatoires aussi. J'en ai déjà renvoyés, qui m'ont été remplacés, mais ce n'est pas mieux. @Lazer comment tu récupères le logfile ? ça m'intéresse d'y jeter un coup d'oeil.
  25. Bonjour, Un grand merci pour ce tuto qui m'a permis de piloter un boiler triphasé via un triac pilotable 0-10V. Je publierai sous-peu mon tutoriel complet. Mon code fonctionne parfaitement, mais j'aurai besoin de l'expertise des pros pour optimiser une boucle de moyenne glissante calculée sur les 5 dernières valeurs de consommation. Si vous avez le temps, je suis preneur, je me disais que de travailler avec json serait sûrement plus efficace, mais je ne maîtrise pas assez le json. Création des variables globales: createGlobalIfNotExists("Consommation_Instantanee_0","0") -- Variable pour stocker conso instantanée t0 createGlobalIfNotExists("Consommation_Instantanee_1","0") -- Variable pour stocker conso instantanée t-1 createGlobalIfNotExists("Consommation_Instantanee_2","0") -- Variable pour stocker conso instantanée t-2 createGlobalIfNotExists("Consommation_Instantanee_3","0") -- Variable pour stocker conso instantanée t-3 createGlobalIfNotExists("Consommation_Instantanee_4","0") -- Variable pour stocker conso instantanée t-4 createGlobalIfNotExists("Consommation_Instantanee_5","0") -- Variable pour stocker conso instantanée t-5 createGlobalIfNotExists("Consommation_Instantanee_Compteur_Moyenne","0") -- Variable pour stocker t afin de calculer la moyenne de consommation Appel de la fonction: -- --------------------------------------------------------- -- Calcule la moyenne glissante sur les 5 dernières mesures -- de consomation pour permettre de founir une consigne plus -- stable au triac pilotant le boiler -- --------------------------------------------------------- ConsoInstantanee = CalculMoyenneGlissanteConsoInstantanee(ConsoInstantaneeBrute) debug(ConsoInstantanee, "fuchsia") Fonction: --------------------------------------------------------- -- CalculMoyenneGlissanteConsoInstantanee(ValeurInstantanee) -- Fonction pour calculer une moyenne glissante sur les 5 -- dernières mesures de consommation. -- Ceci permet de calculer une consigne de pilotage du triac -- lissée et évite les pics d'appels de courant. -- Comme la mesure s'effectue toutes les 2 secondes, la moyenne -- de consomation Instantanée est donc de 5 mesures en 10 secondes. -- Les valeurs de consommation sont stockées dans 5 variables globales -- La ValeurTemps également. -- On retourne la valeur Moyenne de la consommation sur 5 mesures -- Formatée avec 2 chiffres après la virgule. --------------------------------------------------------- function CalculMoyenneGlissanteConsoInstantanee(ValeurInstantanee) local ValeurTemps local NomVariableGlobale = {"Consommation_Instantanee_0", "Consommation_Instantanee_1", "Consommation_Instantanee_2", "Consommation_Instantanee_3", "Consommation_Instantanee_4", "Consommation_Instantanee_5"} local ValeurTempsCalculVar = 1 local ValeurMoyenneConsommation = 0 ValeurTemps = fibaro:getGlobalValue("Consommation_Instantanee_Compteur_Moyenne") ValeurTemps = tonumber(ValeurTemps) if ValeurTemps <= 5 then ValeurTemps = ValeurTemps + 1 else ValeurTemps = 1 end fibaro:setGlobal(NomVariableGlobale[ValeurTemps], ValeurInstantanee) debug("NomVariableConteneur"..NomVariableGlobale[ValeurTemps]) debug("ValeurTemps"..tostring(ValeurTemps)) fibaro:setGlobal("Consommation_Instantanee_Compteur_Moyenne", ValeurTemps) while ValeurTempsCalculVar<= 5 do ValeurMoyenneConsommation = ValeurMoyenneConsommation + fibaro:getGlobal(NomVariableGlobale[ValeurTempsCalculVar]) debug(ValeurTempsCalculVar, "red") debug(ValeurMoyenneConsommation, "red") ValeurTempsCalculVar = ValeurTempsCalculVar + 1 end return(tonumber(string.format("%.2f",ValeurMoyenneConsommation/5))) end Merci aux Dieux du forum, @Gazous @Did @pepite @Steven et les autres pour vos suggestions d'optimisation
×
×
  • Créer...