EIN RICHTIG RICHTIG GEILES PRORGRAMM!!! :D:D:D:D
Klappt perfekt mit meiner LG GWatchR. Diese ist Rund und es wird in den seltensten Fällen etwas vom Text abgeschnitten.
Habe bei mir alle Lichter über IPS Light eingebunden. Damit habe ich dann auch keine Probleme welche Hardware am Ende dahinter steckt.
Hier mal ein Anfang für das Script. Man kann damit einzelne Lichter oder ganze Gruppen schalten.
<?
// Einbinden der IPS Light Befehle
IPSUtils_Include ('IPSLight.inc.php', 'IPSLibrary::app::modules::IPSLight');
// IDs der Voice Befehle
$SpeechInputID = 31383 /*[AAA Neue Module\IPS Voice\voice in]*/;
$SpeechOutputID = 57967 /*[AAA Neue Module\IPS Voice\voice out]*/;
// Sprachauswertung
$config = array(
// Allgemeine Befehle
// ##################################################################################################
array( 'REGEX1' => 'wie spät',
'COMMAND1' => array( 'REGEX' => 'wie spät',
'CODE' => '$result = date("H")." Uhr ".date("i");',
'SAY' => 'Die aktuelle Uhrzeit ist $result')),
// GRUPPEN Schalten
// ##################################################################################################
array( 'REGEX1' => 'Alles Aus',
'COMMAND1' => array( 'REGEX' => 'Alles Aus',
'CODE' => '$resultcode = IPSLight_SetGroup(31006 /*[Program\IPSLibrary\data\modules\IPSLight\Groups\All]*/, false); ',
'SAY' => 'Es wurde alles ausgeschalten')),
// Wohnzimmer
// ##################################################################################################
array( 'REGEX1' => ' Wohnzimmer | Wohnzimmerschrank | Wohn',
'REGEX2' => ' Stehlampe | Steh ',
'COMMAND1' => array( 'REGEX' => 'an | ein | einschalten',
'CODE' => '$resultcode = IPSLight_SetSwitch(54585 /*[Program\IPSLibrary\data\modules\IPSLight\Switches\Stehlampe]*/, true); ',
'SAY' => 'Wohnzimmer Stehlampe Eingeschaltet'),
'COMMAND2' => array( 'REGEX' => 'aus | ausschalten',
'CODE' => '$resultcode = IPSLight_SetSwitch(54585 /*[Program\IPSLibrary\data\modules\IPSLight\Switches\Stehlampe]*/, false); ',
'SAY' => 'Wohnzimmer Stehlampe Ausgeschaltet'),),
array( 'REGEX1' => ' Wohnzimmer | Wohnzimmerschrank | Wohn',
'REGEX2' => ' Schranklampe | Wohnzimmerschrank | schrank ',
'COMMAND1' => array( 'REGEX' => 'an | ein | einschalten',
'CODE' => '$resultcode = IPSLight_SetSwitch(35842 /*[Program\IPSLibrary\data\modules\IPSLight\Switches\Schrankbeleuchtung]*/, true); ',
'SAY' => 'Wohnzimmer Schranklampe Eingeschaltet'),
'COMMAND2' => array( 'REGEX' => 'aus | ausschalten',
'CODE' => '$resultcode = IPSLight_SetSwitch(35842 /*[Program\IPSLibrary\data\modules\IPSLight\Switches\Schrankbeleuchtung]*/, false); ',
'SAY' => 'Wohnzimmer Schranklampe Ausgeschaltet'),),
// ##################################################################################################
// Ab hier nichts mehr ändern. (Version 1.11)
// ##################################################################################################
);
$SpeechInput = GetValueString($SpeechInputID);
SetValueString($SpeechOutputID, ""); // lösche Outputstring um bei Timingproblemen keine alten Antworten zu erhalten
IPS_LogMessage("Sprachsteuerung", 'SpeechInput=" '.$SpeechInput.' "');
// Alle Nummern aus dem InputString ermitteln. Liefert ein Array $numbers
// mit allen gefundenen Zahlen als Float-Werte oder false.
$minusspeech = array(" Minus ", " minus ", "- ");
preg_match_all("/-?\d+(,|\.)?\d*/", str_replace($minusspeech, "-",$SpeechInput), $numbers);
if(isset($numbers[0][0])) {
$numbers = $numbers[0];
for ($i = 0; $i < count($numbers); $i++) {
$numbers[$i] = floatval(str_replace(',', '.' , $numbers[$i]));
IPS_LogMessage("Sprachsteuerung", ' $numbers['.$i.']='.$numbers[$i]);
}
}else {
$numbers = false;
IPS_LogMessage("Sprachsteuerung", ' $numbers=false');
}
// Alle Einträge des $config Arrays werden auf Übereinstimmung mit dem Speech-Satz geprüft
$config_count = 0;
foreach ($config as $element) {
$config_count++;
$check_command = true;
$answer = "";
IPS_LogMessage("Sprachsteuerung", 'CONFIG'.$config_count);
// Prüfe REGEX1 - REGEXxx auf Übereinstimmung
for ($i = 1; $i < 100; $i++) {
@$RegEx = $element['REGEX'.$i];
if(empty($RegEx)) {
break; // Abbruch da REGEXx Eintrag nicht vorhanden ist
} else {
if(preg_match('/'.$RegEx.'/i', ' '.$SpeechInput.' ')) {
IPS_LogMessage("Sprachsteuerung", ' REGEX'.$i.'['.$RegEx.']=true');
} else {
IPS_LogMessage("Sprachsteuerung", ' REGEX'.$i.'['.$RegEx.']=false');
// Ein REGEXx Eintrag wurde nicht gefunden. Prüfung auf COMMAND wird nicht durchgeführt
$check_command = false;
}
}
}
if($check_command == true) {
// Alle REGEX wurden gefunden, suche jetzt nach den COMMAND Ausdrücken
for ($i = 1; $i < 100; $i++) {
@$RegEx = $element['COMMAND'.$i]['REGEX'];
if(empty($RegEx)) {
break; // Abbruch da COMMANDx Eintrag nicht vorhanden
} else {
if(preg_match('/'.$RegEx.'/i', ' '.$SpeechInput.' ')) {
IPS_LogMessage("Sprachsteuerung", ' COMMAND'.$i.' REGEX['.$RegEx.']=true');
$code = $element['COMMAND'.$i]['CODE'];
$say = $element['COMMAND'.$i]['SAY'];
IPS_LogMessage("Sprachsteuerung", ' Execute CODE :'.$code);
// Script in CODE ausführen...
eval($code);
// Variablen in SAY auflösen...
eval("\$say = \"$say\";");
IPS_LogMessage("Sprachsteuerung", ' SAY : '.$say);
$answer = $say;
} else {
IPS_LogMessage("Sprachsteuerung", ' COMMAND'.$i.' REGEX['.$RegEx.']=false');
}
}
}
}
if($answer != "") break; // Abbruch da passendes Element aus Config gefunden wurde
}
// Leerer Anwortstring bedeutet nichts passendes gefunden.
if($answer == "") $answer = 'Ich weis nicht was du willst';
IPS_LogMessage("Sprachsteuerung", 'SpeechOutput="'.$answer.'"');
SetValueString($SpeechOutputID, $answer);
?>