Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hallo,
habe ein OpenHab 2 System, in der Visu funktioniert Sonos ohne Probleme, nun möchte ich mit einen Tastsensor Laut Leise und Pause steuern geht das, habe kein Plan wie ich das programmieren soll.
KNX? Dann einfach ein paar GAs in der ETS anlegen, mit den Tastern verknüpfen, items dazu im Openhab anlegen und per Rule die Änderung der GA abfragen und in sendcommand-Befehle auf das Controlleritem der jeweiligen Sonos umsetzen.
könntest Du das bitte etwas genauer erklären? Also die Rules und die sendcommand! Den Rest habe ich schon laufen, also EIN und AUS schalten eines Players über Taster (incl. Rules um die Lautstärke VOR dem einschalten anzupassen).
Aber die Lautstärke per Taster ändern habe ich noch nicht hinbekommen
GA 1/0/0 ist EIN/AUS, GA 1/0/1 ist INCREASE/DECREASE. Der Taster ist so konfiguriert, dass bei gerdücktem Taster INCREASE/DECREASE alle 400ms wiederholt wird.
Rule:
Code:
rule "SB BadEG dimm"
when
Item Squ_GF_Bath_1 received command
then
switch receivedCommand {
case OFF : {
logDebug("Squeezebox","Bad EG Titel zurück")
squeezeboxNext("Squ_Bad_EG" )
}
case ON : {
logDebug("Squeezebox","Bad EG Titel vor")
squeezeboxPrev("Squ_Bad_EG")
}
case DECREASE : {
logDebug("Squeezebox","Bad EG lauter")
Squ_GF_Bath_Volume.sendCommand(Squ_GF_Bath_Volume.state as DecimalType + 5)
}
case INCREASE : {
logDebug("Squeezebox","Bad EG leiser")
Squ_GF_Bath_Volume.sendCommand(Squ_GF_Bath_Volume.state as DecimalType - 5)
}
}
end
So, hatte jetzt mal Zeit zum testen ... und es funktioniert
Allerdings habe ich keinen Dimmer eingesetzt, sondern einen Schalter. So muss man halt öfter drücken um die Lautstärke zu erhöhen oder zu verringern.
Ich denke dies schont die Ohren und die Lautsprecher, falls man(n) mal zuuuu lange drauf drückt.
Die die Rules für Lautstärke ändern und Track ändern:
Code:
// Change Volume
rule "Sonos WZ Volume"
when
Item SonosWZVolume received command
then
switch receivedCommand {
case ON : {Sonos_Volume_WZ.sendCommand(Sonos_Volume_WZ.state as DecimalType +3)}
case OFF : {Sonos_Volume_WZ.sendCommand(Sonos_Volume_WZ.state as DecimalType -3)}
}
end
// Change Track
rule "Sonos WZ change Track"
when
Item SonosWZNext received command
then
switch receivedCommand {
case ON : {sendCommand(SonosWZControl, NEXT)}
case OFF : {sendCommand(SonosWZControl, PREVIOUS)}
}
end
Works like a charme
Viel Spass beim Testen
Frank
Zuletzt geändert von azzkikrboy; 16.06.2017, 19:18.
Allerdings habe ich keinen Dimmer eingesetzt, sondern einen Schalter. So muss man halt öfter drücken um die Lautstärke zu erhöhen oder zu verringern.
Ich denke dies schont die Ohren und die Lautsprecher, falls man(n) mal zuuuu lange drauf drückt.
Ja, da hab ich etwas vergessen, zu erwähnen... Ich habe einen zentralen Verstärker (4x2x15W Sinus Class D) für 4 verschiedene Räume. Die Maximallautstärke ist durch den Verstärker vorgegeben (bzw. an der Endstufe eingestellt), so dass ich nicht zu laut hören kann.
Allerdings funktioniert die Steuerung für uns sehr gut.
Eine weitere Einschränkung war, dass ich nur zwei Taster zur Verfügung hatte - Programmauswahl (Playlisten, Streamauswahl) mache ich per App, Lautstärke und Titelsprung geht dann über die Taster. Start und Stop ist parallel zum Licht geschaltet.
Alle vier Jahre kommt der Faschingsumzug direkt an unserem Haus vorbei, da wird dann natürlich mit gefeiert und die Toilette dürfen auch Fremde nutzen, da wird dann beim Ausschalten des Lichts immer ein Tusch gespielt
rule "SB BadOG prevNext"
when
Item Squ_FF_Bath_Next received command
then
if (Squ_FF_Bath_Next.state==OFF)
squeezeboxNext("Squ_Bad_OG")
else
squeezeboxPrev("Squ_Bad_OG")
end
rule "SB BadOG dimm"
when
Item Squ_FF_Bath_1 received command
then
switch receivedCommand {
case OFF : {
logDebug("Squeezebox","Bad OG Titel zurück")
squeezeboxNext("Squ_Bad_OG" )
}
case ON : {
logDebug("Squeezebox","Bad OG Titel vor")
squeezeboxPrev("Squ_Bad_OG")
}
case DECREASE : {
logDebug("Squeezebox","Bad OG lauter")
Squ_FF_Bath_Volume.sendCommand(Squ_FF_Bath_Volume.state as DecimalType + 5)
}
case INCREASE : {
logDebug("Squeezebox","Bad OG leiser")
Squ_FF_Bath_Volume.sendCommand(Squ_FF_Bath_Volume.state as DecimalType - 5)
}
}
end
rule "SB BadOG Play"
when
Item Light_FF_Bath received command
then
if (receivedCommand==ON) {
if (now.plusHours(4).getHourOfDay > 10)
Squ_FF_Bath_Volume.sendCommand(60)
else
Squ_FF_Bath_Volume.sendCommand(30)
squeezeboxPlay("Squ_Bad_OG")
}
else if (receivedCommand==OFF)
squeezeboxPause("Squ_Bad_OG")
end
Auf knx-Seite ist der Taster als Dimmer-Wippe konfiguriert, wobei Langzeit auf zyklisch Senden eingestellt ist.
Unter OH2 sind viele der Klimmzüge unnötig, weil das Binding wesentlich mehr Möglichkeiten bietet. Das habe ich aber bisher nicht angebunden, das knx Binding ist unter OH bei mir etwas zickig.
// Change Volume
rule "Sonos WZ Volume"
when
Item SonosWZVolume received command
then
switch receivedCommand {
case ON : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType +2)}
case OFF : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType -2)}
}
end
Hast du noch etwas importiert oder so?
Item sind angelegt wie bei dir
Eventuell passt der Status nicht. Wird denn eine Lautstärke in der UI angezeigt?
Du könntest notfalls mit einem Default arbeiten:
Code:
rule "Sonos WZ Volume"
when
Item SonosWZVolume received command
then
if (!(Sonos_Volume.state instanceof DecimalType)) {
Sonos_Volume.sendCommand(50) //Defaultwert
}
switch receivedCommand {
case ON : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType + 2)}
case OFF : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType - 2)}
}
end
Ich probiere jetzt seit 3 Abenden verzweifelt den Sonos Lautsprecher in meinem Schlafzimmer mit einen knx Tastsensor zu schalten.
Jetzt setze ich auf eure Unterstützung
Ich habe im ETS eine Grupenadresse als Umschalter angelegt (4/1/0)
Im vorliegenden Fall wäre die Rule mit einem if-Statement einfacher - ein Switch kann nur entweder OFF oder ON als Kommando empfangen, NULL ist kein gültiges Kommando, nur ein möglicher Status. Die Rule könnte also so aussehen:
Code:
rule "Sonos SZ Play/Pause"
when
Item PlayPauseSonosSZ received command
then
if(receivedCommand == ON)
SonosSZControl.sendCommand(PLAY)
else
SonosSZControl.sendCommand(PAUSE)
end
Und noch kürzer:
Code:
rule "Sonos SZ Play/Pause"
when
Item PlayPauseSonosSZ received command
then
SonosSZControl.sendCommand(if (receivedCommand == ON) PLAY else PAUSE)
end
Wobei letztere Variante natürlich auch umgebrochen werden kann, um die Lesbarkeit zu erhöhen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar