Aller au contenu

Moicphil

Co-Administrateur
  • Compteur de contenus

    8 501
  • Inscription

  • Dernière visite

  • Jours gagnés

    66

Tout ce qui a été posté par Moicphil

  1. Bonsoir Laurent et bienvenue sur le forum. Concernant "sonos", tu pourras faire du "TTS", @Krikroff est actuellement en train de développer d'autres fonctions supplémentaires pour mieux l'interfacer avec notre HC2. Aussi, d’après les rumeurs, le prochain firmware ( V4 ) devrais gérer le matériel Sonos
  2. Ok, en effet ça peut être très pratique pour remonter les états des E/S et déclencher d'autres scènes. Merci
  3. Bonjour Pascal Pourrais tu nous donner un exemple d'utilisation des requêtes ? Possible d'actionner un VD via l'ipx800 ?
  4. Bonjour et bienvenue sur le forum.
  5. Bonjour et bienvenue sur le forum.
  6. Pareil, si tu veux bien partager.
  7. Nouvelle mise à jour avec support du Json. Lien de téléchargement : http://gce-electronics.com/xdevices/IPX800_3.05.38.rar Doc Api : IPX_API.pdf
  8. Moicphil

    Fibaro Wall Plug

    Concernant les pinces ampèremétrique les "Aeon Labs HEM" sont supportées. Je ne les ai pas testées donc je peux pas te faire de retour. Néanmoins, si ta config le permet, je privilégierais plus un éco-Devices, tu peux aussi gérer Conso/Prod et les mesures sont plus fiable et précises que les pinces. Apparemment tu es en "autoconsommation" c'est ça ?
  9. Moicphil

    Text-2-Speech Sonos

    à‡a serait bien en effet. à‡a tombe bien, je crois que JC n'a plus rien à se mettre sous la dent en ce moment...c'est ça non JC ?
  10. M'en veux pas Shad, mais j'ai toujours pas testé ...Normalement le week-end prochain, promis !
  11. Bonjour, bienvenue sur le forum
  12. Bonsoir, bienvenue sur le forum.
  13. Bonjour Olivier, bienvenue sur le forum
  14. Bonjour, bienvenue sur le forum
  15. Merci pour ton retour, je transfert dans "matériel compatible"...
  16. Moicphil

    LUA scheduler for HC2

    Mise àjour version de téléchargement sur 1er post - Nouvelle version du scheduler = 1.3.1
  17. Moicphil

    Fibaro Wall Plug

    Je ne saurais pas te répondre mais... Comment le raccorderais tu ? Il faudrait l'alimenter en 220 et bricoler une prise qui elle serait raccordée en sortie d'onduleur. Faudrait voir aussi quelle puissance max va sortir de l'onduleur car pour le wallplug la puissance max tolérée en continu est de 2500w et 3000w en crête.
  18. Bonjour Tu as bien fais attention de mettre la sonde ds1820 dans le bon sens ? Quoi qu'il en soit, il faut que la sonde soit visible dans l'interface dés la première inclusion. Par exemple, il n'est pas possible d'ajouter un sonde sur un module existant sans avoir auparavant supprimer du réseau le fgk. Donc, oui, enlève puis refais une inclusion du module.
  19. La réponse dans le sujet : http://www.domotique-fibaro.fr/index.php/topic/328-plugin-freebox-v6/
  20. Moicphil

    Text-2-Speech Sonos

    Voici le TTS enfin opérationnel et ceci grâce à Krikroff... Il faut : créer un périphérique virtuel Renseigner adresse IP et Port du sonos ( 1400 ) Créer un Bouton et saisir le code ci-dessous : Pour changer le tts, il suffira de modifier la dernière ligne du code. Celle-ci étant conçue comme ceci : playTTS(strLang, strMessage, nil, intVolume) strLang = Language du tts strMessage = Message à envoyer à Sonos nil = mode arrêt auto sinon remplacer par la durée intVolume = volume des sonos ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Text To Speech (TTS) - Give voice to your HC2 with SONOS wireless speakers -- Version 0.0.4 pre-release -- Copyright (C) 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- selfId = fibaro:getSelfId(); ip = fibaro:get(selfId, 'IPAddress'); port = fibaro:get(selfId, 'TCPPort'); 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 playTTS = function(lng, message, duration, 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-rincon-mp3radio://translate.google.com/translate_tts?tl=".. lng .. "&a" .. "mp;q=" .. urlencode(message) .. "</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 tts fibaro:debug("tts: " .. message); if (duration ~= nil) then play(duration); else play(); end end); end playTTS("fr", "Bonjour les gens du forum ! Voici le T.T.S enfin fonctionnele !", nil, 12); Post officiel : http://forum.fibaro.com/viewtopic.php?p=30402#30373
  21. D'un autre coté si le client veux une "véritable" alarme, il faudra tout de même une installation Filaire...Mais ce n'est que mon avis... (Sans vouloir lancer la polémique et débats sur les systèmes radio)
  22. Bonjour Guillaume, bienvenue sur le forum
×
×
  • Créer...