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. 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/
  2. 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
  3. Classer les jours du Mois par nom (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) Ce script permet de classer les jours du mois par le nom du jour. le but de ce script est de permettre de retrouver le x jour d'un mois ou tous les jours qui ont le même nom Exemple : je veux le 3 mardi du mois je veux tous les jeudi du mois Si vous sauvegardez la table Jours dans une variable globale il faudra exécuter ce script tous les 01 de chaque mois vers 00h01 ---------------------------------------------------------------------- -- Calcul du nombre de jours dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(Annee) return Annee % 4 == 0 and (Annee % 100 ~= 0 or Annee % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(Mois, Annee) return Mois == 2 and bissextile(Annee) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(Mois) end ---------------------------------------------------------------------- -- Initialisation des variables et creation des tables ---------------------------------------------------------------------- local MoisAnnee = os.date("*t") local mois = MoisAnnee.month -- recuperation du mois en cours local annee = MoisAnnee.year -- recuperation de l'annee en cours local Jmois = JourDansMois(mois, annee) -- calcul le nombre de jour dans le mois en cours local Jours = {["Lundi"]={}, ["Mardi"]={}, ["Mercredi"]={}, ["Jeudi"]={}, ["Vendredi"]={}, ["Samedi"]={}, ["Dimanche"]={}} local JourNom = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"} ---------------------------------------------------------------------------------- for jour = 1,Jmois do local tmpdate = (os.time{year = annee, month = mois, day = jour}) local tmpJourMois = os.date("%d", tmpdate) -- recupere le jour du mois local tmpJourSemaine = tonumber(os.date("%u", tmpdate)) -- Numero du jour de la de semaine local tmpJourNom = JourNom[tmpJourSemaine] -- recupere le nom du jour en francais table.insert(Jours[tmpJourNom], tmpJourMois) --fibaro:debug("Jour = "..tmpJourMois.." "..tmpJourNom) end ----------------------------------------------------------------------- -- Affichage ----------------------------------------------------------------------- print(os.date("Aujourd'hui, nous sommes un %A")) fibaro:debug("Nombre de Jours dans le mois "..Jmois) for i = 1,7 do local jour = JourNom[i] fibaro:debug(jour) for j = 1,#Jours[jour] do fibaro:debug(Jours[jour][j]) end end -- Exemple d'utilisation -- Ici on affiche le 2 lundi du mois local toto = "Lundi" fibaro:debug(Jours[toto][2]) -- ici on affiche le 3 lundi du mois fibaro:debug(Jours.Mardi[3]) On peut sauvegarder la table Jours dans une variable globale afin de l'utiliser dans d'autres scripts (il faudra créer la variable globale) -- Sauvegarde des jours de la semaine dans la variable globale JoursSemaine fibaro:setGlobal('JoursSemaine',json.encode(Jours)) On peut récuperer cette table dans un autre script -- Récupération des jours de la semaine de la variable globale JoursSemaine Jours=json.decode((fibaro:getGlobal('JoursSemaine'))); Utilisation dans un Script ------------------------------------- -- Exemple d'utilisation -- ------------------------------------- -- Ici on affiche le 2 lundi du mois local toto = "Lundi" --Affichage fibaro:debug(Jours[toto][2]) ---------------------------------------------------------------------------------------------- -- ici on affiche le 3 Vendredi du mois local Vendredi3 = Jours.Vendredi[3] --Affichage fibaro:debug(Vendredi3) ---------------------------------------------------------------------------------------------- -- Ici on récupere tous les mardi du mois sous forme de table local Mardi = Jours.Mardi --Affichage for i = 1,#Mardi do fibaro:debug(Mardi[i]) end ---------------------------------------------------------------------------------------------- -- Connaitre le nombre de Samedi dans le mois local NombreSamedi = #Jours.Samedi --Affichage fibaro:debug("Nombre de mardi = "..NombreSamedi) ---------------------------------------------------------------------------------------------- --Recuperer le 3 et 4 jeudi du mois local Jeudi = {Jours.Jeudi[3], Jours.Jeudi[4]} --Affichage for i = 1,#Jeudi do fibaro:debug("Jeudi "..Jeudi[i]) end Voici une version Virtual Device : Fichiers virtual device : Jours_Semaine.vfib
  4. 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.
  5. VERIFICATEUR D'ID Très souvent, trop souvent, notre HC2 plante car nous utilisons des IDs (identifiants) qui n'existent pas/plus. Ces identifiants ont tendance à changer lors : d'une mise à jour de la box de la reconfiguration d'un device Parfois, même un simple changement de pile Bref, il est difficile de contrôler périodiquement tous nos scènarios, VD, ... Voici donc un scénario qui va "tenter" de faire cette vérification pour vous. Ce scénario N'EST PAS intelligent, il analyse votre code sans le comprendre et vous affiche des éléments qui méritent d'être vérifiés. Ce scénario peut vous envoyer un push en cas d'avertissement rencontré, peux tourner à intervalle régulier et vous envoyer un rapport par email. Lorsque ce scénario rencontre quelque chose d'étrange, il vous affiche la ligne suivante : [DEBUG] 09:57:24: checking scene : [425] Graphs pull [DEBUG] 09:57:24: code --> contient une référence erronée dans fibaro:call(81, "pressButton", "1") [ignored = {id=425, field="81"}] Vous allez donc vérifier le code de votre scène (Graphs pull) dans cet exemple. Si effectivement l'ID n'existe plus, il vous suffit de corriger votre code. Inversement, si cet avertissement n'a pas de sens, il vous suffit de copier le code commencant par ignored [ignored = {id=425, field="81"}] situé en fin de ligne et de le copier entre les deux lignes suivantes local ignored = { -- {id=425, field="81"}, -- Graph pull - Ligne en commentaire } Ainsi cette scène ignorera cet avertissement pour les prochaines fois. Cette scène nécessite un petit effort de mise en place mais permet de corriger et prévenir des erreurs d'ID qui peuvent être désagréable. Courage et n'hésitez pas si vous avez des questions. Ci-joint la scène en question et l'icone créé par @sebcbien. Historique : 1.0 -> Initialisaton 2.0 -> vérifie ou non les scènes et VDs désactivés (voir local checkDisabled = false) 2.0 -> corrige l'analyse de l'entête des scènes (du mois, je crois) 2.0 -> permet d'ignorer certaines erreurs (voir local ignored = {}) 2.1 -> optimisation du code 2.2 -> lors de la recherche de la valeur d'une variable, prend en compte la position dans le code 2.3 -> Vérifie les variables courantes : "id", "deviceid", ... (voir local mostUseVariables = {}) 3.0 -> Auto-détection de GEA 3.1 -> Ignore les warnings liés à cette propre scène 3.2 -> Autostart et envoi de push + notification en cas de problème 3.3 -> Envoi de mail + relancement automatique toutes les X heures 3.4 -> Mise à disposition des utilisateurs 3.5 -> Affichage du nom du bouton en cas d'avertissement 3.6 -> Ne confond plus les variables contenant caractères et chiffres (Windows5, Radiateur_4) avec des IDs de module 3.6 -> Ne confond plus le numéro du CentralSceneEvent avec un ID de module CheckAll_v3.6.lua
  6. Krikroff

    Notification Center

    Notification Center Le centre de notifications à pour objectif de centraliser au mieux les besoins en communication en mettant à disposition une interface (lua) permettant d’accéder à divers services (HC2 Push & Mail, Pushover, passerelle personnalisée etc.) afin de pousser des messages dynamiques et informations diverses vers l’ extérieur. Version: 1.0.1 Phase du projet : Bêta Actuellement « Notification Center » est capable de gérer de manière automatique des demandes de notifications (concurrentes ou non) en utilisant les services suivants : HC2 Push (Mobile ID) HC2 Email (User ID) Pushover: Simple Notifications for Android, iOS, and Desktop (https://pushover.net/) Pushingbox (http://www.pushingbox.com) Prowl (http://www.prowlapp.com/) En cours d' intégration: Passerelle personnalisée (Ex : script php free sms, etc.) LiveNotifier (http://www.livenotifier.net) Roadmap: SMS Gateway & PAW Notification XBMC (Popup) TTS (support tiers) Messages prédéfinis (avec "template" ou non) Périphérique virtuel avec retour visuel : Nombre d’envois (Jours/mois), état du moteur de notification etc. Table de correspondance Mobile ID / User ID <-> Périphérique / Utilisateur par réflexion de l’API Panic Mode: routage automatique de tous les messages (prioritaires) vers une passerelle GSM (PAW, SMS Gateway) en cas de défaillance de fourniture Internet (ADSL/Fibre/Etc) En cours d'enrichissement...
  7. 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
  8. 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
  9. 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.
  10. 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 ?
  11. 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.
  12. 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" } ] }
  13. 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.
  14. Steven

    Pushbullet

    --------------------------------- PUSHBULLET API --------------------------------- Bonjour, Si comme moi, vous appréciez le service de notification "Pushbullet" et que vous souhaitez l'utiliser depuis votre HC2, voici un script qui vous permettre 2 ou 3 petites choses : Consulter la liste de vos appareils connectés au service Pushbullet Envoyer un message sur tous vos appareils connectés Envoyer un message sur un appareil précis. Avantage de ce script : Pas besoin de service intermédiaire comme pushingbox Plus besoin d'utiliser les notifications aléatoires et capricieuses de Fibaro Pré-requis : Un compte chez Pushbullet L'application Pushbullet installée sur vos appareils (https://www.pushbullet.com/apps) Obtenir un "Token" ... Connectez-vous sur le site Pushbullet -> My Account (en cliquant sur votre avatar) -> Create Access Token Voici le script local pushbullet = { token = "o.Ax6xXFI5Qa8YZX1BFoWzozmVL5plEwGd", titreDesMessage = "Fibaro", debug = false, -- ============================================== -- Affichage dans la console -- Paramètres : -- message : le message a afficher -- force : affiche le message même si debug est à false -- ============================================== log = function(self, message, force) force = force or false if (self.debug or force) then print(__convertToString(message)) end end, -- ============================================== -- Affichage les devices reconnus et actifs -- Paramètres : -- data : tableau des devices -- ============================================== displayDevices = function(self, data) self:log("----------========== D e v i c e s =========----------", true) for k,v in ipairs(data.devices) do if (v.model) then self:log(v.model .. " --- " .. v.iden, true) end end end, -- ============================================== -- Interrogation des devices -- Paramètres : -- func : une fonction a rappeler après traitement ou nil -- ============================================== getDevices = function(self, func) local http = net.HTTPClient() http:request("https://api.pushbullet.com/v2/devices", { options = { method = 'GET', headers = { ["Access-Token"] = self.token, ["Content-Type"] = "application/json" }, data = "" }, success = function(response) if (func) then func(json.decode(response.data)) else self:displayDevices(json.decode(response.data)) end end, error = function(response) self:log(" ERROR !!! " .. url, true) end, }) end, -- ============================================== -- Envoi un message -- Paramètres : -- message : le message à envoyer -- id : l'identifiant du device OU nil -- ============================================== sendPush = function(self, message, id) local http = net.HTTPClient() http:request("https://api.pushbullet.com/v2/pushes", { options = { method = 'POST', headers = { ["Access-Token"] = self.token, ["Content-Type"] = "application/json" }, data = json.encode({ ["body"]=message, ["title"]= self.titreDesMessage, ["type"]="note" }), device_iden = id, }, success = function(response) local data = json.decode(response.data) self:log("----------========== P u s h e s =========----------") self:log("Identifiant du message : " .. data.iden) end, error = function(response) self:log(" ERROR !!! " .. url, true) end, }) end, -- ============================================== -- Envoi d'un message push -- Paramètres : -- message : le message à envoyer -- device : le nom du device concerné ou nil -- ============================================== send = function(self, message, device) if (device) then self:getDevices(function(data) local found for k,v in ipairs(data.devices) do if (v.model == device or v.iden == device) then found = true self:sendPush(message, v.iden) end end if (not found) then self:log(device .. " non trouvé", true) end end) else self:sendPush(message, nil) end end } Quand je lance directement la scène, elle va m'afficher la liste des appareils connectés. Par contre quand je met à jour la variable globale "Pushbullet", elle va m'envoyé un push contenant le message de la variable globale directement sur mon téléphone "HTC One_M8 dual sim". Voici donc une manière simple de recevoir des pushs fonctionnel depuis sa HC2. Pushbullet permet aussi l'envoi de lien http, d'image, ... ce script est donc modifiable à votre convenance.
  15. 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.
  16. Renan

    Code Lua

    Bonjour J'ai une scène qui tourne tous les 5 mn pour récupérer la vitesse du vent sur une station Netatmo, le problème est que ça se plante au bout de quelque heures ou minutes, avec ce message dans le débogeur. auriez vous une idée de l'origine du PB.
  17. jjacques68

    Question boucle For

    Hello tout le monde ! rapide question car je trouve pas la solution au sujet du boucle for. voici un bout de code : local TabMessage = { [9] = "Volet 6 ", [11] = "Volet 5 ", [13] = "Volet 4 ", [15] = "Volet 3 ", [17] = "Volet 2 ", [19] = "Volet 1 " } for k,v in pairs(TabMessage) do print(k.." "..v) end lorsque je regarde le debug, les éléments de mon tableau sont tous là, mais ne sont pas dans l'ordre 9-11-13-15-17-19. Ils sont complètement aléatoires. J'aimerai bien qu'ils soient classés suivant le chiffre entre [] (représente leur ID...). J'ai essayé avec la fonction ipairs() mais la c'est pire, rien ne s'affiche. quelqu'un à une idée ? Merci d'avance !!
  18. ------------------------------------- AJOUT DE DEBUG DANS UN VD ----------------------------------- Tout le monde qui à, au moins une fois, touché le LUA de sa HC2 à du tapper cette commande : fibaro:debug("Mon texte ici") Cela permet donc d'afficher un texte dans la petite fenêtre de debug. Pour un VD (je n'ai pas encore trouvé pour une scène), il est possible d'envoyer un message, dans cette même fenêtre de debug, mais depuis n'importe où. En utilisant cette commande : fibaro:call(74, "addDebugMessage", 0, "Je viens d'ailleurs - erreur", "error") fibaro:call(74, "addDebugMessage", 2, "Je viens d'ailleurs - debug", "debug") error : affichera en rouge debug : affichera en blanc Voici la syntaxe fibaro:call(<ID_DU_VD>, "addDebugMessage", <ELEMENT_ID>, <MESSAGE>, "debug|error") -- ELEMENT_ID = ID du bouton ou 0 pour le main loop Cette info peux vous sembler inutile et pourtant, j'y vois 2 intérêts : Savoir qui a cliqué un bouton (si le bouton a été "cliqué" par une scène, on peux l'afficher dans le debug "Bouton cliqué par la scène 22 à HH:mm:ss") Via une scène paramétrée, afficher des debug de couleurs différent (exemple : fibaro:startScene(10, {{id=20, text="Mon texte ici", color="cyan"}}) Voilà, je vous laisse y méditer.
  19. lolo120

    %% Events Dans Une Scene En Lua

    Bonjour, En créant un nouveau script lua, je viens de découvrir un nouveau type de déclencheur de scene: %% events Je ne crée pas souvent de scene en lua, mais je ne l'avais encore jamais rencontré, et je n'ai pas résussi à trouver de doc. Quelqu'un sait il à quoi ca sert et comment on peut s'en servir? Merci par avance!
  20. Bonjour j'ai le plugin hue qui fonctionne bien, et je peux commander le plugin depuis les scènes pour qu'alors, le plugin commande la lampe. mais je voudrais commander en lua directement l'ampoule, (sans passer par le plugin) et ça marche pas. si je reprend le code du plugin pour le mettre dans une scène c'est pas bon. quelqu'un saurait comment je peux faire ça ? merci tous :-)
  21. Fréquemment j'ai besoin taper une simple URL pour mettre à jour une VG, mettre à jour un label, recevoir l'état de mon IPX, tout en déclenchant un scénario ... mais mettre un place un script qui fait un POST sur une Variable Globale est un vrai calvaire car il faut passer par un système tiers (PHP, Java, ...). Et pourtant, Fibaro nous a donner un des outils les plus simples et surtout les plus utile ... les Virtual Devices. Et oui, cela peu surprendre mais saviez-vous que chaque label, slider d'un VD se comportent exactement comme une variable globale. C'est à dire : les données sont persistante (vous pouvez rebooter votre box, la donnée sera toujours là ) les données sont modifiables (via un scène ou un appel http .. nous y reviendrons) le changement de valeur active un trigger Allez passons au chose sérieuse. Donc si je résume cela veux dire que si je fait un appel HTTP GET pour changer un label et que le changement de ce dernier active un trigger, je peux donc ... heuuuu ... dire zut au variable globale. En effet, voici un exemple concret et simple : Créons un Virtuel Device avec un simple label que nous allons appeler ainsi : Label : V.Globales ID : VG Notons en passant l'ID de ce nouveau VD. Maintenant si depuis un navigateur, je tape cette URL, je vais changer la valeur de mon label : http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=<ID_VD>&name=setProperty&arg1=ui.VG.value&arg2=<MaNouvelleValeur> Ok mais quel intérêt ? L'intérêt vient en ajoutant une scénario derrière tout cela : --[[ %% properties 484 ui.VG.value --]] actions = { ["ui.VG.value"] = function(values) for k,v in pairs(json.decode(values)) do if (fibaro:getGlobalValue(k) ~= v) then fibaro:setGlobal(k, v) end end end, } -- =============================== -- Démarrage du script -- =============================== local trigger = fibaro:getSourceTrigger() if (trigger.type == "property") then property = trigger.propertyName device = trigger.deviceID value = fibaro:getValue(device, property) actions[property](value) end Que va donc faire ce script et ben il va écouter si la valeur ui.VG.value de mon VG (484 chez moi) change et si elle change et bien il va lire la valeur et mettre à jour mes variables globales. En reprenant l'URL ci-dessus, en remplacant <MaNouvelleValeur> par un json au format simple {NomVariable:valeur, NomVariable2:valeur, ...} Exemples: {'Pushbullet':'Message'} {'Pushbullet':'Message', 'Chauffage':'Vacances} http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=<ID_VD>&name=setProperty&arg1=ui.VG.value&arg2={'Pushbullet':'Message'} Et voilà , il ne reste plus qu'à "caché" le VD et la scène et vous avez un moyen simple de mettre à jour vos VG avec un simple GET HTTP. Pour allez plus loin, voici ma scène pour vous donner des idées Amusez-vous bien
  22. Hello, Je voudrai partager mon code car il ne fonctionne pas. Pouvez vous m'aider? Le but est defermer mes volets lorsque la température commence à monter. Le programme fonctionne en manuel mais pas en automatique. C'est comme si la scène n'est jamais déclenché, malgres les variations de 164 et 4. --[[ %% properties 194 value --Température Chambre parentale 3 Temperature --Température exterrieur Internet %% events %% globals --]] if(fibaro:countScenes() >1) then fibaro:abort() fibaro:debug('Abort') end fibaro:debug("Température exterrieur Internet : " ..fibaro:getValue(3, "Temperature")); fibaro:debug("Température exterrieur Internet : " ..fibaro:getValue(194, "value")); local startSource = fibaro:getSourceTrigger(); if (startSource["type"] == "other") then fibaro:debug("Commande manuelle") end if ( (tonumber(fibaro:getValue(3, "Temperature")) >= tonumber(23.5) and tonumber(fibaro:getValue(194, "value")) >= 23 and fibaro:getGlobalValue("Etat_Volets") ~= "Fraîcheur") or startSource["type"] == "other" ) then fibaro:setGlobal("Etat_Volets", "Fraîcheur"); fibaro:startScene(263); -- Démarrage de la scène Ferm.fraî. volets fibaro:call(8, "sendDefinedEmailNotification", "373"); fibaro:call(133, "sendDefinedPushNotification", "373"); fibaro:call(375, "sendDefinedPushNotification", "373"); fibaro:call(229, "sendDefinedEmailNotification", "373"); fibaro:call(230, "sendDefinedPushNotification", "373"); fibaro:call(251, "sendDefinedPushNotification", "373"); fibaro:debug("Fermeture demandée") end
  23. JT28

    Probleme De Lua (Json.decode)

    Bonjour, j'ai un problème avec le code json de mon poêle Palazzetti. Je récupère bien les valeurs de la premiere partie, par exemple "RSP": "OK", mais pas celles après "All Data": à cause de l'espace entre All et Data. J'ai donc une erreur lua sur cette ligne: local responseitem1 = respdecode.All Data.SETP; Y a t'il une solution pour contourner ce problème ? Ci-dessous mon code de test : -- Test json local resp = '{ "Info": { "RSP": "OK", "TS": "2016-05-12 00:40:17" }, "All Data": { "MBTYPE": 0, "MAC": "78:25:44:XX:XX:XX", "MOD": 307, "VER": 45, "FWDATE": "2015-12-10", "STOVE_DATETIME": "2016-05-12 00:40:47", "STOVE_WDAY": 4, "STATUS": 0, "SETP": 20.0, "PUMP_RATE": 0, "PELLET_QTUSED": 17, "FAN_FAN1V": 0, "FAN_FAN1RPM": 0, "FAN_FAN2LEVEL": 2, "FAN_FAN2V": 0, "POWER": 2, "FEEDER": 0.0, "DP_TARGET": 0, "DP_PRESS": 21, "IN_I01": 1, "IN_I02": 0, "IN_I03": 1, "IN_I04": 1, "OUT_O01": 0, "OUT_O02": 0, "OUT_O03": 0, "OUT_O04": 0, "OUT_O05": 0, "OUT_O06": 0, "OUT_O07": 0, "TMP_ROOM_WATER": 21.2, "TMP_PELLET_BACKW": 22.5, "TMP_EXHAUST": 22.0, "TMP_CC": 0.0, "TMP_ROOM_IDRO": 0.0 }}'; local respdecode = json.decode(resp); local responseitem = respdecode.Info.RSP; fibaro:debug(responseitem); local responseitem1 = respdecode.All Data.SETP; fibaro:debug(responseitem1); Merci d'avance aux pros du Lua.
  24. VD - Visualisation Detection Ouverture , Detection de mouvements, Variable Globale Ce VD ou virtual devices a pour but de regrouper plusieurs VD dont celui de @STEVEN Virtual Device : Variables Globales Je remercie STEVEN pour son code qui ma inspiré pour les autres affichage http://www.domotique-fibaro.fr/index.php/topic/4205-virtual-device-variables-globales/ Cette visionneuse affichera : La dernière détection d'un capteur d'ouverture avec le temps écoulé (Max 10 modules) La dernière détection d'un capteur de détection de mouvement avec le temps écoulé (Max 10 modules) Les 10 dernières variable globales (Ce code appartient a STEVEN) Toute ces données seront triés par ordre chronologique Visualisation des Capteurs d'ouverture code lua : local id = fibaro:getSelfId() fibaro:call(id,"setProperty","ui.LabType.value", "Capteur Ouverture") HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/devices") local Ouverture = {} local t = json.decode(response) local j = 0 for i = 1, #t do if t[i].visible == true and t[i].type == "com.fibaro.doorSensor" then local HeureModif = t[i].properties.lastBreached local heure = os.time() local TempEcoule = os.difftime(heure, HeureModif)-3600 table.insert(Ouverture, {t[i].name, t[i].id, TempEcoule}) --fibaro:debug(t[i].name.." id : "..t[i].id..t[i].properties.lastBreached) end end table.sort(Ouverture, function(a, return a[3]<b[3] end) -- Display results local id = fibaro:getSelfId() local cpte = 0 for i = 1, 10 do pcall(function() fibaro:debug(i.." - "..Ouverture[i][2]) cpte = i if Ouverture[i][3] > 3600*24 then fibaro:debug(i .. " id=" .. Ouverture[i][1] .. " - Value=" .. os.date("%j jours %X", Ouverture[i][3]) ) fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%j jours %X", Ouverture[i][3])) else fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%X", Ouverture[i][3])) end end) end for i = cpte+1, 10 do fibaro:debug("i= "..i) fibaro:call(id, "setProperty", "ui.Label"..i..".value", "") end Visualisation des Capteurs de mouvement code lua : local id = fibaro:getSelfId() fibaro:call(id,"setProperty","ui.LabType.value", "Detection Mouvements") HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/devices") local Ouverture = {} local t = json.decode(response) local j = 0 for i = 1, #t do if t[i].visible == true and t[i].type == "com.fibaro.motionSensor" or t[i].type == "com.fibaro.FGMS001" then local HeureModif = t[i].properties.lastBreached local heure = os.time() local TempEcoule = os.difftime(heure, HeureModif)-3600 local RoomName = fibaro:getRoomName(fibaro:getRoomID(t[i].id)) fibaro:debug(RoomName) table.insert(Ouverture, {t[i].name, t[i].id, TempEcoule, RoomName}) --fibaro:debug(t[i].name.." id : "..t[i].id..t[i].properties.lastBreached) end end table.sort(Ouverture, function(a, return a[3]<b[3] end) -- Display results local cpte = 0 for i = 1, 10 do pcall(function() fibaro:debug(i.." - "..Ouverture[i][4]) cpte = i if Ouverture[i][3] > 3600*24 then fibaro:debug(i .. " id=" .. Ouverture[i][1] .. " - Value=" .. os.date("%j jours %X", Ouverture[i][3]) ) fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%j jours %X", Ouverture[i][3])) else fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][4] .. " - ".. Ouverture[i][1] .. " = " .. " ".. os.date("%X", Ouverture[i][3])) end end) end for i = cpte+1, 10 do fibaro:debug("i= "..i) fibaro:call(id, "setProperty", "ui.Label"..i..".value", "") end Visualisation des Capteurs de mouvement de @steven Visualisation Libre ce bouton est reservé pour votre imagination si il reste vide ....... tanpis pour vous La mainloop ou boucle principale Sorry local NumBouton = { ["Capteur Ouverture"] = 12, ["Detection Mouvements"] = 13, ["Variables Globale"] = 15 } local SelfId = fibaro:getSelfId() local Nom = fibaro:getValue(SelfId, "ui.LabType.value") local bouton = NumBouton[Nom] fibaro:debug(bouton) fibaro:call(SelfId, "pressButton", bouton) La visualisation ce fera toute les 3s on peut augmenter ce parametre en ajoutant un sleep Fichier a télécharger : Visionneuse_v01b.vfib Liens vers mes autres tutos : Classer Les Jours Du Mois Par Nom (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) ICI Visualisation Des Températures ICI Surveillance Free Memory Hc2 ICI Visualisation Iosdevice Smartphone, Iphone Etc... ICI Visualiser Les 10 Dernières Ouverture De Porte ICI Faire Une Copie De La Clef Usb Recovery Sous Windows ICI Tout Sur Le Déclenchement D'une Scéne En Lua (By Steven) ICI Paramétrage D'un Module (Fonctions Générales) ICI Module Virtuel - Le Slider De A À Z (Image + Codes Lua) ICI Universel Pour Volets Roulant ICI Ouverture, Fermeture, Allumer, Éteindre (Volets, Lumiére En Une Scéme) ICI Crée Une Variable Globale Ou Une Variable Globale Predefinie En Lua ICI Sceneactivation Et Module Compatible (Déclenchement D'une Scéne Avec Un Bouton) ICI Les Variables - Complément D'information By Steven ICI/ Lua - Programmation La Règle De 3 By Steven ICI Module Virtuel - Utilisation D'un Label ( Étiquette ) ICI Module Virtuel - Numérotation Des Boutons ICI Lua - Connaitre Le Dernier Id Et Le Nombres De Modules ICI Clé Usb Recovery Explication En Image De La Fat32 ICI Wol Avec Xpenoboot Dsm 5.1 ( Nas Synology ) ICI Module Virtuel - Crée Automatiquement Des Variables Globales ICI
  25. Moicphil

    Arrêter une scène active

    Est ce que quelqu'un peut m'expliquer plus précisément cette fonction ? : fibaro:countScenes(sceneID) > 1 then fibaro:abort(sceneID) Pour info, voila mon script : (Je viens de le passer de "block" en "lua") --[[ %% properties 133 value 25 value 26 value 27 value 28 value 29 value 30 value 31 value 132 value 103 value 131 value 104 value 133 armed 25 armed 26 armed 27 armed 28 armed 29 armed 30 armed 31 armed 132 armed 103 armed 131 armed 104 armed %% globals VAR --]] local startSource = fibaro:getSourceTrigger(); if ( ( (tonumber(fibaro:getValue(133, "value")) > 0 and tonumber(fibaro:getValue(133, "armed")) > 0) or (tonumber(fibaro:getValue(25, "value")) > 0 and tonumber(fibaro:getValue(25, "armed")) > 0) or (tonumber(fibaro:getValue(26, "value")) > 0 and tonumber(fibaro:getValue(26, "armed")) > 0) or (tonumber(fibaro:getValue(27, "value")) > 0 and tonumber(fibaro:getValue(27, "armed")) > 0) or (tonumber(fibaro:getValue(28, "value")) > 0 and tonumber(fibaro:getValue(28, "armed")) > 0) or (tonumber(fibaro:getValue(29, "value")) > 0 and tonumber(fibaro:getValue(29, "armed")) > 0) or (tonumber(fibaro:getValue(30, "value")) > 0 and tonumber(fibaro:getValue(30, "armed")) > 0) or (tonumber(fibaro:getValue(31, "value")) > 0 and tonumber(fibaro:getValue(31, "armed")) > 0) or (tonumber(fibaro:getValue(132, "value")) > 0 and tonumber(fibaro:getValue(132, "armed")) > 0) or (tonumber(fibaro:getValue(103, "value")) > 0 and tonumber(fibaro:getValue(103, "armed")) > 0) or (tonumber(fibaro:getValue(131, "value")) > 0 and tonumber(fibaro:getValue(131, "armed")) > 0) or (tonumber(fibaro:getValue(104, "value")) > 0 and tonumber(fibaro:getValue(104, "armed")) > 0) ) and ( tonumber(fibaro:getGlobalValue("VAR")) == tonumber("3") ) or startSource["type"] == "other" ) then fibaro:call(5, "pressButton", "5"); fibaro:call(82, "pressButton", "1"); fibaro:call(138, "pressButton", "1"); fibaro:call(7, "pressButton", "5"); fibaro:call(7, "pressButton", "7"); fibaro:sleep(15000); fibaro:call(42, "setValue", "100"); fibaro:call(38, "setValue", "100"); fibaro:call(43, "setValue", "100"); fibaro:sleep(135000); fibaro:call(82, "pressButton", "2"); fibaro:sleep(30000); fibaro:call(42, "turnOff"); fibaro:call(38, "turnOff"); fibaro:call(43, "turnOff"); end Mon problème est le suivant : Cette scène concerne la gestion d'une intrusion si une porte passe en alerte. Elle fonctionne bien, néanmoins, quand cette scène se déclenche, je reçois des push en continu tant que la porte n'est pas refermée! La fonction push vient d'un VD ( fibaro:call(5, "pressButton", "5") avec le service "Pushover" D’où ma question, est ce que je peux utiliser la fonction "fibaro:countScenes(sceneID) > 1 then fibaro:abort(sceneID)" ? Si oui, ou dois je la positionner dans mon code ? Merci d'avance
×