Aller au contenu

Rem's

Membres confirmés
  • Compteur de contenus

    949
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par Rem's

  1. En revanche, je n'arrive pas a faire en sorte qu'il rajoute 90 sec àchaque déclenchement, c.-à-d. Tant que je suis dans la piece. Tu me diras comment ça se passe pour toi
  2. Salut Bouliboune, Tu vas dans panneaux, puis panneau variables, la tu as 1premier tableau avec en bas un bouton ajouter. Tu click, et tu renseigne , nom de la variable par Timerdate (ou autre chose plus parlante pour to, le truc c'est de bien respecter les changements et majuscule), puis le bouton sauver.
  3. Suis toujours par la (hormis la ballade en famille), j'ai réessayé ce matin mais rien y fait'. Je vais essayer les nouveaux codes de Jm13. J'ai regarde aussi les accès via le synology (je suis aussi bon qu'en lua ...!!!), je n.ai rien trouvé, tout semble prêt au partage. D'ailleurs le script php qui y est hébergé fonctionne. Je persévère ou je désespère, ça dépend des moments
  4. Je ne comprends rien : La phrase marche dans Safari et dans VLC. Je fais glisser le lien d'un explorateur vers le navigateur (ca lance la musique, et moi, j'observe le lien). Dans VLC, idem (sauf qu'il traduit Volume 1 par Volumes). J'ai essayé avec et sans Volume. Je vais encore m'acharner, avant de laisser la nuit me porter conseils ...... euh non me régler ce P ... de M ... de détails, problématique. Merci encore pour votre aide et vos conseils. A vous lire, c'est beaucoup plus facile à appréhender
  5. Euh ..... non J'ai pas VLC mais déjà je ne trouve pas la bonne phrase qui va lancer le lecteur audio (ça eu marché ...) Je suis dessus, je vais l'avoir !!!
  6. Rem's

    Script Php

    Hop, hop, hop, Je crois que ca y est. JM 13, j'avais pas vu ton dernier post .... je crois que enfin les valeurs variables se mettent àjour, int et ext, il me reste plus qu'àcréer les modules en fonction. J'ai un peu mal au cheveux avec ces P ... de codes (j'imagine que vous en avez marre de moi .... ). Je vous tien au jus pour le bouquet final ..... la démo àmaman (sans les coups de bâton) Bonne App.
  7. Rem's

    Script Php

    J'ai changé de Bazar ... JM13, j'ai récuéré le script PHP sur ton lien (merci encore), je l'ai bidouillé. J'ai en retour les paramètres de la station ext. En revanche rien sur l'int, les valeurs variables restent àO (sauf NetBruitInt et NetHumInt). C'est bien le même script PHP pour les 2 modules Netatmo ? Les Url fonctionnent dans le navigateur et dans le débug, affichage des paramètres de retour. J'ai rajouté "fibaro:debug(response");
  8. C'est le tiens tu me l'avais basardé dans un post antérieur ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- selfId = fibaro:getSelfId(); ip = fibaro:get(selfId, 'IPAddress') or "192.168.0.31"; port = fibaro:get(selfId, 'TCPPort') or 1400; currentTransportState = ""; lastTransportState = ""; currentVolume = 0; lastVolume = 0; ttsVolumeIsDifferent = false; urlencode = function(str) if (str) then str = string.gsub (str, "\n", "\r\n"); str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end); str = string.gsub (str, " ", "+"); end return str; end createRequestBody = function(action, schema, data) return string.format("<u:%s xmlns:u=\"%s\">%s</u:%s>", action, schema, data, action); end reponseCallback = function(fnc, args) if (fnc == nil) then return nil; end return fnc(args); end createSocket = function() -- Check IP and PORT before if (ip == nil or port == nil) then fibaro:debug("You must configure IPAddress and TCPPort first"); return; end local socket; local status, err = pcall(function() socket = Net.FTcpSocket(ip, port); socket:setReadTimeout(1000); end); if (status ~= nil and status ~= true) then fibaro:debug("socket status: " .. tostring(status or '')); end if (err ~= nil) then fibaro:debug("socket err: " .. tostring(err or '')); return; end return socket; end disposeSocket = function(socket) if (socket ~= nil) then socket:disconnect(); socket = nil; return true; end return false; end sendSoapMessage = function(url, service, action, args, callback, retry) local socket = createSocket(); if (socket == nil) then return; end retry = retry or 0 -- prepare data local url = "POST " .. url .. " HTTP/1.1"; local soapaction = "SOAPACTION: \"" .. service .. "#" .. action.name .. "\""; local body = createRequestBody(action.name, action.service, tostring(args or "")); local envelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><s:Body>" .. body .. "</s:Body></s:Envelope>"; local ctl = "Content-Length: " .. string.len(envelope); local payload = url .. "\r\n" .. ctl .. "\r\n" .. soapaction .. "\r\n" .. "\r\n" .. envelope; -- write data local bytes, errorcode = socket:write(payload); if (errorcode == 0) then local state, errorcode = socket:read(); if (errorcode == 0) then if (string.len(state or "") > 0) then -- callback if (callback ~= nil) then reponseCallback(callback, state); end -- dispose ... disposeSocket(socket); return true; else fibaro:debug("Error: Invalid response. response length: " .. string.len(state or "")); end else if (retry < 5) then fibaro:debug("retry #"..retry.." action: " .. action.name); return sendSoapMessage(url, service, action, args, callback, (retry + 1)); else fibaro:debug("Error: Code returned "..tostring(errorcode or "")); end end elseif (errorcode == 2) then fibaro:debug("Error: You must check your IP and PORT settings."); else if (retry < 5) then fibaro:debug("retry #"..retry.." action: " .. action.name); return sendSoapMessage(url, service, action, args, callback, (retry + 1)); else fibaro:debug("Error: Code returned "..tostring(errorcode or "")); end end -- dispose ... disposeSocket(socket); -- default response return false; end stop = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "Stop", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Speed>1</Speed>", -- callback (options) function(response) fibaro:debug("stop sent"); end); end unMute = function() return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:RenderingControl:1", -- action { name = "SetMute", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredMute>0</DesiredMute>", -- callback (options) function(response) fibaro:debug("unMute sent"); end); end play = function(duration) return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "Play", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Speed>1</Speed>", -- callback (options) function(response) if (duration ~= nil) then fibaro:debug("play sent for " .. duration .. " seconds"); fibaro:sleep(duration); stop(); else fibaro:debug("play sent"); local n = 0; currentTransportState = "TRANSITIONING"; while (currentTransportState == "TRANSITIONING") do if (n > 10) then break end; getTransportState(); fibaro:debug(currentTransportState); fibaro:sleep(5000); n = n + 1; end local i = 0; currentTransportState = "PLAYING"; while (currentTransportState == "PLAYING") do if (i > 10) then break end; getTransportState(); fibaro:debug(currentTransportState); fibaro:sleep(2000); i = i + 1; end fibaro:sleep(1000); stop(); end -- update volume with value before tts if different if (ttsVolumeIsDifferent == true) then setVolume(lastVolume); ttsVolumeIsDifferent = false; end end); end setVolume = function(value) return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:RenderingControl:1", -- action { name = "SetVolume", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>" .. tostring(value) .. "</DesiredVolume>", -- callback (options) function(response) fibaro:debug("Volume set: " .. value); end); end getVolume = function() fibaro:log("Get volume, please wait..."); return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "GetVolume", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel>", -- callback (options) function(response) currentVolume = tonumber(response:match("<CurrentVolume>(.+)</CurrentVolume>") or 0); end); end getTransportState = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "GetTransportInfo", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>", -- callback (options) function(response) currentTransportState = response:match("<CurrentTransportState>(.+)</CurrentTransportState>") or ""; end); end playFile= function(file, volume) return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "SetAVTransportURI", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>,<CurrentURI>x-file-cifs:" .. file .. "</CurrentURI>,<CurrentURIMetaData></CurrentURIMetaData>", -- callback (options) function(response) -- retrieve current transport state getTransportState(); lastTransportState = currentTransportState; -- unmute before unMute(); -- retrieve volume getVolume(); lastVolume = currentVolume; -- set tts volume if <> with current if (volume ~= nil and volume ~= currentVolume) then setVolume(volume); ttsVolumeIsDifferent = true; end play(); end); end function urlEncode(str) if (str) then str = string.gsub(str, "\n", "\r\n"); str = string.gsub(str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end); str = string.gsub(str, " ", "+"); end return str; end -- en paramètres: le fichier, puis le volume... playFile(urlEncode("//Home_synology/Volume 1/music/Locked Out of Heaven - Bruno Mars.m4a"), 20);
  9. Merci pour ton retour, j'ai rajouté ton codage comme suit : if (str) then str = string.gsub(str, "\n", "\r\n"); str = string.gsub(str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end); str = string.gsub(str, " ", "+"); end return str; end -- en paramètres: le fichier, puis le volume... playFile(urlEncode("//Home_synology/Volume 1/music/Locked Out of Heaven - Bruno Mars.m4a"), 20); En revanche, toujours pareil, en debug, que des lignes blanches (cela semble bien dérouler), mais sonos sort toujours son message d'erreur àl'appel de ce fichier. Encore merci de ton aide, de ton SAV, de ta maintenance, de tes conseils, bref t'es toujours là...
  10. Ok super, mais je le colle ou ... A part où je pense !!! (Lol)
  11. J'ai récupéré un de tes script "playfile", je voudrai lancer une chanson. En fin de script je mets : playFile("//Home_synology/Volume 1/music/Locked Out of Heaven - Bruno Mars.m4a", 20); Le script se déroule, jusqu'au stop et revient au niveau sonore (mais sans déclencher la chanson). Coté SONOS, il me dit impossible .... car serveur introuvable. Une idée ?
  12. Rem's

    Script Php

    La fin est proche, j'en ai ras la casquette (et vous aussi de moi ... ). J'ai créée un VD avec 2 Boutons : "Extérieures" local HC2 = Net.FHttp("192.168.0.46"); HC2:setBasicAuthentication("XXXX", "YYYY"); local response, status, errorCode = HC2:GET("/Web_Scripts/netatmo.php?intext=ext"); if tonumber(status) == 200 then -- decoding json string to table -- if (response ~= nil) then local result = json.decode(response); fibaro:debug(response); local NetTempExt = result.body[1].value[1][1]; local NetHumExt = result.body[1].value[1][2]; fibaro:setGlobal("NetTempExt", NetTempExt); fibaro:setGlobal("NetHumExt", NetHumExt ); fibaro:log(NetTempExt or "n.c" .. " °C " ..NetHumExt or "n.c" .. " % " ); else -- oups il y a un problème... fibaro:debug("Impossible de décoder la réponse, pas de données pour le traitement..."); end else -- oups il y a un problème... fibaro:debug("Err: " .. status); end "Intérieures" local HC2 = Net.FHttp("192.168.0.46"); HC2:setBasicAuthentication("XXXX", "YYYY"); local response, status, errorCode = HC2:GET("/Web_Scripts/netatmo.php?intext=int"); if tonumber(status) == 200 then -- decoding json string to table -- if (response ~= nil) then local result = json.decode(response); fibaro:debug(response); local NetTempInt = result.body[1].value[1][1]; local NetHumInt = result.body[1].value[1][3]; local NetBruitInt = result.body[1].value[1][5]; fibaro:setGlobal("NetTempInt", NetTempInt); fibaro:setGlobal("NetHumInt", NetHumInt ); fibaro:setGlobal("NetBruitInt", NetBruitInt ); fibaro:log(NetTempInt or "n.c" .. " °C " ..NetHumInt or "n.c" .. " % "..NetBruitInt or "n.c" .. " Db " ); else -- oups il y a un problème... fibaro:debug("Impossible de décoder la réponse, pas de données pour le traitement..."); end else -- oups il y a un problème... fibaro:debug("Err: " .. status); end Les données variables de l'int. Temp, CO2 et Bar, restent à 0. Sinon les autres valeurs se mettent à jour. Je n'ai pas d'affichage des données sur le VD (habituellement en vert, juste la température brute, et puis s'en va !). C'est quoi le Pb ce coup ci (j'ai rajouté comme cité plus haut, les intext=int et intext=ext, à la fin de ma phrase Http). Merci encore pour votre aide
  13. Rem's

    Script Php

    Aaaahhhhhh Quand je tape dans le navigateur http://192.168.0.46/Web_Scripts/netatmo.php / {"status":"ok","body":[{"beg_time":1408201967,"value":[[31.7,33]]}],"time_exec":0.0095419883728027,"time_server":1408202484}. (Ce ne sont pas les même séries de chiffres quand je tape dans le navigateur) A force de bidouille dans le script, il s'avère que c'est le port 5005 qui plantait (5005 en lien avec les connexion Https sécurisé, donc pas pour HC2). Je continue sur le VD dans le HC2, je crois qu'il me faut des labels ...
  14. Rem's

    Script Php

    Ok, effectivement j'ai en retour la page PHP, mais fixe (copie de celle du NAS). Lors de la création chez Netatmo, je dois renseigner le lien sur mon NAS, c'est bien çà?
  15. Rem's

    Script Php

    Re bonjour, J'ai enfin réussi à créer un compte sur http://dev.netatmo.com/. J'e suppose que je dois mettre à jour mon PHP sur le NAS avec ces infos. Lors de la création du compte, j'ai renseigné mon lien http://adresse IP locale:5005/volume1/web/Web_Scripts/netatmo.php Et après, je fais quoi ? ... quand je tape http://adresse IP locale:5005:5005/web/Web_Scripts/netatmo.php, la page s'ouvre (cad celle qui est sur mon NAS). Quand au script sur HC2, Err sur la ligne Result = Json decode. Merci de votre aide, je découvre tout cela avec un air de novice, pas facile de s'y retrouver (je taquine bien mieux mes tables de mix et mes lecteurs)
  16. Rem's

    Suppression Scène

    Re à tous les 2, Après quelques messages d'erreur "403", j'ai utilisé le bouton désactiver en bas de la page de création de scènes, quelques appuis sur stop (dans le premier onglet) ...... et puis ça marche !!! J'ai pu supprimer mes 2 scènes, je viens de redemarrer, cela semble bon. Merci pour votre sollicitude !! cela aide à résoudre les problèmes. bonne soirée
  17. Rem's

    Script Php

    Mon pauvre ami, je ne sais même pas faire de Ketchup (lol) . J'ai récupéré le script sur domotique info, mais j'ai pas compris grand chose, car il parle de télécharger le zip, mais je n'ai besoin que d'une page PHP .... En revanche il est herbergé sur mon NAS, en local (via la freebox).
  18. Rem's

    Script Php

    Vous avez raison, je vais reprendre tout ça calmement, en commençant par la création d'un compte sur Netatmo. Mais j'ai l'impression que cela se fait par l'envoi d'un PHP, qui retourne ces fameux "api keys". Je comprends que moyennement, et ne sais pas trop comment m'y prendre pour le script. Je vous tiens au jus, merci pour votre aide.
  19. Rem's

    Suppression Scène

    Rien n'y fait. Ce sont 2 scènes avec des détecteurs de porte, elles sont fermées. J'ai essayé de modifier les scripts ..., non plus. Je viens de restaurer à une version antérieure, non plus. Là , je suis revenu à ma dernières sauvegarde, toujours sans succès. Une idée ?
  20. Rem's

    Suppression Scène

    Bonjour à tous, Je profite des vacances pour faire un peu de ménage et je viens de m'apercevoir que j'ai des scènes que je ne peut supprimer. La désactiver, non plus. je clique sur la disquette (enregistrer), je rafraichi (ou je change et reviens sur l'onglet scène), elle s'est activé. Je ne peux pas non plus effacer le script, devinez quoi, il se remet tout seul ... Comment je peux faire ? Merci de votre aide
  21. Rem's

    Script Php

    Salut JM 13, Effectivement je n'ai pas crée de compte, je ne comprenais pas pourquoi tous ces login au début de la page PHP, j'ai renseigné l'accès au NAS, et le compte de ma station. J'ai bien l'impression que l'adresse du NAS, on s'en fou. En revanche, j'ai rien compris à la façon de créer un compte http://dev.netatmo.com/ (je crois). Merci pour votre aide, je me sens moins seul dans ma piscine
  22. Rem's

    Script Php

    Concernant la ligne (ici N°2), quelle est la syntaxe pour le login et mot de passe ? Ce sont bien des "" pour les 2 ? HC2:setBasicAuthentication("XXXXX", "YYYY"); Merci pour votre réponse.
  23. Rem's

    Script Php

    Yes, je suis chez moi. Ce coup là, il me sort err : 404 HC2 = Net.FHttp("192.168.0.46", 5005); HC2:setBasicAuthentication("XXXXX", "YYYY"); local response, status, errorCode = HC2:GET("/web/Web_scripts/renetatmo.php"); if tonumber(status) == 200 then -- c'est ok, la suite est envisageable else -- oups il y a un problème... fibaro:debug("Err: " .. status); end fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal("NetHumExt", result.body[1].value[1][2]); fibaro:log(fibaro:getGlobalValue("NetTempExt").. " °C " ..fibaro:getGlobalValue("NetHumExt").. " % " )
  24. Rem's

    Script Php

    ca me sort en debug err : 401. Pourtant le lien entier s'ouvre dans mon navigateur avec la page en question. Une idée ? merci.
  25. Rem's

    Script Php

    Bonjour à tous, Je tente de récupérer les données de ma station Netatmo. le script fonctionne appellé dans une page web. HC2 = Net.FHttp("192.168.0.46", 5005); response = HC2:GET("/web/Web_scripts/renetatmo.php"); -- decoding json string to table -- result = json.decode(response); fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal("NetHumExt", result.body[1].value[1][2]); fibaro:log(fibaro:getGlobalValue("NetTempExt").. " °C " ..fibaro:getGlobalValue("NetHumExt").. " % " ) La fonction debug me retourne en ligne 4 : Expected value but found invalid token at character 1. Cela inspire quelqu'un ... d'avance merci de votre aide.
×
×
  • Créer...