Aller au contenu

Steven

Membres confirmés
  • Compteur de contenus

    4 434
  • Inscription

  • Dernière visite

  • Jours gagnés

    201

Tout ce qui a été posté par Steven

  1. Steven

    Support Gea

    @dvine Par le JSON est-ce que cela pourrais te convenir : GEA.( {"JSONDecodeFromGlobal+", "MyGlobalVariable", "properties.modules[2].value", 0}, "It's not so cold", ... ) {"JSONDecodeFromGlobal, <global variable>, <json property>} et {"JSONDecodeFromLabel, <id vd>, <label name>, <json property>}
  2. Steven

    RECUP ETAT PERIPH CHACON

    J'ai encore sous la main un vieux script qui me permettant d'envoyé des ordres à ma Zibase directement depuis mon agenda google, il y a le P3 pour Chacon. Voici le script : var ZIBASE = "ZiBASExxxxxx"; var TOKEN = "xxxxxxxxx"; var CAL_ID = 'xxxxxxxxxxxxxxxxxxxx@group.calendar.google.com'; var KEYWORD = "MODULE"; function test() { actionneModule("A3", "ZWAVE", "OFF"); } /** * --------------------------------------------------------------------------------------------------------- * Cherche dans l'agenda le mot clé "MODULE" toutes les minutes et exécute l'action sur le module * ex. MODULE A7 ZWAVE OFF * --------------------------------------------------------------------------------------------------------- **/ function searchModule() { var cal = CalendarApp.getCalendarById(CAL_ID); var now = new Date(); var nowPlusOneMinute = new Date(now.getTime() + (60 * 1000)); var events = cal.getEvents(now, nowPlusOneMinute, {search: KEYWORD}); for (var i=0 ; i < events.length; i++) { if (events[i].getTag(KEYWORD) == null || events[i].getTag(KEYWORD) != "done") { var action = events[i].getTitle().replace(KEYWORD+ " ", ''); var params = action.split(" "); actionneModule(params[0], params[1], params[2]); events[i].setTag(KEYWORD, "done"); } } } /** * --------------------------------------------------------------------------------------------------------- * Lance une action sur un module de la ZiBASE * id : l'identifiant du périphérique (A3, B2, Z3, ...) * protocole : VISONIC433, VISONIC868, CHACON, DOMIA, RF X10, ZWAVE, ... * action : ON, OFF, DIM, ... * * Exemple : actionneModule("A7", "ZWAVE", "OFF"); * --------------------------------------------------------------------------------------------------------- **/ function actionneModule(id, protocole, action) { var erreur = ""; var iprotocole = -1; if (protocole == "VISONIC433") { iprotocole = 1; } else if (protocole == "VISONIC868") { iprotocole = 2; } else if (protocole == "CHACON") { iprotocole = 3; } else if (protocole == "DOMIA") { iprotocole = 4; } else if (protocole == "RF X10") { iprotocole = 5; } else if (protocole == "ZWAVE") { iprotocole = 6; } else if (protocole == "RFS10/TS10") { iprotocole= 7; } else if (protocole == "XDD433") { iprotocole= 8; } else if (protocole == "XDD868") { iprotocole= 9; } else if (protocole == "XDD868Inter/Shutter") { iprotocole= 10; } else if (protocole == "XDD868PilotWire") { iprotocole= 11; } else if (protocole == "XDD868Boiler") { iprotocole= 12; } if (iprotocole == -1) { erreur = erreur + "Protocole inconnu " + protocole; } var iaction = -1; if (action == "OFF") { iaction = 0; } else if (action == "ON") { iaction = 1; } else if (action == "DIM") { iaction = 2; } else if (action == "BRIGHT") { iaction = 2; } else if (action == "ALL_LIGHTS_ON") { // ne fonctionne pas en X10 iaction = 4; } else if (action == "ALL_LIGHTS_OFF") { // ne fonctionne pas en X10 iaction = 5; } else if (action == "ALL_OFF") { // fonctionne uniquement en X10 iaction = 6; } if (iaction == -1) { erreur = erreur + " action inconnu " + action; } if (erreur.length > 0) { envoi = UrlFetchApp.fetch("https://zibase.net/m/zapi_remote_zibase_set.php?device=" + ZIBASE + "&token="+ TOKEN + "&action=rowzibasecommand&param1=0&param2="+ (iprotocole * 256 + iaction) + "&param3=" + (id.substring(1,2) -1) + "&param4=" + (id.charCodeAt(0)-65)); } return erreur; }
  3. Steven

    Support Gea

    Oui c'est -1 Car 30 signifie que la condition (la détection) doit persister au moins 30s ce qui n'est jamais le cas avec un détecteur.
  4. Steven

    Support Gea

    Je cherche encore mais je ne vois pas de véritable problème. Je suis en train de préparer un version un peu plus réactive car avec @pepite, on a remarqué que dans certains car, heureusement assez rare, GEA ne captais pas bien les instructions {"Time", "20:00"}. En effet, si GEA se déclenche à 20:00:29 secondes, et que le temps de traitement des lignes au dessus de celle qui contient le "Time" met plus de 1s, il va tester la ligne à 20:00:30 comme il est indiqué que la ligne doit être valable au moins 30 secondes, il va attendre le prochain passage ... par contre au prochain passage, il sera 20:01:00 donc la condition de 20:00 ne sera plus correcte. Sinon, j'ai repéré 2 choses étranges dans ton code : GEA.add({{"Days", "Monday,Thursday,Friday"},{"Time", "16:30",}},30,"",{"Label", 88, "slider_0_0", 21}) Il y a une virgule qui traîne dans le "Time". Ensuite, j'ai un problème de compréhension dans ces lignes : GEA.add({"Global+", "ConsigneChauffage", {"Value", id["TEMP_BUREAU_JK"]}}, 1*60, "", {"turnOff",id["CHAUFFE_BUREAU_JK"]} ) GEA.add({"Global", "ConsigneChauffage", {"Value", id["TEMP_BUREAU_JK"]}}, 1*60, "", {"turnOff",id["CHAUFFE_BUREAU_JK"]} ) GEA.add({"Global-", "ConsigneChauffage", {"Value", id["TEMP_BUREAU_JK"]}}, 1*60, "", {"turnOn",id["CHAUFFE_BUREAU_JK"]} ) Si je prends la 1ère ligne, je lis ceci : Si la température souhaitée est plus grande que la température du bureaux ... alors j'éteins le chauffage dans le bureau. Donc si ConsigneChauffe = 20 et que la température du bureau est 19 ... alors j'éteins le chauffage Et la 3ème Si la température souhaitée est plus basse que celle du bureau alors j'allume le chauffage Donc si ConsigneChauffe = 19 et que la température du bureau est 20 ... alors j'allume le chauffage Heuuuu, ne serais-ce pas une inversion ? Je travaille d'arrache pieds sur la version 6.05 qui corrige ces histoires de Time ... dans un 1er temps, tu peux faire {"Time", "16:30", "16.31"}, laissant donc un intervalle d'une minute, pour garantir qu'il n'y aura plus de soucis à ce niveau là.
  5. Un article que tu pourrais trouver intéressant. http://techno-bidouille.com/sarah-vs-google-home-pourquoi-jai-cede-a-google/ Sinon perso, je n'utilise qu'un seul script sur ma HC2 couplé avec une seule recette IFTTpour géré la totalité de ma box. Le seul bémol est que au lieu de dire "Ok Google allume le salon" il faut dire "Ok Google <mot clé> allume le salon" Perso, je dois dire "Ok Google Jarvis allume la télé et éteins le couloir" afin que IFTT envoi son ordre à ma HC2 qui va chercher "allume la télé" ET "éteins le couloir" ... et Hop, la télé s'allume et le couloir s'éteint. L'avantage est qu'il n'y a qu'un seul script à maintenir et éventuellement à supprimer si Fibaro fini un jour son intégration, qui est en cours, avec la Google Home. Et je rejoint @Dioperso. La Google Home ne sert pas QUE pour la domotique, il y a aussi la musique, la radio, la durée des trajets, météo, recherche sur internet, minuteur, réveil, ... et bien d'autre encore. Hier, pour choisir la part de couronne (pâtisserie) pour chaque enfants, j'ai découpé 4 parts et j'ai lancé un "Ok Google donne moi un chiffre entre 1 et 4" ... et j'ai pas eu la fève
  6. Steven

    GetValue avec http

    Désolé, sincèrement désolé de ne pas avoir donner la réponse que tu souhaitais. Je passe donc mon tour, j'ai pas le niveau nécessaire.
  7. Steven

    Panne sous Garantie

    Perso, j'ai eu des soucis de matériel défectueux acheter chez Cdiscount, mais le SAV a bien fait son travail J'ai reçu le même produit que j'avais renvoyé avec les mêmes problèmes qu'avant ... mais j'ai été intégralement remboursé.
  8. Steven

    GetValue avec http

    Tu souhaites récupérer cette valeur depuis quel système ? Par ce qu'en gros, il faut faire ceci http://<adresse_ip_de_ta_hc2>/api/devices/157 --- avec l'authentification qui va te retourner un json (mais ça apparemment tu le sais déjà) puis tu decodes ton json et prend le "properties.value"
  9. Steven

    LUA : string vers tableau

    La liste est là (enfin je crois) : for word in string.gmatch("Hello Lumière user", "[0-9a-zA-Zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+") do print(word) end
  10. Steven

    Support Gea

    @dvine Je vois que je n'ai jamais répondu sur tes soucis de Open et Close. L'optimisation de la mémoire fonctionne ainsi : Au premier passage, on analyse et enregistre toutes les {"", "", ...} utilisé dans le code Au 2ème passage, on supprime toutes celles qui ne sont pas utilisées. Sauf que, dans le code de certaines option, j'utilise le code d'autre option. Dans le cas de "Open" ou "Close", je fais appel à "Value". Donc si dans ton code tu n'utilises pas "Value", ce dernier va être supprimé de la mémoire .. et quand tu vas vouloir faire un "Open" ou "Close" .. et bien catastrophe. Bien évidement c'est déjà corrigé pour la future version. Pour ce qui est des logs, je vais voir ce que je peux faire mais vu que je n'aime pas les variables globales, il va falloir que je trouve quelque chose de convaincant. Pour le JSON ... grrrrrr ... je te déteste car l'idée est bonne mais qu'elle va me donner du travail
  11. Steven

    Support Gea

    @pepite Peux-tu re-tester "Picture" mais avec le keepValues = true (voir "Sleep") s'il te plait ?
  12. Steven

    Support Gea

    Après maintes et maintes recherches ... je confirme le bug et j'ai même l'explication. {"Picture", idcam, {2, 8}} Avec cette version de GEA quand il voit ceci : {2, 8} il essaie de trouver une correspondance avec d'autre option ... et pour lui, cela revient à allez voir si la valeur du module 2 est bien égale à 8 puis il renvoi ceci {"Picture", idcam, false} C'est donc corrigé pour la future version.
  13. Steven

    Support Gea

    J'oubliais .. tu peux enlever le 27 value de l'entête, il ne sera à rien pour ce cas de figure et moins il y a de déclencheur, mieux c'est
  14. Steven

    Support Gea

    Oups, alors attention, "Sensor" (équivalent de "Power") est utilisé pour la consommation électrique d'un module. Pour un dimmer c'est "Value" qui varie donc de 0 à 100. Pour savoir si un dimmer est allumé, tu as plein d'option, la plus simple étant de mettre simplement son ID : GEA.add(ID, ......) GEA.add({"Value+", ID, 0}, ....) GEA.add({"TurnOn", ID}, ...) Dans ton cas d'utilisation, la ligne simplifiée que je t'ai envoyé est parfaite car "Switch" vérifie l'état d'un module, s'il est allumé, il l'éteint et inversement.
  15. Steven

    Support Gea

    Heuuu, c'est quoi ce sensor ? Si c'est la consommation électrique de ta lampe, en effet, c'est mal parti :-) Allez, soyons simpliste : GEA.add({"SceneActivation", 27, 26}, -1, "", {{"Switch", 27}}) Et voilà si la lampe est allumée elle va s'éteindre et inversement
  16. Steven

    Support Gea

    @pepite @Sakkhho J'ai effectué un scénario simple et très basique pour vérifier le sendPhotoToUser et sendPhotoToEmail. Dans mon cas, rien ne fonctionne. Par contre si je clique sur l'appareil photo dans l'écran d'une de mes caméra, cela fonctionne correctement. Donc je ne peux pas aider sur ce coup là
  17. Steven

    Support Gea

    Alors mes tests sont concluant ... mais il y a un bug dans "Slider". Si dans tout ton code tu n'utilises pas "Label", il va se planter après quelques exécutions (je l'avais pas vu venir celle là). Je te conseil donc, d'utiliser {"Label", ... } à la place de {"Slider", ...} Ensuite pour plus de réactivité utilise le 0 à la place du 30 pour cette ligne ci : -- Mise à jour du thermostat à partir du Device 88 GEA.add( {"Global!", "ConsigneChauffage", {"Slider", 88, "slider_0_0"}}, 0, "", {"Global", "ConsigneChauffage", {"Slider", 88, "slider_0_0"}} ) Ainsi elle sera traité immédiatement après celles qui changent la consigne et non pas 30 secondes après. Voilà, si cela ne fonctionne toujours pas, envoi moi ton script entier à steven.piccand@gmail.com je regarderais avec plaisir,
  18. Steven

    Support Gea

    Tu peux me renvoyer tes lignes qui change la consigne, je vais les tester ce soir.
  19. Steven

    Google Home

    Ah oui, j'oubliais, ma tablette qui utilise Imperihome est connectée en Bluetooth sur mon Google Home. Le TTS d'Imperihome est donc entendu sur le GH et non pas la tablette.
  20. Steven

    Support Gea

    Et continue à nous embêter si tu as des questions, cela aide aussi à réfléchir aux améliorations possible de GEA. Tu vois dans ton cas, cela m'a permis de faire en sorte que GEA va corriger automatiquement ce genre de problème pour la future version.
  21. Steven

    Support Gea

    Je viens de vérifier dans le code. Tu peux mettre avec ou sans le "s". Il y a fort longtemps, j'avais fait une boulette et j'avais codé sans le "s". Pour corrigé sans impacter le code des utilisateurs, j'ai fais en sorte d'accepter les 2. Donc la syntaxe de @pepite est correcte même si, pour plus de cohérence, je vais lui demander de changer
  22. Steven

    Support Gea

    Alors il y a 2 choses qui me dérange dans ta programmation. La première est "Weekday" .. il y a plusieurs jours donc c'est "WeekdayS" avec un "s" à la fin. Mais la plus important est la conjonction de ceci : {"Time", "04:30", "04:30"}, 60 Il n'est pas possible d'être 04:30 pendant 60 secondes , il faut mettre 30 à la place de 60* ... idem pour 08h00. D'ailleurs, tu peux mettre {"Time", "04:30"} plus besoin de mettre 2x "04:30", c'est ainsi plus simple à lire. Tu n'es pas le 1er à faire ce genre de petite erreur. La prochaine version de GEA corrigera donc automatiquement cela. * Au 1er passage, s'il est 04:30 GEA va stocker comme quoi la condition est rempli mais comme tu as mis 60s, il va attendre le passage suivant. Il sera sûrement 04:30 à ce moment là car cela ne fera que 30s plus tard. Par contre, 60s plus tard il sera 04:31 donc ... la condition ne sera jamais rempli.
  23. Si il y en a encore plein, mais pas sur les forums Et non, j'ai pas encore eu le temps d'en profiter.
  24. Peux importe ... la neige c'est plus vraiment d'actualité et il est temps de la supprimer non ?
  25. Steven

    Google Home

    Le VD en question est ici : Le plus simple est de faire (par exemple) ["ferme tous les volets"] = "ferme volet X ET ferme volet Y ET ferme volet Z ... Le ET étant un découpage, il va effectuer l'opération sur les volets les uns après les autres.
×
×
  • Créer...