Squeezebox™

Ok IrBlaster bin ich zu blöde, ABER ich hab die dbox2 über die Bridgefunktions angeschlossen :slight_smile: wie geil ist das denn ?
LOL
Wenn irgendwer noch zweifet das Ding zu kaufen…JTG läßt grüßen :slight_smile:

Hallo,

da muss man wie ich mich erinnern kann nichts groß einstellen.
Du musst nur auf der Commandline die „unknownir“ abbonieren.

Ab dann wird dir auf der commandline der IR-Befehl ausgegeben.

Gruß Philipp

AHJA :confused: :confused:

Hi!

Ich muss erstmal dazu schreiben, dass ich das IRBlaster-Zeug nur installiert habe, um dir bei der Frage zu helfen, es jedoch aber überhaupt nicht benutze, aber nachdem ich jetzt nochmal über diese und diese Seite gelesen habe, ist das

damit garnicht möglich!

Du könntest theoretisch mit dem IRBlaster-Plugin, von IPS aus, IR-Befehle von deiner SB an benachbarte Geräte senden, aber damit nicht über eine Fernbedienung (wohlgemerkt bezogen auf das IRBlaster-Plugin) IPS steuern oder Scripte triggern.http://www.gwendesign.com/slimserver/images/p_irblasterweb03.jpg

Das oben genannte funktioniert auch nur, wenn du Infrared Blaster for Squeezebox2/v3 an die SB anschließt und müsstest du noch die Konfigdatei einfügen, wie hier beschrieben.

Das Plugin liest LIRC www.lirc.org kompatible Fernsteuerungs-Dateien. Die Konfigurationsdatei sollte in das IRBlaster Verzeichnis kopiert werden und die Endung .conf haben.

…dann hättest du auch die Möglichkeit, Einstellungen am IRBlaster-Plugin durchzuführen, wie es hier abgebildet ist:

Hmm dann hab ich das wohl irgendwie falsch verstanden :frowning:

Hallo,

u könntest theoretisch mit dem IRBlaster-Plugin, von IPS aus, IR-Befehle von deiner SB an benachbarte Geräte senden, aber damit nicht über eine Fernbedienung (wohlgemerkt bezogen auf das IRBlaster-Plugin) IPS steuern oder Scripte triggern

Das stimmt so nicht!

Sobald das IRBlaster Plugin läuft, wird auf dem CLI unter der Rubrik „UnknownIR“ jeder IR-Befehl der die Box auffängt, und nicht zur STeuerung der selbigendient, ausgegeben.
Diese Befehle kommen dann im IPS an und man kann diese auswerten.

So mache ich das bei mir zur Zeit zum Testen. Ich kann mit meiner Humax Fernbedienung über die Squeezebox beleibige Scripte in IPS triggern.

Auf dem CLI werden aber nur Befehle ausgegeben, die man „abboniert“ hat. Somit muss man beim Verbinden des Clientsockets ein kurzes Script starten welches dies tut. Danach kommen die Empfangenen IR-Befehle auf dem CLI an.

Das Abbonieren kannst du mit " ‚subscribe unknownir‘.chr(13) " an den Clientsocket senden erledigen.

Danach kommen erkannte IR-Befehle wie folgt an:
„'00%3A04%3A20%3A12%3A25%3Aca unknownir 80e8f807 76.286“

Der Teil „80e8f807“ ist der IR-Befehl (hier die VOL + von meiner Humaxfernbedienung)

Jetzt musst du nur noch mit einem Script den String auseinandernehmen und Du hast den IR-Befehl mit dem sich IPS dann ja alles machen lässt.

Da der erste Teil des Empfangenen Status wieder die MAC-Adresse der Box ist, die den Befehl empfangen hat, kann man auch diese ncoh zur evtl. Unterscheidung nutzen.

Gruß Philipp

Hallo Philipp,
du scheinst das ja schon hinbekommen zu haben, kannst mir da was geben, bzw mir erklären was ich machen muß. ? ich kann mit den ganzen Sachen nix anfangen die du da schreibst . Geschweige denn dieses umsetzten ! WIE abbonniere ich denn was ? und wie geb ich das dann dem Clientsocket weiter, und zu guter letzt wie um alles in der welt nehm ich den String auseinander ?

Hallo,

klar helfe dir gerne weiter, muss nur jetzt weg und melde mich später mal mit den scripten.

Philipp

