HomeMatic 6-Kanal FB mit Squeezebox

Hallo zusammen,

stehe da mal gerade wieder etwas auf dem Schlauch.
Würde gerne eine Squeezbox mit den Tasten einer HM-FB steuern, also die wichtigsten Funktionen wie ein/aus, Volume, sender.

Zur Steuerung kann ich die http commands des LMS Servers nutzen. Der Befehl zum ein/ausschalten lauten beispielsweise:


http://192.168.26.11:9002/status.html?p0=button&p1=power&player=80:1f:02:85:04:62

Aber wie bekomme ich das nun in ein Skript um den Aufruf mit der FB zu triggern??

Danke euch!

Moin,

einfach im IPS bei der jeweiligen Taste ein ausgelöstes Ereignis erstellen -> Code ausführen


$lms = file_get_contents("http://192.168.26.11:9002/status.html?p0=button&p1=power&player=80:1f:02:85:04:62");  

Das kann man wenn man will dann noch erweitern, weil in $lms dann die jeweilige Rückmeldung deines Servers abgelegt wird. Brauchst du aber wahrscheinlich nicht.

Gruß,
ika

Und „HomeMatic-Taster in IPS“ nicht vergessen! :wink:

Beste Grüße
/Jens

Sollte sich doch elegant(er) mittels Clientsocket realisieren lassen … oder ?

$ID = Clientsocket !!!

CSCK_SendText($ID, $MACAdr." mixer muting 1".chr(13)); # mute on
CSCK_SendText($ID, $MACAdr." mixer muting 1".chr(13)); # mute off

CSCK_SendText($ID, $MACAdr." power 0".chr(13)); # power off
CSCK_SendText($ID, $MACAdr." power 1".chr(13)); # power on

etc.

LG Tom

Sauber, danke euch für die Anregungen!

Das mit dem client socket klingt interresant…werde ich nachher mal versuchen umzusetzen…

Hast du LMS nicht weiter in IPS eingebunden ?
Da gibt es doch auch fertige Scripte hier im Forum.
Eventuell könnte man es auch darüber Lösen.
Michael

Ja, schon. Nutze die Squeezebox Scripte von Werner für das Webif.

Da habe ich auch schon nach geschaut, aber ist eigentlich ein wenig viel aufwand, hatte gehofft die FB-Bedienung mittels einem script lösen zu können…

Das könnte ja durchaus mit dem Clientsocket (der ja schon da ist) funktionieren, wenn ich noch die auslösende ID abfrage.

Ich konnte erst jetzt nachsehen…
Bei mir läuft das mit IPS_RunScript auf das jeweilige ‚Squeezebox AZ Steuerung.php‘ Skript der dazugehörigen Box.


IPS_RunScriptEx(24266 /*[Hardware\Squeezebox\Squeezebox Micha\Squeezebox Micha]*/,array('VARIABLE'=>39265  /*[Hardware\Squeezebox\Squeezebox Micha\Power]*/,'VALUE'=>false));

Wobei ‚VARIABLE‘ hier als Bsp. Power ist und true/false erwartet.
Alles in einem Script, Befehl abhängig von der gedrückten Taste.

Kannst natürlich, wie auch schon beschrieben, Direkt den Code in ein Ereignis legen.
Einfach unterhalb von dem Script ein ausgelöstet Ereignis anlegen, die HM-Taste als auslöser wählen, und dann das als Code reinschreiben.


IPS_RunScriptEx($_IPS['TARGET'],array('VARIABLE'=>39265  /*[Hardware\Squeezebox\Squeezebox Micha\Power]*/,'VALUE'=>true));

Ok, laut / leise ist dann schwieriger, da ja erst der alte Wert gelesen werden muss.

Aber gehen würde es.

Viele Wege führen hier zum Ziel :slight_smile:

Nimm den welchen du nachher wieder nachvollziehen kannst.

Michael

So, nun hab ich´s :smiley:

Das mit dem Client-Socket war genial, so hab ich nun ein Steuerskript pro Box, welches einfach durch die Tasten der FB getriggert wird.
works like a charm :loveips:


<?

$MACAdr = ('80:1f:02:xx:xx:xx'); 			# MAC-Adresse der Squeezebox
$ID = (16329); 									# Variablen-ID Client-Socket

$Taste1 = (34708);   							# Variablen-ID der FB-Taste1
$Taste2 = (24521);								# Variablen-ID der FB-Taste2
$Taste3 = (27663);								# Variablen-ID der FB-Taste3
$Taste4 = (56543);    							# Variablen-ID der FB-Taste4
$Taste5 = (54517);	    						# Variablen-ID der FB-Taste5
$Taste6 = (11610);    							# Variablen-ID der FB-Taste6

################### ab hier nichts mehr ändern #######################

switch($_IPS['VARIABLE'])
{
  case ("$Taste1"):
  CSCK_SendText($ID, $MACAdr." power ".chr(13)); # toggle power on/off
  break;
  
  case ("$Taste2"):
  CSCK_SendText($ID, $MACAdr." mixer volume +5 ".chr(13)); # Volume +5
  break;
  
  case ("$Taste3"):
  CSCK_SendText($ID, $MACAdr." mixer volume -5 ".chr(13)); # Volume -5
  break;
  
  case ("$Taste4"):
  CSCK_SendText($ID, $MACAdr." button preset_1.single ".chr(13)); # Favorit 1
  break;
  
  case ("$Taste5"):
  CSCK_SendText($ID, $MACAdr." button preset_2.single ".chr(13)); # Favorit 2
  break;
  
  case ("$Taste6"):
  CSCK_SendText($ID, $MACAdr." button preset_3.single ".chr(13)); # Favorit 3
  break;
}
?>