Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'LUA'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

103 résultats trouvés

  1. mipa

    Scene Lua sunset

    Hello à tous, J'ai écrit ce bout de code qui fonctionne.... --[[ %% properties 74 value %% globals --]] local DetecteurMouvement DetecteurMouvement = fibaro:getValue(74, 'value' ) if (DetecteurMouvement == '1') then fibaro:call(67, 'turnOn') end J'aimerais bien y ajouter la condition active toi uniquement si c'est entre le coucher du soleil et le lever du soleil et la condition éteint toi dès qu'il y n'a plus de mouvement après 3 minutes Quelqu'un pourrait me dire comment l'écrire ? J'ai essayé de pleins de manière différentes, mais je ne suis pas arriver. Actuellement, ma lampe extérieur s'allume de jour également, ce qui m'est inutile... Merci pour votre précieuse aide Mipa
  2. ebtjjn

    Aide en LUA (basique)

    Hello, pouvez-vous me dire pourquoi cela ne se déclenche pas à l'heure souhaitée svp ? Pour faire simple : je veux le matin déclencher une info SONOS (le bouton 5 du VD 117) et ensuite le code est commenté, vous comprendrez...!! Je sais, le code n'est pas joli mais je ne sais faire que comme ça... et même pas puisque ça ne marche pas... ;-) mais je veux bien apprendre onc toutes vos remarques constructives sont les bienvenues!! :-) Merci de votre aide. EDIT : en fait, je comprends que je n'ai pas de dédélcencheur (trigger) masi comment le mettre simplement en focntion de l'heure que je souhaite? en passant par les blocs il y a de variables locales qui sont définies puis cela passe par la fonction tempFunc()... et je ne trouve pas cela très évident et pas simple surtout...
  3. Smart

    Lua

    Good morning, I have this scene that works all day, but actually I would like it to work from 7 to 23, how should I add that part to this code? Thank you! --[[ %% autostart %% properties 110 value --- Relay switch 2x1.5 35 value ---- Motion Sensor %% weather %% events %% globals --]] if fibaro:countScenes() > 1 then fibaro:abort() end local startSource = fibaro:getSourceTrigger(); if ( (tonumber(fibaro:getValue(110, "value")) == 0 and tonumber(fibaro:getValue(35, "value")) > 0 )) then fibaro:call(110, "turnOn"); end
  4. Bonjour, Tant pis, au risque de passer pour un benêt je crée un post sur une fonctionnalité du forum que j'ai déjà utilisé et qui me résiste à présent : l'insertion de code dans mes posts. Voici ce que je fais : je me connecte à ma box j'affiche du code (ex : le LUA d'un VD) je sélectionne le code et fais un copier je vais sur mon post et je clique sur le symbole <> je sélectionne LUA je fais un coller Constats : pas de colorisation du code quand je clique sur OK je ne vois rien, hormis une ligne que je devine quand je demande la prévisualisation ça "mouline" Je précise que cela le fait quelque soit le navigateur et/ou l'OS. Pour info j'utilise principalement Safari sous macOS High Sierra et je redis que cela a déjà fonctionné pour moi. Strang isn't it Merci d'avance pour vos coups de pouces - Jean-Paul
  5. Bonjour à tous, Certains VD créent automatiquement les Variables Globales dont ils ont besoin pour fonctionner correctement. Je n'ai pas réussi à comprendre comment cette opération était effectuée... Donc je viens une fois de plus vers vous ! Je comprends bien que le but est d'abord de vérifier si la VG existe et si la requête échoue, la créer... Mais comment s'opère cette création ? J'ai essayé d'analyser ce sujet, mais sans comprendre le pourquoi du comment... Pouvez-vous m'expliquer comment faire s'il-vous-plaît ? Avec un morceau de code basique, que l'on puisse ensuite agrémenter en fonction de nos besoins. Merci d'avance !
  6. frixo

    Camera IP et Lua

    Bonjour, j'espère que ce sujet existe pas déjà (j'ai regardé via le moteur de recherche je précise). Je voulais savoir ce qu'il est possible de faire via LUA sur une camera IP. J'ai acheté récemment une Foscam. Elle a quelque fonction sympas (détection de mouvement, snapshot, infra rouge). Merci pour votre aide
  7. Utilisation de net.HTTPClient() asynchrone - dans une scène en LUA sur HC2/HC3 - - dans un QuickApp sur HC3 - Dans les scènes, Fibaro ne nous laisse pas le choix, dès que l'on veut faire des appels HTTP, on est obligé d'utiliser la fonction asynchronse net.HTTPClient(). La fonction Net.FHTTP() synchrone utilisée dans les VD n'est pas disponible dans les scènes. Toutefois, l'avantage de net.HTTPClient() est d'accepter les connexions sécurisées HTTPS devenues majoritaires sur Internet. Exemple de code simple pour une requête de type GET local http = net.HTTPClient() http:request("http://1.2.3.4/url", { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) L'exemple suivant effectue une requête de type POST permettant d'envoyer des données vers le site distant. De plus, la fonction success() récupère les données de type JSON en vue d'un traitement ultérieur (notez que les données envoyées vers le site Web et les données reçues depuis le site Web sont différentes, cela dépend de l'application qui tourne sur le site) : -- Les données à envoyer au formulaire local myJson = { "couleurs": { [1] = "bleu", [2] = "blanc", [3] = "rouge" }, "fruits": { [1] = "pomme", [2] = "banane" }, } -- Appel HTTPS local http = net.HTTPClient() http:request("https://www.domaine.com/url", { success = function(response) if response.status == 200 then if response.data and response.data ~= "" then print('Retour : '.. response.data) local jsonTable = json.decode(response.data) -- Parcours de la table JSON local k, v for k, v in pairs(jsonTable) do print("key = " .. k .. " - type(v) = " .. type(v)) end -- Ici la suite du code, exécuté en asynchrone, donc après la fin de l'exécution du code appelant http:request() -- ... else print("Error : empty response data") end else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'POST', timeout = 5000, checkCertificate = false, headers = { ["content-type"] = 'application/x-www-form-urlencoded;', ["Authorization"] = "Basic YWRtaW46cGFzc3dvcmQ=" -- username:password encodé en Base64 (admin:password) }, data = json.encode(myJson) } }) -- Ici la suite du code, exécuté en synchrone, donc avant l'exécution du contenu de la fonction success() -- ... On remarque dans les options que l'on peut choisir les paramètres suivants : method : obligatoire : GET ou PUT ou POST ou DELETE timeout : facultatif : délai d'attente en millisecondes avant échec de la requête. Peut être utile avec certains serveurs un peu trop lents à répondre. Dans le doute, inutile d'utiliser ce paramètre. checkCertificate : facultatif : true ou false, permet d'ignorer les alertes de sécurité sur les certificats auto-signés (non reconnus pas une autorité de certification approuvée) headers : facultatif : permet de passer le(s) en-tête(s) HTTP de son choix vers le site Web distant. Si vous ne savez pas ce qu'est un Header, c'est que vous n'avez probablement pas besoin d'envoyer de header, donc ignorez ce paramètre. data : facultatif : ce sont les données à envoyer dans les formulaires POST et PUT sous forme de chaine de caractères. Donc si les données sont de type tableau JSON, il faut les encoder avec json.encode(). Asynchronisme net.HTTPClient() est asynchrone, le code dans les fonctions success() et error() appelées en callback s'exécute toujours après la fin de l'exécution du thread principal. Quand on commence à programmer en asynchrone, il ne faut plus jamais utiliser de fonctions synchrones comme sleep(), sous peine de comportement surprenant. Préférer à la place l'emploi de la fonction settimout() qui est elle-même asynchrone (chercher les exemples sur le forum) La bonne pratique quand on programme en asynchrone est la suivante : Après un appel à net.HTTPClient(), le code devrait se terminer le plus rapidement possible afin de laisser la main à la fonction success() appelée en callback de net.HTTPClient(). La suite du code se déroule donc dans la fonction success(). Celle-ci, à sont tour, peut faire d'autres appels à net.HTTPClient() ou settimeout() pour déclencher de nouveaux appels de fonctions en callback asynchrone. Etc... C'est la technique que j'ai employé dans mes scènes Watchdog et Yamaha MusicCast, partagées sur le forum. C'est une certaine gymnastique qui n'est pas évidente au début, et oblige à revoir toute la structure de son code LUA. En complément je vous invite à lire ce sujet sur la protection des requêtes http avec pcall() :
  8. Bonjour à tous, J'utilise la fonction net.HTTPClient() dans mes scènes de pièces afin de m'envoyer des SMS via une passerelle. Cependant, depuis quelques jours, j'ai remarqué que cette requête, bien que placée en début de script, n'est pas exécutée avant la fin du script de ma scène. En effet, j'ai remarqué que si je mettais un fibaro:sleep(10000) bien après cette commande net.HTTPClient(), je recevais le SMS 10 secondes plus tard. Le problème étant que, dans mes scènes de pièce, je suis amené à les annuler en cours si elle ne sont plus nécessaires avec fibaro:abort(). Ce qui fait que je ne reçois jamais les SMS... Dans ces conditions, comment forcer l'exécution de cette commande en début de scène ? Pour moi, le LUA était un langage qui s’éxécutait au fur et à mesure. Merci d'avance de vos réponses !
  9. Franco268

    Le reste de la division

    Bonjour, Help Je suis en train de programmer une petite fonction, et je rame depuis toute l'apres midi. J’essaie d'avoir le reste d'une division en lua. J'ai très facilement trouvé la fonction "math.mod". Mais elle ne fonctionne pas sur ma HC2. Lorsque je lance mon code, j’obtiens une erreur fatale. Et quand je tape la commande, elle ne se met pas en orange comme un math.floor par ex. Avez vous une idée? un moyen de contourner?
  10. Bonsoir à tous, Je me tourne une fois de plus vers vous pour quémander votre grande sagesse et surtout quelques bribes de vos grandes connaissances. Je cherche à simplifier/optimiser mes scènes de pièce. Depuis mes premiers posts, j'ai considérablement évolué dans l'apprentissage du LUA, mais là, je suis au point mort... À l'origine, à chaque début de ces scènes, j'avais déclaré plusieurs variables de table que j'exploitais ensuite. local liste_pieces = {"ENTREE","WC","SDB","SEJOUR","CUISINE","CHAMBRE"}; local ID_REGLAGES = { ["ENTREE"] = 168, ["WC"] = 202, ["SDB"] = 206, ["SEJOUR"] = 205, ["CUISINE"] = 203, ["CHAMBRE"] = 204 }; local PIECE_ACTIVE = { ["ENTREE"] = 1, ["WC"] = 2, ["SDB"] = 3, ["SEJOUR"] = 4, ["CUISINE"] = 5, ["CHAMBRE"] = 6 }; local ID_DETECTEUR = { ["ENTREE"] = nil, ["WC"] = 184, ["SDB"] = 220, ["SEJOUR"] = nil, ["CUISINE"] = 5, ["CHAMBRE"] = 37 }; Et je cherche maintenant à tout regrouper dans une seule et même variable (afin de la stocker ensuite dans une Variable Globale). J'ai bien vu que c'était possible et après plusieurs heures d'essais et de lecture de la documentation officielle LUA + d'autres sites, je suis contraint d'admettre mon échec. J'ai essayé de créer ma nouvelle variable de cette manière : local pieces = {}; table.insert(pieces, ["ENTREE"] = { id=1, nom="ENTREE",reglages=168,detect=nil,sonos=136}); table.insert(pieces, ["WC"] = { id=2, nom="WC",reglages=202,detect=184,sonos=nil}); table.insert(pieces, ["SDB"] = { id=3, nom="SDB",reglages=206,detect=220,sonos=137}); table.insert(pieces, ["SEJOUR"] = { id=4, nom="SEJOUR",reglages=205,detect=nil,sonos=134}); table.insert(pieces, ["CUISINE"] = {id=5, nom="CUISINE",reglages=203,detect=5,sonos=135}); table.insert(pieces, ["CHAMBRE"] = {id=6, nom="CHAMBRE",reglages=204,detect=37,sonos=138}); Mais j'ai une erreur dès la déclaration de celle-ci. La déclaration fonctionne correctement si je supprimer mes indexs. Cependant, dans ce cas, les indexs auto-incrémentés ne m'arrangent pas... Comment puis-je espérer atteindre mon but, s'il-vous-plaît ? Petite cerise sur le gâteau, comment exploiter cette nouvelle table ? J'ai bien découvert les boucles for k,v in pairs(Table) do, mais un petit exemple d'application me ferait le plus grand bien Merci d'avance
  11. Bonjour et bonne année à tout le monde Je poste dans "Le bistrot" car je ne sais pas où mettre mon projet. Je suis devenu électroconscient et après avoir déployé mes réseaux Wi-Fi à gogo, je souhaite maintenant réduire la voilure ! Là n'est pas le débat, c'est un choix personnel et pour ceux que cela intéresse ... petite parenthèse, voici quelques liens : Conférence de Stéphane Lhomme sur le LINKY : https://www.youtube.com/watch?v=7W41yI5MMgg Protection ondes, toutes les solutions contre la pollution électromagnétique : http://www.protections-ondes.fr/ Du bienfait de la mise à la terre : https://lespiedsalaterre.org Du coup j'ai acheté un ESI 24 et le résultat est bluffant : https://youtu.be/GSEJ--DYzSM Fin de la parenthèse ... Mon routeur est un ASUS RT-AC68U et j'ai trouvé en furetant sur le Net quelques commandes assez sympas et de bigrement efficaces que j’aimerais voir exécutées par ma HC2 : ... et bien sûr avec son pendant ... OK, mon routeur possède un bouton sur le côté pour activer/désactiver le Wi-Fi ... mais je suis obligé de remonter à l'étage en phase d'endormissement ... pas top OK, je peux aussi passer par l'interface du routeur et le couper depuis mon lit ... et je coupe la branche sur laquelle je suis assis ... pas top non plus Pour moi, l’idéal serait d’utiliser un actionneur Zwave (genre ma Key Fob de chez Zwave-Me ou bien The Button de chez Fibaro) posé sur ma table de nuit pour : déclencher une scène qui mettrait OFF le Wi-Fi avant de me laisser aller dans les bras de Morphée déclencher une autre scène pour le remettre ON au début d’une nouvelle journée de retraité Mais là je suis sec et je demande l’aide aux « pointures » de ce forum ... Peut-être passer par le déclenchement manuel de tâches planifiées créées sur mon NAS Synology ? Merci d’avance chers experts pour vos conseils !! Cordialement - Jean-Paul
  12. Lazer

    Code LUA Snippet

    Ce sujet épinglé en haut de page est une référence de bout de code "snipet" partagé par les utilisateurs. Les règles à respecter sont les suivantes : 1 message = 1 extrait de code aucune discussion, aucun support, les "mauvais" messages seront effacés formalisme du code : on partage le code LUA, avec en commentaire les arguments et le retour attendu : --[[ ================================================================== Encodage / Décodage en base 64 ================================================================== Description : Utilitaire pour l'encodage / décodage en base 64 Utilisé fréquement pour encoder les login:password ================================================================== Support : [X] Scénario [ ] VD Firmware requis : 4.x Auteur : Trouvé sur le web (nom des fonctions adaptées pour plus de lisibilité) ------------------------------------------------------------------ Functions : encode : encode une chaîne de caractère en base64 decode : décode une chaîne de caractère précédement encodée ================================================================== --]] -- --------------------------------------------------------------- -- function : encode -- --------------------------------------------------------------- -- paramètres : -- data : chaîne à encodé -- retour : chaîne encodée en base64 -- --------------------------------------------------------------- function encode(data) -- ... end -- --------------------------------------------------------------- -- function : decode -- --------------------------------------------------------------- -- paramètres : -- data : chaîne encodée -- retour : chaîne en claire -- --------------------------------------------------------------- function decode(data) -- ... end Et on donne un exemple d'utilisation : -- Exemple d'encodage print(encode('domotique.fibaro@gmail.com:motdepasse')) -- Résuitat [DEBUG] 17:02:52: ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ== -- Exemple de décodage print(decode('ZG9tb3RpcXVlLmZpYmFyb0BnbWFpbC5jb206bW90ZGVwYXNzZQ==')) -- Résultat dans le Debug [DEBUG] 17:02:52: domotique.fibaro@gmail.com:motdepasse
  13. Barelle

    VD UPS

    Hello, Comme vous le savez, nos matériels électroniques n’apprécient pas du tout les coupures électriques. Pour cela, il est plus que recommandé d’utiliser un onduleur (ou UPS, "Uninterruptible Power Supply")… Le VD que je vous propose ici permet l’interrogation du serveur UPS résidant sur un NAS Synology (auquel l’onduleur est connecté par un port USB). Il met à jour une variable globale (appelée UpsStatus par défaut) avec les valeurs "power-line" ou "battery" selon que l’onduleur est sur secteur ou sur batterie. Cette variable globale permet le lancement de la scène ci-après qui : - lors d’un passage sur batterie, après le délai "delayBeforePowerOff" réalisera l’arrêt de la HC2 ; - lors du retour de l’alimentation, appuiera sur le bouton "WOL" du VD. Là aussi, le réveil se fera après un délai "delayBeforeWakeUp". Ces délais ont pour objet de s’affranchir de retours temporaires de tension. --[[ %% properties %% events %% globals UpsStatus --]] local globalVarName = "UpsStatus"; -- values "power-line" or "battery" local wolVdId = "337"; local wolVdBtnId = "11"; local delayBeforePowerOff = 5; -- minutes local delayBeforeWakeUp = 5; -- minutes local debug = true; function trace(text, color) color = color or "white"; if debug then fibaro:debug("<font color='"..color.."'>"..text.."</font>"); end end -- trace function tracerr(text, color) color = color or "red"; fibaro:debug("<font color='red'>ERROR! </font>".."<font color='"..color.."'>"..text.."</font>"); end -- tracerr function wakeOnLan() fibaro:call(wolVdId, "pressButton", wolVdBtnId); end -- wakeOnLan local sourceTrigger = fibaro:getSourceTrigger(); trace("sourceTrigger[type] = " .. sourceTrigger["type"], "deepskyblue"); if (sourceTrigger["type"] == "global") then if (sourceTrigger["name"] ~= globalVarName) then tracerr("unknown global "..sourceTrigger["name"].." exiting"); fibaro:abort(); end elseif (sourceTrigger["type"] == 'other') then trace("Scene triggered manually", "lightgreen"); -- inform user local upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= nil) then trace(globalVarName.." = "..upsStatus, "lightgreen"); fibaro:abort(); end else tracerr("unexpected trigger type ".. sourceTrigger["type"], "orange"); fibaro:abort(); end if (fibaro:countScenes() > 1) then trace("Script already running, exiting.", "green"); return; end local upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus == nil) then tracerr("global "..globalVarName.." = nil"); fibaro:abort(); end if (upsStatus == "power-line") then local i = 0; for i = 1, (delayBeforeWakeUp * 6) do -- check every 10 seconds during delayBeforeWakeUp minutes fibaro:sleep(10 * 1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= "power-line") then trace("Still on battery, aborting", "orange"); fibaro:abort(); -- not stable end end -- Time to wake up devices trace("Waking up devices", "lightgreen"); wakeOnLan(); elseif (upsStatus == "battery") then local i = 0; for i = 1, (delayBeforePowerOff * 6) do -- check every 10 seconds during delayBeforePowerOff minutes fibaro:sleep(10*1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= "battery") then trace("Power is back, shut down aborted", "orange"); fibaro:abort(); end end -- shutdown HC2 gracefully trace("shutting down", "lightgreen"); fibaro:sleep(10*1000); HomeCenter.SystemService.shutdown(); else tracerr("global "..globalVarName.." unknown value: "..upsStatus); end Installation du VD : - Importer le VD, - Renseigner l’adresse IP du NAS connecté à l’onduleur, le port TCP 3493 est optionnel. - Les username et password présents dans le code du bouton Update fonctionnent pour un Synology. - Dans le code du bouton WOL, vous devrez préciser les adresses MAC des matériels que vous souhaitez réveiller. Il va de soi qu’ils devront être paramétrés pour accepter les "magic packets" afin d’être réveillés (pour les PC vérifier les paramètres de la carte réseau). - Pour les Nas Synology, il faut activer le WOL : "Panneau de configuration", "Matériel et alimentation", onglet "Général", cocher "Activer WOL sur le réseau local x". - Et ne pas oublier d’activer le serveur réseau UPS : "Panneau de configuration", "Matériel et alimentation", onglet "UPS", cocher "Activer la prise en "charge UPS" et "Activer le serveur réseau UPS"). - Enfin bien sûr, trouver une jolie icône pour les boutons du VD. Installation de la scène : - Préciser l’id du VD réalisant le WOL dans "wolVdId". - et le numéro du bouton à appuyer "wolVdBtnId". Pour ceux qui veulent personnaliser le VD, le code du bouton "Update" contient, à la fin, une description des principaux champs retournés par les serveurs UPS, Tous ne sont pas implémentés par Synology ou mon onduleur. Configuration utilisée pour les tests : - HC2 : 4.153 Beta - Onduleur : Eaton Ellipse PRO 1200 - NAS : Synology DS1010+ with DSM 5.2-5967 Update 6 Joyeux réveillon et bonne année à tous… UPS.vfib
  14. Dogwhite

    FGMS001 et Neo coolcam interrupteur

    Bonjour à tous, J'ai lu et décortiqué plusieurs posts (Smart light, Very Smart light...Trop compliqués) sur la thématique du déclenchement de l'éclairage suite à détection de mouvement et j'ai testé un script trouvé sur le forum mais cela ne fonctionne pas. Voici les composants : FGMS001 et l'interrupteur Neo Coolcam sur 2 lampes extérieures en série. La cible : Etre en capacité de vérifier le statut de l'interrupteur pour ne pas déclencher la scène s'il est au statut : Allumé Etre en capacité de jouer la scène mais uniquement si le PIR est activé : Paramètre 8 Etre en capacité de déclencher l'éclairage de ces lampes sur détection de mouvements, uniquement si la luminosité est inférieure à X Lux. Etre en capacité d'éteindre ces lampes si pas de détection de mouvements pendant X secondes. Les paramètres du FMGS001 : Capteur exclu du système d'alarme : Coché 1/ 50 2/ 2 3/ 2 impulsions 4/ 2-12 s 6/ 5 s 8/ 2 - Le capteur PIR est actif uniquement durant la nuit pour sauvegarder la longévité de la pile. 9/ 50 Lux 12/ 0 14/ 25 s 16/ 0 20/ 15 22/ 30 s 24/ 0 26/ 0 40/ 25 lux 42/ 1800 s Le reste sans impact sur le script, je pense. Optimisation : Dans ce script, il est fait mention a des horaires mais si le paramètre 8 est à nuit, ils ne sont plus nécessaires, correct ? Le script que j'ai modifié sans succès : --[[ %% properties 64 value 66 value %% globals --]] local id_lampe = 71 local id_mouv_garage = 64 local id_lux_garage = 66 local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(64, "value"); local HeureActuelle = os.date("*t"); -- si il y a plus d'une instance en route alors on arrête if (fibaro:countScenes() > 1) then fibaro:abort() end; -- entre 17h et 8h du matin s'il y a un mouvement et que les lux < à40 alors on allume tant qu'il y a du mouvement -- sinon on éteint après 1 minute de calme if ((HeureActuelle['hour']>= 17 or HeureActuelle['hour'] <= 8) and ( tonumber(fibaro:getValue(id_mouv_garage, "value")) > 0 ) and ( tonumber(fibaro:getValue(id_lux_garage, "value")) <= 40 ) ) then fibaro:call(id_lampe, "turnOn"); fibaro:sleep(60*1000); end if (( tonumber(fibaro:getValue(id_mouv_garage, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(id_lampe, "turnOff") end Mes ID : Merci d'avance pour votre aide.
  15. Dogwhite

    Script test piles des modules Fibaro

    Bonjour, J'ai trouvé et testé ce script en cherchant sur le net. Fonction : test des piles de vos modules Fibaro. Auteur : boomx Source : http://www.siio.com/general/software/easy-lua-scripts-part-1-battery-check-12255/
  16. Bonjour à tous, Je souhaite que ma variable globale SAISON puisse se mettre à jour automatiquement. Après plusieurs recherches, je n'ai pas trouvé de script qui évoquait clairement ce sujet. J'ai un VD avec 4 boutons qui correspondent chacun à une saison. La pression sur un de ces boutons met à jour ma variable SAISON. Mais, je cherche une solution optimisée pour la mise à jour automatisée de cette variable. J'ai bien quelques solutions en tête, mais je ne pense pas qu'un script qui tourne chaque jour pour vérifier le jour et le mois actuel soit le plus optimisé. Quelle(s) solution(s) utilisez-vous pour vos installations ? Certains d'entre-vous passent peut être par une tâche cron ? Merci d'avance de vos réponses
  17. yoim

    lua off lumiere

    Bonjour, J'ai fais une scene LUA pour eteindre ma lumiere automatiquement apres 30 mn par exemple. Probleme c'est que si la lampe a été varié entre temps, je ne peux pas connaitre ma value de variation ... J'ai un moyen pour ca ? --[[ %% autostart %% properties 458 value %% events %% globals --]] EtatHalo = tonumber(fibaro:getValue(458, 'value')); fibaro:debug("Etat du Dressing Shoes :".. EtatHalo); if EtatHalo == 99 then fibaro:debug("Script Working ..."); fibaro:sleep(300000); fibaro:debug("Sleep Etat du lustre Dressing Shoes :".. EtatHalo); fibaro:call(458, 'turnOff'); end Si j'ai pas eu de variation entre temps ma valeur sera a 99 donc pas de probleme. Mais si elle a été varié et que ma valeur est à 63 ... True or false ... Merci pour votre aide.
  18. Bonjour, Je m'excuse je viens d'arrivé , je rencontre après lecture de certain Topics J'ai configuré ma box puis cablé les interrupteur 1 Double On Off, j'ai allumé le courant et les ait enregistré via le GSM no PB . J’ai acheté une télécommande enregistré 1 bouton .. Ok Puis j'ai vlue enregistrer le secodn bouton éclairage et le Impossible, Reset de la clefs télécommande et maintenant impossible de configure r1 circuit avec alors que sur le GSM Nickel.. Je me demande si un RESET Usine est a faire après la 1er grosse Mise a Jour ? EDIT : Il semblerais que la configuration en ONN/OF fonctionne mais que celle qui dis l'état Oposé .. non
  19. yoim

    Fibaro FGPB-101 et code Lua

    Bonsoir, J'ai un probleme je n'arrive pas a ajouter une scene sur un appui bouton x1 Loading ... sans m'ajouter ma scene. Peut-on coder en Lua les appuis boutons de facon à ce que je puisse lancer des scenes avec mes differents appui bouton. Merci
  20. Bonjour, J'ai besoin d'aide au niveau de la programmation de mon bouton activation d'alarme sur un systeme qui ne supporte aucune api ou personne ne veut comprendre ce que je veux faire. J'ai une alarme egardia. Ca fait 2 ans que je l'ai et elle fonctionne bien. Gros probleme tout est verouillé dessus. En essayant des requetes avec Request maker, je me suis rendu compte qu'on pouvait lui envoyer des infos sur un fichier JSON avec true ou false Ma request est comme ceci : https://my.egardia.com/fr/group/egardia/summary?p_p_id=portletalarmstatusegardia_WAR_portletliferayalarmsystemegardiawebapp_INSTANCE_HNn7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=2&p_p_col_count=7&action=setAlarmStatus Le soft Request Maker me sort une valeur Json comme ceci : json=%7B%22atHome%22%3Afalse%2C%22on%22%3Afalse%7D Le false permet d'eteindre l'alarme et si je mets True ca m'active l'alarme. Eureka !! ca marche. Par contre comment je peux transformer ca en LUA pour l'activation alarme avec mes bouton Module Virtuel. Si qq un a une idée. Je pense que l'info True ou False est envoyé sur leur serveur pour activer ou desactiver l'alarme. C'est un peu flou. Merci pour votre aide.
  21. Felig

    Empêcher une scène de s'auto appeler

    Bonjour, Je travaille sur une scène qui est déclenchée quand on modifie l'icone d'un VD. Le déclencheur est donc du type %% properties 105 currentIcon Jusque là tout va bien. Par contre, dans le script de la scène je modifie de nouveau l'icone, ce qui conduit la scène à s'auto appeler dans une nouvelle instance, ce que je ne souhaite pas. Est-ce qu'il y a une commande qui permet de suspendre le déclenchement automatique d'une scène ? J'ai essayé d'utiliser fibaro:setSceneEnabled(xx, false) , mais le problème c'est que ça interrompt complètement le script quand je l'applique sur la scène en cours, alors que je souhaite qu'il continue à s'exécuter. Je veux juste suspendre le trigger "%% properties" pendant une commande, puis le réactiver à la fin du script. J'ai aussi essaye de limiter le nombre d'instances à 1, mais ça ne marche pas : j'ai l'impression que l'instance qui est "tuée" est la première, pas la nouvelle. Quelqu'un a une idée ?
  22. pepite

    Tableau json lua

    Bonsoir, J'ai un souci de lecture de json, je n'arrive pas a descendre dans les tableaux des objets du json J'ai utilisé http://jsonviewer.stack.hu pour vérifier et je me suis dit que ça devrait le faire comme ceci, mais non. json.drenchers[0].name et je voulais récupérer "Haie laurier" de l id 187...etc Pourriez vous m'éclairer les experts svp ? la je buggue, le json est trop complique lol. pour ma culture ;-) et ça mériterait un petit toto pour les nuls ;-) { adjustWater: 0, rainDelay: 0, cycles: 1, drenchers: [ { id: 187, name: "Haie Laurier", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 10, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 188, name: "Bute", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 20, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 201, name: "Pelouse Etendoir", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 30, duration: 5 } ], nextDrenching: 0, state: "false" }, { id: 202, name: "Fleurs Etendoir", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 40, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 205, name: "Pelouse Bassin", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 2, minute: 50, duration: 5 } ], nextDrenching: 0, state: "false" }, { id: 206, name: "Haie Cloture", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 3, minute: 0, duration: 3 } ], nextDrenching: 0, state: "false" }, { id: 329, name: "Cuisine", mode: "off", dead: "false", manualTime: 0, days: [ ], cycles: [ { hour: 3, minute: 10, duration: 2 } ], nextDrenching: 0, state: "false" } ] }
  23. lionelpo91

    Net.Fhttp & réponse binaire

    Bonjour, Je cherche a interpréter une réponse rendue par la fonction "Net.Fhttp" fourni par FIBARO dans un VD (Virtual Device). Je fais communiquer ma HC2 avec un Rpi3 (Raspberry) qui est vu comme serveur Web par ma HC2. J'interroge ce serveur Web en effectuant un "GET" au sens HTTP pour lire un fichier (qui est déposé à la racine du serveur Web) sous format binaire. C'est un fichier binaire brut de 246 octets représentant 123 paramètres codés en "mot" (2 octets). Voir la pièce attachée. Lorsque je fais la commande suivante. Ce fichier a été généré par un programme écrit en C sous Raspdebian (OS Linux base Debian du Rpi3) Sous mon VD lorsque j'écris les deux lignes suivantes : local Rpi3_URL = Net.FHttp(ip, port) response, status, errorCode = Rpi3_URL:GET("/diematic_params_p1") J'obtiens bien une réponse dans "response" mais je ne sais pas comment la traiter dans mon VD ? Avez vous déjà réalisé cela ? En gros comment je puis accéder avec du code LUA aux différents octets qui se situent dans la réponse ? PS : J'ai bien une solution que j'ai implémentée à base de fichier au format JSON et là pas de souci. (Et là avec les fonctions "json.decode" et "json.encode" je sais interpréter la réponse aisément. Donc ma question était plus au sens puriste de coding en LUA sous HC2... :-). Merci pour vos éclaircissements. Lionel.
  24. Alexis S.

    Reboot HC2

    Bonjour, J'avais un virtuel qui fonctionnait à l'époque pour rédemarrer ma HC2 avec le code lua suivant: HC2 = Net.FHttp("192.168.xxx.xxx") HC2:setBasicAuthentication("admin","password") -- mettre votre mot de passe response, status, errorCode = HC2:POST("/api/settings/reboot", "data=reset") if errorCode == 0 then fibaro:log(status) else fibaro:log("error") end Mais je viens de m'apercevoir qu'il ne fonctionnait plus. J'ai mis le nouveau formta de login avec l'email rien n'y fait. Quelqu'un a-t-il une explication / une solution? Merci.
  25. Bonjour à tous, J'ai un soucis depuis peu avec le VD de ma station Netatmo. Le script ne fonctionne plus : Erreur 404 dans le débug local selfId = fibaro:getSelfId(); local icon = fibaro:get (selfId, "deviceIcon"); local HC2 = Net.FHttp("192.168.0.46"); HC2:setBasicAuthentication("XXXXXX", "xxxxx"); local response, status, errorCode = HC2:GET("/Web_Scripts/netatmo.php?intext=ext"); if tonumber(status) == 200 then -- decoding json string to table -- if (response ~= nil) then local result = json.decode(response); fibaro:debug(response); local NetTempExt = result.body[1].value[1][1]; local NetHumExt = result.body[1].value[1][2]; fibaro:setGlobal("NetTempExt", NetTempExt); fibaro:setGlobal("NetHumExt", NetHumExt ); fibaro:log(fibaro:getGlobalValue("NetTempExt").. " °C " ..fibaro:getGlobalValue("NetHumExt").. " % " ) fibaro:debug(fibaro:getValue(83, "ui.status.value")); fibaro:call(83, "setProperty", "ui.status.value", (fibaro:getGlobalValue("NetTempExt").. " °C " ..fibaro:getGlobalValue("NetHumExt").. " % " )); fibaro:sleep(3*1000); fibaro:call(selfId, "setProperty", "currentIcon", icon); fibaro:call(83, "setProperty", "ui.status.value", ""); else -- oups il y a un problème... fibaro:debug("Impossible de décoder la réponse, pas de données pour le traitement..."); end else -- oups il y a un problème... fibaro:debug("Err: " .. status); end Si une âme charitable pouvait me filer un coup de main ... D'avance merci pour votre aide.
×