Sorry! Dann hatte ich das falsch verstanden.

Hallo,

ich habe zwar keine Squeezebox, hab im Eib Forum gelesen das es eine neue Software dafür gibt.

http://www.slimdevices.com/su_downloads.html

Gruß
Christian

Schönen dank, hab ich seit gestern auch schon druff :slight_smile:

@ nancilla: Kein Problem, ist auch nicht ganz so einfach durch die Pluginfunktionen durchzusteigen:)

Also hier die Beschreibung und die versprochenen Scripte zum IR-Befehle empfangen.

Als erstes muss die Clientsocket Verbindung aufgebaut sein (wie du das ja bereits für die Textmedlungen hast)

Dann über das CLI die „UnknownIR“ abbonieren:

Dazu folgendeses Script starten:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ir_anmelden.ips.php
Trigger  : 
Interval : 
*/
   $TX_BUF = 'subscribe unknownir'.chr(13);
//Etwas über den COM Port senden
$result = CSCK_SendText(19028, $TX_BUF);  

?>

Danach werden auf dem CLI auch IR-Befehle welche die Box auffängt und die nicht für sie zum steuern gedacht sind ausgegeben. Diese kommen dann in der mit dem CLientsocket verbundenen Registervariablen (Squeesze) an.

Jetzt musst Du nur die IR-Befehle aus der Variablen rausschneiden. In meinem kurzen Script wird nur der IR-Befehl rausgeholt. Auch gehe ich davon aus, dass nur die „UnknownIR“ Befehle abboniert sind. Denn das nachfogende Script holt einfach nur an einer bestimmen Stelle eine bestimmte Anzahl von Zeichen raus.
Dafür solltest du noch eine Variable „irbefehl“ als String anlegen.

Dann folgendes Script mit Onupdate auf die SqueeszeVariable triggern.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ir_lesen.ips.php
Trigger  : 
Interval : 
*/

 //IR-String einlesen
$inbuf=Trim( $IPS_VALUE );

 //IR-Befehlsstring extrahieren
$ir= substr($inbuf, 38, 8);
//echo $ir;
setvaluestring("irbefehl",$ir);

?>

Somit hast Du automatisch den IR-Befehl in der irbefehl Variablen.

Nun kannst Du mit einem Script welches auf die irbefehl Variable getriggert wird je nach Inhalt der Variablen verschiedene IPS-Befehle ausführen.

Hier ein Beispiel von mir mit welchem ich LCN-Befehle absende. Wobei der AUfbau mit dem Switchbefehl ja auch für andere Funktionen benutzt werden kann.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ir_befehle.ips.php
Trigger  : 
Interval : 
*/
  
$inbuf=Trim( $IPS_VALUE );

switch($inbuf){
case "80e8c23d":

$relais= 1;
$TX_BUF = LCN-Befehl.chr(10);
  $result = CSCK_SendText(LCN_Port, $TX_BUF);
  break;
  
case "80e86897":

$relais= 1;
$TX_BUF = LCN-Befehl.chr(10);
  $result = CSCK_SendText(LCN_Port, $TX_BUF);
  break;

    }

?>

Hoffe das war verständlich, ansonsten einfach fragen :slight_smile:

Gruß Philipp

Tatsächlich , der Befehl kommt hier am pc an :slight_smile:

in der „irbefehl“ variable hab ich nu was drin …
ok da ich nur fs20 hier habe blick ich glaub ich bei deinem 3ten skript net durch.
wie weise ich denn unterschiedliche skripte den unterschiedlichen ir befehlen zu , die in der „irbefehle“ landen ?
jetzt sagt mir net das das alles mit if else laufen muß :frowning:

ICH - PHPnoob

Hallo,

ob LCN oder FS20 macht nur im letzten Script beim auszuführenden Befehl einen unterschied.

Im Script brauchst Du natürlich eine IF/ELSE oder Switch Bedingung um je nach IR-Befehl unterschiedliche Befehle auszuführen.
Aber Du hast doch im letzten Script ein Beispiel für die Switchbedingung, in die Du beliebige FS20 Befehle einbauen kannst und auch um weitere Bedingungen erweitern.

<? 
/* 
******************************* 
IP-SYMCON Event Scripting 
******************************* 
File     : ir_befehle.ips.php 
Trigger  : 
Interval : 
*/ 
   
$inbuf=Trim( $IPS_VALUE ); 

switch($inbuf){ 
case "80e8c23d": //Wenn IR-Befehl = 80e8c23d dann wird folgender Befehl ausgeführt

$TX_BUF = Dein FS20 Befehl
  $result = CSCK_SendText(Dein FS20Port, $TX_BUF); 
 
 break; 
   
case "80e86897": //Wenn IR-Befehl = 80e8c23d dann wird folgender Befehl ausgeführt

$TX_BUF = Dein FS20 Befehl
  $result = CSCK_SendText(Dein FS20Port, $TX_BUF); 
  
break; 

case "1234": //Wenn IR-Befehl = 1234 dann wird folgender Befehl ausgeführt

$TX_BUF = Dein FS20 Befehl
  $result = CSCK_SendText(Dein FS20Port, $TX_BUF); 
  
break; 

    } 

?> 

Wenn Du noch mehr IR-Beferhle nutzen willst, einfach einen weiteren Case-Block

case "1234": //Wenn IR-Befehl = 1234 dann wird folgender Befehl ausgeführt

$TX_BUF = Dein FS20 Befehl
  $result = CSCK_SendText(Dein FS20Port, $TX_BUF); 
  
break; 

im obigen Script einfügen.

Gruß Philipp

grr blöde ist dann natürlich auch, daß man dann über die registervariable auch wieder einen text zur box sendet, dadurch kommt der natürlich bischen durcheinander.
also im Klartext ich bekomme ja grade schon die befehle, ich kann auch zb Licht schalten das geht ( habs hinbekommen :slight_smile: )
ABER so ne art Info ala Temperatur aktuell im Wohnzimmer:

komischerweise kommt dann :
<b>Fatal error</b>: Call to undefined function slim_text() in <
und des weiteren schreibt er natürlich in die selbe registervari rein

Hallo,

dann kopiere diesen PHP-Code in eine Case-Schleife.

Also



switch($inbuf){ 
case "80e8c23d": //Wenn IR-Befehl = 80e8c23d dann wird folgender Befehl ausgeführt 

$Temp = sprintf("%01.1f",GetValueFloat("Temp_wohn_IST"));  // nur 1 stelle hinter dem komma 


slim_text("00:04:20:12:2d:19", "Temperatur im Wohnzimmer:", $Temp, 20); 

function slim_text($box , $text1 , $text2 , $time) 
{ 
$TX_BUF = $box." display " .rawurlencode($text1)." ".rawurlencode($text2.chr(186).chr(67))." ".$time.chr(13); 
//Etwas über den COM Port senden 
$result = CSCK_SendText(19028, $TX_BUF); 
} 



break;

Gruß Philipp

Hallo,

natürlich kommt der String auch in der Registervariablen an, da dieser auf dem CLI ausgegeben wird. In dem Fall ist natürlich der IR-Befehl der extrahiert wird Blödsinn. Nur macht das nichts, da wenn der extrahierte IR-Befehl in keinem „Case“ definiert ist, wird er ignoriert.

Schon klar, dass das nicht schick ist sondern eher dirty :wink: aber für meine Tests der Funktion hats bisher gereicht. Sauberer wird es natürlich wenn man zuerst die Art der Meldung ausliest, und dann individuell auf den Code eingeht.

Gruß Philipp

Komisch , es kommt nix an der Box an

<? 
/* 
******************************* 
IP-SYMCON Event Scripting 
******************************* 
File     : ir_befehle.ips.php 
Trigger  : 
Interval : 
*/ 
    
$inbuf=Trim( $IPS_VALUE ); 

switch($inbuf){ 
case "45ba7887": //Wenn IR-Befehl = 45ba7887 dann wird folgender Befehl ausgeführt 

$Temp = sprintf("%01.1f",GetValueFloat("Temp_wohn_IST"));  // nur 1 stelle hinter dem komma 


slim_text("00:04:20:12:2d:19", "Temperatur im Wohnzimmer:", $Temp, 20); 

function slim_text($box , $text1 , $text2 , $time) 
{ 
$TX_BUF = $box." display " .rawurlencode($text1)." ".rawurlencode($text2.chr(186).chr(67))." ".$time.chr(13); 
//Etwas über den COM Port senden 
$result = CSCK_SendText(19028, $TX_BUF); 
}
break;
}

dann kommt aber Call to undefined function slim_text()

OK weiß der Geier warum der das so nicht erkennt, ich starte nun einfach das Skript von Steiner aus der case schleife und schon funzt es