Sonos Node-Sonos-HTTP-API mit NOD ON Octan Fernbedienung

Hallo Zusammen,

seit einiger zeit nutze ich das Sonos Node-Sonos-HTTP-API auf einem Raspberry Pi in Verbindung mit dem HC2. Das funktioniert soweit auch super und ich bin zufrieden damit. Es fehlt mir nur noch ein Punkt, um komplett zu wechseln vom Sonos Commander zur Node-Sonos-HTTP-API. Ich nutze im Bad und in der Küche jeweils als Fernbedienung für die Sonos die NOD ON Octan Fernbedienung. Dort habe ich eine Funktion womit ich den Sender Wechseln kann. Dies wird mittels eines Sliders realisiert.

elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==30)
    then
 local Sender = ( tonumber(fibaro:getValue(sonosCommander, "ui.Senderbtn.value")));
 if ( tonumber(Sender)) < 10
 then Sender = 11
     elseif  ( tonumber(Sender)) > 25
     then Sender = 21
 end
  Senderneu = (Sender+ 1)
  fibaro:call(sonosCommander, "setSlider", "36", Senderneu); -- Sender in Slider speichern
  fibaro:call(sonosCommander, "pressButton", Senderneu); -- Sendertaste drücken
  fibaro:sleep(1*1000);
  fibaro:call(sonosCommander, "pressButton", "7"); -- Play drücken
 if debug then Debug( "green", " Radiosender gewechselt von: " .. Sender .. " auf: " .. Senderneu);
   end

Bei der Node-Sonos-HTTP-API habe ich aber keinen Slider, sondern nur 6 Buttons mit den Radiosendern (siehe Foto). Jemand eine Idee wie ich einen Senderwechsel per Tastendruck auf der Fernbedienung ausführen kann?

Lg. Beijonig

1.jpg

Hi,

die Buttons haben fortlaufende IDs, mit denen kannst du es realisieren. So wie du es mit dem Slider machst und dann 1 addieren.

Gruß

Hallo Boomx,

danke für deine Antwort! klingt in der Theorie ziemlich einfach :-). Ich brauche trotzdem etwas Unterstützung. Die ID´s der Butten habe ich herausgefunden:


	fibaro:call(302, "pressButton", "18");
	fibaro:call(302, "pressButton", "19");
	fibaro:call(302, "pressButton", "20");
	fibaro:call(302, "pressButton", "21");
	fibaro:call(302, "pressButton", "22");
	fibaro:call(302, "pressButton", "23");

Ich verstehe aber nicht wie ich das jetzt ohne den Slider hinbekomme. Vorher hat er ja den Slider abgefragt und entsprechend den Sender in den Slider geschrieben. Vielleicht könntest du mir hier helfen den Code anzupassen?

Lg. Beijonoig

Dann nimmst du jetzt anstatt dem Slider eine Globale Variable oder ein Label im VD. :slight_smile: Diesen fragst du ab, schaltest dein Radio und addierst 1 dazu. Beim nächsten Drücken würde dann die 19 folgen, dann 20, usw. Wenn der Wert 23 ist, dann setzt du wieder den Wert 18. Dies kannst du in beide Richtungen (oben/unten) umsetzen.

Gruß

Hallo Boomx,

habe mir jetzt ein neues Lable angelegt (Lable8). Bekomme immer folgende Fehlermeldung
[DEBUG] 12:10:23: line 50: attempt to compare nil with number

Line 50 ist in meinem Fall:


 if ( tonumber(Sender)) < 23


elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==30)
    then
 local Sender = ( tonumber(fibaro:getValue(sonosCommander, "ui.Label8.value")));
 if ( tonumber(Sender)) < 23
 then Sender = 18
     elseif  ( tonumber(Sender)) > 18
     then Sender = 23
 end
  Senderneu = (Sender+ 1)
  fibaro:call(sonosCommander, "setProperty", "ui.Label8.value", Senderneu); -- Sender in Label speichern
  fibaro:call(sonosCommander, "pressButton", Senderneu); -- Sendertaste drücken
 if debug then Debug( "green", " Radiosender gewechselt von: " .. Sender .. " auf: " .. Senderneu);
   end

Ich hoffe du kannst mir vielleicht weiterhelfen wo der Fehler liegt.

Lg. Beijonig

Der LUA-Interpreter markiert immer die nächste Zeile als Fehler. Bei dir ist der Fehler in Zeile 49. :slight_smile: Dort gibt dein getValue ein NIL zurück.

Gruß

Kann es sein, dass du das Label erst setzen musst und da derzeit nichts drin enthalten ist? Ggf. ist es mit einer GV doch einfacher…

Hallo Boomx,

okay das bedeutet das in dem Lable nichts steht und deshalb er eine Null ausgibt. Also muss ich das Lable mit einer Zahl befüllen. Das habe ich jetzt so gelöst:


fibaro:call(302, 'setProperty', 'ui.Label8.value', "18")

Im Lable steht jetzt die 18

Jetzt kommt zwar keine Fehlermeldung mehr, aber er wechselt den Sender auch nicht. Da stimmt noch was mit den ID´s nicht also welchen Button er drücken soll oder?

lg. Beijonig

Würd jetzt ein paar Debugs einbauen, ob und welche Schleife durchlaufen wird.

Gruß

Hey Boomx,

hab wie du schon gesagt hast mir Debugs eingebaut, und mich somit Stück für Stück durchgearbeitet. Jetzt Funktioniert alles, danke für deine Unterstützung.

lg. Beijonig