Guru Posté(e) le 12 mars 2017 Signaler Partager Posté(e) le 12 mars 2017 (modifié) Hello, Pour créer un FakeDevice et utiliser une Zibase ( ça fonctionne ss doute avec d'autres box): Associer un module à votre HC2 qui vous intéresse ( détecteurs, sondes...) quelque soit la marque tant que le template fonctionne avec la HC2. Dissocier avec votre Zibase ou reseter le module si il vous le permet pour pourvoir le réutiliser ou en créer plusieurs Décocher non mort sur le VD qui sera notre FakeD Pour l'alimenter deux méthodes en fonction de vos besoins : Avec une variable --[[ %% globals OS4196965633_V2 --Votre variable de sonde --]] local fakedevice = 139 --Votre ID de FakeD local humidite = fibaro:getGlobalValue("OS4196965633_V2") api.put(payload, device) Ou avec une requête HTTP : 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 : --[[ %% properties 180 ui.Json.value --remplacer par ID de votre VD External --]] 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 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 A présent vous pouvez faire des requêtes HTTP pour un module d'ouverture par exemple (Remplacer 180 part ID de votre VD external et 160 part ID de votre FakeD): http://"VOTRE IP HC2"/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':true}" ou http://XXX.XXX.XX.XX/api/callAction?deviceID=180&name=setProperty&arg1=ui.Json.value&arg2="{'id':160,'value':false}" Si vous avez des questions hésitez pas c'est ma moindre des choses et un GRAND merci a maitre @Steven qui faut le dire à tout fait pour moi quasiment. External.vfib Modifié le 23 mars 2017 par Guru Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 12 mars 2017 Signaler Partager Posté(e) le 12 mars 2017 (modifié) Bonsoir, J'ai ca de cote, mais je n'ai pas de fake. Il y a un sujet sur les fake de @Lazer -- Ecrire Value dans Fake device OK local fakedevice = 116local W = 1234,56 local myJson = '{"properties":{"power":'..W..'}}' local payload = "/api/devices/"..fakedevicelocal HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:PUT(payload, myJson) Modifié le 12 mars 2017 par pepite 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 12 mars 2017 Auteur Signaler Partager Posté(e) le 12 mars 2017 whaou Complexe, je vais essayer de décrypter Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 12 mars 2017 Signaler Partager Posté(e) le 12 mars 2017 voici l'explication du maîte @Lazer http://www.domotique-fibaro.fr/index.php/topic/678-passerelle-enocean-fhem/?p=124228 Prenez un module mort, décocher la case "marquer comme mort" dans les propriétés du module. La HC2 essaye de la joindre, échoue, mais ne le marque pas comme mort. Et maintenant on peut lui updater ses propriétés. Je viens d'essayer avec un Dimmer sur lequel j'ai changé la valeur de consommation power. Avec le graph qui se mettait à jour en temps réel dans la panneau de consommation !!!!!! Je vais vous la faire autrement pour que ma pensée soit plus claire : - on inclue un module (du type qu'on souhaite (consommation, température, détecteur, etc)) - on le reset (via appui long sur le bouton, selon la méthode décrite dans la doc) sans l'exclure de la HC2 - il passe en noeud mort - en décoche la case 'marquer comme mort' => le module ne sera plus jamais mort, même si il n'existe plus - en peut l'utiliser à vie pour updater ses propriétés via l'API - Puis on recommande la procédure décrite ci-dessus autant de fois qu'on souhaite, afin d'avoir une infinité de modules, qui remplacent parfaitement les plugins. C'est pas génial ? Reste à voir sur la durée si il n'y a pas d'effet de bord à jouer ainsi avec des noeuds morts. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 12 mars 2017 Auteur Signaler Partager Posté(e) le 12 mars 2017 voici l'explication du maîte @Lazerhttp://www.domotique-fibaro.fr/index.php/topic/678-passerelle-enocean-fhem/?p=124228Prenez un module mort, décocher la case "marquer comme mort" dans les propriétés du module. La HC2 essaye de la joindre, échoue, mais ne le marque pas comme mort. Et maintenant on peut lui updater ses propriétés. Je viens d'essayer avec un Dimmer sur lequel j'ai changé la valeur de consommation power. Avec le graph qui se mettait à jour en temps réel dans la panneau de consommation !!!!!! Je vais vous la faire autrement pour que ma pensée soit plus claire : - on inclue un module (du type qu'on souhaite (consommation, température, détecteur, etc))- on le reset (via appui long sur le bouton, selon la méthode décrite dans la doc) sans l'exclure de la HC2- il passe en noeud mort- en décoche la case 'marquer comme mort' => le module ne sera plus jamais mort, même si il n'existe plus- en peut l'utiliser à vie pour updater ses propriétés via l'API- Puis on recommande la procédure décrite ci-dessus autant de fois qu'on souhaite, afin d'avoir une infinité de modules, qui remplacent parfaitement les plugins. C'est pas génial ? Reste à voir sur la durée si il n'y a pas d'effet de bord à jouer ainsi avec des noeuds morts. Oui merci j'en suis la mais le soucis c'est comment alimenter ce module ... il parle dapi mais cest pour une autre box je crois Envoyé de mon iPhone en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 13 mars 2017 Signaler Partager Posté(e) le 13 mars 2017 Tu as ton module sur ta Zibase : OK Tu as le VD qui interroge ta Zibase et remonte la valeur dans une variable globale : OK Tu as créer un Fake Device : OK Il te manque donc juste un scénario ... imaginons que ta variable globale est : VS12345_V2 et que l'ID de ton Fake Device est le 112, voici le scénario : --[[ %% globals VS12345_V2 --]] local fakedevice = 112 local humidite = fibaro:getGlobalValue("VS12345_V2") local myJson = '{"properties":{"value":'..humidite..'}}' local payload = "/api/devices/"..fakedevice local HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:PUT(payload, myJson) A chaque changement de valeur de ta variable globale "VS12345_V2" ce scénario va ce lancer et il va mettre à jour la valeur de ton Fake Device. 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 13 mars 2017 Auteur Signaler Partager Posté(e) le 13 mars 2017 (modifié) Merci @Steven mon sauveur comme d'habitude j'ai cherche un peu quand même si j'ai bien compris l'adresse IP 127.0... doit être celle de ma HC2 192.168.XX.XX et le port 80 ? Mais j'ai une erreur ligne 12 attempt to index global 'Net' (a nil value) --[[ %% globals OS4196965633_V2 --]] local fakedevice = 139 local humidite = fibaro:getGlobalValue("OS4196965633_V2") local myJson = '{"properties":{"value":'..humidite..'}}' local payload = "/api/devices/"..fakedevice local HC2 = Net.FHttp("192.168.XX.XX",80); local response, status, errorCode = HC2:PUT(payload, myJson) J'ai essayé dans un VD car j'ai lu dans un topic que ça ne fonctionne pas dans une scène, plus d'erreur mais ça fonctionne pas recap : Module Ocean -> Zibase -> VD -> Variable HC2 ( OS4196965633_V2 ): OK Création d'un Device que j'ai ensuite éteint et mis en non mort ( ID : 139 ): OK Modifié le 13 mars 2017 par Guru Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 L'IP 127.xxx et le port 11111 sont celles que tu utilises pour accéder à ta hcž SANS devoir entrer de mot de passe admin dans ton code. Les modules n'ont pas d'IP Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 Oui, l'IP 127.0.0.1, port 1111 est l'adresse interne à ta box, il ne faut pas le changer. Essaie ce code depuis un scénario stp : --[[ %% globals OS4196965633_V2 --]] local fakedevice = 139 local humidite = fibaro:getGlobalValue("OS4196965633_V2") local myJson = '{"properties":{"value":'..humidite..'}}' local payload = "/devices/"..fakedevice api:put(payload, myJson) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 14 mars 2017 Auteur Signaler Partager Posté(e) le 14 mars 2017 Ca donne : [DEBUG] 09:49:42: [1;31m2017-03-14 09:49:42.900106 [ fatal] Runtime error: No matching overload found, candidates: [DEBUG] 09:49:42: luabind::object put(lua_State*,std::string const&,std::string const&) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 Tu n'y mets pas de la bonne volonté ... tout le monde sait que c'est api.put et non pas api:put .... OK OK .. Je sors (c'est ma faute) api:put(payload, myJson) doit être remplacé par api.put(payload, myJson) 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 14 mars 2017 Auteur Signaler Partager Posté(e) le 14 mars 2017 Mddr ... pour moi ça commence a être du chinois mais j'essai de m'y intéresser, d'ailleurs l'API et myjson c'est se qui "gère" notre HC2 ? Sinon le code il n'y a pas d'erreur mais il se passe pas grand chose mis a part que mon interface rame et bug un peu.. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 la valeur n’apparaît pas sur ton device 119 ... oups ... 139 :-) Je suis en forme ce matin. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 14 mars 2017 Auteur Signaler Partager Posté(e) le 14 mars 2017 non, ni en scene ni en VD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 Bon ben faudra que je crée un fake device pour essayer. Pourrais-tu juste essayer ceci une dernière fois stp : --[[ %% globals OS4196965633_V2 --]] local fakedevice = 139 local humidite = fibaro:getGlobalValue("OS4196965633_V2") local payload = "/devices/"..fakedevice local device = api.get(payload) device.properties.value = humidite api.put(payload, device) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 14 mars 2017 Auteur Signaler Partager Posté(e) le 14 mars 2017 Pas d'erreur mais tjrs pas de maj de la valeur du fakeD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 14 mars 2017 Signaler Partager Posté(e) le 14 mars 2017 Ok, je regarde dès que je peux 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 14 mars 2017 Auteur Signaler Partager Posté(e) le 14 mars 2017 il y a 1 minute, Steven a dit : Ok, je regarde dès que je peux Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 C'est bon, j'ai trouvé la bonne syntaxe ... testé et approuvé --[[ %% globals OS4196965633_V2 --]] local fakedevice = 139 local humidite = tonumber(fibaro:getGlobalValue("OS4196965633_V2")) local prop = {properties = { value = humidite}} api.put("/devices/"..fakedevice, prop) 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guru Posté(e) le 16 mars 2017 Auteur Signaler Partager Posté(e) le 16 mars 2017 MERCI beaucoup de prendre de ton temps. Ca fonctionne parfaitement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 Alors je suis ... CONTENT 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 mais comment peut être content quand on a la tronche verte comme t'as en ce moment @Steven ? va falloir penser à consulter quand même Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 C'est la faute au forum, il me donne le titre "Maître Yoda du forum" :-) 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 bien mérité maître 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 16 mars 2017 Signaler Partager Posté(e) le 16 mars 2017 @Guru Si tu veux une seule scène pour gérer plusieurs Fake Device, voici un exemple : --[[ %% globals OS4196965633_V1 OS4196965633_V2 --]] local VAR_FAKE = { OS4196965633_V1 = 180, OS4196965633_V2 = 182 } local declencheur = fibaro:getSourceTrigger() local valeur = tonumber(fibaro:getGlobalValue(declencheur.name)) local prop = {properties = { value = valeur }} api.put("/devices/"..VAR_FAKE[declencheur.name], prop) Tu déclares tes variables dans l'entête et dans le tableau sous la forme <variable> = <fake_device_id> et le tour est joué. Chaque fois qu'une variable va changé, sa valeur sera envoyée dans le fake device correspondant. 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés