-
Compteur de contenus
4 434 -
Inscription
-
Dernière visite
-
Jours gagnés
201
Tout ce qui a été posté par Steven
-
Désolé mais je ne comprends pas la question. Il faut rien, rien du tout. Le script va chercher dans ton agenda les mots "Maison" ou "Vacances" (événement journalier) et il va appuyer sur les boutons. C'est tout. Il faut juste renseigné dans le script l'ID du module virtuel et l'url / mot de passe / login.
-
J'approuve et on se rejoint sur le soucis des requêtes HTTP.
-
Je suis passé en 4.058 .. il me dit que "GEA" et "CabronKarotz" ont trop d'instances. Voici donc les déclencheurs de ma scène "CabronKarotz" : --[[ %% autostart %% properties %% globals --]] et GEA qui le lance : GEA.add( true , 5*60, "", { {"Scenario", 6}, {"Repeat"} }) Donc ma scène CarbonKarotz a un maximum possible de 2 instances toutes les 5 minutes pour une durée de 2ms (j'ai vérifié le debug). [DEBUG] 09:31:50: 63/37 [DEBUG] 09:36:50: 63/37 [DEBUG] 09:41:50: 63/37 [DEBUG] 09:46:50: 63/37 [DEBUG] 09:51:50: 63/37 [DEBUG] 09:56:50: 67/33 [DEBUG] 10:01:50: 67/33 Encore un grand bravo pour Fibaro, ils ont trouvé un moyen de faire peur aux utilisateurs et de se déchargé en cas de "soucis". EDIT : ATTENTION, il y a une nouvelle option sur les scènes : Je retarde j'ai pas suivis l'évolution de cette version.
-
Je me permet de donner mon avis sur tout cela. A ce jour, 2015, on a des systèmes fiables et robustes. Et j'ai peur qu'on se prenne la tête pour pas grand chose. N'importe quel ordinateur sur n'importe quel système d'exploitation est capable d'absorbé 10'000'000'000 traitements en séquentiel (un après l'autre). Par contre ce qui est plus dur à prévoir se sont les traitements en parallèle (en même temps). GEA ne peux pas être remise en compte, sa conception et surtout son utilisation ne mettra pas votre box à coin, cela n'est pas possible. Ce qui est dangereux ce sont les requêtes HTTP externes (GEA ne gère pas cela), les requêtes HTTP que vous faites sont clairement coà»teuses .. pourquoi ? A chaque requête HTTP déclenchée, le système doit lancé un traitement qui va attendre la réponse, si la réponse arrive, il effectue son traitement puis termine sa tache. Si votre requête ne répond pas ou met trop de temps, cette tâche reste active quelque secondes avant de s'arrêter. Imaginons que cette tâche reste active plus de 3 secondes et que vous faite une requête toutes les 3 secondes ... Aiiiieeeee, cela s'empile jusqu'à l'explosion si la gestion de tout cela n'est pas 100% parfaite. Donc si vous voulez ne pas perdre trop de temps et que vous souhaitez optimiser votre box, concentrer vous sur les requêtes externes à votre box. La base de données et le système interne est de la bombe et ne risque pas grand chose.
-
Je vois même pas comment on pourrais avoir 10 instances d'une même scène en simultané. Sauf cas annoncé par Lazer .. le codage par les pieds.
-
Un petit commentaire sur GEA. Contrairement à ce que l'on peux penser, en terme de mémoire, GEA est mieux adapté dans certain cas. Je m'explique : GEA effectuer toutes les x secondes un traitement et un seul à la fois donc on est sà»r de ne pas avoir 5 traitements différents en simultané. En gros, si on est pas trop gourmand, GEA pourrait être un atout (bien que cela n'a jamais été le but). Maintenant, la facilité de GEA fait qu'on a tendance a répété les opérations trop fréquemment pour rien (j'en fais parti). Exemple rafraîchir un VD toutes les 30 secondes alors qu'il ne travaille que toutes les heures. Je suis même persuadé que la plus part d'entre nous rafraîchisse des informations même quand ils dorment alors que cela ne sert à rien. Un point interréssant de GEA comparer à la plus par des scénario que j'ai vu. C'est que GEA vérifie l'heure en priorité .. exemple : GEA.add({"Value-", id["TEMPERATURE"], 21}, 10*60, "", {{"turnOff", id["VMC_DOUBLE_FLUX"]},{"Time","23:00","06:00"}}) GEA va vérifier la valeur de température UNIQUEMENT si c'est entre 23:00 et 06:00 alors que la plus part des scénarios vérifie les 2 puis effectue l'action. C'est pas énorme mais cela aide à diminuer les appels qui peuvent être groumant. Voilà .. mais .. GEA est une usine qui fait tout plus ou moins bien .. .GEA ne vaudra jamais un code écrit spécifiquement pour un traitement précis. Donc si vous avez le possibilité d'écrire vos propres scénarios cela sera toujours plus optimisé que GEA pour autant que vous fassiez attention. Cordialement.
-
@jojo Tu prends vraiment un tank pour écraser un fourmi toi Voici mon module virtuel et le script google. La méthode "traiter" du script doit être planifié tous les jours entre minuit et 1h00 et entre 2.00 et 3.00 au cas ou ta box serait inaccessible la première fois. Ensuite, il faut renseigner tes infos dans le script et dans le MV, je suis en suisse alors que toi en France. Il y a un france = false à remplacer par france = true. Je te laisse te débrouillé, j'ai du pain sur la planche. Courage. Jours_Chômé.vfib agenda_google.txt
-
J'ai adapté le MV JourChomé à mes besoin. Tout les soirs à 0:00 et 2:00 j'ai un scrip google qui va venir regarder mon agenda et qui va selon ce qu'il trouve "Vacances", "Maison" cliquer sur les bouton puis sur "Calculer". Tiens moi au courant si tu souhaite plus de détails.
-
Le matin à7h50, le Karotz me dicte les rendez-vous de la journée.
-
function© doit être function()
- 215 réponses
-
- 1
-
- Module virtuel
- alarme
-
(et 1 en plus)
Étiqueté avec :
-
No need to setup something. Groups works easily. Each instruction are read and execute one by one from top to bottom. Each time an instruction got {"Group", 1} as an action, GEA check the condition and put "true" or "false" in the group. All instructions have to be "true" before the following instruction will be triger : GEA.add({"Group",1}, 5*60, "..") Groups doesn't allow using -1 in any instruction. Groups exist since long time and is not more use but should works as expected.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Ben je vois pas pourquoi cela ne devrait pas être le cas. J'utilise exclusivement l'API. L'ID est utilisé et le restera pour les iCal et les format HTML et c'est le seul moyen pour identifié le calendrier que tu veux utiliser.
-
Pour info, j'héberge un script sur mon Google Drive. Ce script va chercher les rendez-vous que j'ai et les mets dans un VD. Je vous le met ici comme exemple de code si vous en avez besoin .. bonne continuation. Pour info, le VD est composé de 10 labels vides (label1 à label2) et au début un bouton "Reset" qui vide les labels. var HC2_IP = ".........."; var LOGIN = "admin"; var PWD = "admin"; var CAL_ID = 'xxxxxxxxxx@xxxxxxxx.xxx' // '2lioqtmqrhcfv8dd9vnrevvcpc@group.calendar.google.com'; var TIMEZONE = "GMT+1"; var DATE_FORMAT = "dd.MM"; var ALL_DAY = ""; var TIME_FORMAT = "HH:mm"; var MV_ID = 178; var options = {"headers": { "User-Agent": "MY_APP_NAME (App URL/your email address)", "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD) }} /** * ---------------------------------------------------------------------------- * Recherche dans l'agenda les 10 premiers évenements et les envoi dans le VD * Maximum 2 semaines * ---------------------------------------------------------------------------- **/ function findAndSend() { var cal = CalendarApp.getCalendarById(CAL_ID); var now = new Date(); var nowPlus2Weeks = new Date(now.getTime() + (14 * 24 * 60 * 60 * 1000)); var events = cal.getEvents(now, nowPlus2Weeks); var index = 1; reset(); for (var i=0 ; i < events.length && i < 10; i++) { var d = getDateTime(events[i]) send("ui.Label"+index+".value", d + " - " + events[i].getTitle()); index += 1; } } /** * ---------------------------------------------------------------------------- * Obtient la date/heure de l'événement dans un format agréable * ---------------------------------------------------------------------------- **/ function getDateTime(event) { var dt = "" if (event.isAllDayEvent()) { dt = Utilities.formatDate(event.getStartTime(), TIMEZONE, DATE_FORMAT); dt += " " + ALL_DAY; } else { dt = Utilities.formatDate(event.getStartTime(), TIMEZONE, DATE_FORMAT); dt += " "; dt += Utilities.formatDate(event.getStartTime(), TIMEZONE, TIME_FORMAT); } return dt; } /** * ---------------------------------------------------------------------------- * Méthode de test * ---------------------------------------------------------------------------- **/ function testit() { reset(); send("ui.Label1.value", "2Ts"); } /** * --------------------------------------------------------------------------------------------------------- * Action * --------------------------------------------------------------------------------------------------------- **/ function send(name, value) { var url = "http://"+HC2_IP + "/api/callAction?deviceID="+MV_ID+"&name=setProperty&arg1="+name+"&arg2="+value + " " envoi = UrlFetchApp.fetch(url, options) } /** * --------------------------------------------------------------------------------------------------------- * Appuye sur le bouton Reset du VD * --------------------------------------------------------------------------------------------------------- **/ function reset() { var url = "http://" + HC2_IP + "/api/callAction?deviceID="+MV_ID+"&name=pressButton&arg1=1"; envoi = UrlFetchApp.fetch(url, options) }
-
Proposition en 1 minute et j'ai pas la possibilité de tester : --[[ %% autostart --]] while true do local now = os.date("*t") if (now["hour"] >= 16 and now["hour"] <= 23) then fibaro:setGlobal("TimeOfDay", "Evening"); else if (now["hour"] >= 0 and now["hour"] < 7) then fibaro:setGlobal("TimeOfDay", "Night"); else if (now["hour"] >= 7 and now["hour"] < 9) then fibaro:setGlobal("TimeOfDay", "Morning"); else fibaro:setGlobal("TimeOfDay", "Day"); end fibaro:sleep(60000) end
-
C'est quoi cela : --[[ %% autostart aze %% properties %% globals jour_nuit eco --]] ... le code que je suis entrain de lire est le même que celui-ci : GEA.add({"Global", "eco", "1"}, -1 , "", {{"turnOn", id["LAMPE_SALON"]}})
- 12 330 réponses
-
- 1
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
local detec1 = GEA.add({id["DETECTEUR_MOUVE"], {"value", ID["RGBW"], "0"}, {"value", ID["LAMPE_SALON"], "0"}} , -1, "", {{"turnOn", id["LAMPE_SALON"]}})
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
En v4, les scènes supportent très bien le HTTPS, je confirme. Il n'y a donc aucune raison que ce script ne puisse être porté sur une HC2. J'avais fait le même genre de script pour Netatmo ... c'est en https et nécessite aussi un token. http://www.domotique-fibaro.fr/index.php/topic/4626-pluviom%C3%A9trie-avec-netatmo/ Courage
-
A rien :-) Pour info, si on utilise pas un retour de fonction en LUA, la norme voudrait que l'on fasse ceci : local _, deviceLastModification0 = fibaro:get(31, "value"); C'est plus simple pour la compréhension. Bon dans ce cas précis, il aurait fallu utiliser : local deviceLastModitication0 = fibaro:getModificationTime(31, "value") Ok, ok , .... je sors Ps. voici le code de getModificationTime(...) fibaro.getModificationTime = function(self, deviceID, propertyName) local _, modified = fibaro:get(deviceID, propertyName) return modified end
-
Ma petite contribution pour un code plus simple : --[[ %% properties XXXXXXXX sceneActivation %% globals --]] local actions = { [10] = function() fibaro:debug("appui simple B1") end, [11] = function() fibaro:debug("appui long relaché B1") end, [12] = function() fibaro:debug("appui long B1") end, [13] = function() fibaro:debug("double click B1") end, [20] = function() fibaro:debug("appui simple B2") end, [21] = function() fibaro:debug("appui long relaché B2") end, [22] = function() fibaro:debug("appui long B2") end, [23] = function() fibaro:debug("double click B2") end, [30] = function() fibaro:debug("appui simple B3") end, [31] = function() fibaro:debug("appui long relaché B3") end, [32] = function() fibaro:debug("appui long B3") end, [33] = function() fibaro:debug("double click B3") end, [40] = function() fibaro:debug("appui simple B4") end, [41] = function() fibaro:debug("appui long relaché B4") end, [42] = function() fibaro:debug("appui long B4") end, [43] = function() fibaro:debug("double click B4") end, } local action = tonumber(fibaro:getValue(XXXXXXX, "sceneActivation")) actions[action]() Et un exemple concret 2 actions pour ouvrir et fermer le garage : --[[ %% properties XXXXXXXX sceneActivation %% globals --]] local actions = { [10] = function() fibaro:debug("ouverture garage") fibaro:call(234, "turnOn") end, [20] = function() fibaro:debug("fermeture garage") fibaro:call(234, "turnOff") end, } local action = tonumber(fibaro:getValue(XXXXXXX, "sceneActivation")) actions[action]() Edit : très sympa cette télécommande.
-
Je sais pas pour erdremy, mais voici le VD le plus simple que j'ai créé, basé sur prevision-meteo.ch (documentation) Il te suffit juste de mettre ta ville pour avoir les infos du jours et de demain. Le code est simple et compréhensible. local ville = "valleiry" C'est vraiment du basique de chez basique mais c'est rapide et facilement exploitable. J'espère que cela va t'être utile ... ou pas Prévision_Météo.vfib
- 12 330 réponses
-
- 1
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Snagit
- 12 330 réponses
-
- 1
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Tu peux aussi mettre le contenu de #value[?]# dans une variable globale ... par exemple GEA.add({"Value-", id["TEMPERATURE"], 18}, 30*60, "Il fait froid au salon #value# à #time#", {{"Global", "LastTemperature", "#value#"}}) #value# est identique à #value[1]#
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Mieux qu'un long roman Chaque condition est analysée par GEA (dans cette exemple 3 conditions) et chaque valeur est stockée pour pouvoir être affichée dans le message. Le résultat de la 1ère condition est stockée dans #value[1]#, le 2ème dans #value[2]#, ainsi de suite jusqu'à 9. https://gea.piccand.me/doku.php/syntaxe#message Voilà Edit : Hansolo ... réponse plus simple mais tout aussi performante Merki
- 12 330 réponses
-
- 3
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Je te propose GEA.add({{"Alarm", 55}, {"Global!", "Meteo", ""}}, 0, "Météo du jour : #value[2]#", {{"VirtualDevice", 7, 3}}) {"Global!", "Meteo", ""} ne va rien faire car je pense que ta variable (j'ai utilisé "Meteo" comme test) va toujours contenir quelque chose ... Mais en faisant ainsi, GEA va stocker le contenu de la variable dans #value[2]#.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Comme plusieurs autres pays En Belgique c'était un 1831, le régent Érasme-Louis Surlet de Chokier n'arrivait pas finir son tonneau de bière et sa portion de frites de 15Kg, il demanda donc d'unifier ses forces avec les autres clients de la barraque à frites ... je me trompe ?
- 12 330 réponses
-
- 2
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :