BTkit und V2

Hallo

funktioniert unter der V2 eigentlich das BTkit noch?
(bin beim aufräumen gerade über das Teil gestolpert)

Im Verzeichnis „modules“ gibt’s zumindest noch eine BTkit.dll
Hab aber kein Instanz dazu gefunden.

Gruß
astrastar

Die DLL war mal drin und deswegen liegt sie im Modules Ordner. Das Modul ansich gab es aber nie und wird es auch nicht mehr geben.

paresy

schade, aber trotzdem danke für die schnelle Antwort.

astrastar

Kennt jemand eine andere Möglichkeit das Teil noch zu nutzen,
oder bleibt da nur der Weg über IPS1 bzw. in die Tonne treten?

gruß
astrastar

Hallo astrastar

und andere die unter V1 schon das BTKIT eingesetzt haben.
Da ich die Vorteile des BTKIT zur Übertragung von IR-Signalen beim Wechsel auf V2 auch vermisse, habe ich mal versucht das ganze per PHP-Code zu nutzen.

Bei meiner Lösung gibt es da ein paar Einschränkungen:

  • Da ich nur dem Empfang von IR-Code in IPS genutzt habe, ist der Code bisher auch nur auf den Empfang beschränkt.
  • Die IR-Signale müssen vorher mit den BTKIT-Fuktionalitäten von IPS V1 angelernt worden sein.
  • Ausgabe von IR-Codes ist noch nicht drin.

Ansonsten sind nur ein paar vorbereitende Schritte und mein PHP-Code notwending.

Zuerst kopiert man sich aus der settings.xml der IPS v1 den BTKIT-Bereich
zwischen <Settings> … und </Settings> in eine neue Textdatei. an den Anfang muß man noch <?xml version=‚1.0‘?> einfügen. Das ganze wird dann in das IPS V2 \scripts\ verzeichnis als .xml Datei abgelegt. (Beispiel im Anhang)

Unter IPS V2 wird dann eine IO-Instanz als Serieller Port angelegt und mit einem der seriellen Ports des BlueTooth-Sticks verbunden. (Bild)
Weiterhin wird eine RegisterVariable angelegt, mit diesem seriellen Port als übergerdnete Instanz. (Bild) Diese Registervariable ruft dann auch das folgende Script auf. Das Script vergleicht den empfangnen IR_Code mit denen in der XML-Liste und ordnet den Code-Namen bei Erfolg einer IPS-Variablen zu. Die kann dann wiederum eine andere Aktion triggern.

<?
// BTKIT
// Auswerteroutine für IR-Codes die per BTKIT empfangen wurden
// die Registervariable die mit einem seriellen Port des Bluetoothsticks
// verbunden ist liefert hier einen String der Form:
//             <irevent base="4731" code="0d070107000417150f0534945564"/>
// als $IPS_VALUE an

//für Prüfzecke sichern
SetValue(42373 /*[Wohnzimmer\BTKIT_VALUE\BT_Event]*/,$IPS_VALUE);
 
$val = $IPS_VALUE;
// das ganze ein bischen zerschippeln
$val = rtrim($val,"/>");
$val = ltrim($val,"<");
// die Anführungzeichen brauchen wir nicht
$pat = '/"/';
$val = preg_replace($pat,'',$val);
//print $val.chr(10).chr(13);

$arr = split(' ',$val);

//print_r($arr).chr(10).chr(13);

// Wenn BTKIT einen IR-Event gesendet hat
If($arr[0] == "irevent"){
	 $base_arr = split('=',$arr[1]);
	 $code_arr = split('=',$arr[2]);

	 $base_val = $base_arr[1];
	 $code_val = $code_arr[1];
	 //echo "base: ".$base_arr[1].chr(10).chr(13);
	 //echo "code: ".$code_arr[1].chr(10).chr(13);

	//Der IR_Suchcode
	$search_code=$code_val;

	// der herauskopierte BT_IR Teil der IPS V1 settings.xml lieget im
	// Scriptverzeichnis als XML-Datei
	// Name der Datei, hier: "IR_CODES.xml"
	// XML Code als DOM-object laden
	$doc = DOMDocument::load("IR_CODES.xml");

	// Arrays für die drei Attribute der IR-Codes
	$name = array(); $name[] = " ";
	$base = array(); $base[] = " ";
	$code = array(); $code[] = " ";
	// Arrays mit den Attributen fütten
	// Namen-Array
	$content = $doc->getElementsByTagname('Name');
	foreach($content as $item){
		$name[] =$item->GetAttribute("Value");
	}
	// Base-Array
	$content = $doc->getElementsByTagname('Base');
	foreach($content as $item){
		$base[] = $item->GetAttribute("Value");
	}
	// Code-Array
	$content = $doc->getElementsByTagname('Code');
	foreach($content as $item){
		$code[] = $item->GetAttribute("Value");
	}
	//
	$anzahl_elemente = count($name);
	
	$pos = array_search($search_code,$code);
	if($pos){
		//Namen des IR-Codes in IPS-Variable zur späteren auswertung sichern
		SetValue(11095 /*[Wohnzimmer\BTKIT_VALUE\IR-BT-Menue]*/,$name[$pos]);
		echo "Gefunden!!".chr(10).chr(13)." Name: ".$name[$pos].chr(10).chr(13)." Code: ".$base[$pos].chr(10).chr(13)." Value: ".$code[$pos].chr(10).chr(13);
	}else{
		echo "Nichts gefunden!!";
	}
	//echo count($name);
	 

}

?>

Ich hoffe es gibt noch ein paar IPS-User die das BTKIT nutzen und eventuell den Code nutzen oder auch erweitern.

Über eure Feedbacks würde ich mich freuen.

Stefan

Nah, das ist doch schon ein Anfang. :slight_smile:

Hatte unter IPS V1 das BtKit meist zum Senden von IR Code genutzte, aber was nicht ist kann ja noch werden.
Vielleicht gibt’s ja noch ein paar BtKit User.
Werde das ganze bei nächster Gelegenheit mal testen.

Gruß
astrastar

Hab den Vorschlag das BTkit unter IPS v2 zu verwenden
nach Anleitungen / Nützliche PHP Scripte (Version 2.0) verschoben

Gruß
astrastar