-
Compteur de contenus
339 -
Inscription
-
Dernière visite
-
Jours gagnés
19
Tout ce qui a été posté par Barelle
-
Le test msg.payload.indexOf("53") != -1 est inutile, les valeurs retournées sont identiques. Où est créé la variable msg.payload.indexOf ?
-
J'avais compris que le sujet concerne le Portail N° 1... Il me semble ne pas avoir été bien lu. Dans la fonction Port 2, il y a un return [p52]; or p52 n'y est pas défini. Donc j'ignore il y aura une erreur, par ailleurs je suppose que syntaxiquement, dans les fonctions p2 à p5 (celles de gauche), il faudrait écrire : var tmp = (flow.get("tmpVar")) + 1; flow.set("tmpVar", tmp); var msg1 = {}; msg1.payload = {payload:msg.payload.value === 0 ? "52=OFF" : "52=ON"} return msg1; Ci-après un script de test implémentant un timer de 2 secondes : test.json
-
Bon, je ne comprends pas tout, surtout que je n'ai pas exploré les fonctions de dashboard : Déjà dans la fonction Port 2 : var tmp = (flow.get("tmpVar")) + 1; flow.set("tmpVar", tmp); var p53 = {payload:msg.payload.value === 0 ? "52=OFF" : "52=ON"} ///msg = {icon: '<font color = "white" i class="fa fa-book fa-2x"></i>'}; return [p52]; j'aurais plutôt vu un var p52 = ... ou alors un return [p53]... Ensuite, avec la fonction resend every 5s, le message sera envoyé toutes les 5 secondes, ce qui me parait curieux. Pour ma part, j'aurais plutôt prévu en sortie de la fonction Port 2, un lien direct vers Portail N° 1 et un second lien vers une fonction delay de 2 secondes dont la sortie est une fonction avec le code var msg1 = {}; msg1.payload = "52=OFF"; return msg1; La sortie de cette fonction étant reliée à l'entrée de portail N° 1. Cela répond-il à la question ? ou je n'ai vraiment rien compris...
-
J'utilise Node-RED, mais ne lis pas de question...
-
Aide LUA : Tri des données d'une matrice
Barelle a répondu à un(e) sujet de BenjyNet dans Le bistrot
Alors ceci devrait faire l'affaire : local str = "1571436000 - 1572822000 | Vacances de la Toussaint" local date1 = string.match(str, "(%d+)%s"); local date2 = string.match(str, "-%s(%d+)%s"); local libelle = string.match(str, "|%s(.+)"); fibaro:debug(os.date("%d-%m-%Y", date1) .. " " .. os.date("%d-%m-%Y", date2) .. " " .. libelle); -
Aide LUA : Tri des données d'une matrice
Barelle a répondu à un(e) sujet de BenjyNet dans Le bistrot
Cela répond-il à la question ? function formatDate(sdate) -- Transforme une date en string en date exploitable year, month, day = sdate:match("(%d+)-(%d+)-(%d+)"); if (year == nil) or (month == nil) or (day == nil) then return "???"; else return day.."-"..month.."-"..year; end end -- formatDate -
Dans une scène, local user = api.get("/loginStatus"); permet de connaître l'utilisateur qui a lancé la scène. A essayer dans un VD.
-
topic unique Fibaro Switch 2 - FGS-213 / FGS-223
Barelle a répondu à un(e) sujet de BenjyNet dans Modules Fibaro
On est d'accord, même si ma remarque initiale était erronée. -
topic unique Fibaro Switch 2 - FGS-213 / FGS-223
Barelle a répondu à un(e) sujet de BenjyNet dans Modules Fibaro
Dans ce cas, ok, mais elle n'a rien à faire sur ce schéma, ou alors en la rejetant au delà du fil connectée à la borne N, juste pour montrer qu'une ampoule z-wave est alimentée par le secteur. -
topic unique Fibaro Switch 2 - FGS-213 / FGS-223
Barelle a répondu à un(e) sujet de BenjyNet dans Modules Fibaro
Avec le schéma précédent, l'ampoule sera toujours allumée. Elle doit être branchée entre le neutre et la borne Q du FGS... -
Aide LUA : Tri des données d'une matrice
Barelle a répondu à un(e) sujet de BenjyNet dans Le bistrot
table.sort(nomDeLaTable, function(a, b) return a.Start < b.Start; end); -
Oups, j'avais mal lu... Et en s'inspirant de : Pour une scène les actions pouvant être : start, stop, enable ou disable.
-
Fonctions de contrôle des scènes : fibaro:abort() fibaro:getSourceTrigger() fibaro:getSourceTriggerType() fibaro:startScene(sceneID) fibaro:killScenes(sceneID) fibaro:setSceneEnabled(sceneID, enabled) fibaro:isSceneEnabled(sceneID) fibaro:countScenes(sceneID)
-
Le navigateur utilisé est-il bien Internet Explorer ?
- 1 631 réponses
-
- topic unique
- surveillance
-
(et 2 en plus)
Étiqueté avec :
-
Et en mettant : if tonumber(status) == 200 then à la place de : if status == 200 then
-
Peut-être avec le code ci-après : local thisdevice = fibaro:getSelfId() local taskId = "1" local conn = Net.FHttp(fibaro:getValue(thisdevice, 'IPAddress'), fibaro:getValue(thisdevice, 'TCPPort')) -- connection espeasy/port response, status, errorCode = conn:GET('/json?tasknr=' .. taskId) fibaro:debug(response) //fibaro:sleep(1) if status == 200 then jsonTable = json.decode(response); -- decodage de la table json espeasy for _, row in ipairs(jsonTable.TaskValues) do fibaro:debug(json.encode(row)) -- Pour aider à la compréhension... if row.Name == "Temperature" then temp = row.Value elseif row.Name == "Humidity" then hum = row.Value end end fibaro:debug("temp="..temp..", hum="..hum); fibaro:call(thisdevice, "setProperty", "ui.Label1.value", temp .."°") -- affichage du resultat dans le label 1 fibaro:call(thisdevice, "setProperty", "ui.Label2.value", hum .."%") -- affichage du resultat dans le label 2 else fibaro:debug("error") fibaro:call(thisdevice, "setProperty", "ui.Label1.value", "error") fibaro:call(thisdevice, "setProperty", "ui.Label2.value", "error") end
-
Il faudrait sans doute supprimer la ligne jsonTable = '{ "TaskValues": [ {"ValueNumber":1, "Name":"Temperature", "NrDecimals":2, "Value":22.00 }, {"ValueNumber":2, "Name":"Humidity", "NrDecimals":2, "Value":59.00 }], "TTL":2000, "DataAcquisition": [ {"Controller":1, "IDX":1, "Enabled":"true" }, {"Controller":2, "IDX":0, "Enabled":"false" }, {"Controller":3, "IDX":0, "Enabled":"false" }], "TaskInterval":2, "Type":"Environment - DHT11/12/22 SONOFF2301/7021", "TaskName":"temp-Humidite", "TaskEnabled":"true", "TaskNumber":1 }' qui n'était là que pour les tests...
-
Les câbles ont-ils été changés ?
-
fibaro:call(thisdevice, "setProperty", "ui.Label1.value", temp.." °") fibaro:call(thisdevice, "setProperty", "ui.Label2.value", hum.." %") Et voilà ! De rien.
-
Le même code un peu plus propre, les indices 1 et 2 codés en dur n'étant pas très élégants... On recherche donc les valeurs Temperature et Humidity dans la table. jsonTable = '{ "TaskValues": [ {"ValueNumber":1, "Name":"Temperature", "NrDecimals":2, "Value":27.00 }, {"ValueNumber":2, "Name":"Humidity", "NrDecimals":2, "Value":64.00 }], "TTL":2000, "DataAcquisition": [ {"Controller":1, "IDX":1, "Enabled":"true" }, {"Controller":2, "IDX":0, "Enabled":"false" }, {"Controller":3, "IDX":0, "Enabled":"false" }], "TaskInterval":2, "Type":"Environment - DHT11/12/22 SONOFF2301/7021", "TaskName":"temp-Humidite", "TaskEnabled":"true", "TaskNumber":1 }' jsonTable = json.decode(jsonTable) for _, row in ipairs(jsonTable.TaskValues) do fibaro:debug(json.encode(row)) -- Pour aider à la compréhension... if row.Name == "Temperature" then temp = row.Value elseif row.Name == "Humidity" then hum = row.Value end end fibaro:debug("temp="..temp..", hum="..hum);
-
Ce code fonctionne : jsonTable = '{ "TaskValues": [ {"ValueNumber":1, "Name":"Temperature", "NrDecimals":2, "Value":27.00 }, {"ValueNumber":2, "Name":"Humidity", "NrDecimals":2, "Value":64.00 }], "TTL":2000, "DataAcquisition": [ {"Controller":1, "IDX":1, "Enabled":"true" }, {"Controller":2, "IDX":0, "Enabled":"false" }, {"Controller":3, "IDX":0, "Enabled":"false" }], "TaskInterval":2, "Type":"Environment - DHT11/12/22 SONOFF2301/7021", "TaskName":"temp-Humidite", "TaskEnabled":"true", "TaskNumber":1 }' jsonTable = json.decode(jsonTable) local temp = jsonTable.TaskValues[1].Value; local hum = jsonTable.TaskValues[2].Value; fibaro:debug("temp="..temp..", hum="..hum);
-
Le premier exclus permet de vérifier l'existence de la variable exclus et est équivalent à exclus ~= nil. La variable existant, le second test permet de s'assurer que ce n'est pas une chaîne vide.
- 215 réponses
-
- Module virtuel
- alarme
-
(et 1 en plus)
Étiqueté avec :
-
Bon, je vais essayer de me rattraper en avançant une explication pour le bug mentionné par Did. La scène utilise deux variables globales pour récupérer dans la fonction Update les données de la fonction getResponseData. Ces données sont récupérées de manière asynchrone par getResponseData. Quand la fonction Update lit la valeur des variables globales, celles-ci n'ont peut être pas encore été mise à jour par getResponseData. D'où des annonces erronées... Comment corriger ? 1) en n'utilisant plus de variables globales, le VD n'en ayant plus besoin. 2) en séparant les mises à jour des labels et des notifications relatives aux actuelles tables jsonTable0 et jsonTable1 dans des fonctions distinctes. 3) en appelant ces fonctions depuis la fonction success de getResponseData. Remarque : ces fonctions de mise à jour des labels et des notifications peuvent-être passées en paramètre à la fonction getResponseData (paramètre func), sous réserve de bien lancer func dans le cas (response.status==200). I hope this helps.
-
@Dragoniacs, au temps pour moi, il est exact que la table jsonTable1 indique en première position les prévisions du jour. Ma remarque était donc erronée...
-
L'annonce du jour est correcte, les données météo sont, elles, décalées d'une journée.