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. Il y a une solution qui fonctionne à 95%. Il faut créer un scène avec le code suivant : params = { duree_max_entre_click = 1000, -- en millisecondes clicks = { {name = 'Click 1', action = function(num_click) fibaro:debug("Click " .. num_click) end}, {name = 'Click 2', action = function(num_click) fibaro:debug("Click " .. num_click) end}, {name = 'Click 3', action = function(num_click) fibaro:debug("Click " .. num_click) end} }, started = function() fibaro:debug("Processus started") end, ended = function() fibaro:debug("Too late ") end } local num_click = fibaro:countScenes(); if (params.clicks[num_click]) then if (num_click == 1) then params.started() end params.clicks[num_click].action(num_click) fibaro:sleep(params.duree_max_entre_click) while (fibaro:countScenes() > num_click and num_click == 1) do fibaro:sleep(params.duree_max_entre_click) end if (fibaro:countScenes() == 1) then params.ended() end end Modifié les functions relatives au click 1, click 2, ... Puis derrière le bouton d'un VD, mettre le code suivant fibaro:startScene(<ID de la scène>) Pourquoi 95% et non pas 100%. Pour obtenir le 100% il faut utiliser une variable globale, hors, j'aime pas cela donc j'ai joué sur le nombre d'instance de la scène en cours et dans ce cas, il se peux que la fin du 2ème click se croise avec le début du 3ème click ... mais c'est rare.
  2. Non, cela n'est plus possible de puis quelque version. Sorry
  3. Steven

    Support Gea

    J'avais pas vu le value > 0 Malheureusement, non, cette fonction "getDevicesId" ne permet aucun calcul, elle ne fait que de filtrer les données provenant de http://../api/devices Il faut donc que les valeur soient exactement les mêmes. Pour info, voici la méthode : fibaro.getDevicesId = function(self, filter) if type(filter) ~= 'table' or (type(filter) == 'table' and next(filter) == nil) then return fibaro:getIds(fibaro:getAllDeviceIds()) end local args = '/?' for c, d in pairs(filter) do if c == 'properties' and d ~= nil and type(d) == 'table' then for a, b in pairs(d) do if b == "nil" then args = args .. 'property=' .. tostring(a) .. '&' else args = args .. 'property=[' .. tostring(a) .. ',' .. tostring( .. ']&' end end elseif c == 'interfaces' and d ~= nil and type(d) == 'table' then for a, b in pairs(d) do args = args .. 'interface=' .. tostring( .. '&' end else args = args .. tostring(c) .. "=" .. tostring(d) .. '&' end end args = string.sub(args, 1, -2) return fibaro:getIds(api.get('/devices' .. args)) end
  4. Steven

    Support Gea

    Si tu veux faire le contrôle toi même, il faut simplement se baser sur la "value". Si cette dernière est > 0 alors la lampe est allumée. Pour une fois que c'est simple
  5. Steven

    Support Gea

    Cette nouvelle fonction fait gagné par mal de code fibaro:getDevicesId({properties = {isLight=true}})
  6. Steven

    Support Gea

    Tu peux remplacer par ceci : GEA.add({"SceneActivation", id["LED_ENTREE"] , 22}, -1, "", { {"function", function() for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:call(v, "turnOff") end end } })
  7. Steven

    Pushbullet

    De mémoire le Net.Fhttp ne reconnait pas les httpS .. c'est donc mort.
  8. PHP, je connais un peu mai (j'aime pas)
  9. Pour Jeedom, il y a une raison de ne pas y aller ... elle est simple .. elle est sans équivoque. Il n'y a pas de GEA for Jeedom. Heuu ok, ok ...
  10. Je confirme aussi que chez moi, cette version tourne àmerveille et que cela fait plaisir.
  11. 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
  12. Steven

    Support Gea

    Concernant l'histoire du vidéo projecteur, je suis désolé mais la proposition de @pepite ne va pas fonctionner En effet, la variable "videoproj" est mise à true lors d'un appel immédiat ( -1 ) alors que la vérification de cette dernière "videoproj" est fait dans un appel standard ( 10*60 ). Hors lors d'un appel immédiat, le moteur LUA charge une nouvelle instance de GEA. A ce moment précis, nous avons donc 1 instance de GEA qui traite le videoproj = true et une autre instance de GEA dans laquelle videoproj est et restera toujours à false. Ce genre de traitement fonctionne parfaitement mais uniquement avec des appels standards. Dommage car l'idée était vraiment bonne.
  13. Seulement 3x, zut j'en ai fait 5 :-) Je vais re-tenter encore et encore comme @mprinfo.
  14. @Bobby @ Moicphil : Idem pour moi aussi, 2 FGMS .. installation de la 2.6 -> 2.8 jusqu'au bout sans accros (2 réveils (1 au début, 1 au milieu de la procédure), reboot, ...) mais ils sont toujours en 2.6
  15. Pour le test de performance, je pense qu'on peu oublier de revoir des beaux chiffres comme on avait en 3.x. Par contre, ce qui est encourageant c'est qu'on a retrouvé une réactivité intéressante ce qui fait du bien (et ce depuis 2 ou 3 versions). Stabilité + Réactivité + Mise à jour des modules ... hummm manque les plugins utilisateurs et on est tout bon, voir trop bon. Quelqu'un connaîtrais une box qui plante de temps en temps, je suis un nostalgique ?
  16. Scènes grisées Pour info, après la mise à jour, bien que j'ai rafraîchi mon navigateur, j'avais toutes mes scènes qui étaient grisée (elles sont toutes en automatique et actives). J'ai du re-rafraichir (CTRL+Refresh) mon navigateur depuis l'onglet "Scènes" pour que tout redevienne normal.
  17. Ils ont modifier le code afin de palier au soucis des erreurs 503 .. voici un extrait des lignes de codes. if error == 503 then capture_screen display capture_screen reboot_hc2_silent remove capture_screen end
  18. 1 erreur 503 par jour en moyenne. Et moi aussi, il m'est arrivé que plus aucun VD exploitant net.http ne fonctionne.
  19. Steven

    Pushbullet

    Pour moi, l'une des plus grande plus value est de recevoir mes notifications sur mon PC de travail et aussi sur n'importe quel téléphone sans avoir besoin d'installer les 42Mb de l'application Fibaro :-)
  20. Steven

    Pushbullet

    Pour les caméras, avec mes connaissances, c'est pas vraiment possible car il faudrait : Transférer l'image de la caméra sur pushbullet Envoyé un push avec le lien de l'image transférée Le soucis est que je ne sais pas comment transférer un fichier depuis la HC2 vers l'extérieur
  21. Steven

    Pushbullet

    Je vais regarder comment faire pour les caméras ATTENTION : Erreur de scripts. A la ligne 105 : send = function(self, message, device) if (id) then doit être remplacé par send = function(self, message, device) if (device) then meaculpa
  22. Difficile de répondre sans avoir les mêmes coordonnées que toi. On est bien d'accord que &avoid=tolls ne concerne que les autoroutes à péages et pas les autres ? (Ne pas oublier le &)
  23. Je n'utilise plus tout cela depuis longtemps :-( Un profil actif est un profil qui répond à toutes les conditions à un moment précis. Exemple, si tu as un profil qui a comme condition "si le téléphone est branché à l'alimentation". Ton profil ne sera "actif" QUE lorsque tu sera branché. Dans le cas de mon vieux tuto .. le profil est actif quand il reçoit un SMS à traiter. Par "actif" il faut lire "répond à toutes les conditions".
  24. Steven

    Pushbullet

    Si te reprends mon exemple, il te suffit de ne créer qu'une seul scène ou tu colles tout dedans Ainsi : --[[ %% globals Pushbullet --]] local pushbullet = { token = "o.Af6SXfI4Qa8WZX1AFoWzozmVL5plEwGd", 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() local found for k,v in ipairs(data.devices) do if (v.model == device or v.iden == name) 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 } -- ============================================== -- Démarrage du script -- ============================================== local trigger = fibaro:getSourceTrigger() if (trigger.type == "other") then pushbullet:getDevices() elseif (trigger.type == "global") then local value = fibaro:getGlobalValue("Pushbullet") if (value ~= "") then pushbullet:send(value, nil) fibaro:setGlobal("Pushbullet", "") end end . . Tu auras un scène qui va envoyé un push via pushbullet chaque voit que tu mettras à jour ta variable globale "Pushbulltet" ... ATTENTION, il faut la créer Si par contre, tu lances la scène manuellement, elle va t'afficher la liste de tes appareils inscrits dans pushbullet.
  25. Steven

    Pushbullet

    Il faudrait modifier 2 lignes de GEA, rien de bien méchant pour ton HS. Pour tout ce qui est notification standard, je préfère les push. Par contre pour les trucs vraiment important (une porte qui s'ouvre quand elle devrait pas) je préfère les SMS. L'avantage de pushbullet c'est stable conservation d'un historique possibilité d'envoyé des push à quelqu'un d'autre (utilisant pushbullet) push de message, lien, image, fichier Mirroring .. mes push apparaissent aussi son mon PC quand je travaille Avec la version PRO et Android, je peux même répondre à mes SMS depuis mon PC, piloter ma musique, copier/coller entre PC et téléphone Bref, plein de trucs assez agréable
×
×
  • Créer...