Hallo Mathias!
Ich habe mir heute Naachmnittag mal ein wenig Zeit genommen.
Zu deiner Antwort:
Verstehe ich das richtig, dass deine Sonos im Gang quasi Tag und Nacht durchläuft und nur gemutet wird? Wie ist das im mitm Stromverbrauch?
Das ist richtig. All meine Sonos Boxen laufen 24/7, wenn sie nicht eingeschalten sind, auf Standby. Die Play1 von mir nimmt 3,8W im Standby auf. Somit kostet mich eine Sonos Play1 in Österreich nichteinmal ganz 2,50€ im Jahr, wenn diese 24/7 im Standby wäre. Das ist mir der Komfort wert, dass ich immer sofort Musik habe und nicht jedesmal 1 Minute warten muss. Bei einem Besuch auf dem WC wäre ich da mit pinkeln schon fast fertig bevor die Musik einschaltet.
Somit läuft auf meinem „Master“ im Gang immer ein Radio bzw. Playlist und dieser wird lediglich mit Mute und Unmute geschalten. Alle anderen werden dann der Gruppe hinzugefügt bzw. entfernt oder laufen alleine.
Das ist jedoch Ansichtssache und jedem selbst überlassen.
Bei meinen Skripten ist genau dieses vorgesehen, wenn du diese wirklich wegschalten willst können wir das ja später noch einbauen.
Wäre es also für mich nicht so am besten:
Taste 1+2 für Start/Stop (Langer Druck) sowie Lauter/Leiser (Kurzer Druck)
Taste 3 für Quellwahl (Gruppe) (Dabei gibt es getrennte Gruppen für EG und OG)
Taste 4 für Quellwahl Einzelner Raum (Favoritenumschalten der 4 Radiosender)
Ich habe das soweit vorbereitet:
Taste 1+2 sollte als dimmen in der ETS konfiguriert werden Ein/Aus (Kurzer Tastendruck) - Lauter/Leiser (Langer Tastendruck) wie beim dimmen einer Lampe
Für die Quellenwahl muss ich dir später nochmal was basteln.
Welches Modul verwendest du? wie verwirklichst du die Favouritenumschaltung? Kannst du das Skript bitte online stellen, dann kann ich es dir probieren anzupassen.
Ich habe mal ein paar Sachen zusammengestellt, speziel auf dich zugeschnitten.
Ich arbeite auf der Basis von dem Modul tkugelberg/SymconSonos.
Schritt 1:
Sonos Instanz für jeden Raum anlegen - Hast du ja bereits
Schritt 2:
KNX Instanzen mit den GA für jeden Raum anlegen.
[ul]
[li]KNX Instanz für E/A (EIS1 Switch - Boolean)
[/li][li]KNX Instanz für Lauter/Leiser ( EIS2 DimControl - Integer)
[/li][li]
[/li][/ul]
Schritt 3:
Übergeordente Skripten anlegen:
Skript „Sonos Adressen“
<?
// In diesem Skript gibst du alle deine Sonosboxen bzw. Instanzen ein. Dieses Skript wird in den Nachfolgenden miteinbezogen. Somit musst du nicht immer all deine Skripte individuell anpassen.
$Sonos_Kueche=37870; //Sonos Instanz Küche Statt 37870 eingeben
$Sonos_Hauptbad=38616; //Sonos Instanz Hauptbad Statt 38616 eingeben
$Sonos_GaesteWC=32765; //Sonos Instanz Gäste WC Statt 32765 eingeben
$Sonos_Buero=13637; //Sonos Instanz Büro Statt 13637 eingeben
$Sonos_Duschbad=43928; //Sonos Instanz Duschbad Statt 43928 eingeben
$Sonos_HauptEG=$Sonos_Kueche; // Hier wird angegeben wer im EG der Gruppenmaster sein soll.
$Sonos_HauptOG=$Sonos_Buero; // Hier wird angegeben wer im OG der Gruppenmaster sein soll.
?>
Skript „Vorlage für alle Sonosinstanzen für Lautstärke“:
<?
// In diesem Skript behandeln wir Global wie jede Sonosbox beim Dimm-befehl über KNX die Lautstärke ändern soll.
//Vorgabe Lauter Leiser in % pro Abfrage
$Lauter=2; // hier wird die Prozentzahl eingegeben um wieviel sich die Lautstärke in einem Step (hier im Beispiel 300ms) erhöhen soll
$Leiser=-2; // hier wird die Prozentzahl eingegeben um wieviel sich die Lautstärke in einem Step (hier im Beispiel 300ms) veringern soll
// In den folgenden Schritten wird der Dimm-KNX Wert aus dem Auslöseskript abgefragt und dementsprechend die Aktion auf der Sonosinstanz ausgeführt.
if($KNX_Wert == 9)
{
//Timer anschalten = Der Timer läuft so lange der KNX Taster gedrückt wird.
IPS_SetScriptTimer($_IPS['SELF'], 1); // setzt den Timer auf 1 sekunde. Das Heisst das dieses Skript alle 1s neu aufgerufen wird.
//Sonos Lauter
SNS_ChangeVolume($Sonos, $Lauter);
}
elseif ($KNX_Wert == 1)
{
//Timer anschalten = Der Timer läuft so lange der KNX Taster gedrückt wird.
IPS_SetScriptTimer($_IPS['SELF'], 1);
//Sonos Leiser
SNS_ChangeVolume($Sonos, $Leiser);
}
elseif ($KNX_Wert == 0)
{
//Timer ausschalten = Der Timer wird zurückgesetzt wenn der KNX Taster losgelassen wird.
IPS_SetScriptTimer($_IPS['SELF'], 0); // Der Skripttimer wird hier wieder auf 0 gesetzt.
}
ips_sleep(300); // Hier wird die Zeit in ms angegeben wie lange es dauern soll bis die nächste erhöhung bzw. veringerung der Lautstärke stattfindet. 300ms ist aus meinen Erfahrungen Perfekt.
// Ab hier wird das ganze wiederholt. Der Skripttimer ist auf 1s gestellt. die Pause zwischen den Befehlen beträgt 300ms. Demnach wiederhole ich den Befehl 3mal. 3x300ms=900ms. Nach 1 Sekunde fängt das ganze wieder von vorne an bis der KNX-Taster losgelassen wird.
$KNX_Wert;
if($KNX_Wert == 9)
{
SNS_ChangeVolume($Sonos, $Lauter);
}
elseif ($KNX_Wert == 1)
{
SNS_ChangeVolume($Sonos, $Leiser);
}
elseif ($KNX_Wert == 0)
{
return;
}
ips_sleep(300);
$KNX_Wert;
if($KNX_Wert == 9)
{
SNS_ChangeVolume($Sonos, $Lauter);
}
elseif ($KNX_Wert == 1)
{
SNS_ChangeVolume($Sonos, $Leiser);
}
elseif ($KNX_Wert == 0)
{
return;
}
?>
Schritt 4:
Merker für jeden Raum anlegen:
Dazu in jedem Raum eine neue Variable vom Typ Boolean anlegen und dementsprechend benennen. Siehe auch auf Bild 1.
Schritt 5:
Skript „Sonosinstanz Ein/Aus“ für jeden Raum anlegen der nicht der Gruppenmaster im EG oder OG sein soll.
<?
// Id`s aus dem Skript "Sonos Adressen" holen. Nur einmal die ID des Skriptes "Sonos Adressen" eintragen. Bleibt dann für alle gleich.
include "31534.ips.php"; // ID des Skriptes "Sonos Adressen" eingeben.
//Werte zum Verändern
//Wert von KNX Taster schalten holen
$KNX_Wertswitch=GetValue(10748); // ID des KNX-Befehl "Boolean" Ein/Aus angeben. Hier wird der aktuelle Wert des KNX-Taster abgerufen.
//Instanz Sonos Komponente
$Sonos=$Sonos_Hauptbad; //Gibt an welche Instanz gesteuert werden soll.
// Gibt an welche Instanz für das "Vorlagenskript EIN/AUS" als Gruppenadmin genommen werden soll.
$Sonos_Haupt=$Sonos_HauptEG; // Hier wird bestimmt in welche Gruppe sich die Instanz bei Multiroom eingliedern soll. Im OG einfach die Variable $Sonos_HauptOG angeben.
// Hier wird der Merker für den Raum der Sonosinstanz bestimmt um unterscheiden zu können ob die Quellenauswahl nur für diese Instanz oder für die komplette Gruppe wirken soll.
$Sonos_Merker=45540; // Hier die ID des Merkers (erstellte Merker Variable vom Typ Boolean) angeben.
// Nicht ändern.
if($KNX_Wertswitch == true) // Wenn der KNX Befehl "Ein" aus dem Auslöseskript erfolgt
{
SNS_SetDefaultVolume($Sonos); // Setzt die Lautstärke der Sonosinstanz auf default, welche in der Distanz selber angegeben werden kann.
SNS_SetGroup($Sonos, $Sonos_Haupt); // Gruppiert die Sonosbox in die Gruppe des Gruppenmasters
SetValueBoolean($Sonos_Merker, true); // Setzt einen Merker um zu wissen ob bei Auswahl einer Quelle nur diese Instanz oder die Gruppe gewechselt werden soll.
}
if($KNX_Wertswitch == false) // Wenn der KNX Befehl "Aus" aus dem Auslöseskript erfolgt
{
SNS_SetGroup($Sonos, 0); //entfernt die Sonosbox wieder aus der Gruppe.
SetValueBoolean($Sonos_Merker, false); // Setzt einen Merker wieder auf 0 um zu wissen ob bei Auswahl einer Quelle nur diese Instanz oder die Gruppe gewechselt werden soll.
}
?>
Diesem Skript ein Ereignis hinzufügen:
[ul]
[li]Ereignis - bei Variablenaktualisierung des Values Boolean für E/A (KNX) des Raumes skript ausführen
[/li][li]
[/li][/ul]
Schritt 6:
Skript „Sonosinstanz Mute/Unmute“ für die Räume anlegen die Gruppenmaster im EG oder OG sein soll.
<?
// Id`s aus dem Skript "Sonos Adressen" holen. Nur einmal die ID des Skriptes "Sonos Adressen" eintragen. Bleibt dann für alle gleich.
include "31534.ips.php"; // ID des Skriptes "Sonos Adressen" eingeben.
//Werte zum Verändern
//Wert von KNX Taster schalten holen
$KNX_Wertswitch=GetValue(10748); // ID des KNX-Befehl "Boolean" Ein/Aus angeben. Hier wird der aktuelle Wert des KNX-Taster abgerufen.
//Instanz Sonos Komponente
$Sonos=$Sonos_Kueche; //Gibt an welche Instanz gesteuert werden soll.
// Hier wird der Merker für den Raum der Sonosinstanz bestimmt um unterscheiden zu können ob die Quellenauswahl nur für diese Instanz oder für die komplette Gruppe wirken soll.
$Sonos_Merker=21078; // Hier die ID des Merkers (erstellte Merker Variable vom Typ Boolean) angeben.
// Nicht ändern.
if($KNX_Wertswitch == true) // Wenn der KNX Befehl "Ein" aus dem Auslöseskript erfolgt
{
SNS_SetMute($Sonos, false); // Setzt die Instanz auf Unmute also Laut
SetValueBoolean($Sonos_Merker, true); // Setzt einen Merker um zu wissen ob bei Auswahl einer Quelle nur diese Instanz oder die Gruppe gewechselt werden soll.
}
if($KNX_Wertswitch == false) // Wenn der KNX Befehl "Aus" aus dem Auslöseskript erfolgt
{
SNS_SetMute($Sonos, true); // Setzt Die Instanz auf Mute
SNS_SetDefaultVolume($Sonos_Kueche); // Setzt das Volume wieder auf default damit beim nächsten mal einschalten keiner an einem Herzinfarkt stirbt -:)
SetValueBoolean($Sonos_Merker, false); // Setzt einen Merker wieder auf 0 um zu wissen ob bei Auswahl einer Quelle nur diese Instanz oder die Gruppe gewechselt werden soll.
}
?>
Diesem Skript ein Ereignis hinzufügen:
[ul]
[li]Ereignis - bei Variablenaktualisierung des Values Boolean für E/A (KNX) des Raumes skript ausführen
[/li][li]
[/li][/ul]
Schrit 7:
Skript „Sonosinstanz Lauter/Leiser“ für jeden Raum anlegen.
<?
// Id`s aus dem Skript "Sonos Adressen" holen
include "31534.ips.php"; // ID des Skriptes "Sonos Adressen" eingeben. Nur einmal ID anpassen.
//Werte zum Verändern
//Wert von KNX Taster dimmen holen
$KNX_Wert=GetValue(15496); // ID des KNX Befehls des Tasters dimmen "Integer" angeben.
//Instanz Sonos Komponente
$Sonos=$Sonos_Hauptbad; // Angeben welche Instanz gesteuert werden soll (hier z.B. $Sonos_Hauptbad). Diese Variable muss mit der in dem Skript "Sonos Adressen" überinstimmen.
// NICHT ändern (Nur einmal die ID anpassen)
//Vorlagenskript Lauter Leiser Global ausführen
include(IPS_GetScriptFile(28067)); // ID des Skriptes "Vorlage für alle Sonosinstanzen für Lautstärke" eingeben.
?>
Diesem Skript ein Ereignis hinzufügen:
[ul]
[li]Ereignis - bei Variablenänderung des Values Integer für Lauter/Leiser des Raumes skript ausführen
[/li][li]
[/li][/ul]
Schritt 8:
Skript für Quellenänderung folgt noch.
Im Anhang findest du noch ein Bild von meinem dazu gebastelten Stammbaum.
Habe kurz getestet, funktioniert soweit.
Das kannst du ja mal testen und schauen ob dir das so gefallen würde. Dann können wir ja weiter auf deine Wünsche eingehen.
Aber bitte kurz testen.
Denn falls du ein anderes Modul oder doch andere Vorstellungen hast, müssen wir umschwenken.
Ich hoffe das hilft dir ein wenig weiter.
Bei Fragen einfach melden.
Gruß Dani