Aller au contenu

Messages recommandés

Posté(e)

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 ;-)

Posté(e)

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 ?

Posté(e)

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 ;-) ?

Posté(e)

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 ;-)

Posté(e) (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é par i-magin
Posté(e)

tu sors Berale :D :D :D :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 ;-)

Posté(e)

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]()

 

Posté(e)

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 ?

Posté(e)

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"

 

 

 

 

 
 
Posté(e)

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  ;)

Posté(e)

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 ;-)

Posté(e)

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 ?

Posté(e)

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é

Posté(e)

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 ?

×
×
  • Créer...