Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 830
  • Inscription

  • Dernière visite

  • Jours gagnés

    197

Tout ce qui a été posté par jojo

  1. sebcbien, Nous sommes sorti hier soir (reconstitution Waterloo2015), et j'ai pu confirmer que je simulateur fonctionnait Cependant, j'ai observé 2 points à améliorer (selon moi) : lampe always on after simu : j'aurais pensé que c'était une lampe qui s'allumait automatiquement lorsque la variable Simu = 0. En fait elle s'est allumée dès la fin de la simulation programmée à l'heure que j'avais donnée (0h10), et ce jusqu'au moment où je l'ai éteinte manuellement. C'est pas cool, cela, entre-autre, consomme énormément d'électricité, surtout si tu es parti plusieurs jours (dans le cas présent elle serait resté allumée de 0h10 à 21h58 (=prochain sunset). Je ne pense pas que c'était ton idée initiale. la simu ne s'est pas arrêtée à 0h10, mais à 0h18, après l'exécution du dernier loop aléatoire. Quand j'y repense, c'est cool, car cela signifie une fin de simulation à une heure qui varie aléatoirement entre la date de fin définie et le rdnmaxtime. Donc il me semble que la seule chose à "améliorer" est le point 1. Voici l'extrait de mon debug pour illustrer : [DEBUG] 00:09:27: Sat 20/06 light ID:Prise_Bureau status:1 [DEBUG] 00:09:27: Sat 20/06 entering loop of 9.24 minutes [DEBUG] 00:18:41: Sat 20/06 exiting loop of 9.24 minutes [DEBUG] 00:18:41: Sat 20/06 TurnOff All lights! [DEBUG] 00:18:41: Sat 20/06 Device: Lum_SdBRez_Douche Off [DEBUG] 00:18:41: Sat 20/06 Device: Lum_SalleManger Off [DEBUG] 00:18:41: Sat 20/06 Device: Prise_Bureau Off [DEBUG] 00:18:41: Sat 20/06 Device: Lum_SdBEtage Off [DEBUG] 00:18:41: Sat 20/06 Device: Lum_SalonTV Off [DEBUG] 00:18:41: Sat 20/06 Manual Light Settings: Turned On light: Lum_HallEntrée [DEBUG] 00:18:41: Sat 20/06 Simulation is deactivated [DEBUG] 00:18:41: Sat 20/06 Presence Simulator will Restart tomorrow around 21:58 [DEBUG] 00:20:41: Sat 20/06 Waiting for next Sunset: 21:58 -> Simulation OFF. [DEBUG] 00:30:41: Sat 20/06 Presence Simulator is Terminated [DEBUG] 00:30:41: Sat 20/06 Simu = 0, Exit from scene
  2. jojo

    Bonjour

    prévois des blochet >50 mm, 60mm c'est mieux
  3. merci, mais ce soir pas possible. Je suis là : http://www.waterloo2015-live.org/fr/events/1053233/the-french-attack Mon programme pour ce WE : tondre pelouse préparer sushis pour l'anniversaire de ma fille déclaration d'impot installer mon HP m'occuper de ma femme ...
  4. jojo

    Drive Detector Pour Présence

    Sympa ? Combien coût le détecteur ? et pourquoi pas simplement avec un FGBS ? Il est moins cher ?
  5. jojo

    V 4.049 - 11 Juin 2015

    Dans le panneau des événements j'ai ON et OFF Par contre, l'historique est TRES / TROP limité +/- 1heure. Il propose une heure de départ par défaut (exple 14h00) et si je veux voir ce qui s'est passé depuis le maitin (6h00), il rebascule automatiquement sur l'heure par défaut. Chez vous aussi ?
  6. je suis au bureau, et je suis allé chercher mon HP il y a 30 min chez mon ami. => WE chargé en perspective
  7. jojo

    Module Virtuel Adresse Ip

    tu as beaucoup de Modules Virtuels avec l'adresse IP dedans ? Perso, je n'ai pas observé ce phénomène : si une adresse IP était définie, elle restait. En effet, si aucune n'était définie, il y a "" Il est possible d'écrire dans le champ IP Adresse, mais si tu n'as que 10-20 modules concernés, tu iras plus vite de faire un ctrl-C / ctrl-V que de créer un VD qui va remettre les bonnes IPs aux bons endrois, car cela nécessiterait de maintenir une table avec les ID et les IPAdress des VD à mettre à jour
  8. ah mprinfo, tu es de retour, cela faisait 2 jours qu'on n'avais plus de nouvelle de toi, on commençait às'inquiéter ...
  9. pas de soucis pour création automatique de la variable si elle n'existe pas, j'ai fait un VD backup/restore des variable. C'est ce que je ferai, ce n'est pas si lourd que ça
  10. jojo

    Support Gea

    autre petit conseil au passage pour faciliter la relecture : les options de temps, date, ... qui ressemble plus àdes conditions (mais sont des options de limitation de la condition) je les mettrais en début d'options, et les vrais actions àprendre ensuite
  11. jojo

    Support Gea

    pas Sunrize, mais Sunrise, avec un S et pas un Z
  12. là tu as fais un véritable travail de patron. Merci pour l'analyse, je me dois de l'implémenter maintenant. Si on veut garder un aspect esthétique au VD, il ne faudrait pas mettre le SID dans un label, mais dans une variable globale, mais là aussi j'hésite car alors le VD n'est plus autonome, il faut penser à la créer, et j'aime autant éviter si possible.
  13. Oui, d'accord avec toi our l'aspect autonome. Dans les boutons ce sera la même chose que dans le mainloop, sauf qu'il n'y a pas cette problématique d'encapsulation. Et j'aurais bien utilisé des fonctions pour générer un SID, et je ne vois pas comment avec cette encapsulation => si on règle le problème des boutons, ok
  14. jojo

    Support Gea

    GEA.add(true, 30,"", {{"Open",id["VL_RUE"],100},{"Open",id["VL_JARDIN"],100},{"Time","Sunrize","Sunrize+5"}})
  15. Eh Jojo, réfléchit un peu, tu es vraiment stupide quand tu veux ! Pourquoi se casse-t-on la tête pour le mainloop ? Il n'a pas de problème. Car en fait que voudrait-on faire pour le MAINLOOP ? Si erreur de SID, on recommence, étant donné qu'on est incapable de prédire quand arrivera l'erreur. Mais c'est ce qu'il fait déjà ! Donc on fait un refresh toutes les 15s, et le tour est joué, d'autant plus qu'il ne fait "que" un refresh de l'icone. Par contre là où est le problème, c'est dans les boutons. Si on automatise l'appuis sur le bouton et qu'il y a une erreur, il faut réappuyer dessus. Il y a 2 solutions pour cela : réécrire le code des boutons stocker dans une variable le status d'erreur et le traiter par GEA, si l'erreur est problématique. Pourquoi se casser la tête ?
  16. Non non, surtout pas de nouveau tuto. effectivement ta solution à beaucoup d'avantages : c'est plus élégant, pas de bouton inutile si on appuye sur le debug de la mainloop, puis start, on voit tout le debug depuis la dernière sauvegarde du VD, ce qui n'est pas le cas avec un bouton. Donc je vais essayer de le faire fonctionner sans erreur avec un bouton (=développement classique) et ensuite on le traduirait vers ta solution. Mais je ne garanti rien, je ne suis pas un développeur
  17. ok, merci. En effet je n'ai pas pu m'empêcher de déjà commencer, en le réécrivant de manière classique. Et le 1° 1/4 d'heure, pas d'erreur malgré un refresh toutes les 60s Mais maintenant il est planté. J'ai une autre idée : écrire le main loop dans un bouton, et dans le main loop faire appel au bouton ?
  18. voici donc le code du bouton "HP Update" ---------------------------------- -- User Settings ---------------------------------- -- nom de la variable qui définit le niveau de chauffage local varChauffage = "Chauffage" local varVacances = "Vacances" -- ID des HeatingPanels local hpID = { "Rez_SdB", 9, "Etage_Circul", 7, "Etage_SdB", 6, "Etage_Bureau", 4, } -- HeatingPanels actifs pour variable Chauffage = 0 (ECS) local hp0 = { } fibaro:debug ("#hp0 = " ..#hp0) -- HeatingPanels actifs pour variable Chauffage = 1 (SdB) local hp1 = { "Rez_SdB", "Etage_SdB", "Etage_Circul", } fibaro:debug ("#hp1 = " ..#hp1) -- HeatingPanels actifs pour variable Chauffage = 2 (Oui) local hp2 = { "Rez_SdB", "Etage_SdB", "Etage_Bureau", "Etage_Circul", } fibaro:debug ("#hp2 = " ..#hp2) local tmpOff = 14 -- température pour HP Off ---------------------------------- -- DO not change bellow this line --------------------------------- local HC2 = Net.FHttp("127.0.0.1",11111) -- détermination de la version du firmware local GETheating = "" payload = "/api/settings/info" response, status, errorCode = HC2:GET(payload) if tonumber(status) == 200 then jsonTable = json.decode(response) if tonumber(jsonTable.softVersion) >= 4 then -- version = "4.x" GETheating = "/api/panels/heating/" else -- version = "3.x" GETheating = "/api/panels/heating?id=" end else fibaro:debug('<span style="color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..response..'</span>') end -- fonction de mise à jour du heating panel -- si handTemperature == 0, c'est en auto function HeatPanel(id,HandTmp) jsonpanel = HC2:GET(GETheating ..id) jsontable = json.decode(jsonpanel) handTimestamp = jsontable.properties.handTimestamp handTemperature = jsontable.properties.handTemperature name = jsontable.name NouveauPanel = ('{"id":' ..id.. ',"name":"'..name.. '","properties":{"handTemperature":' ..handTemperature.. ',"handTimestamp": ' ..handTimestamp.. ',"vacationTemperature":' ..HandTmp.. '}}') HC2:PUT(GETheating ..id, NouveauPanel) end -- fonction pour trouver l'ID du heating panel function HeatPanelID() fibaro:debug("hpName = " ..hpName) for j = 1, #hpID, 2 do fibaro:debug(hpID[j]) if hpName == hpID[j] then hpId = hpID[j+1] end end end hpName = "" -- nom du HP en cours de traiemeent hpId = 0 -- ID du HP en cours de traitement -- lecture de la valeur du chauffage local Chauffage = fibaro:getGlobal(varChauffage) Chauffage = tonumber(Chauffage) fibaro:debug("Chauffage = " ..Chauffage) -- lecture de Vacances = Oui/Non local Vacances = fibaro:getGlobal(varVacances) fibaro:debug("Vacances = " ..Vacances) -- mettre tous les manneaux en manuel -- Vacances = Oui, alors tout les HP sont en manuel fibaro:debug("Mettre tous les HP en mode manuel") fibaro:debug("#hpID = " ..#hpID) for i = 1, #hpID, 2 do fibaro:debug("hpID[" ..i.. "] = " ..hpID[i].. " = " ..hpID[i+1]) HeatPanel(hpID[i+1], tmpOff) end -- remettre les panneaux qu'il faut en auto -- seuleement si Vacances = Non if Vacances == "Non" then fibaro:debug("VACANCES = NON") if Chauffage == 0 then -- ECS hpId = 0 for i = 1, #hp0 do hpName = hp0[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end elseif Chauffage == 1 then -- SdB hpId = 0 for i = 1, #hp1 do hpName = hp1[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end elseif Chauffage == 2 then -- Oui hpId = 0 for i = 1, #hp2 do hpName = hp2[i] HeatPanelID() fibaro:debug("hpId = " ..hpId) HeatPanel(hpId, 0) end end else fibaro:debug("VACANCES = OUI") end bonne révision. Examen demain 10h00
  19. je veux bien regarder à cela, mais j'ai observé que tu as programmé cela d'une manière que je ne maîtrise pas (encore) : une partie du code serait dans une table ? Je reverrais la partie authentification du main loop (dans un premier temps), mais alors en la réécrivant d'une façon que je maîtrise. ok ?
  20. C'est évident pourtant : cela dépend de l'âge du capitaine Plus sérieusement, on aura toujours l'erreur, et on ne pourra pas l'éviter. Je proposerais de si erreur de réessayer une deuxième fois dans la foulée, sans tout changer
  21. bon, même avec 3000s d'intervalle ça plante. Donc la cause n'est pas la fréquence des requêtes. En analysant de plus prêt le fichier log (voir attachement), il me semble avoir trouvé la vrai cause Ton avis m'intéresserait Lazer.
  22. MERCI, je mets cela en place dès ce soir !
  23. je ne suis pas encore un expert en sonos, mais, je vois qu'on peut faire le choix de la musique précise en créant une liste de lecture sonos et la faire jouer par le bouton play du module. Mais on ne sais pas via le module lui dire de jouer telle ou telle liste, il va continuer àjouer ce qi était en cours (une liste de lecture, ou radio, ou ...) Comment laisser le choix e jouer ce qu'on veux avec son android, et de forcer de jouer qqch de particulier avec sa HC2 ?
  24. j'ai déjàune erreur après 30 min, je passe à3000s
  25. @cyberquat, J'utilise "as is" le module virtuel de Krikroff, et je fais du TTS avec donc un message vocal en cas d'intrusion. Mais la demande d'Eliah est de jouer un mp3 qui serait stocké quelque part sur un NAS. Sais-tu comment configurer / quoi modifier dans le module de Krikroff pour lui faire jouer un mp3 dédié. (J'avais proposé la "solution" mais sans jamais l'avoir mise en oeuvre, et maintenant je voudrais essayer, et je n'y arrive pas)
×
×
  • Créer...