Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    15 036
  • Inscription

  • Dernière visite

  • Jours gagnés

    210

Tout ce qui a été posté par jojo

  1. os.date("%a %d/%m/%Y", unixtime) http://www.lua.org/pil/22.1.html
  2. jojo

    Synology Monitoring

    oui, c'est une bonne idée à première vue, mais si tu as le même nom pour 2 devices (erreur ou test), cela risque de faire des erreurs. Ceci-dit, ça à l'avantage de ne pas devoir entrer le nom de la variable à la main dans chaque bouton du device. Au plus j'écris, au plus je trouve l'idée sympa. Qu'en pensez-vous ? Oui ? Non ?
  3. c'est bien le port 5000 que tu as renseigné ?il n'y a pas d'espaces ?
  4. @Moicphil, tu peux mettre un tuyau d'arrosage au dessus de ton pluviomètre pour simuler
  5. jojo

    Synology Monitoring

    en effet, j'avais identifié le "problème". Je devrais créer une variable dans le code qui donne le nom de la variable globale àutiliser (et créer). Ainsi on pourrait avoir plusieurs instances du VD. Je note cela dans ma to do liste
  6. avant de te chopper une remarque des admin, ne cite pas le message juste au dessus. pour appeler un device en lua : fibaro:call(<ID Device>, "pressButton", "<# bouton>") tu retrouves l'ID du device dans l'url lorque tu es en mode edit du device. Pour retrouver le n° du bouton, suis l'explication de Did dans la section "HC pour les nuls"
  7. tu as bien mis ce code dans un bouton d'un VD ?
  8. jojo

    Disparition Des Modules

    regarde dans ma signature
  9. "(cet automne pas avant)" Tu ne veux pas mettre la pression, mais l'automne c'est dans 5 jours ...
  10. Lazer, si j'ai bien lu, le net.HTTPClient() et le pendant du net.HTTP pour les VD mais pour les Scènes. Il ne permet pas de faire du https
  11. jojo

    Disparition Des Modules

    cherche sur le forum, il y a des solutions proposées qui se basent sur une connexion Wifi pour savoir si tu es chez toi ou pas
  12. Voici une petite modif du player (je j'ai déjà partagée, je ne sais plus où) et qui joue donc un MP3. La modif permet de ne pas interrompre après environ 30s. tu verras la variable locale (FilePath) avec le chemin d'accès vers le fichier mp3 à jouer en début de script. rien ne t’empêche de mettre cette info dans une variable globale, et de la rappeler. ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- ---------------------------------- -- User Settings ---------------------------------- ip = "192.168.xxx.xxx" port = 1400 FilePath = "//HPDS3615xs/music/iTunes/Sons/PoliceInformee.mp3" FileVol = 100 -- le fichier mp3 doit être dans la bibliothèque Sonos -- pour générer des MP3 : http://text2speech.us/# PlayUnlimited = "Yes" -- si <> Yes, arrêt après 30s environ ---------------------------------- -- DO not change bellow this line ---------------------------------- selfId = fibaro:getSelfId(); --ip = fibaro:get(selfId, 'IPAddress'); --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 and PlayUnlimited ~= "Yes") 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 -- en paramètres: le fichier, puis le volume... playFile(FilePath, FileVol);
  13. jojo

    Je Vais Pas Tarder A Tout Jeter

    Dans ma signature, tu verras 2 outils de backup (et restore) des variables et panneaux de chauffage
  14. jojo

    Connexion De Mon Hc2 À Distance

    sebcbien, m'a expliqué qu'il y avait des gens qui s'amusaient àscanner les caméras accessibles depuis l'extérieur, et profitaient des failles des constructeurs pour regarder. Ils analysent tes habitudes, et il est facile alors de savoir quand tu es absent pour t'offrir un déménagement gratuit ...
  15. jojo

    Connexion De Mon Hc2 À Distance

    oui, la solution de mettre une adresse extérieur pour les cam fonctionne, MAIS sebcbien, m'a fait peur en me disant que c'était hyper dangereux d'ouvrir les ports pour des caméras. Donc je ne sais plus les voir qu'en VPN. et sur la fibaro, je les vois également si je suis en VPN ou via home.fibaro.com. Perso, je ne regarde pas mes cam via ma Fibaro, donc ce n'est pas trop grave si l'image n'est pas visible
  16. jojo

    Je Vais Pas Tarder A Tout Jeter

    si tu veux revenir en 3.6, c'est facile : recovery upgrade jusque 3.6 restore du backup pris avant la v4.x tu auras perdu : tes icônes ce que tu as fais depuis ton passage en v4.x
  17. demande au support fibaro si la v2.2 de tes FGS ne nécessite pas le firmware v4.x
  18. Lazer, Il me semble qu'en v4 on n'est plus limité comme en v3 http://www.domotique-fibaro.fr/index.php/topic/5669-se-passer-des-id-dans-vos-scenes-et-vd/?p=85435
  19. Bienvenue, Tu trouveras ton bonheure ici http://www.domotique-fibaro.fr/index.php/topic/1588-banque-icones-hc2-et-hcl/ et dans la galerie du forum
  20. merci de prendre le relais Lazer, car en effet je ne comprenais pas non plus, d'autant plus que je n'ai jamais été autant dans le détail du code
  21. jojo

    Disparition Des Modules

    donc, fait régulièrement des backups
  22. jojo

    Disparition Des Modules

    c'est normal, tout ce que tu as fait entre le dernier backup que tu as restauré et avant le crash est perdu
  23. as-tu regardé dans ma signature, il y a un auto pour configurer les caméras
  24. voici comment installer un plugin http://www.domotique-fibaro.fr/index.php/topic/4832-installer-un-plugin-utilisateur-en-40x/ mais !, il faut le désinstaller avant chaque update du firmware
  25. jojo

    Disparition Des Modules

    1) zen. 2) recovery (mais alors c'est normal que tout soit vide après un recovery) 3) restore d'un backup. Si ça ne vas pas, retour à2) ou à1) en fonction de ton état ...
×
×
  • Créer...