drboss Posté(e) le 25 octobre 2018 Signaler Posté(e) le 25 octobre 2018 @pepite vous devez ajouter une commande fibaro:sleep(). J'ai eu le même problème, "PLAY" est effectué avant d'ajouter "PLAYLIST" --stop(); --fibaro:sleep(1000); sdel(); fibaro:sleep(2000) spotify_list('xxxxxx'); --playFile(FileVol); fibaro:sleep(3000); play(); --play(NN) - play NN seconds
pepite Posté(e) le 25 octobre 2018 Signaler Posté(e) le 25 octobre 2018 @drboss Thanks i will try this. but this will resolve the 30 secs of playing before stop ?
drboss Posté(e) le 25 octobre 2018 Signaler Posté(e) le 25 octobre 2018 For me yes, resolve stop 30sec after start play new playlist. I didn't never problem this problem with play / stop / pause list played before. When I have pure connection with one of my sonos and process inicialized by spotify_list take long time and no return state I added sseek()
pepite Posté(e) le 26 octobre 2018 Signaler Posté(e) le 26 octobre 2018 @drboss I will do like you and i will add sseek() after play(). Thank you for the help.
Yannick Posté(e) le 27 octobre 2018 Signaler Posté(e) le 27 octobre 2018 Le 25/04/2017 à 10:44, Lazer a dit : Ah non, justement, c'est tout l'inverse ce que je dis : le multiroom ne peut pas, et ne doit pas dépendre, QUE de l'ampli. Il vaut mieux avec des éléments séparés, je ne suis pas fan des gros amplis à 2k€ qui savent gérer 4 zones, parce que problème de câblage dans toute la maison, l'ampli doit être alimenté pour écouter juste un peu de zik dans la SDB, donc ça consomme un max, l'ampli est énorme et ne rentre pas dans la plupart des meubles de salon, etc Par contre, l'ampli EN PLUS, en complément d'une installation multiroom, et qui s'intègre nativement dedans, là ça commence à être sympa. De ce coté là, Yamaha est le plus avancé grâce à leur large catalogue, Denon n'est pas en reste avec une gamme qui commence à s'étoffer (les enceintes HEOS), mais Onkyo est largement à la traine (je crois qu'ils ont prévu de sortir des enceintes aussi, donc ils s'y mettent). Salut @Lazer, je possède un équipement complet en multiroom HEOS de DENON mais le plugin intégré par Fibaro n'est pas top top. Saurais-tu si quelqu'un aurait développé un VD qui permette de gérer plus précisément chaque enceinte et leur contenu à l'instar du VD SONOS de @Krikroff ? J'aimerais tellement être à votre niveau et pour le développer moi même. Merci
Lazer Posté(e) le 27 octobre 2018 Signaler Posté(e) le 27 octobre 2018 Non désolé, je ne sais pas... j'ai vu des discussions sur le sujet sur le forum, mais je crois que personne n'a publié de VD utilisable. Perso j'ai fait le choix Yamaha Musccast, avec tuto complet sur le forum..... mais l'API n'a rien à voir (d'ailleurs je ne sais même pas à quoi ressemble l'API Heos....) 1
Yannick Posté(e) le 27 octobre 2018 Signaler Posté(e) le 27 octobre 2018 Merci pour ta réponse.. je vais attendre qu'une bonne âme se dévoue. Alors si toi tu ne sais pas à quoi ressemble l'API d'HEOS... qui le pourrait !! Bonne soirée et bon Week End et bon apéro
Did Posté(e) le 22 novembre 2018 Signaler Posté(e) le 22 novembre 2018 Je l'ai supprimé puis ré-importé et rien. En fait je ne peux même pas piloter le Sonos, l'adresse IP est pourtant bonne, c'est toujours le port 1400? C'est depuis que mes Sonos sont passés en v9.2 il y a quelques semaine et depuis, plus rien. Le VD SONOS Play stream de @Krikroff (pour lire les Mp3) ne fonctionne plus non plus.
pepite Posté(e) le 22 novembre 2018 Signaler Posté(e) le 22 novembre 2018 @Did Moi avec Sonos, je fais toutes les mises à jour sans me poser de questions. Et ca fonctionne encore. As tu un retour si tu mets cela dans un navigateur ? http://IPSONOS:1400/status
Did Posté(e) le 22 novembre 2018 Signaler Posté(e) le 22 novembre 2018 Je viens de l'installer sur ma seconde box (en v4.520), renseigner l'adresse IP et le port 1400 et créer la variable non prédéfinie et ça ne marche pas non plus. J'ai aussi essayer l'IP d'une autre Sonos mais en vain. La variable "x_sonos_object ", on la laisse à zéro ou il faut lui donner une valeur?
Krikroff Posté(e) le 23 novembre 2018 Auteur Signaler Posté(e) le 23 novembre 2018 @Did, mes Sonos sont tous à jour et je n'ai pas de problème. Tu as des paires ? Si oui tu peux essayer peut-être avec l' IP de l'autre Player...
Did Posté(e) le 24 novembre 2018 Signaler Posté(e) le 24 novembre 2018 Salut @Krikroff et merci pour ta réponse. Le VD que j'utilise sur ma box principale (en v4.180) pilote une seule Play:1 et l'autre que j'ai installé sur ma nouvelle HC2 fraichement mise à jour pilote une paire de Play:5 (j'ai bien sur essayé les deux adresses IP). La variable "x_sonos_object ", on la laisse à zéro ou il faut lui donner une valeur?
Cardane Posté(e) le 24 novembre 2018 Signaler Posté(e) le 24 novembre 2018 @Yannick pour les HEOS, je suis en train de regarder. Je viens de refaire le VD pour mon ampli, j'attaque maintenant la partie HEOS... faudra juste être patient, je ne serai pas de retour avant fin décembre 1
Yannick Posté(e) le 26 novembre 2018 Signaler Posté(e) le 26 novembre 2018 Le 24/11/2018 à 17:58, Cardane a dit : @Yannick pour les HEOS, je suis en train de regarder. Je viens de refaire le VD pour mon ampli, j'attaque maintenant la partie HEOS... faudra juste être patient, je ne serai pas de retour avant fin décembre Salut @Cardanenickel. Le VD pour quel ampli dis-moi ? tu l'as posté quelque part ?
pepite Posté(e) le 26 novembre 2018 Signaler Posté(e) le 26 novembre 2018 @Did Bizarre quand même ce qui t'arrive. Mes sonos sont aussi à jour, et pas de souci non plus.
Did Posté(e) le 26 novembre 2018 Signaler Posté(e) le 26 novembre 2018 J'ai du progrès maintenant, l'affichage du VD se met à jour quand je modifie le volume ou lance une radio depuis un Sonos Controler mais toujours rien dans le sens HC2 vers Sonos.
Cardane Posté(e) le 26 novembre 2018 Signaler Posté(e) le 26 novembre 2018 (modifié) @Yannick non, je n'ai rien posté, en fait c'est le VD de @sebcbien que j'ai adapté pour mon ampli. A l'origine c'est un VD pour ampli Marantz, mais Marantz et Denon c'est à peu près la même chose. j'ai donc adapté son VD pour mon ampli Denon, mais uniquement pour la partie home cinema, pas pour la partie HEOS. Ca de devrait pas être trop difficile, just des commandes différentes et un port différent. Je vais y travailler dès que possible, mais pas avant début janvier Modifié le 27 novembre 2018 par Cardane 2
Yannick Posté(e) le 27 novembre 2018 Signaler Posté(e) le 27 novembre 2018 Ok au top @Cardanej'attends de tes nouvelles. Un lien pour le VD de @sebcbien ?
Cardane Posté(e) le 27 novembre 2018 Signaler Posté(e) le 27 novembre 2018 @Yannick tu le trouves dans sa signature, ou ici 1
Yannick Posté(e) le 27 novembre 2018 Signaler Posté(e) le 27 novembre 2018 Cool merci et pour la liste des fonctions ? pour un AVR-X4300H tu sais où les trouver ?
jojo Posté(e) le 28 novembre 2018 Signaler Posté(e) le 28 novembre 2018 Le 24/11/2018 à 01:09, Did a dit : La variable "x_sonos_object ", on la laisse à zéro ou il faut lui donner une valeur? tous les soucis rencontrés jusqu'à présent sont liés à cette vairable. Donc il faut la supprimer. Et puis resauver le VD, qui créera automatiquement la variable
Did Posté(e) le 28 novembre 2018 Signaler Posté(e) le 28 novembre 2018 Je n'ai rien compris, j'ai supprimé la variable puis sauvegarder le VD et la variable "x_sonos_object " s'est créée toute seule. Le Sonos Remote refonctionne, youpi et merci @jojo! J'avais pourtant déjà fait ça mais j'avais dû la créer à la main en v4.180, et sans succès. Donc la partie TTS refonctionne aussi mais pas encore la lecture d'un mp3, le mp3 sélectionné dans le VD ne se lance pas sur le Sonos. Je ne sais plus si ce VD a un nom (SONOS Play stream) mais ce sont ces lignes: ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé -- Appel interphone ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- 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) 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 playFile("//DISKSTATION/home/Sons_mp3/zzÿ-Appel interphone.mp3", 40); J'ai retapé l'adresse IP et le port 1400, refais le copier/coller et toujours rien, je continu mes recherches.
sebcbien Posté(e) le 29 novembre 2018 Signaler Posté(e) le 29 novembre 2018 Le 27/11/2018 à 15:15, Yannick a dit : Cool merci et pour la liste des fonctions ? pour un AVR-X4300H tu sais où les trouver ? tu en as déjà plein dans le xls attaché, ça devrait déjà convenir pour beaucoup de fonctions. Sinon fais une recherche google avec des codes et ton numéro d'ampli, y'a peut être un fichier similaire. 2013 Marantz_AV_SR_NR_PROTOCOL_V07.xls
J3R3M Posté(e) le 2 décembre 2018 Signaler Posté(e) le 2 décembre 2018 Bonjour à tous, J'ai parcouru quasiment toutes les réponses de ce post pour trouver une éventuelle réponse à ma question, mais il semble que non. J'utilise la fonction de streaming de fichier mp3, cela fonctionne parfaitement, mais je regrette cependant un certain délai. J'ai pu voir qu'il était possible de mettre en cache le ou les fichier(s) en question afin de pouvoir les lire quasiment instantanément. J'ai un NAS Synology et j'aimerais mettre cela en place, mais je ne vois pas comment. Est-il possible de me mettre sur la voie svp? Merci d'avance
Messages recommandés