+ Antworten
Seite 3 von 32 ErsteErste 1 2 3 4 5 13 ... LetzteLetzte
Ergebnis 21 bis 30 von 316
  1. #21
    Registriert seit
    Jan 2011
    Ort
    Kerken (NRW)
    Beiträge
    234

    Hallo Michael,

    war mir so nicht bewusst. Hatte aber auch meine Instanzvariablen noch nie umbenannt sondern immer nur verlinkt.
    Ist aber ein guter Einwand und ich habe das Script entsprechend geändert.
    Viele Grüße Uwe

  2. #22
    Registriert seit
    May 2013
    Beiträge
    189

    Zitat Zitat von Heimgeist Beitrag anzeigen
    Das Problem mit den Instanzvariablen lässt sich auch ohne Hilfsvariablen lösen.
    Hier ist ein universeller Ansatz am Beispiel von Homematic. Licht an/aus steckt in der STATE Variable 29192. Diese Variable würde ich bei Thiemo's Script im Array unter "Licht" eintragen.

    SetValueBoolean(29192, false) funktioniert aber nicht. Um dieses Licht auszuschalten müsste ich eingeben HM_WriteValueBoolean(13859, "STATE", false)

    Mit der Funktion SetValueUniversal(29192, Value) kann ich ohne Umwege Homematic mit der ID der Instanzvariablen schalten. Für EIB, FS20 und Co. sollte sich die Funktion leicht erweitern lassen, da es vermutlich ähnlich funktioniert.

    SetValueUniversal(54457, 0.5) würde z.B. mein Homematic Rolle auf 50% fahren.
    Die Funktion ist ein sehr guter Ansatz. Werde ich mal versuchen bei mir auch so zu verwenden und das Script anzupassen. Dann kann man ja die Funktion weiter ausbauen bzgl. verschiedener Hardware. Ich mache es nämlich derzeit auch über die Hilfsvariablen.
    Gerade im Script ist noch viel Potential drinnen. zB: habe ich gerade auch überlegt wenn der Befehl UND vorkommt entsprechend einen Split zu machen und in einer Schleife dann mehrmal zu durchlaufen. Dann würde zB: auch folgender Satz funktionieren: "Schließe im Büro den Rollladen und schalte das Licht ein" und sonst gibt es im Script noch ein paar Dinge zu lösen wie bereits angesprochen zB: Heizkörperthemostate Temperatur setzen usw...

    Bzgl. SSL Support habe ich schlechte Nachrichten. Das unterstützt der "MIT App Inventor 2" nicht mit dem ich derzeit die Android App Entwicklungen gemacht habe.
    https://github.com/mit-cml/appinvent...ntime/Web.java und einem Posting das ich noch gefunden habe per Google Suche
    Ich will aber mittelfristig auf das Android Studio umsteigen bzgl. App Entwicklung (Winterprojekt), als Feature die Steuerung per QR-Code Scan realisierbar machen und langfristig schwebt mir als Zusatzfeature AndroidWear vor. Stichwort Smartwatch Sprachsteuerung und zusätzlich noch NFC Funktion in Verbindung mit Smartwatch für "NFC Schalter", denn das ist momentan doch umständlich immer Handy raus holen, entsperren, App starten, NFC Lese-Button drücken und dann erst hinhalten zu können damit NFC gelesen wird und der Befehl ausgeführt wird.

    LG
    Thiemo
    Geändert von Thiemo (10.11.14 um 17:55 Uhr)

  3. #23
    Registriert seit
    Jan 2010
    Beiträge
    589

    Hi Thiemo. Habe mir auch deine App installiert und dein Script im Einsatz. Daumen hoch und ein fettes Danke dafür. Genau das angesprochene in deinem letzten Post wollte ich grade als Featurerequest anfragen: ist es möglich den Button NFC lesen als default zu programmieren? Denn die App wird ja schon mal automatisch gestartet beim dranhalten. Dann würde zumindest die Punkte .. App starten und Button drücken wegfallen

    Gesendet von meinem GT-I9505 mit Tapatalk
    Gruß Pascal

    IPS 5.5 Unlimited | IPS Library | Server 2019 | NUC5i7RYH 24/7 | Homematic Funk und HMIP CCU2 + Lan Konfigurator | EnOcean | PoKeys57E

  4. #24
    Registriert seit
    Jan 2011
    Ort
    Kerken (NRW)
    Beiträge
    234

    Zitat Zitat von Thiemo Beitrag anzeigen
    Bzgl. SSL Support habe ich schlechte Nachrichten. Das unterstützt der "MIT App Inventor 2" nicht mit dem ich derzeit die Android App Entwicklungen gemacht habe.
    Also bei mir klappt SSL mit Deiner App wenn ich die SSL CheckBox setze.

    Ich erlaube auch nur HTTPS Traffic von Extern in mein Heimnetz. Wichtig ist allerdings ein korrekt konfiguriertes SSL Zertifikat. Dies muss vom Android Gerät als gültig angesehen werden. Ansonsten verweigern die internen SSL Bibliotheken die Verbindung.
    Viele Grüße Uwe

  5. #25
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,692

    Hallo Thiemo,

    danke für Deine Arbeit

    Die Einrichtung hat problemlos funktioniert - der Sprachbefehl landet in der Variablen.

    Aber kannst bitte den zweiten Schritt näher beschreiben:
    Array aufbauen mit Euren Konfigurationen.
    u.a. "Script "LED_Kueche_schalten" (Homematic Schalter)"

    Was genau passiert der Aktor-ID, STAUS-ID oder Skript-ID?


    MST
    Geändert von steiner (11.11.14 um 16:48 Uhr)

  6. #26
    Registriert seit
    May 2013
    Beiträge
    189

    Hallo,

    da ich es ursprünglich umgehen wollte im Script direkt Befehle für das Schalten einzubauen (hier wäre es ja hilfreich wenn es eine IP-Symcon Funktion von haus aus geben würde der ich einfach die Instanzvariable mitgebe als Schaltbefehl und die im Hintergrund dann automatisch zB: ENO_SwitchMode, MXC_SwitchMode, HM_WriteValueBoolean, etc... aufruft oder eine globale IP-Symcon Funktion mit welche der Status abgefragt werden kann), dachte ich es wäre einfacher beim Schalten von Aktoren immer nicht direkt die Instanz anzusprechen, sondern eine Boolean Variable hinter der ein Script stehen muss welches als auslösendes Ereignis eine Veränderung der Boolean Variable hat und im ausgelagerten Script dann der Schaltbefehl durchgeführt wird je nachdem welche Hardware verbaut ist.

    Ich hoffe der Absatz oben ist verständlich

    Die Idee mit dem SetValueUniversal hier im Thread gefällt mir allerdings sehr gut. Leider werde ich wahrscheinlich erst am Sonntag dazu kommen mich bei mir mit dieser Funktion näher zu befassen um mein Script dann auch umzubauen und bei mir zu testen und dann hier die neue Script Version zu posten.

    LG
    Thiemo

  7. #27
    Registriert seit
    May 2013
    Beiträge
    189

    Zitat Zitat von Heimgeist Beitrag anzeigen
    Also bei mir klappt SSL mit Deiner App wenn ich die SSL CheckBox setze.

    Ich erlaube auch nur HTTPS Traffic von Extern in mein Heimnetz. Wichtig ist allerdings ein korrekt konfiguriertes SSL Zertifikat. Dies muss vom Android Gerät als gültig angesehen werden. Ansonsten verweigern die internen SSL Bibliotheken die Verbindung.
    Ok cool Kannst Du mir nähere Infos bzgl. dem Zertifikat zukommen lassen. Hatte das nämlich auch ursprünglich in Verdacht da ich beim Android Browser auch die Ausnahme bzgl. Zertifikat bestätigen muss um überhaupt das Webfront zu bekommen. Hatte dann versucht das Webfront Zertifikat von IP-Symcon unter Android zu installieren. Bin aber daran gescheitert weil es anscheinend bei mir als Selbst-Zertifiziertes nicht installiert wurde. (Mein Handy ist nicht gerootet, habe SSL aber noch nicht auf meinem alten Handy probiert das gerootet ist und ein Custom-ROM drauf hat) ... Muss ich gleich mal testen ob das die Lösung ist ... Nein ist es nicht, wahrscheinlich kapiere ich das Thema Zertifikate nicht richtig
    Geändert von Thiemo (11.11.14 um 19:03 Uhr)

  8. #28
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,692



    Also wenn ich sage "Schalte das Licht im Büro ein" tut sich im IPS-Headquarter nichts.

    Ich habe mein Array schon alles alles reinpackt.

    MST
    Geändert von steiner (11.11.14 um 20:54 Uhr)

  9. #29
    Registriert seit
    Jan 2011
    Ort
    Kerken (NRW)
    Beiträge
    234

    Standard Ein anderer Ansatz für das Spracherkennungsscript

    Hi,

    ich habe das Auswerteskript für die Spracherkennung mit einem anderen Ansatz umgeschrieben. Ich denke, dass man hiermit alle Freiheiten bei der Gestaltung der Sprachsteuerung hat.

    Das Prinzip ist gleich geblieben: Ich habe einen Eingangsstring mit dem Kommando, welcher von Thiemos App oder einer anderen SpeechToText Engine geliefert wurde. Eine Aktualisierung dieser Variable triggert das Erkennungsscript, welches den Satz analysiert, die Befehle ausführt und eine Ergebnisantwort als String zurück liefert, welche dann angezeigt oder vorgelesen wird.

    Die ganze Konfigurationslogik steckt in einem verketteten $config Array. Wie ich es aufbaue erkläre ich in einem Beispiel:

    Ich möchte fürs erste folgende Kommandos unterstützen:

    Das Licht im Wohnzimmer einschalten.
    Das Licht im Wohnzimmer ausschalten.

    Welche Temperatur ist im Bad.
    Setze die Temperatur im Bad auf 20.5 Grad.

    In den Sätzen habe einen Ort und ein Gewerk welches den zugehörigen Sensor/Aktor beschreibt. (Wohnzimmer Licht), (Bad Temperatur).
    Damit selektiere ich mein Gerät. Mit dem Gerät kann ich meistens unterschiedliche Aktionen durchführen. (einschalten, ausschalten, Abfragen, Werte setzen usw.)

    Für das Wohnzimmer Licht Beispiel suche im Satz die Wörter Licht und Wohnzimmer als Filter und einschalten bzw. ausschalten als Aktion. Der Satz
    "Wenn ich auf einschalten drücke geht das Licht im Wohnzimmer an" wäre kein Unterschied zu
    "einschalten Licht Wohnzimmer"

    Mit dem Parameter „REGEX1“ – REGEX99 gebe ich die Filterkriterien an. Die Einträge werden als Reguläre Ausdrücke ohne Beachtung der Gross/Kleinschreibung interpretiert. Wenn ich exakt nach Wohnzimmer suche will, sollte ich vor und nach dem Wort ein Leerzeichen setzen, ansonsten sind Wohnzimmerteppich oder Hundewohnzimmer auch gültig.

    Ein Element des Config Arrays für die Sprachsteuerung Licht-Wohnzimmer sieht wie folgt aus:
    PHP-Code:
        array(
            
    'REGEX1' => ' Wohnzimmer ',
            
    'REGEX2' => ' Licht | Lampe ',
                
    'COMMAND1' => array(
                  
    'REGEX' => ' an | ein | einschalten ',
                  
    'CODE' => '
                      HM_WriteValueBoolean(13859, "STATE", true);
                  '
    ,
                  
    'SAY' => 'Ich habe im Wohnzimmer das Licht eingeschaltet'
              
    ),
                
    'COMMAND2' => array(
                  
    'REGEX' => ' aus | ausschalten ',
                  
    'CODE' => '
                      $resultcode = HM_WriteValueBoolean(13859, "STATE", false);
                  '
    ,
                  
    'SAY' => 'Ich habe im Wohnzimmer das Licht ausgeschaltet'
          

    PHP-Code:
    'REGEX1' => ' Wohnzimmer '
    ist der erste Filter. Nun brauche ich noch zusätzlich 'Licht'‚ welches ich als REGEX2 eintrage.
    Da ich statt Licht auch Lampe sagen möchte kann ich beide Wörter mit ODER verknüpft eintragen.
    In Regulären Ausdrücken sieht das so aus:
    PHP-Code:
    'REGEX2' => ' Licht | Lampe '
    Jetzt kommt die Aktion „einschalten“ welche in einem neuen Array Namens COMMAND1 konfiguriert wird.
    Ich muss zuerst das Aktionswort wieder als Regulärer Ausdruck konfigurieren. Ich nutze hierfür
    PHP-Code:
    'REGEX' => ' an | ein | einschalten '
    Wenn also die Filterkriterien Wörter von vorhin UND das COMMAND Wort vorhanden sind wird der PHP- Code unter CODE ausgeführt.
    Hier können beliebige PHP Befehle eingetragen werden. Diese müssen natürlich auch mit ; getrennt werden und es dürfen keine (') einfachen Hochkommata verwendet werden, da dies die Begrenzung für den Code ist. Doppelte (") sind aber möglich. Mit diesen PHP Code schalte ich dann z.B. meinen Aktor oder frage den Wert einer Variablen mit den bekannten IPS Kommandos ab.
    Falls ich bei den Befehlen umfangreicheren Code schreiben muss, macht es evt. Sinn, diese in eine Funktion auszulagern und in CODE den Funktionsnamen aufzurufen. Später folgt dazu noch ein Beispiel. Hier schaltet der Code einen Homematic Schalter ohne Abfrage ob es geklappt hat.
    PHP-Code:
    'CODE' => '
                      HM_WriteValueBoolean(13859, "STATE", true);
                     '

    Der Eintrag unter SAY beinhaltet die Anwort auf die Aktion. Ich kann hier nicht nur statischen Text eingeben sondern auch Variablen verwenden. Diese Variablen können z.B. im CODE Bereich definiert worden sein. Im resultierenden Antworttext wird dann der Inhalt der Variablen eingefügt. Ein Beispiel folgt auch später.

    Falls die Aktion im Array COMMAND1 mit 'REGEX' => ' an | ein | einschalten ', nicht gefunden wurde, wird das nächste Array COMMAND2 geprüft usw.
    Falls es in allen COMMAND Aktionen keine Übereinstimmungen mit REGEX gibt, wird das nächste Filter/Actions Array verarbeitet.

    Wenn sich in den verbleibenden Array auch keine Filter/Aktions Übereinstimmungen findet, konnte das Kommando nicht erkannt werden. In diesem Fall wird als Antwort der Klassiker „'Nein Dave, das kann ich nicht tun!' zurück geliefert.

    Weiter geht es mit der Config des Bad Temperatur Beispiels.
    PHP-Code:
        array(
            
    'REGEX1' => ' Bad ',
            
    'REGEX2' => ' Temperatur ',
                
    'COMMAND1' => array(
                  
    'REGEX' => ' Status | welche ',
                  
    'CODE' => '
                        $result = GetValue(21154);
                        $result = number_format($result, 1, ".", "");
                  '
    ,
                  
    'SAY' => 'Im Bad beträgt die Temperatur $result Grad'
              
    ),
                
    'COMMAND2' => array(
                   
    'REGEX' => ' setzen | einstellen ',
                   
    'CODE' => '
                      $resultcode = HM_WriteValueFloat(52815, "SET_TEMPERATURE", $numbers[0]);
                   '
    ,
                   
    'SAY' => 'Ich habe im Bad die Temperatur auf $numbers[0] Grad gestellt'
          

    Am Anfang befindet sich der bekannte Filter aus REGEX(Nr)
    PHP-Code:
            'REGEX1' => ' Bad ',
            
    'REGEX2' => ' Temperatur '
    Wenn ich z.B. zwei Badezimmer habe, könnte ich zur Unterscheidung 'REGEX3' => ' Keller ', noch einfügen.
    Die COMMAND Sequenz zur Abfrage der Temperatur ist wie folgt:
    PHP-Code:
                    'REGEX' => ' Status | welche ',
                    
    'CODE' => '
                      $result = GetValue(21154);
                      $result = number_format($result, 1, ".", "");
                     '
    ,
                    
    'SAY' => 'Im Bad beträgt die Temperatur $result Grad' 
    Mein Aktionswort ist " Status " oder " Welche " (Welche Temperatur ist im Bad) oder Kurzform (Status Temperatur Bad)
    Unter CODE ist ein simpler Zweiteiler. Der Variablen $result wird der Wert der IPS Temperatursensor Variablen zugewiesen. Anschliessend wird diese Float Variable nach String gewandelt mit einer Nachkommastelle, "." als Dezimalstelle und keinem Tausender Zeichen. Diese Variable wird dann in SAY genutzt.
    Im Bad beträgt die Temperatur 23.7 Grad

    Das Setzen eines Temperaturwertes (z:B. Homematic Thermostat) sieht im COMMAND Teil wie folgt aus:
    PHP-Code:
                'COMMAND2' => array(
                   
    'REGEX' => ' setzen | einstellen ',
                   
    'CODE' => '
                      $resultcode = HM_WriteValueFloat(52815, "SET_TEMPERATURE", $numbers[0]);
                   '
    ,
                   
    'SAY' => 'Ich habe im Bad die Temperatur auf $numbers[0] Grad gestellt' 
    Hier steht nicht neues ausser dem $numbers[] Array. Das $numbers Array beinhaltet alle Zahlen aus dem Kommandostring.
    Wenn ich zum Beispiel den Satz:
    "Wenn die Aussentemperatur unter -20,5 Grad fällt setze die Vorlauftemperatur auf 75 Grad"
    finde ich in $numbers[0]=-20.5 und in $numbers[1]=75 als Float Werte. Diese kann ich dann weiter verwenden.


    Der komplette Code ist hier. Er beinhaltet auch noch ein Beispiel für einen Funktionsaufruf für "Alle Lichter aus"
    PHP-Code:
    <?

    $SpeechInputID 
    59626 /*[Status\Sprachsteuerung\AndroidReceive]*/;
    $SpeechOutputID 31363 /*[Status\Sprachsteuerung\AndroidSend]*/;

    $config = array(
        array(
            
    'REGEX1' => 'wie spät ist es',
                
    'COMMAND1' => array(
                   
    'REGEX' => 'wie spät ist es',
                   
    'CODE' => '$result = date("H")." Uhr ".date("i");',
                   
    'SAY' => 'Die aktuelle Uhrzeit ist $result'
                
    )
        ),

        array(
            
    'REGEX1' => ' Wohnzimmer ',
            
    'REGEX2' => ' Licht | Lampe ',
                
    'COMMAND1' => array(
                  
    'REGEX' => ' an | ein | einschalten ',
                    
    'CODE' => '
                      HM_WriteValueBoolean(13859, "STATE", true);
                 '
    ,
                    
    'SAY' => 'Ich habe im Wohnzimmer das Licht eingeschaltet'
              
    ),
                
    'COMMAND2' => array(
                  
    'REGEX' => ' aus | ausschalten ',
                    
    'CODE' => '
                      $resultcode = HM_WriteValueBoolean(13859, "STATE", false);
                 '
    ,
                    
    'SAY' => 'Ich habe im Wohnzimmer das Licht ausgeschaltet'
              
    )
       ),
        array(
            
    'REGEX1' => ' Bad ',
            
    'REGEX2' => ' Temperatur ',
                
    'COMMAND1' => array(
                  
    'REGEX' => ' Status | welche ',
                    
    'CODE' => '
                      $result = GetValue(21154);
                      $result = number_format($result, 1, ".", "");
                 '
    ,
                    
    'SAY' => 'Im Bad beträgt die Temperatur $result Grad'
              
    ),
                
    'COMMAND2' => array(
                  
    'REGEX' => ' setzen | einstellen ',
                    
    'CODE' => '
                      $resultcode = HM_WriteValueFloat(52815, "SET_TEMPERATURE", $numbers[0]);
                 '
    ,
                    
    'SAY' => 'Ich habe im Bad die Temperatur auf $numbers[0] Grad gestellt'
              
    )
       ),
        array(
            
    'REGEX1' => ' Alle ',
            
    'REGEX2' => ' Lichter ',
                
    'COMMAND1' => array(
                  
    'REGEX' => ' aus | ausschalten ',
                    
    'CODE' => '
                      $result = MyFunctionAllLightsOff();
                  '
    ,
                    
    'SAY' => '$result'
              
    )
       )
    );

    // BEGIN der eigenen Hilfsfunktionen

    function MyFunctionAllLightsOff() {
        
    // hier schalte ich per Script alle Lichter aus
        // und liefere einen String mit der Antwort
        
    return "Ich habe alle Lichter ausgeschaltet";
        
        
    // Falls es ein Problem gab oder ich etwas anderes sagen will
        // liefere ich in Anhängigkeit einfach einen anderen String zurück.
        
    return "Ich habe das Licht im Klo nicht ausgeschaltet da dort jemand sitzt";
    }

    // ENDE der eigenen Hilfsfunktionen


    // 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 'Nein Dave, das kann ich nicht tun!';
    IPS_LogMessage("Sprachsteuerung"'SpeechOutput="'.$answer.'"');
    SetValueString($SpeechOutputID$answer);

    ?>
    Viel Spass bei der Sprachsteuerung. Ich bin mit Thiemos Android App über die Sprachsteuerung wesentlich schneller in der Bedienung von IPS als über die Menüs. Und es macht richtig Spass!

    ** Neue Version 1.1 **
    - Bugfix der fehlerhaften Erkennung von Zahlen.
    - Erkannte Zahlen in $numbers[] werden gelogged.
    ** Version 1.11 **
    - löscht Outputstring um bei Timingproblemen keine alten Antworten zu erhalten
    Angehängte Dateien Angehängte Dateien
    Geändert von Heimgeist (17.11.14 um 08:41 Uhr)
    Viele Grüße Uwe

  10. #30
    Registriert seit
    Jan 2011
    Ort
    Kerken (NRW)
    Beiträge
    234

    Standard Sei freundlich zu Deiner Haussteuerung...

    Wenn ich Wert auf nette Umgangsformen (auch mit meiner Haussteuerung) lege, ist das Wort "Bitte" bestimmt nicht fehl am Platz.

    Mach bitte im Wohnzimmer das Licht an. ist dann immer gerne gehört.

    Mit dem folgenden Eintrag an erster Stelle des $config Arrays reagiert IPS sehr empfindlich auf schnöde Befehle!

    PHP-Code:
        array(
            
    'REGEX1' => '^((?!bitte).)*$',
            
    'COMMAND1' => array(
                   
    'REGEX' => '^((?!bitte).)*$',
                   
    'CODE' => ' ',
                   
    'SAY' => 'Geht das auch etwas freundlicher! Wie lautet denn das Zauberwort?'
            
    )
        ), 
    Und für die Trekkies ist Computer im Satz sehr wichtig!
    Wie spät ist es -> keine Antwort..
    Computer wie spät ist es

    PHP-Code:
    $config = array(
        array(
            
    'REGEX1' => '^((?!Computer).)*$',
            
    'COMMAND1' => array(
                   
    'REGEX' => '^((?!Computer).)*$',
                   
    'CODE' => ' ',
                   
    'SAY' => '  '
            
    )
        ),
        array(
            
    'REGEX1' => 'wie spät ist es',
            
    'COMMAND1' => array(
                   
    'REGEX' => 'wie spät ist es',
                   
    'CODE' => '$result = date("H")." Uhr ".date("i");',
                   
    'SAY' => 'Die aktuelle Sternzeit ist $result'
            
    )
        ), 
    Geändert von Heimgeist (12.11.14 um 14:50 Uhr)
    Viele Grüße Uwe

Ähnliche Themen

  1. IPSView Android App
    Von pleibling im Forum IPSStudio & IPSView
    Antworten: 6
    Letzter Beitrag: 10.06.14, 22:44
  2. Android App Variablenaktualisierung
    Von mangojerry im Forum Mobile (iOS/Android)
    Antworten: 2
    Letzter Beitrag: 02.04.13, 19:27
  3. Native Android App
    Von paresy im Forum Neuigkeiten & Ankündigungen
    Antworten: 0
    Letzter Beitrag: 01.09.11, 13:15
  4. Android App stürzt ab
    Von bbernhard im Forum Mobile (iOS/Android)
    Antworten: 16
    Letzter Beitrag: 31.08.11, 23:32

Stichworte