pepite Posté(e) le 28 février 2016 Signaler Posté(e) le 28 février 2016 Bonsoir, La question du soir, besoin de vos idées comme d'habitude ;-) J'aimerais sur un seul bouton de la telecommande octan remote (double-clic) pouvoir faire next et previous pendant une liste de lecture j'utilise le VD de Krikroff bien sur La question, je ne vois pas du tout quoi tester pour faire NEXT ou PREV pour le IF/ELSE A vos idées MERCI Sinon, j'utiliserai 2 boutons mais j'essaie d'optimiser un max ;-)
Berale64 Posté(e) le 6 mars 2016 Signaler Posté(e) le 6 mars 2016 Tu as l'option de l'appui long qui envoie un code 12 et 11 au relâchement (pour le rond, faire +10 pour les autres boutons) Je ne vois pas comment tu peux sur la même action (double clic) faire marche avant ou marche arrière ? en fonction de quoi ?
pepite Posté(e) le 6 mars 2016 Auteur Signaler Posté(e) le 6 mars 2016 c'est bien la question @berale ;-) Sur 2 boutons ou 1 boutons avec un getvalue different j'y arriverai, mais je me demandais quoi tester justement en fonction de quoi ;-) ?
Berale64 Posté(e) le 6 mars 2016 Signaler Posté(e) le 6 mars 2016 Avec le même bouton tu peux faire "double clic" Next et "appui long" Previous.
pepite Posté(e) le 7 mars 2016 Auteur Signaler Posté(e) le 7 mars 2016 oui tu as tout a fait raison, mais je me demandais comment faire avec le meme appui ? double clic next, double clic previous, mais je n'arrivais pas, n'arrive pas a trouver ce que je pourrais tester ;-) Et à mon avis c'est bcp trop tiré par les cheveux, mais je me posais la question ;-)
Berale64 Posté(e) le 7 mars 2016 Signaler Posté(e) le 7 mars 2016 Avec un autre bouton tu allumes une lampe. Si double clic et lampe allumée "NEXT" si lampe éteinte "PREV" !!!
i-magin Posté(e) le 7 mars 2016 Signaler Posté(e) le 7 mars 2016 (modifié) Avec un seul bouton (ordre) c'est impossible... ou presque Pour mes 5 radios pré-sélectionnées, j'utilise une variable numérique de 1 à 5 que j'incrémente ou décrémente en fonction de l'une des deux touches (ordres) utilisées J'ai fait le choix en arrivant en butée haute ou basse de la plage 1 à 5, de rester sur la valeur de butée, ce qui oblige à changer de bouton Il serait en effet possible avec un seul bouton de passer en sens inverse en fin de butée Edit : ou de repartir à la valeur 1 de la boucle Modifié le 7 mars 2016 par i-magin
pepite Posté(e) le 7 mars 2016 Auteur Signaler Posté(e) le 7 mars 2016 tu sors Berale :D :D Donc tu utilises le même ordre/bouton pour les radios, bien vu le coup de la variable num Une boucle avec un break variable = 1 : radio = 1, variable = 2, radio 2 tu peux partager juste cette partie stp ;-) Moi je repartirais bien sur la butee basse donc radio 1 ;-)
i-magin Posté(e) le 7 mars 2016 Signaler Posté(e) le 7 mars 2016 Non, non ! J'utilise deux boutons ! ... mais, il serait possible d'en utiliser qu'un... ce que je ne ferai certainement pas, car l'utilisation serait moins souple Ci-après le code de mon Octan Remote, dont je n'utilise pour l'instant qu'une partie des commandes : - 10 et 30 pour le radiateur électrique avec message TTS Sonos - 20 et 40 pour les radios Sonos --[[ %% properties 350 sceneActivation %% globals --]] local action = tonumber(fibaro:getValue(350, "sceneActivation")) local id_radiateur_sdb = 86 local id_vd_TestSonosSDB = 347 local id_vd_SonosRemoteSDB = 362 local radio_sonos_sdb = nil local actions = { [10] = function() -- 1_1 Une Pression ROND PLEIN fibaro:debug("Octan bouton rond plein simple pression") -- mode confort radiateur SDB fibaro:call(id_radiateur_sdb, "pressButton", "2"); fibaro:setGlobal("octan_sdb", "1_1"); fibaro:call(id_vd_TestSonosSDB, "pressButton", "4"); end, [11] = function() -- 1_4 Relaché ROND PLEIN fibaro:debug("Octan bouton rond plein relaché") end, [12] = function() -- 1_3 Maintenue ROND PLEIN fibaro:debug("Octan bouton rond plein maintenu") fibaro:setGlobal("octan_sdb", "1_3"); fibaro:call(id_vd_TestSonosSDB, "pressButton", "4"); end, [13] = function() -- 1_2 Double Pression ROND PLEIN fibaro:debug("Octan bouton rond plein double pression") end, [20] = function() -- 1 Pression + fibaro:debug("Octan bouton + simple pression") radio_sonos_sdb = fibaro:getGlobal('radio_sonos_sdb') fibaro:debug(radio_sonos_sdb) if (radio_sonos_sdb == nil) then radio_sonos_sdb = 1 end radio_sonos_sdb = math.min(5, radio_sonos_sdb + 1) fibaro:setGlobal("radio_sonos_sdb", radio_sonos_sdb); fibaro:call(id_vd_SonosRemoteSDB, "pressButton", (radio_sonos_sdb + 21)); fibaro:sleep(4*1000) fibaro:call(id_vd_SonosRemoteSDB, "pressButton",7); fibaro:debug(radio_sonos_sdb) end, [21] = function() -- Relaché + fibaro:debug("Octan bouton + relaché") end, [22] = function() -- Maintenue + fibaro:debug("Octan bouton + maintenu") end, [23] = function() -- Double Pression + fibaro:debug("Octan bouton + double pression") end, [30] = function() -- 2_1 Une Pression ROND VIDE fibaro:debug("Octan bouton rond vide simple pression") -- mode eco radiateur SDB fibaro:call(id_radiateur_sdb, "pressButton", "3"); fibaro:setGlobal("octan_sdb", "2_1"); fibaro:call(id_vd_TestSonosSDB, "pressButton", "4"); end, [31] = function() -- 2_4 Relaché ROND VIDE fibaro:debug("Octan bouton rond vide relaché") end, [32] = function() -- 2_3 Maintenue ROND VIDE fibaro:debug("Octan bouton rond vide maintenu") fibaro:setGlobal("octan_sdb", "2_3"); fibaro:call(id_vd_TestSonosSDB, "pressButton", "4"); end, [33] = function() -- 2_2 Double Pression ROND VIDE fibaro:debug("Octan bouton rond vide double pression") end, [40] = function() -- 1 Pression - fibaro:debug("Octan bouton + simple pression") radio_sonos_sdb = fibaro:getGlobal('radio_sonos_sdb') fibaro:debug(radio_sonos_sdb) if (radio_sonos_sdb == nil) then radio_sonos_sdb = 1 end radio_sonos_sdb = math.max(1, radio_sonos_sdb - 1) fibaro:setGlobal("radio_sonos_sdb", radio_sonos_sdb); fibaro:call(id_vd_SonosRemoteSDB, "pressButton", (radio_sonos_sdb + 21)); fibaro:sleep(4*1000) fibaro:call(id_vd_SonosRemoteSDB, "pressButton",7); fibaro:debug(radio_sonos_sdb) end, [41] = function() -- Relaché - fibaro:debug("Octan bouton - relaché") end, [42] = function() -- Maintenue - fibaro:debug("Octan bouton - maintenu") end, [43] = function() -- Double Pression - fibaro:debug("Octan bouton - double pression") end, } actions[action]()
pepite Posté(e) le 7 mars 2016 Auteur Signaler Posté(e) le 7 mars 2016 superbe, merci T'es oblige de faire "play" après avoir choisi la radio ? j'avais l'impresison qu'elle partait toute seule . Bien vu le "+21" ;-) Juste pour le Debug de 40, je crois que c'est le bouton "-" pas "+" ;-) Moins souple avec 1 seul ordre/bouton. A voir comment l'ecrire avec 1 seul mais par exemple : Appui simple "+" : radio 1 .. a chaque appui suivant, radio 2, radio 3, radio 4, radio 5, radio 4, radio 3, radio 2, radio 1 ... ou radio 1, radio 2, radio 3, radio 4, radio 5, radio 1, radio 2, radio 3, radio 4, radio 5.... Plutot souple non ?
i-magin Posté(e) le 7 mars 2016 Signaler Posté(e) le 7 mars 2016 Pour apporter quelques compléments : Voici le contenu du bouton 4 du module virtuel Test Sonos SDB, qui reprend le code de @Krikroff pour lancer un TTS sur Sonos Comme ma compagne faisait des appuis trop longs sur les touches de pilotage du radiateur, je lui envoie un message TTS d'erreur Je pourrais les supprimer, car elle s'est habituée à l'Octan Remote -- 362 is the Virtual Device ID -- 28 is the Process button ID local sid, bid = 362, 28 test_bouton = fibaro:getGlobalValue("octan_sdb") if (test_bouton == "1_1") then mp3 = "//192.168.1.xx/tts/radiateur_confort.mp3" elseif (test_bouton == "2_1") then mp3 = "//192.168.1.xx/tts/radiateur_economique.mp3" elseif (test_bouton == "1_3") then mp3 = "//192.168.1.xx/tts/erreur_radiateur.mp3" elseif (test_bouton == "2_3") then mp3 = "//192.168.1.xx/tts/erreur_radiateur.mp3" fibaro:debug(test_bouton) end -- Create STREAM params object local params = { -- stream: the file / uri stream = mp3, -- source: "local" or "http", "local" is setted by default source = "local", -- duration: play duration in seconds (option) or "auto" duration = auto, -- volume: the volume for playing the stream volume = 15 } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { stream = params }) _f:call(sid, "pressButton", bid) La ligne de code suivante fibaro:call(id_vd_SonosRemoteSDB, "pressButton", (radio_sonos_sdb + 21)); Parce que le bouton de sélection des radios du module virtuel de @Krikroff commence à 21 Et la ligne de code fibaro:call(id_vd_SonosRemoteSDB, "pressButton",7); Qui correspond au bouton "play"
i-magin Posté(e) le 7 mars 2016 Signaler Posté(e) le 7 mars 2016 T'es oblige de faire "play" après avoir choisi la radio ? j'avais l'impresison qu'elle partait toute seule . Bien vu le "+21" ;-) Juste pour le Debug de 40, je crois que c'est le bouton "-" pas "+" ;-) Moins souple avec 1 seul ordre/bouton. A voir comment l'ecrire avec 1 seul mais par exemple : Appui simple "+" : radio 1 .. a chaque appui suivant, radio 2, radio 3, radio 4, radio 5, radio 4, radio 3, radio 2, radio 1 ... ou radio 1, radio 2, radio 3, radio 4, radio 5, radio 1, radio 2, radio 3, radio 4, radio 5.... Plutot souple non ? Oui, le play est indispensable et le sleep aussi pour contourner un problème Se reporter au topic sur le VD de @Krikroff (latence de certaines radios et du coup le play ne se fait pas) Debug : tu as raison Pour ta solution, c'est selon son besoin ... Pour ma part, je ne veux pas faire un cycle complet pour une radio qui est juste avant
pepite Posté(e) le 7 mars 2016 Auteur Signaler Posté(e) le 7 mars 2016 c'est vrai que c'est un inconvenient de tout faire avec le même ordre/bouton, ca oblige, comme tu le dis, à faire un cycle complet. Bon 2 boutons ou 1 bouton/2 ordres differents ;-) Simple clic/double/clic t'as raison c'est plus soupe en fait, après reflexion. reste a maitriser le math.min /math.max ;-)
pepite Posté(e) le 8 mars 2016 Auteur Signaler Posté(e) le 8 mars 2016 olala je me retrouve coincer, à moitié je peux utiliser 2 boutons. L'idee de départ est d'utiliser qu'1 seul bouton pour le sonos : play/pause: simple clic next : double clic previous : appui long et la le bug : radios UP, radios DOWN 2 ordres, mais il ne m'en reste qu1 sur 1 bouton bien sur. En sachant que j'ai du mal avec l'appui long relache qui passe forcement par l'appui long, je ne sais jamais quoi faire avec ce relache ;-) Une idee de reorganisation ?
i-magin Posté(e) le 8 mars 2016 Signaler Posté(e) le 8 mars 2016 A mon sens, l'info de bouton relâché est liée au bouton maintenu. Je détecte le bouton maintenu : j'allume ma lampe dimmable au minimum et j'incrémente son éclairage jusqu'à l'info bouton relâché
pepite Posté(e) le 8 mars 2016 Auteur Signaler Posté(e) le 8 mars 2016 oui je suis d'accord avec toi, impossible de faire un appui long sans avoir tout de suite appui long relaché. je n'ai pas encore de dimmer mais c'est vrai que je ne vois l'usage du relache qu'avec des dimmers. ce que je ne sais pas encore faire hihihi D'autres idées ?
Messages recommandés