Aller au contenu

MAM78

Membres confirmés
  • Compteur de contenus

    1 508
  • Inscription

  • Dernière visite

Réputation sur la communauté

244 Excellent

À propos de MAM78

  • Rang
    Gourou du forum

Profile Information

  • Sexe :
    Homme
  • Ville :
    IDF
  • Intéret :
    La technologie et le confort de vie.
    Pêche à la mouche, le ski, ...
  • Box
    Home Center 2
  • Version
    4.512

Visiteurs récents du profil

Le bloc de visiteurs récents est désactivé et il n’est pas visible pour les autres utilisateurs.

  1. MAM78

    net.HTTPClient()

    @Lazer Laisse tomber mon message ci-dessus. J'ai trouvé J'ignore pourquoi, mais lorsque je lance la scène depuis un VD, ça fonctionne Mais lorsque je lance la scène en manuel, ça ne marche pas. Je sais ce n'est pas l'objet de ce type de scène qui doivent être lancé depuis une autre scène ou VD. Mais maintenant, je m'arrache les cheveux pour construire la structure du code pour que les enchainements se fassent bien
  2. MAM78

    net.HTTPClient()

    J'ai avancé sur mon code, mais je n'arrive à faire fonctionner les appels via la fonction setTimeout. Elle n'execute pas la fonction les appels aux fonction getAPI() ou postAPI(). SI je prends l'exemple de ta fonction : power ci-dessous, dans la ligne : setTimeout(function() getAPI("/YamahaExtendedControl/v1/".._parameters[VD_s_id].zone.."/setPower?power=".._value, "setPower", power) end, 0) l'appel de la fonction getAPI ne s'execute pas. J'ai mis des traces au début de la fonctions getAPI() mais elles n'apparaissent pas. Si j'enlève la partie setTimeout(function() de la façon suivante : getAPI("/YamahaExtendedControl/v1/".._parameters[VD_s_id].zone.."/setPower?power=".._value, "setPower", power) dans ce cas, je rentre bien dans la fonction getAPI (avec affichage de mes traces), mais là, l'appel à la fonction : httpClient:request("http://" .. ip .. ":" .. tostring(port) .. url, { ne provoque aucun retour, ni dans success, ni error. Je ne vois vraiment pas d'où vient le PB. Tu pourrais STP m'indiquer la cause ? local function power(verb, data) if not verb then if debug then Message("pink", "power() : call getAPI(setPower)") end setTimeout(function() getAPI("/YamahaExtendedControl/v1/".._parameters[VD_s_id].zone.."/setPower?power=".._value, "setPower", power) end, 0) elseif verb == "setPower" then Success() else Die('Warning : verb "' .. (verb or "???") .. '" unknown') end end -- function
  3. MAM78

    net.HTTPClient()

    Je viens de regarder ta scene : Yamaha MusicCast - Scene v1.0.lua et ses VD associé. C'est exactement cette mécanique que je souhaite mettre en place une scene qui : Sollicite une API via des requêtes HTTPClient() reçoit des ordres (action) en provenance d'un ensemble de VD met à jour des labels de ses même VD en fonction des ordres reçus Maintenant, je vais devoir comprendre son fonctionnement pour l'adapter à mon besoin. C'est une très bonne base de départ Mais j'ai un peu de mal a comprendre le fonctionnement des lignes ci-dessous dans tes fonctions ( getAPI() et getAPI() ), notamment la ligne : setTimeout(function() callback(verb, jsonTable) end, 0) -- Execute callback function if callback and type(callback) == "function" then if debug then Message("purple", "getAPI() : callback...") end setTimeout(function() callback(verb, jsonTable) end, 0) end Je suppose que pour comprendre qu'il faut l'associer à l'exemple du code suivant : if debug then Message("pink", "link() : call postAPI(setClientInfo)") end setTimeout(function() postAPI("/YamahaExtendedControl/v1/dist/setClientInfo", "setClientInfo", link, {group_id=group_id, zone={_parameters[client_vd_s_id].zone}}, client_ip, client_port) end, 0) elseif verb == "setClientInfo" then Je l'impression que c'est bien là le fond du sujet évoqué précédemment ? Pourrais-tu STP m'expliquer un peu le principe de fonctionnement et notamment au regard de nos échanges précédents ?
  4. MAM78

    net.HTTPClient()

    En faite ma question j'aurais du préciser ma question. Comment ext-ce que l'on fait dans le cas d'une de l'appel à la fonction HTTPClient() dans une boucle ?
  5. MAM78

    net.HTTPClient()

    1) Il n'est donc pas possible de créer une fonction générique HTTPClient() puisque chaque fois que l'utilise il faut qu'elle contienne les traitements spécifique que l'on veut exécuter. C'est bien ça ? 2) est-ce que l'on peut dans success() lancer une autre fonction HTTPClient() ? 3) si oui à la question précédente ça devient vite compliquer à programmer, je prends l'exemple suivant : On se connect à un serveur via un ID de connection mais que celui-ci ne fonction plus On se reconnect au un serveur via un login et mot de passe pour obtenir un nouvel ID On se reconnect au au serveur serveur via le nouvel ID et l'on execute une requête pour obtenir des premiers infos via une API. On se reconnect au au serveur serveur via le nouvel ID et l'on execute une requête pour obtenir des deuxièmes infos via une API. On se reconnect au au serveur serveur via le nouvel ID et l'on execute une requête pour obtenir des Xièmes infos via une API. Cela veux dire que le code doit être structuré de façon à cascader chacune des étapes ? Ca m'a l'air bien lourd ou il y a quelque chose qui m'échappe. 4) Comment s'assurer que l'appel à une fonction HTTPClient() est terminée pour poursuivre les traitements suivants ?
  6. MAM78

    net.HTTPClient()

    Je viens de trouver ton post sur le sujet : Il y a probablement les réponses mes questions
  7. MAM78

    net.HTTPClient()

    Merci Laser pour tes réponse, Pour les scènes le fonction Net.FHttp() n'étant pas disponible, je suis obligé d'utiliser HTTPClient(). 1) Sont-elle toutes le 2 deux asynchrone ? 2) Tu veux dire que que l'appel à http:request() va me redonner la main alors que sont traitement ne serait pas terminé. C'est bien ce que tu veux dire par asynchrone ? 3) C'est ce que je supposais également. Mais comment faire le test ? Ralentir le serveur cible pour que le requête tombe en timeout ?
  8. MAM78

    net.HTTPClient()

    Y-a personne pour m'aider ?
  9. MAM78

    net.HTTPClient()

    Hello, Je cherche à écrire une fonction générique pour executer une requête HTTPClient. Voici mon code et j'ai quelques questions sur celui-ci : 1) Dans que cas il est conseillé d'encadrer la fonction http.request par une fonction pcall() comme ceci ? local ok = pcall(function() http:request(Query, { 2) Dans que cas il est conseillé d'encadrer la fonction json.decode, response.data par une fonction pcall() comme ceci ? pcall(json.decode, response.data) 3) Dans mon code ci-dessous le traitement des données retournée par la requête est lancé à l'intérieur de la fonction. Est-ce possible (souhaitable) que le traitement des données soit fait à l'extérieur de la requête, soit par exemple : success, data = GetData(Query) if success then traitement_data(data) end Sachant que dans le code ci-dessous, après la ligne if (status and data) then, il aurait : return true, data et dans les autres cas return false 4) Comment intercepté que la requête est tombée timeout ? Ou fait-il mettre un test pour détecter le timeout et comment faire ce test. Merci d'avance pour vos explications local TimeOut = 3000 function GetData(Query) local Synology = net.HTTPClient({ timeout = TimeOut }) local ok = function() http:request(Query, { options = { method = 'GET', headers ={ ["Content-Type"] = "application/json", ["Authorization"] = "BASIC "..User_code_API_Encode64}, data = body }, success = function(response) if response.status == 200 then Trace("blue","Traitement ok : ".."") local status, data = json.decode, response.data if (status and data) then Trace("orange"," OK -> Traitement des données") else Trace("orange"," Attention : Aucunes données à traiter") end else if response.status == 500 or response.status == 503 then Trace("orange","Erreur d'indisponibilité du serveur") else Trace("orange","Erreur requête serveur, response.status = "..response.status) end end end, error = function(err) Trace("orange","Erreur de reception de données, Erreur = ".. err) end }) end if not(ok) then Trace("orange","Erreur dans l'exécution de http:request(Query...") end end
  10. Sauf erreur de ma part, les programmations avec -1 n'apparaissent pas au lancement (sauvegarde) de GEA. Ces programmations ne s'afficheront que lors du changement d'état du device, du label ou de la VG.
  11. Ok a+
  12. Et pour moi tu verrais quoi
  13. Tu as du oublié de déclarer ton device dans l'entête pour générer le déclenchement instantané !
  14. MAM78

    Plugin - Virtual Sensor

    C'est toujours sans aucun espoir qu'ils nous donnent un jour l'accès que DEV de plugins ?
  15. MAM78

    YAPUSS - Passerelle "Universelle" Surveillance Station

    Est-ce que l'un de vous aurait fait évolué le VD surveillance Station de @Lazer pour intégrer les commandes du YAPUSS. Ou même développé un nouveau VD ?
×