Aller au contenu

Barelle

Membres confirmés
  • Compteur de contenus

    97
  • Inscription

  • Dernière visite

Réputation sur la communauté

66 Excellent

À propos de Barelle

  • Rang
    Membre interessé

Profile Information

  • Sexe :
    Homme
  • Ville :
    Lauragais
  • Box
    Home Center 2
  • Version
    4.540

Visiteurs récents du profil

577 visualisations du profil
  1. Barelle

    Esp-easy

    Et en mettant : if tonumber(status) == 200 then à la place de : if status == 200 then
  2. Barelle

    Esp-easy

    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
  3. Barelle

    Esp-easy

    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...
  4. Barelle

    Reseau et fibre

    Les câbles ont-ils été changés ?
  5. Barelle

    Esp-easy

    fibaro:call(thisdevice, "setProperty", "ui.Label1.value", temp.." °") fibaro:call(thisdevice, "setProperty", "ui.Label2.value", hum.." %") Et voilà ! De rien.
  6. Barelle

    Esp-easy

    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);
  7. Barelle

    Esp-easy

    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);
  8. Barelle

    Module Virtuel Alarme Avancée

    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.
  9. Barelle

    Infos Météo avec Weatherbit

    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.
  10. Barelle

    Infos Météo avec Weatherbit

    @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...
  11. Barelle

    Infos Météo avec Weatherbit

    L'annonce du jour est correcte, les données météo sont, elles, décalées d'une journée.
  12. Barelle

    Infos Météo avec Weatherbit

    Je n'utilise pas les notifications, mais à la lecture du code de la scène, il me semble que les lignes : -- Définition des textes audio today_speach = Jours(tonumber(os.date("%w"))) .." : " .. jsonTable1.data[1].weather.description .. ". " .." Température entre ".. round(jsonTable1.data[1].min_temp,0) .." et ".. round(jsonTable1.data[1].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable1.data[1].wind_spd*3.600) .." kilomètres par heure, en provenance ".. jsonTable1.data[1].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable1.data[1].precip,0) .. " milimètres. " tomorrow_speach = Jours(tonumber(os.date("%w"))+1) .." : " .. jsonTable1.data[2].weather.description .. ". " .." Température entre ".. round(jsonTable1.data[2].min_temp,0) .." et ".. round(jsonTable1.data[2].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable1.data[2].wind_spd*3.600) .." kilomètres par heure, en provenance ".. jsonTable1.data[2].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable1.data[2].precip,0) .. " milimètres. " devraient plutôt être : -- Définition des textes audio today_speach = Jours(tonumber(os.date("%w"))) .." : " .. jsonTable0.data[1].weather.description .. ". " .." Température entre ".. round(jsonTable0.data[1].min_temp,0) .." et ".. round(jsonTable0.data[1].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable0.data[1].wind_spd*3.600) .." kilomètres par heure, en provenance ".. jsonTable0.data[1].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable0.data[1].precip,0) .. " milimètres. " tomorrow_speach = Jours(tonumber(os.date("%w"))+1) .." : " .. jsonTable1.data[1].weather.description .. ". " .." Température entre ".. round(jsonTable1.data[1].min_temp,0) .." et ".. round(jsonTable1.data[1].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable1.data[1].wind_spd*3.600) .." kilomètres par heure, en provenance ".. jsonTable1.data[1].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable1.data[1].precip,0) .. " milimètres. " En effet, jsonTable0.data[1] contient les prévisions pour aujourd'hui, alors que les prévisions du lendemain sont dans jsonTable1.data[1]...
  13. Barelle

    Infos Météo avec Weatherbit

    Du moment que la scène "boucle" par l'utilisation des setTimeout, il n'est plus utile de la lancer depuis le VD, d'autant plus quelle est en autostart. Donc la mainloop du VD peut effectivement être vide, tout étant maintenant réalisé dans la scène
  14. Barelle

    Infos Météo avec Weatherbit

    Je ne pense pas que cela vienne de l'API, mais plutôt du fait que os.date("%w") retourne une valeur entre 0 et 6, 0 étant le dimanche. Aussi, dans la fonction jour... function jour(j) if j > 6 then j = 0 end local jourSemaine = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; return jourSemaine[j+1]; end -- jour
  15. Barelle

    Notifications Interactive pour lancer une scéne

    Le dimanche, vaste sujet.. Selon le dictionnaire de l'Académie (9e édition) : Donc, ce n'est pas clair, heureusement, la norme ISO 8601 est là pour nous préciser que le dimanche clôt la semaine et a pour code le chiffre 7. Le problème se complexifie dans les langages informatiques selon que l'indice de départ est "zéro" (algol, C, pascal et leur dérivés) ou "un", comme notamment le Lua. Par conséquent, pour le dimanche on peut rencontrer comme code : 0, 1, 6 ou encore 7 ! En pratique, il est prudent de vérifier au cas par cas...
×