-
Compteur de contenus
1 078 -
Inscription
-
Dernière visite
-
Jours gagnés
14
Tout ce qui a été posté par JossAlf
-
Pour l'apprentissage du signal, (de memoire) tu places le Sender en apprentissage en cliquant plusieurs fois sur un petit bouton et tu appuies sur le bouton de ta télécommande pur qu'elle émette le signal. Une diode clignote sur le Sender pour montrer qu'il recoit un signal. Puis tu sort du mode apprentissage et cest terminé. Tu coupe l'alimentation. Tu rebranches -> il émet -> ton portail s'ouvre tu débranches.
-
Regarde sur le site du fabriquant : De memoire il y avait une liste des télécommandes compatibles. J'avais pas mal galeré avec le protocole de mon portail somfy. Il semble que les codes tournants ne puissent fonctionner. J'ai utiliser la télécommande du portail de mes parents et par la suite ma Zibase pour créer un autre signal 433 MHz (pour le second relay). Comme j'utilise le couple Sender Unirec, le signal envoyé par le Sender n'a pas d'importance puisqu'il ne sert sert qu'àdemander àl'Unirec de commander son relay (soudé àla télécommande). Dans ton cas, si tu utilises le Sender pour ouvrir ton portail avec appel de phare, il faut que tu sois certain de pouvoir copier le signal de ta télécommande de portail (pour qu'il ouvre directement ce portail). J'avais acheté les 2 modules chez My-domotique. Demande àPascal Stephany si le Sender est compatible avec ton portail.
-
Je suis sur mon ordi ça va être plus simple pour répondre. 2 choses : Les modules présentés et un module zwave pour contact sec. Le premier module, le Creasol Sender permet d'émettre un signal quand il est alimenté. (Je parlais de ça pour quand je disais "Comment vas tu l'alimenter pour tes volets ?"). Ce premier module, que j'alimente par un apple de phare, il envoie alors un signal que le second module Creasol Unirec2 reçoit (parce que je lui ai appris le signal du premier). Là , ce second module Creasol Unirec2, ferme un contact sec pendant 1s sur un de ses 2 relay que j'ai soudé à une télécommande (ça simule donc l'appui sur le bouton de cette télécommande). Ce montage (hack très basic de la télécommande) pourrait être réalisé avec un module zwave permettant de gérer un/deux contact(s) sec(s). ​Par exemple avec un FGS-221 ou le nouveau FGS 222 . Tu as 2 contacts sec qui peuvent te permettre de commander 2 boutons d'une télécommande depuis ton HC2 ou HCL.
-
Le second module permet de commander un contact sec. Tu peux donc hacker une de tes télécommandes pour actionner tes volets roulants. Mais il y a d'autre modules zwave pour ça. L'intérêt de ce second module est qu'il est commandable par le premier module (alimenté par l'appel de phare). Comment vas tu l'alimenter pour tes volets ? Je sais pas si je suis claire Envoyé de mon iPhone àl'aide de Tapatalk
-
Le plantage arrivait en moins de 24 heures dans mes souvenirs. Suis toujours en V3. Je crois que Maitre Krik et Lazer avaient fait des tests et donné une explication : un T.end qui bloquait tout (je dis ça de mémoire). Cool si la V4 a corrigé ça. Du coup si ce n'est pas lié au json.decide dans le main loop, le mystère reste entier pour le plantage actuel ... Envoyé de mon iPhone àl'aide de Tapatalk
-
C'est l'utilisation de json.decode dans le main loop qui plante. Le bug est connu depuis longtemps mais toujours pas corrigé... On contourne ca depuis des années avec la méthode du bouton appelé par le main loop.
-
Le CPL n'aime pas les prises "sophistiquées". Il lui faut du basique pour que les fréquences passent bien. Idem au travers d'un onduleur, c'est déconseillé. Envoyé de mon iPhone àl'aide de Tapatalk
-
Effectivement chez moi aussi le clignotement est revenu. Je n'avais pas remarqué car les Greenwald sont planquées sous des meubles... Envoyé de mon iPhone àl'aide de Tapatalk
-
Regarde aussi dans les main loop de tes modules virtuels. Tu as peut-être un bout de code qui dit que le dimanche soir àminuit on actionne le volet ?!
-
Est-ce que tu as une scène qui se déclenche le dimanche soir àminuit ? Si oui, il se peut qu'elle fasse appel àun module virtuel qui lui ferme le volet (en simulant l'appui sur un bouton) par un : fibaro:call(ID de ton volet , "pressBouton" , N° bouton qui ouvre le volet)
-
Non pas d'erreur ligne 7. Si > 1 (donc àpartir de 2). Si tu mets >= làelle ne démarrera jamais ! Envoyé de mon iPhone àl'aide de Tapatalk
-
Au fait, j'espère que je te prends pas la tête ? Ton post orignal m'a permis d'assainir plusieurs scènes que j'avais laissées en friche. Je te remercie pour tes retours qui m'ont permis d'avancer dans mes réflexions .
-
Merci pour cette réponse. J'avais même pas rêvé de toi cette nuit ... Ton code fonctionne et je comprends ton intention avec le test if(NbreScene == 1) mais je trouve le procédé alambiqué. En plus cela t'oblige à ajouter les fameuses lignes pour mettre à jour la variable au démarrage ... En plaçant le test du nombre d'instances au début, et en testant la valeur de la variable "jour-nuit" pour la MAJ que si nécessaire, tu simplifies grandement ton code. C'est vrai que dans la version qui suit la boucle while est toujours exécutée (en partie), mais avec ton code tu arrêtes l'exécution juste avant le while avec un test aussi. Niveau temps processeur je pense que ça ce tient. Le code qui suit est plus économe en lignes, c'est peut-être son seul avantage ... --[[ %% autostart --]] -- Test du nombre de scènes en cours if (fibaro:countScenes() > 1) then fibaro:abort() end -- se lance au démarrage et toutes les 60 secondes. while true do if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then -- le soleil est levé et la variable est à "Nuit" if (fibaro:getGlobalValue("Jour_Nuit") == "Nuit") then fibaro:setGlobal("Jour_Nuit", "Jour"); end else -- le soleil est couché et la variable est à "jour" if (fibaro:getGlobalValue("Jour_Nuit") == "Jour") then fibaro:setGlobal("Jour_Nuit", "Nuit"); end end fibaro:sleep(60*1000) end Déroulé : Au démarrage / Toutes les 60 secondes : Si la scène n'a pas une autre instance en cours ; La boucle while sera exécutée ; MAJ de la variable si cela est nécessaire.
-
Merci M'sieur.
-
#Krikroff : selon toi quel est le polling idéal pour la Green ? Javais l'impression qu'en laissant 0 les infos remontaient quand même en V3 mais de façon erratique ...
-
Comme tu me disais que tu aimes optimiser ton code, j'ai une remarque sur ton while. Inutile d'utiliser autant de variables locales alors que tu as un code super optimisé dans les premières lignes : if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then fibaro:setGlobal("Jour_Nuit", "Jour"); else fibaro:setGlobal("Jour_Nuit", "Nuit"); end Pépite avait donné une piste pour ne pas écrire sans cesse dans la variable (mais ça tournait en rond). En y ajoutant le teste du nombre d'instance de scène c'est top : --[[ %% autostart --]] fibaro:sleep(10*1000) -- Permet de contourner un bug qui empêche le lancement d'une scène au démarrage en V3.6. -- Test du nombre de scènes en cours if (fibaro:countScenes() > 1) then fibaro:abort() end -- -- Je ne pense pas que cette partie soit nécessaire : -- Elle force la mise à jour au démarrage mais le while fera pareil juste après -- if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) -- and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then -- fibaro:setGlobal("Jour_Nuit", "Jour"); -- else -- fibaro:setGlobal("Jour_Nuit", "Nuit"); -- end -- while true do fibaro:debug("while") if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then -- le soleil est levé et la variable est à "Nuit" if (fibaro:getGlobalValue("Jour_Nuit") == "Nuit") then fibaro:setGlobal("Jour_Nuit", "Jour"); fibaro:debug("MAJ de la variable Periode à jour !") end else -- le soleil est couché et la variable est à "jour" if (fibaro:getGlobalValue("Jour_Nuit") == "Jour") then fibaro:setGlobal("Jour_Nuit", "Nuit"); fibaro:debug("MAJ de la variable Periode à nuit !") end end fibaro:sleep(60*1000) end Qu'en penses-tu ? MAJ : Désolé pour les mises à jour successives j'avais buggué le code
-
Ca y est mprinfo hante mes nuits J'ai rêvé des modifications que tu as apportées à ton code : local NbreScene = fibaro:countScenes() if (NbreScene == 1) then Ton debug ligne 31 n'est pas tout à fait exact : fibaro:debug("La variable a été mise a jour Manuellement") C'est vrai que la variable a été mise à jour au démarrage MAIS si le programme arrive à cette ligne 31 c'est surtout que le nombre de scènes en instance n'est pas égal à 1 ! Pour être tranquille il est préférable de mettre ce qui suit juste après l'entête (comme tu l'as dit dans l'excellent tutot #1 : if (fibaro:countScenes() > 1) then fibaro:abort() end Pour visualiser le déroulé de ton code j'ai fait ça (regarde la fenêtre de debug) : --[[ %% autostart --]] local NbreSceneAudemarrage = fibaro:countScenes() fibaro:debug("On vient de Sauvegarder ou cliquer sur Démarrer : MAJ de la variable. Le nbre de scenes en cours : ".. NbreSceneAudemarrage) local NbreScene = fibaro:countScenes() if (NbreScene == 1) then while true do fibaro:debug("Début du while...") fibaro:debug("Test de la condition") fibaro:sleep(10*1000); fibaro:debug("Fin du while...") end else fibaro:debug("Trop de scènes tournent ! Il y en a " .. NbreScene) end Maintenant regardes le debug de ça : --[[ %% autostart --]] if (fibaro:countScenes() > 1) then fibaro:debug("trop de scènes") fibaro:abort() else fibaro:debug("On a bien 1 scene.") end local NbreSceneAudemarrage = fibaro:countScenes() fibaro:debug("On vient de Sauvegarder ou cliquer sur Démarrer : MAJ de la variable. Le nbre de scenes en cours : ".. NbreSceneAudemarrage) while true do fibaro:debug("Début du while...") fibaro:debug("Test de la condition") fibaro:sleep(10*1000); fibaro:debug("Fin du while...") end Le code tourne plus rond. Si il y a trop de scènes il avorte la scène.
-
Capito Vu sous cet angle je comprends mieux cette double façon de mettre àjour la variable. Il est vrai que je code parfois comme un bûcheron vu que la HC2 encaisse pas mal. Depuis que Krikroff m'a dit qu'il avait des "main loop" en masse qui tournaient sans broncher àcôté de tonnes de scènes... Je me lâche ! C'est vrai aussi que je devrai prendre l'habitude de vérifier le nombre d'instances d'une Scène avant de la lancer.
-
Je ne pense pas que la mise à jour de la variable à chaque fois soit problématique. Sauf à considérer que ça userait le disque. Au niveau des performances (si tant est que cela jouerait ici), il faudrait estimer le gain entre : 1) tester la variable (donc la lire) avant de la modifier et 2) Ecrire directement dans la variable. Mais il est vrai qu'il serait mieux d'écrire dans la variable que si nécessaire.
-
#Lazer : Allé ... Lance toi ... La version à l'air stable. Je voudrais pas planter mon chauffage ... et comme tu gères aussi le tiens avec un srt321 ... Si ça roule de ton côté je passe en V4 !
-
Pour être précis : Dans l'entête d'une scène le trigger %% autostart permet de lancer cette scène automatiquement au démarrage et/ou après son enregistrement. Ca évite de cliquer sur "RUN" ou "Démarrer" pour la lancer. Une fois la scène lancée, la boucle tourne à l'infini ce qui permet de jouer avec les "if" ou "while true do". Il ne faut donc pas oublier de mettre un fibaro:sleep(30*1000) pour calmer la boucle PS : (le temps du sleep est libre mais il vaut mieux éviter de descendre sous les 30 secondes) PS2 : le sleep s'exprime en millisecondes -> fibaro:sleep(30*1000) est plus lisible que fibaro:sleep(30000) mais donne le même résultat.
-
Ben oui c'est la cas ! C'est ce qui permet par exemple d'attendre le couché du soleil pour lancer une scène.
-
Non, je t'assure que ça tourne en continu à partir du démarrage. Sauf erreur de ma part, "%% autostart" permet de provoquer le lancement de la scène au démarrage mais en suite la scène tourne toujours. Fais un essai avec le debug que j'ai mis ; tu verras qu'elle tourne toujours et encore : [DEBUG] 12:43:34: Il fait jour [DEBUG] 12:44:34: Il fait jour [DEBUG] 12:45:35: Il fait jour [DEBUG] 12:46:35: Il fait jour [DEBUG] 12:47:35: Il fait jour [DEBUG] 12:48:35: Il fait jour [DEBUG] 12:49:35: Il fait jour [DEBUG] 12:50:35: Il fait jour [DEBUG] 12:51:35: Il fait jour
-
#Stephane : Quel est le but exact de ta scène ? Te prévenir que ton garage est ouvert ou allumer une lumière dans ton garage quand tu l'ouvres ? Dans tous les cas, efface "jour_nuit" de l'entête. La scène se déclenchera seulement lors de l'ouverture du garage et non au au changement de valeur de la variable "jour-nuit".
-
#mpinfo : Est-ce que la partie qui suit ne serait pas suffisante ? if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then fibaro:setGlobal("Jour_Nuit", "Jour"); else fibaro:setGlobal("Jour_Nuit", "Nuit"); end Toute la partie qui commence ligne 12 à "while true do" ne sert à rien puisque le code du dessus fait son Å“uvre ? Ou j'ai pas tout compris On pourrait simplifier comme ça ? --[[ %% autostart --]] fibaro:sleep(10*1000) -- Permet de contourner un bug qui empêche le lancement d'une scène au démarrage en V3.6. while true do if (os.date("%H:%M", os.time()) >= fibaro:getValue(1, "sunriseHour")) and (os.date("%H:%M", os.time()) < fibaro:getValue(1, "sunsetHour")) then fibaro:setGlobal("Jour_Nuit", "Jour"); fibaro:debug("Il fait jour !") else fibaro:setGlobal("Jour_Nuit", "Nuit"); fibaro:debug("Il fait nuit !") end fibaro:sleep(60*1000) end