Guru Posté(e) le 16 mars 2017 Auteur Signaler Posté(e) le 16 mars 2017 (modifié) Hihihi j'avais fait ça : --[[ %% globals OS4196965633_V1 OS4196965633_V2 --]] local fakedevice_1 = 148 local fakedevice_2 = 150 local Temp = (tonumber(fibaro:getGlobalValue("OS4196965633_V1")) / 10) local prop1 = {properties = { value = Temp}} local humidite = tonumber(fibaro:getGlobalValue("OS4196965633_V2")) local prop2 = {properties = { value = humidite}} api.put("/devices/"..fakedevice_1, prop1) api.put("/devices/"..fakedevice_2, prop2) Mission échoué j'ai pas réussi à simplifier Modifié le 16 mars 2017 par Guru
Steven Posté(e) le 17 mars 2017 Signaler Posté(e) le 17 mars 2017 Tu as le / 10 qui dérange pour réellement pouvoir simplifier. Si tu n'as pas plus de Fake Device, cela ne vaut pas la peine de se prendre la tête, ton script est très bien. Si tu commence à en avoir une dizaine, il faudra le repenser gentiment pour éviter de mettre à jour 10 modules en même temps pour rien. En tout cas bien joué 1
Guru Posté(e) le 17 mars 2017 Auteur Signaler Posté(e) le 17 mars 2017 Si si je patiente les modules Fibaro car actuellement je ne peux pas "reseter" le DSB05 donc j'ai commander un ouverture fermeture et l'oeil pour les sondes... 1
Guru Posté(e) le 20 mars 2017 Auteur Signaler Posté(e) le 20 mars 2017 J'ai reçu un fibaro FGK, inclusion ok fonctionnement ok, l'utiliser en fakeD ok mais l'utiliser en Fake + reset pour lui attribuer un nouvel ID et pouvoir l'utiliser tt cours impossible une astuce ?
Steven Posté(e) le 20 mars 2017 Signaler Posté(e) le 20 mars 2017 Il y a cette procédure pour resetter le FGK et pouvoir ensuite le réutiliser comme nouveau module. Citation 2. Resetting the Fibaro Door/Window Sensor There is one way to reset the Fibaro Door/Window Sensor. The procedure cleans its EPROM memory, including the main controller and Z-Wave network data. To reset the Fibaro Door/Window Sensor please follow below instructions: 1) Take off the Sensor's cover and remove battery. Make sure the TMP button is intact. 2) Touch the Sensor's body with a magnet, 3) Insert the battery, 4) Remove the magnet from the Sensor's body, 5) Remove the battery 6) Re-install the battery, 7) Reset will be confirmed by double LED blink. 1
Guru Posté(e) le 20 mars 2017 Auteur Signaler Posté(e) le 20 mars 2017 Oui mais non dans ma HC2 il le reconnaît bien je crois que ça reset la config seulement
jojo Posté(e) le 20 mars 2017 Signaler Posté(e) le 20 mars 2017 le principe est le suivant ; tu l'inclus tu modifies les paramètres comme tu veux (pour le fake) tu fais un reset device tu le réinclu (SANS exclusion préalable) => ce dernier sera le module réel que tu utiliseras. Ou tu re commences au point 2 si tu veux plusieurs fakes
Steven Posté(e) le 20 mars 2017 Signaler Posté(e) le 20 mars 2017 A ce que je comprends, @Guru semble dire que même en ayant resetter le FGK, ce dernier reste reconnu pas la HC2 ... impossible donc de le réinclure sans le supprimer. Pourtant la procédure dit bien que TOUTES les données seront perdues : config, contrôleur principale et données z-wave. Perso, je n'ai jamais testé ... quelqu'un ?
Guru Posté(e) le 20 mars 2017 Auteur Signaler Posté(e) le 20 mars 2017 J'ai réussi d'une manière différente, j'ai dissocié et associé avec ma zibase ensuite reset et la c'est ok nouveau module avec un nouvel ID étape suivante il va falloir que je modifie l'état de ce fakeD avec une requête http Envoyé de mon iPhone en utilisant Tapatalk 1
Steven Posté(e) le 21 mars 2017 Signaler Posté(e) le 21 mars 2017 Ça c'est facile, tu reprends le même scénario que pour le capteur d'humidité mais tu mets 0 ou 1 comme valeur. 0 étant fermé. Enfin facile est une manière de parler .. c'est jamais facile. 1
Guru Posté(e) le 21 mars 2017 Auteur Signaler Posté(e) le 21 mars 2017 (modifié) il y a 30 minutes, Steven a dit : Ça c'est facile, tu reprends le même scénario que pour le capteur d'humidité mais tu mets 0 ou 1 comme valeur. 0 étant fermé. Enfin facile est une manière de parler .. c'est jamais facile. Oui mais non car je ne peut pas utiliser le fichier de log pour ces modules donc je fais envoyer par la Zibase : http://XXXXX:XXXX@192.168.0.195/api/callAction?deviceID=112&name=pressButton&arg1=1 Ca c'était avant avec un VD maintenant que c'est un FakeD j'ai essayé la ligne ci dessous mais ce n'est pas la bonne action http://XXXXX:XXXX@192.168.0.195/api/callAction?deviceID=160&name=&name=&name=setValue&arg1=1 OUpsss en me relisant j'ai compris ma bêtise il faut que ma requête change une variable et c'est cette variable qui sera lu par ma scène que tu m'as créé l'autre jour Modifié le 21 mars 2017 par Guru
Steven Posté(e) le 21 mars 2017 Signaler Posté(e) le 21 mars 2017 A nouveau, facile a dire. Le soucis est que la Zibase ne permet que de faire des appels HTTP de type GET et la HC2 permet de modifier des données uniquement par le type PUT. Il y a une astuce que je vais de donner au prochain post, le temps de la mettre en place. Il est possible de modifier un label d'un VD via une requête HTTP GET ... la Zibase pourra donc modifier ce label. Ensuite, on crée un scénario qui agit dès que le label du VD change, et qui va lire la donnée reçu et modifier la valeur. Ainsi tu pourras modifier n'importe quel valeur de n'importe quel Fake Device sans ajouté d'autre scénario. De plus tu pourras caché le VD et le scénario. Je te tiens au courant.
Steven Posté(e) le 21 mars 2017 Signaler Posté(e) le 21 mars 2017 Voilà 1. Importer le VD External.vfib (c'est juste un VD avec un seul label) ... noter son ID 2. Créer une scène et copier le code du fichier External.lua 3. Modifier 194 ui.Json.value par le numéro de ton VD (importé en point 1) A partir de maintenant, tu peux envoyer des requêtes HTTP de type GET : Pour un ID <-> Valeur http://<ip hc2>/api/callAction?deviceID=194&name=setProperty&arg1=ui.Json.value&arg2="{'id':181,'value':55}" Pour plusieurs ID <-> Valeur http://<ip hc2>/api/callAction?deviceID=194&name=setProperty&arg1=ui.Json.value&arg2="[{'id':181,'value':55},{'id':182,'value':28.2}]" External.vfib External.lua 2
Guru Posté(e) le 21 mars 2017 Auteur Signaler Posté(e) le 21 mars 2017 Alors alors FakeD détecteur d'ouverture ID:160 VD ok ID: 180 Scene External ok ID:70 --[[ %% properties 180 ui.Json.value --]] actions = { ["ui.Json.value"] = function(values) setValues(values) end, } -- ----------------------------------------------------- -- set la ou lesvaleurs d'un module -- Ex : [{'id':123, 'value':100}, {'id':234, 'value':'Message'}] -- ----------------------------------------------------- function setValues(values) fibaro:debug(values) local tablejson = json.decode(values) if (#tablejson > 0) then for k,v in pairs(tablejson) do setValue(v) end else setValue(tablejson) end end -- ----------------------------------------------------- -- set la valeur d'un module -- Ex : {'id':123, 'value':100} -- ----------------------------------------------------- function setValue(v) fibaro:debug(json.encode(v)) local valeur = v.value or 0 local prop = {properties = { value = valeur }} --print(valeur .. " .. " .. VAR_FAKE[declencheur.name]) api.put("/devices/"..v.id, prop) 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 Ensuite je tape dans la barre d'adresse Firefox : http://192.168.0.195/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':1}" ou http://192.168.0.195/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':0}" Il se passe rien
Guru Posté(e) le 21 mars 2017 Auteur Signaler Posté(e) le 21 mars 2017 J'ai essayé ça idem ça fonctionne pas --[[ %% globals OS4196965633_V1 OS4196965633_V2 BVtest --]] local fakedevice_1 = 148 local fakedevice_2 = 150 local fakedevice_3 = 160 local Temp = (tonumber(fibaro:getGlobalValue("OS4196965633_V1")) / 10) local prop1 = {properties = { value = Temp}} local humidite = tonumber(fibaro:getGlobalValue("OS4196965633_V2")) local prop2 = {properties = { value = humidite}} local BV1 = tonumber(fibaro:getGlobalValue("BVtest")) local prop3 = {properties = { value = BV1}} api.put("/devices/"..fakedevice_1, prop1) api.put("/devices/"..fakedevice_2, prop2) api.put("/devices/"..fakedevice_3, prop3)
Nico Posté(e) le 21 mars 2017 Signaler Posté(e) le 21 mars 2017 J'ai pas tout lu, mais moi j'ai fais comme ça pour tous mes capteurs d'ouvertures, détecteurs de mouvements de mon alarme RF433 qui remonte aussi sur la Zibase. Exemple pour un détecteur d'ouverture sur une fenêtre, ici l'action ouverture : Côté Zibase (533 c'est le CD passerelle sur la HC2) : http://user:password@IP_HC2/api/callAction?deviceID=533&name=pressButton&arg1=24 Côté HC2, un seul VD que j'appelle passerelle Zibase, avec un bouton par action (531 c'est le fake device à mettre à jour) : local ID = 531 local HC2 = Net.FHttp("127.0.0.1", 11111) local data = '{"properties":{"value":true}}' local selfId = fibaro:getSelfId(); local icon = fibaro:get(selfId, "deviceIcon"); fibaro:call(selfId, "setProperty", "currentIcon", icon) HC2:PUT("/api/devices/"..tostring(ID), data) Et voilà. Je pense que la solution de Steven est sans doute plus pro, moi j'ai fais au plus vite et simple à l'époque, j'ai jamais relu ce que j'avais fais depuis. Je suis content d'avoir eu les boutons au départ, car je n'avais qu'une Zibase qui ne couvrait pas 100% la surface de la maison (Car la Zibase est complétement dans un coin de la maison, au garage), et du coup cela me permettait de forcer la mise à jour, quand j'avais la flemme d'aller à la fenêtre ouvrir et refermer pour que cela se mette à jour Depuis j'ai ajouté 2 autres Zibase en esclave de la principale (Vraiment top cette fonctionnalité), et du coup nickels ! 1
pepite Posté(e) le 22 mars 2017 Signaler Posté(e) le 22 mars 2017 Bonjour @Guru, tu eux essayer avec cela : ["ui.Json.value"] = function(value) setValue(value) end, 1
Steven Posté(e) le 23 mars 2017 Signaler Posté(e) le 23 mars 2017 Ok, j'ai trouvé, il y a un soucis dans le code qui bloque les appels nécessitant un true, false au lieu de 1,0 La ligne local valeur = v.value or 0 Il faut enlever le "or 0" Car si la valeur envoyé est "false", il va le transformer en 0 au lieu de "false". Une fois que cette correction est appliquée, tu pourras envoyé : http://192.168.0.195/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':true}" ou http://192.168.0.195/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':false}" Et voilà, maintenant tu as un script capable de géré (je l'espère) tous les fakes devices. 2
Guru Posté(e) le 23 mars 2017 Auteur Signaler Posté(e) le 23 mars 2017 Merci tt le monde et merci maitre @Steven Ca fonctionne top top top c'est classe
Nico Posté(e) le 23 mars 2017 Signaler Posté(e) le 23 mars 2017 Guru, du coup tu peux mettre en premier post la version final du code du script ? 1
Guru Posté(e) le 23 mars 2017 Auteur Signaler Posté(e) le 23 mars 2017 (modifié) il y a une heure, Nico a dit : Guru, du coup tu peux mettre en premier post la version final du code du script ? C'est fait avec un résume tuto des manips Modifié le 23 mars 2017 par Guru
Steven Posté(e) le 23 mars 2017 Signaler Posté(e) le 23 mars 2017 Me semble qu'il manque des lignes sur le premier scénario "par variable globale".
pepite Posté(e) le 23 mars 2017 Signaler Posté(e) le 23 mars 2017 (modifié) Bonsoir, bien vu master @Steven, pas compris ce qu'il se passait mais top Oui je crois qu'il manque ca Et peut-être que les modérateurs peuvent déplacer dans la section TUTO ;-) Modifié le 23 mars 2017 par pepite 1
Rem's Posté(e) le 24 avril 2017 Signaler Posté(e) le 24 avril 2017 Bonjour à tous, J'essaye avec ceci de récupérer la conso d'une variable (pince ampèremétrique IPX 800 via X400 ct, le module des pinces), mais rien ne se passe, la conso ne se met pas à jour J'ai essayé avec "power" et powerConsumption", et donc "energy". fibaro:debug("Fin de script") --[[ %% globals X400ct2 --]] local fakedevice = 566 local energy = tonumber(fibaro:getGlobalValue("energy")) local prop = {properties = { value = energy}} api.put("/devices/"..fakedevice, prop) fibaro:debug("Fin de script") J'ai du raté un truc mais quoi .... d'avance merci pour votre aide
pepite Posté(e) le 24 avril 2017 Signaler Posté(e) le 24 avril 2017 Bonsoir, Tu utilises quoi comme fakedevice ? Poste le json ;-) pour être sur. Pour moi le code est OK.
Messages recommandés