+ Antworten
Seite 1 von 32 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 315
  1. #1
    Registriert seit
    May 2013
    Beiträge
    188

    Cool Android App IPSymconVoice

    Hallo,

    ich habe die Android App "Haussteuerung" entwickelt. Ab Android 4.1 (Aktuelle Version der App 2.6.1, Stand: 23.02.2019)
    Download im Play Store: https://play.google.com/store/apps/d...teuerung&hl=de

    Alle Details zur App "Haussteuerung" findet Ihr jetzt auch hier: Thiemo Redirection

    Die Android App "IPSymconVoice" für ältere Android Geräte (Aktuelle Version der App 1.2, Stand: 17.11.2014)
    Download im Play Store: Nicht gefunden

    Die letzte Version der Haussteuerung ist ab sofort auch immer auf meinem Dropbox Konto zu finden. Bitte alle die den Playstore haben immer über den Playstore installieren da Ihr dann auch automatisch Updates erhaltet. Bei Dropbox müsst Ihr euch selbst um Updates kümmern.
    Manche Geräte werden von Google als nicht unterstützt anerkannt, obwohl auf diesen Android 4.3 etc... lauft durch zB: auch Custom Roms die dann installiert wurden.
    Hier der Link zur haussteuerung.apk Datei auf dem Dropbox Konto:
    Dropbox - haussteuerung.apk
    Hier der Link zur haussteuerungwear.apk Datei auf dem Dropbox Konto:
    Dropbox - haussteuerungwear.apk

    Features
    - Sprachsteuerung von IP-Symcon (beide Apps)
    - NFC-Tags beschreiben/lesen und IP-Symcon steuern (beide Apps)
    - Textsteuerung/Abfrage von IP-Symcon (beide Apps)
    - extra Ansicht Querformat (nur Haussteuerung)
    - QR-Code Steuerung von IP-Symcon (nur Haussteuerung)
    - Links/Rechts Wischgeste für Bildschirm Wechsel (nur Haussteuerung)
    - SSL/TLS (https) Unterstützung (nur Haussteuerung) - bzgl. SSL Zertifikat hier Sonderthema wenn eigenes Webfront Zertifikat genutzt wird
    - Bildschirm individuell anpassen (nur Haussteuerung)
    - optimiert für Tablets (nur Haussteuerung)
    - Widgets für Sprachsteuerung/Textsteuerung (nur Haussteuerung)
    - Lockscreen Widget für Sprachsteuerung (nur Haussteuerung)
    - Android Gerät von IP-Symcon aus steuern (nur Haussteuerung)
    (für diese Funktion siehe Post Android Gerät fernsteuern Script)
    - Akkustand von IP-Symcon aus abfragen (nur Haussteuerung)
    (für das Script siehte Post Akkustand Script
    - Bluetooth Unterstützung (nur Haussteuerung)
    - Smartwatch Wearable Unterstützung (nur Haussteuerung)
    (für Settings Wearable siehe Post Wearable Settings
    - Location Tracking (Standortermittlung) (nur Haussteuerung); genaueres siehe Post Standortermittlung
    - Webfront Anzeige (nur Haussteuerung); genaueres siehe Post Webfront Infos
    - Offline Spracherkennung Schlüsselwörter (nur Haussteuerung)
    - WLAN Tracking (nur Haussteuerung); genaueres siehe Post WLAN Tracking
    - Integrierte Webcam; genaueres siehe Post Webcam
    - Support von Android 7.1 mit Longclick auf Haussteuerungs App Icon am Homescreen um direkt eine Sprachsteuerung oder Textsteuerung durchzuführen Screenshot 7.1 Longclick

    Konfiguration

    a.) IP-Symcon:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	ipsymconvoiceeinst.jpg 
Hits:	1294 
Größe:	16.7 KB 
ID:	27254

    Hier das Script. Entsprechend die beiden Variablen im Script ersetzen bzgl. AndroidSend und AndroidReceive und das Array aufbauen mit Euren Konfigurationen.
    PHP-Code:
    <?

    //Script Datum: 09.07.2015 Version 1.1

    //Ersetze 44702 mit deiner AndroidReceive ID
    $input GetValueString(44702 /*[Scripte\Sprachsteuerung\AndroidReceive]*/  );
    //Ersetze 40387 mit deiner AndroidSend ID
    $outputid 40387 /*[Scripte\Sprachsteuerung\AndroidSend]*/;

    SetValueString($outputid"Das PHP Script wurde nicht rechtzeitig fertig");  // Initialisiere Outputstring falls die Zeitdauer in der Android App nicht ausreicht!
    $SkriptStart microtime(true);  //Setze Startzeitpunkt

    //Ersetze hier das Array mit allen möglichen Variablen oder Geräteinstanzen etc... die Du hast
    global $tg_info_devices;
    $tg_info_devices = array(
    "Büro1" => array("Typ" => "Licht""Variable" => 54973"Aussprache" => "Im Büro ist das Licht" ),
    "Büro2" => array("Typ" => "Rollladen""Variable" => 41402"Aussprache" => "Im Büro ist der Rollladen" ),
    "Büro3" => array("Typ" => "Computer""Variable" => 29580"Aussprache" => "Im Büro ist der Computer" ),
    "Büro4" => array("Typ" => "Temperatur""Variable" => 26262"Aussprache" => "Im Büro beträgt die Temperatur" ),
    "Büro5" => array("Typ" => "Solltemperatur""Variable" => 20614"Aussprache" => "Im Büro [wurde|beträgt] die Solltemperatur" ),
    "Küche1" => array("Typ" => "Licht""Variable" => 51429"Art" => "Schrank""Aussprache" => "In der Küche ist das Licht am Schrank" ),
    "Küche2" => array("Typ" => "Licht""Variable" => 55650"Art" => "Decke""Aussprache" => "In der Küche ist das Licht an der Decke" ),
    "Küche3" => array("Typ" => "Rollladen""Variable" => 49153"Art" => "Fenster""Richtung" => "Norden""Aussprache" => "In der Küche ist der Rollladen des Fensters im Norden" ),
    "Küche4" => array("Typ" => "Rollladen""Variable" => 11830"Art" => "Fenster""Richtung" => "Westen""Aussprache" => "In der Küche ist der Rollladen des Fensters im Westen" ),
    "Küche5" => array("Typ" => "Rollladen""Variable" => 49115"Art" => "Tür""Aussprache" => "In der Küche ist der Rollladen der Tür" ),
    "Küche6" => array("Typ" => "Temperatur""Variable" => 36304"Aussprache" => "In der Küche beträgt die Temperatur" ),
    "Küche7" => array("Typ" => "Luftfeuchtigkeit""Variable" => 29164"Aussprache" => "In der Küche beträgt die Luftfeuchtigkeit" ),
    "Küche8" => array("Typ" => "Batterie""Variable" => 17708"Aussprache" => "In der Küche ist die Batterie des Sensors" ),
    "Schlafzimmer1" => array("Typ" => "Licht""Variable" => 42028"Aussprache" => "Im Schlafzimmer ist das Licht" ),
    "Schlafzimmer2" => array("Typ" => "Temperatur""Variable" => 36426"Aussprache" => "Im Schlafzimmer beträgt die Temperatur" ),
    "Schlafzimmer3" => array("Typ" => "Luftfeuchtigkeit""Variable" => 39357"Aussprache" => "Im Schlafzimmer beträgt die Luftfeuchtigkeit" ),
    "Schlafzimmer4" => array("Typ" => "Rollladen""Variable" => 56308"Aussprache" => "Im Schlafzimmer ist der Rollladen" ),
    "Schlafzimmer5" => array("Typ" => "Solltemperatur""Variable" => 28215"Aussprache" => "Im Schlafzimmer [wurde|beträgt] die Solltemperatur" ),
    "aussen1" => array("Typ" => "Windaktuell""Variable" => 56046"Aussprache" => "Draußen gibt es einen Wind von" ),
    "aussen2" => array("Typ" => "Windböen""Variable" => 40250"Aussprache" => "Draußen existieren Windböen mit" ),
    "aussen3" => array("Typ" => "Temperatur""Variable" => 32134"Aussprache" => "Draußen hat die Temperatur" ),
    "aussen4" => array("Typ" => "Luftfeuchtigkeit""Variable" => 40108"Aussprache" => "Draußen hat es eine Luftfeuchtigkeit von" ),
    "aussen5" => array("Typ" => "Regen""Variable" => 59347"Aussprache" => "Draußen regnet es" ),
    "aussen6" => array("Typ" => "Helligkeit""Variable" => 40288"Aussprache" => "Draußen beträgt die Helligkeit" ),
    "Wohnzimmer1" => array("Typ" => "Rollladen""Variable" => 41403"Art" => "Tür""Aussprache" => "Im Wohnzimmer ist das Raffstore der Tür" ),
    "Wohnzimmer2" => array("Typ" => "Rollladen""Variable" => 41404"Art" => "Fenster""Aussprache" => "Im Wohnzimmer ist das Raffstore des Fensters" ),
    "Wohnzimmer3" => array("Typ" => "Temperatur""Variable" => 15013"Aussprache" => "Im Wohnzimmer beträgt die Temperatur" ),
    "Wohnzimmer4" => array("Typ" => "Luftfeuchtigkeit""Variable" => 43371"Aussprache" => "Im Wohnzimmer beträgt die Luftfeuchtigkeit" ),
    "Wohnzimmer5" => array("Typ" => "Fernseher""Variable" => 24532"Aussprache" => "Im Wohnzimmer ist der Fernseher" ),
    "Wohnzimmer6" => array("Typ" => "AVReceiver""Variable" => 38396"Aussprache" => "Im Wohnzimmer ist der AVReceiver" ),
    "Wohnzimmer7" => array("Typ" => "Licht""Variable" => 57627"Art" => "Steh""Aussprache" => "Im Wohnzimmer ist die Stehlampe" ),
    "Wohnzimmer8" => array("Typ" => "Kino""Variable" => 30063"Aussprache" => "Im Wohnzimmer ist der Kinomodus" ),
    "Vorzimmer1" => array("Typ" => "Licht""Variable" => 42949"Art" => "Wand""Aussprache" => "Im Vorzimmer ist das Licht an der Wand" ),
    "Vorzimmer2" => array("Typ" => "Licht""Variable" => 56793"Art" => "Decke""Aussprache" => "Im Vorzimmer ist das Licht an der Decke" ),
    "Vorzimmer3" => array("Typ" => "Temperatur""Variable" => 30298"Aussprache" => "Im Vorzimmer beträgt die Temperatur" ),
    "Bad1" => array("Typ" => "Temperatur""Variable" => 42086"Aussprache" => "Im Bad beträgt die Temperatur" ),
    "Bad2" => array("Typ" => "Solltemperatur""Variable" => 48110"Aussprache" => "Im Büro [wurde|beträgt] die Solltemperatur" ),
    "Bad3" => array("Typ" => "Luftfeuchtigkeit""Variable" => 10945"Aussprache" => "Im Bad beträgt die Luftfeuchtigkeit" ),
    "Keller1" => array("Typ" => "Temperatur""Variable" => 42086"Aussprache" => "Im Keller beträgt die Temperatur" ),
    "Keller2" => array("Typ" => "Luftfeuchtigkeit""Variable" => 10945"Aussprache" => "Im Keller beträgt die Luftfeuchtigkeit" ),
    "Wetter1" => array("Typ" => "Wetter""Variable" => 55167"Art" => "Heute""Aussprache" => "" ),
    "Wetter2" => array("Typ" => "Wetter""Variable" => 31534"Art" => "Morgen""Aussprache" => "" ),
    "Wetter3" => array("Typ" => "Wetter""Variable" => 17550"Art" => "Übermorgen""Aussprache" => "" ),
    "Wetter4" => array("Typ" => "Wetter""Variable" => 58310"Art" => "Trend""Aussprache" => "" ),
    "Uhrzeit" => array("Typ" => "Uhrzeit""Variable" => 00000"Aussprache" => "Die aktuelle Uhrzeit ist" ),
    "Anwesenheit" => array("Typ" => "Anwesenheit""Variable" => 42533"Aussprache" => "Der Anwesenheitsstatus ist" ),
    );

    $zahl 0;
    $detail "";
    $raum "";
    $aktion "";
    $art "";
    $richtung "";
    $typ "";
    $tsay "";
    $techstatus true;

    //für mehrere Sprachbefehle über das UND einen Split machen von $input in Arrays und über das Array auswerten
    $inputarray explode"und"$input);
    foreach (
    $inputarray as $input)
    {
      
    print_r("--------------Input - Variable -----------\n");
      
    print_r("$input\n");
      
    print_r("------------------------------------------\n\n");
      
    // a.) Suche nach Zahl, Aktion, Raum im Kommando (ansonsten wenn elementares fehlt aussteigen)
        
    switch (true) {
             
    // Suche nach erster Zahl im Kommando
             
    case (preg_match("([1-9]+)"$input$matches)) :
                
    $zahl $matches[0];
                break;
        }

        switch (
    true) {
            case (
    preg_match("/computer|pc/i"$input) ? true false ) :
                  
    $typ "Computer";
                  break;
            case (
    preg_match("/fernseher/i"$input) ? true false ) :
                  
    $typ "Fernseher";
                  break;
            case (
    preg_match("/av receiver/i"$input) ? true false ) :
                  
    $typ "AVReceiver";
                  break;
            case (
    preg_match("/sat/i"$input) ? true false ) :
                  
    $typ "SATReceiver";
                  break;
           case (
    preg_match("/kino/i"$input) ? true false ) :
                  
    $typ "Kino";
                  break;
             case (
    preg_match("/rol|store/i"$input) ? true false) :
                  
    $typ "Rollladen";
                  break;
            case (
    preg_match("/licht|beleuchtung|lampe|led/i"$input) ? true false) :
                  
    $typ "Licht";
                  break;
            case (
    preg_match("/solltemperatur/i"$input) ? true false ) :
                  
    $typ "Solltemperatur";
                  break;
            case (
    preg_match("/grad|temperatur/i"$input) ? true false ) :
                  
    $typ "Temperatur";
                  break;
             case (
    preg_match("/luft|feucht/i"$input) ? true false ) :
                  
    $typ "Luftfeuchtigkeit";
                  break;
            case (
    preg_match("/boeen|spitze|böen/i"$input) ? true false ) :
                  
    $typ "Windböen";
                  break;
             case (
    preg_match("/kmh|wind|geschwindigkeit/i"$input) ? true false ) :
                  
    $typ "Windaktuell";
                  break;
            case (
    preg_match("/regen|niederschlag/i"$input) ? true false ) :
                  
    $typ "Regen";
                  break;
             case (
    preg_match("/helligkeit/i"$input) ? true false ) :
                  
    $typ "Helligkeit";
                  break;
             case (
    preg_match("/wetter/i"$input) ? true false ) :
                  
    $typ "Wetter";
                  break;
             case (
    preg_match("/batterie/i"$input) ? true false ) :
                  
    $typ "Batterie";
                  break;
             case (
    preg_match("/spät|uhrzeit/i"$input) ? true false ) :
                  
    $typ "Uhrzeit";
                  break;
             case (
    preg_match("/anwesen|abwesen/i"$input) ? true false ) :
                  
    $typ "Anwesenheit";
                  break;
        }

        switch (
    true) {
             case (
    preg_match("/wer|wie|was|warum|weshalb|wann|welche|wieviel|sage|antworte|lese|ist/i"$input) ? true false ) :
                  
    $aktion "frage";
                  break;
            case (
    preg_match("/schliesse|schließe|zu|runter|unten/i"$input) ? true false) :
                
    $aktion "runter";
                break;
            case (
    preg_match("/oeffne|öffne|auf|hoch|oben/i"$input) ? true false ) :
                  
    $aktion "rauf";
                  break;
            case (
    preg_match("/an|ein|on/i"$input) ? true false ) :
                  
    $aktion "ein";
                  break;
            case (
    preg_match("/aus|off|ab/i"$input) ? true false ) :
                  
    $aktion "aus";
                  break;
            case (
    preg_match("/schalte|schalke|setze|sätze|chapter|fette/i"$input) ? true false ) :
                  
    $aktion "schalte";
                  break;
             default :
                  
    $aktion "frage";
                  break;
        }

        switch (
    true) {
             case (
    preg_match("/sek/i"$input) ? true false ) :
                  
    $detail "Sekunden";
                  break;
             case (
    preg_match("/prozent/i"$input) ? true false ) :
                  
    $detail "Prozent";
                  break;
             case (
    preg_match("/blau/i"$input) ? true false ) :
                  
    $detail "Blau";
                  break;
             case (
    preg_match("/rot/i"$input) ? true false ) :
                  
    $detail "Rot";
                  break;
             case (
    preg_match("/grün/i"$input) ? true false ) :
                  
    $detail "Grün";
                  break;
             case (
    preg_match("/gelb/i"$input) ? true false ) :
                  
    $detail "Gelb";
                  break;
        }

        switch (
    true) {
             case (
    preg_match("/tuer/i"$input) ? true false ) :
                  
    $art "Tür";
                  break;
            case (
    preg_match("/fenster/i"$input) ? true false ) :
                  
    $art "Fenster";
                  break;
             case (
    preg_match("/decke/i"$input) ? true false ) :
                  
    $art "Decke";
                  break;
            case (
    preg_match("/wand/i"$input) ? true false ) :
                
    $art "Wand";
                break;
             case (
    preg_match("/steh/i"$input) ? true false );
                  
    $art "Steh";
                  break;
             case (
    preg_match("/tisch/i"$input) ? true false );
                  
    $art "Tisch";
                  break;
             case (
    preg_match("/platte/i"$input) ? true false );
                  
    $art "Platte";
                  break;
             case (
    preg_match("/heute/i"$input) ? true false ) :
                  
    $art "Heute";
                  break;
             case (
    preg_match("/überübermorgen|langzeit|trend|forecast/i"$input) ? true false ) :
                  
    $art "Trend";
                  break;
             case (
    preg_match("/übermorgen/i"$input) ? true false ) :
                  
    $art "Übermorgen";
                  break;
           case (
    preg_match("/schrank/i"$input) ? true false ) :
                  
    $art "Schrank";
                  break;
             case (
    preg_match("/morgen/i"$input) ? true false ) :
                  
    $art "Morgen";
                  break;
        }

        switch (
    true) {
             case (
    preg_match("/nord/i"$input) ? true false ) :
                  
    $richtung "Norden";
                  break;
            case (
    preg_match("/sued/i"$input) ? true false ) :
                  
    $richtung "Süden";
                  break;
            case (
    preg_match("/west/i"$input) ? true false ) :
                  
    $richtung "Westen";
                  break;
            case (
    preg_match("/ost/i"$input) ? true false ) :
                  
    $richtung "Osten";
                  break;
        }

        switch (
    true) {
            case (
    preg_match("/buero|büro/i"$input) ? true false ) :
                  
    $raum "Büro";
                  break;
            case (
    preg_match("/wohn/i"$input) ? true false ) :
                  
    $raum "Wohnzimmer";
                  break;
            case (
    preg_match("/schlaf/i"$input)) :
                
    $raum "Schlafzimmer";
                  break;
            case (
    preg_match("/kueche|küche/i"$input) ? true false ) :
                  
    $raum "Küche";
                  break;
            case (
    preg_match("/bad/i"$input) ? true false ) :
                  
    $raum "Bad";
                  break;
            case (
    preg_match("/ess/i"$input) ? true false ) :
                  
    $raum "Essplatz";
                  break;
            case (
    preg_match("/klo|wc/i"$input) ? true false ) :
                  
    $raum "WC";
                  break;
            case (
    preg_match("/gaeste|gäste/i"$input) ? true false ) :
                  
    $raum "Gästezimmer";
                  break;
            case (
    preg_match("/kinder/i"$input) ? true false ) :
                  
    $raum "Kinderzimmer";
                  break;
            case (
    preg_match("/party|feier/i"$input) ? true false ) :
                  
    $raum "Partyraum";
                  break;
            case (
    preg_match("/garage/i"$input) ? true false ) :
                  
    $raum "Garage";
                  break;
            case (
    preg_match("/keller/i"$input) ? true false ) :
                  
    $raum "Keller";
                  break;
             case (
    preg_match("/alle/i"$input) ? true false ) :
                  
    $raum "alle";
                  break;
            case (
    preg_match("/aussen|außen/i"$input) ? true false ) :
                  
    $raum "Aussen";
                  break;
            case (
    preg_match("/vorzimmer|vorraum/i"$input) ? true false ) :
                  
    $raum "Vorzimmer";
                  break;
        }
        
        if (
    preg_match("/nix|nicht/i"$input) ? true false ) {
            
    SetValueString($outputid"Ok viel Spass");
              return 
    true;
        }
        
        if (
    $zahl == 0) {
           
    $zahl ;
        }

        
    // b.) Auswerten ob $aktion gesetzt
        
    if ($aktion == "" ) {
           
    $tsay "Du hast vergessen eine Aktion mit zu geben!";
        }

        
    // c.) Auswerten ob $typ gesetzt
        
    if ($typ == "") {
           
    $tsay "Du hast vergessen einen Typ mit zu geben!";
        }

        
    // d.) Auswerten ob $raum gesetzt
        
    if ($raum == "") {
            
    //wenn raum leer ist "alle" annehmen
            
    $raum "alle";
        }

        
    print_r("-----------Input - ausgewertet -----------\n");
        
    print_r("Typ: $typ \n");
        
    print_r("Aktion: $aktion \n");
        
    print_r("Raum: $raum \n");
        
    print_r("Detail: $detail \n");
        
    print_r("Richtung: $richtung \n");
        
    print_r("Art: $art \n");
        
    print_r("Zahl: $zahl \n");
        
    print_r("------------------------------------------\n");

        
    // e.) Steuern der Aktionen
        // lese zuerst alle Typen die übereinstimmen aus dem Array
        
    if ($typ <> "" && $aktion <> "") {
          foreach( 
    $tg_info_devices as $rauma => $value ) {
             foreach( 
    $value as $wert => $inhalt ) {
                  if (
    $wert == "Typ" && preg_match("/$typ/i"$inhalt) == true ) {
                      
    //wir brauchen auch noch die anderen Werte
                      
    $leseweiter TRUE;
                  }
                  if (
    $wert == "Typ" && preg_match("/$typ/i"$inhalt) == false) {
                      
    $leseweiter FALSE;
                  }
                  if (
    $leseweiter == TRUE && $wert == "Variable" ) {
                      
    $variablea $inhalt;
                  }
                  if (
    $leseweiter == TRUE && $wert == "Art" ) {
                      
    $arta $inhalt;
                  }
                  if (
    $leseweiter == TRUE && $wert == "Richtung" ) {
                      
    $richtunga $inhalt;
                  }
                  if (
    $leseweiter == TRUE && $wert == "Aussprache" ) {
                      
    $aussprache $inhalt;

                      
    //hier jetzt die Aktion durchführen wenn auch Raum übereinstimmt!
                      
    $leseweiter FALSE;
                      if ( 
    preg_match("/$raum/i"$rauma) == true || $raum == "alle" ) {
                          
    //zuerst noch Art abfragen wenn man zB: 2 Fenster, Lichter etc. in einem Raum hat
                          //ob Match gegeben ist
                      
    print_r("Variable: $variablea \n");
                          
    $continue1 0;
                          if (
    $art <> "") {
                              if (
    $art == $arta) {
                                  
    $continue1 1;
                              }
                          }
                          else {
                              
    $continue1 1;
                          }
                          
    //hier noch Richtung abfragen wenn man zB: Westen,Osten,Norden,Süden aussteuert
                          
    $continue2 0;
                          if (
    $richtung <> "") {
                              if (
    $richtung == $richtunga) {
                                  
    $continue2 1;
                              }
                          }
                          else {
                              
    $continue2 1;
                          }
                          
    print_r("Continue1: $continue1 \n");
                            
    print_r("Continue2: $continue2 \n");
                          if (
    $continue1 == && $continue2 == 1) {
                              
    //Ab hier jetzt die tatsächlichen Aktionen je Typ
                             
    switch ($typ) {
                              case 
    "Rollladen" :
                                  if (
    $aktion == "runter") {
                                      if (
    preg_match("/Sekunden|Sek/i"$detail) == true) {
                                          
    $zahlms $zahl 1000;
                                          
    $tsay .= $aussprache $zahl Sekunden nach unten bewegt worden!";  //hier vorher, mehr als 30sekunden zu Abbruch
                                          
    $techstatus SC_MoveDown($variablea,$zahlms);
                                      } else {
                                  
    $techstatus SC_MoveDown($variablea,0);
                                  
    $tsay .= $aussprache jetzt unten";
                                      }
                                  }
                                  if (
    $aktion == "rauf") {
                                      if (
    preg_match("/Sekunden|Sek/i"$detail) == true) {
                                          
    $zahlms $zahl 1000;
                                          
    $tsay .= $aussprache $zahl Sekunden nach oben bewegt worden!";
                                          
    $techstatus SC_MoveUp($variablea,$zahlms);
                               } else {
                                  
    $techstatus SC_MoveUp($variablea,0);
                                  
    $tsay .= $aussprache jetzt oben";
                                      }
                                  }
                                  break;

                         case (
    preg_match("/Licht|Fernseher|Computer|AVReceiver|SATReceiver|Kino|Anwesenheit/i"$typ) ? true false ) :
                                  if (
    $aktion == "schalte") {   //egal ob aus oder ein, einfach Befehl
                                     
    if (GetValueBoolean($variablea) == false) {
                                        
    $techstatus SetValueUniversal($variablea,true);
                                        
    $tsay .= $aussprache jetzt an";
                                        
    print_r("Schalter: schalte an");
                                     } else {
                                         
    $techstatus SetValueUniversal($variablea,false);
                                         
    $tsay .= $aussprache jetzt aus";
                                         
    print_r("Schalter: schalte aus");
                                     }
                                  }
                                  if (
    $aktion == "ein") {      //einschalten
                              
    if (GetValueBoolean($variablea) == false) {
                                        
    $techstatus SetValueUniversal($variablea,true);
                                        
    $tsay .= $aussprache jetzt an";
                                        
    print_r("Schalter: schalte an");
                                     } else {
                                         
    $tsay .= $aussprache bereits an";
                                         
    print_r("Schalter: bereis an");
                                     }
                                  }
                                  if (
    $aktion == "aus") {      //ausschalten
                              
    if (GetValueBoolean($variablea) == false) {
                                
    $tsay .= $aussprache bereits aus";
                                
    print_r("Schalter: bereits aus");
                                     } else {
                                
    $techstatus SetValueUniversal($variablea,false);
                                
    $tsay .= $aussprache jetzt aus";
                                
    print_r("Schalter: schalte aus");
                                     }
                                  }
                                  if (
    $aktion == "frage") {   //Status ausgeben
                              
    if (GetValueBoolean($variablea) == false) {
                                        
    $tsay .= $aussprache aus";
                                        
    print_r("Frage: aus");
                                     } else {
                                        
    $tsay .= $aussprache an";
                                        
    print_r("Frage: ein");
                                     }
                                  }
                                  break;

                              case 
    "Temperatur" :
                                  
    $temperatur GetValueFloat($variablea);
                                  
    $aussprache str_replace("[wurde|beträgt]","beträgt",$aussprache);
                                  
    $tsay .= $aussprache $temperatur Grad";
                                  break;

                              case (
    preg_match("/Wind/i"$typ) ? true false ) :
                                  
    $wind GetValueFloat($variablea);
                                  
    $tsay .= $aussprache $wind Kilometer pro Stunde";
                                  break;

                              case 
    "Luftfeuchtigkeit" :
                                  
    $luftfeuchtigkeit GetValueInteger($variablea);
                                  
    $tsay .= $aussprache $luftfeuchtigkeit Prozent";
                                  break;

                              case 
    "Helligkeit" :
                                  
    $helligkeit GetValueInteger($variablea);
                                  
    $tsay .= $aussprache $helligkeit Lux";
                                  break;

                              case 
    "Regen" :
                                  
    $regen GetValueFloat($variablea);
                                  
    $tsay .= $aussprache $regen Millimeter";
                                  break;

                              case 
    "Batterie" :
                                  
    $batterie GetValueFormatted($variablea);
                                  
    $tsay .= $aussprache $batterie ";
                                  break;

                              case 
    "Wetter" :
                                  
    $wetter GetValue($variablea);
                                  
    $wetter strip_tags($wetter);
                                  
    $wetter mb_convert_encoding($wetter"ISO-8859-2""UTF-8");
                                  
    $tsay .= $aussprache $wetter";
                                  break;

                                case 
    "Uhrzeit" :
                                  
    $uhrzeit date("H")." Uhr ".(int)date("i");
                                  
    $tsay .= $aussprache $uhrzeit";
                                  break;
                             }
                          }
                      }
                }
            }
          }
        }
    }

    if (
    $tsay == "") {
        
    $tsay "Der Befehl konnte von mir nicht ausgewertet werden";
    }
    if (
    $techstatus == false) {
        
    $tsay "Wegen eines technischen Problems konnte der Befehl nicht ausgeführt werden";
    }

    //Setzen androidSend
    SetValueString($outputid"$tsay");

    $SkriptLaufzeit microtime(true) - $SkriptStart;
    print_r("\n------------------Output------------------\n");
    print_r("$tsay\n");
    print_r("Script Laufzeit $SkriptLaufzeit Sekunden\n");
    print_r("------------------------------------------\n");

    //f.) Offene Themen
    //f1.) Prozent Angaben für öffnen /schließen usw.. aus IPSShadowing Logik?
    //f2.) Wie bekommt IPSShadowing den veränderten Status mit bei Rollladen schließen über Shutter Modul???
    //f3.) Licht RGB und dimmen und über schalter wie implementieren in dieser Logik?

    function SetValueUniversal($VariableID$Value) {
        
    // Prüfe ob Variable direkt beschreibbar ist (nicht ReadOnly)
        
    if(IPS_GetObject($VariableID)['ObjectIsReadOnly'] === false) {
           
    // Variable kann direkt gesetzt werden
           // Den Typ 0=Boolean, 1=Integer, 2=Float, 3=String
           
    return SetValue($VariableID$Value);
        } else {
           
    // Variable ist eine Status Variable. Suche übergeordnete Instanz zum Beschreiben
           
    $ParentID IPS_GetObject($VariableID)['ParentID'];
           
    // Den Namen des Ident der Variablen z.B. STATE
           
    $ObjectIdent IPS_GetObject($VariableID)['ObjectIdent'];
           
    // Den Typ 0=Boolean, 1=Integer, 2=Float, 3=String
           
    $VariableType IPS_GetVariable($VariableID)['VariableValue']['ValueType'];
           
    // Den Modul Type (siehe http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/modulverwaltung/ips-getmoduleList/)
           
    $ModuleType GetModuleType($ParentID);
            switch(
    $ModuleType) {
               case 
    "HomeMatic Device":
                      if(
    $VariableType == 0) return HM_WriteValueBoolean($ParentID$ObjectIdent$Value);
                      if(
    $VariableType == 1) return HM_WriteValueInteger($ParentID$ObjectIdent$Value);
                      if(
    $VariableType == 2) return HM_WriteValueFloat($ParentID$ObjectIdent$Value);
                      if(
    $VariableType == 3) return HM_WriteValueString($ParentID$ObjectIdent$Value);
                      break;
                case 
    "FS20":
                      
    // ....
                      // ...
                      
    break;
                    case 
    "xComfort Switch":
                      if(
    $VariableType == 0) return MXC_SwitchMode($ParentID$Value);
                            break;
                    case 
    "LCN Unit":
                      if(
    $VariableType == 0) return LCN_SwitchRelay($ParentID$Value);
                      break;
                case 
    "Alle meine genutzten Hardwaretypen":
                      
    // ...
                      // ..
                
    default:
                   
    // Modul nicht gefunden oder unterstüzt
                      
    return false;
            }
        }
    }

    function 
    GetModuleType($ObjectID) {
        foreach(
    IPS_GetModuleList() as $guid) {
          
    $module IPS_GetModule($guid)['ModuleName'];
          if(
    in_array($ObjectIDIPS_GetInstanceListByModuleID($guid))) {
             return 
    $module;
            }
        }
        return 
    "";
    }

    ?>
    Der IP Symcon Fernzugriff muss aktiviert werden. Hilfreiche Anleitung:
    https://www.symcon.de/service/dokume...y/fernzugriff/

    b.) Android:
    Als erstes in der App unter Einstellungen die notwendigen Konfigurationen treffen. [B]ACHTUNG: SSL/HTTPS funktioniert nur bei der App "Haussteuerung"/B]
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	settings.png 
Hits:	566 
Größe:	143.2 KB 
ID:	31519

    Fehlerhandling
    - In der Android App den Debugger Modus aktivieren
    - Error 1101 und Error 1103 deuten auf eine falsche Konfiguration hin in den Android Einstellungen. zB: folgendes versuchen
    Prüfen im Android Browser ob http://<serverip>:<webport>/api/ bzw. mit https://<serverip>:<webport>/api/ folgendes Ergebnis liefert
    {
    "IP-Symcon": "3.20",
    "API": "0.2",
    "JSON-RPC": "2.0"
    }
    - wer Linux zur Verfügung hat folgendes probieren ob er über json entsprechend den Wert der IP Symcon Variable erhält
    curl -v -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"GetValueString","param s":[40387],"id":1}' -k -u max.muster@gmx.at:fernzugriffpasswort http://10.0.0.99:82/api/ --trace-ascii /dev/stdout
    - Fehlermeldung "end of input at character 0" im Debugger Modus deutet darauf hin, dass das Fernzugriffpasswort falsch eingegeben wurde

    Zusätzliche Informationen
    - derzeit ist im IP Symcon Script der Default "ALLE" bzgl. Raum, wenn der Raum weggelassen wird bezieht es sich auf Alle Räume. Das führt aber auch dazu wenn der Raum nicht korrekt verstanden wird von der Google Spracherkennung, dass alle Räume betroffen sind. Kann deaktiviert werden indem folgendes Coding entfernt wird im Script Android Voice
    PHP-Code:
    // d.) Auswerten ob $raum gesetzt
    if ($raum == "") {
        
    //wenn raum leer ist "alle" annehmen
        
    $raum "alle";

    - die Android App IPSymconVoice wurde mit "App Inventor 2" entwickelt, somit habe ich keinen Einfluss auf die Berechtigungen die notwendig sind!
    - die Android App Haussteuerung wurde mit Android Studio entwickelt und ich habe vollen Einfluss auf die Berechtigungen
    - beim Android Gerät im Android Menü (nicht von der App) unter "Sprache & Eingabe" darauf achten, dass die Sprache "Deutsch" eingestellt ist! (zB: bei Verwendung von der Google Spracheingabe und dort auf das Config Symcol klicken), die Sprache kann dort auch Offline heruntergeladen werden und die Sprachgeschwindigkeit dort eingestellt werden
    - die Auswertung der Sätze erfolgt auf Wörter Basis; somit bin ich unabhängig vom Satzbau; es müssen nur die Schlüsselwörter vorkommen wie zB: "Schalte Licht Küche ein" egal wie dann der Satzbau rund herum ist und die Reihenfolge der Wörter spielt auch keine Rolle
    - wenn man einmal den "Lese NFC-Tag" Button gedrückt hat kann man beliebig oft hintereinander von verschiedenen NFC-Tags lesen (IPSymconVoice App), bei der App Haussteuerung entfällt der Button weil quasi immer der NFC Lese Modus aktiv ist (man kann in den App Einstellungen allerdings verhindern dass die Aktion in IP-Symcon ausgeführt wird wenn man das nicht möchte)
    - ein leerer NFC-Tag muss initial mit einem anderen Tool erstmalig mit einem Dummy Wert beschrieben werden (zB: mit NFC-Tools von wakdev; siehe Google Play Store) <<<---- gilt nur für die App IPSymconVoice
    - bei der Wetter-Abfrage zB: "Wie wird das Wetter Morgen" oder "Sage mir den weiteren Wetter Trend" wird IPSWeatherForcastAT von der IPSLibrary verwendet

    Technik
    - beide Android Apps greifen folgendermaßen auf die IP-Symcon JSON API zu (1x GET für die generelle Verbindung; 1x POST um den Befehl in die IP-Symcon Variable androidReceive zu schreiben; 1x POST um die Antwort vom Script AndroidVoice aus der Variable androidSend auszulesen)
    - zusätzlich mache ich das Schalten von Fernseher, AV-Receiver, Licht, usw... immer per Toggle Script (siehe nächstes Posting)

    Beispiel Satzstellungen
    - Ist das Licht im Büro eingeschaltet
    - Schalte das Licht im Büro ein
    - Schalte Licht Büro
    - Knippse das Licht im Büro an

    LG
    Thiemo
    Geändert von Thiemo (23.02.19 um 14:28 Uhr)

  2. #2
    Registriert seit
    May 2013
    Beiträge
    188

    Standard Toggle Scripte

    Hier 2 Beispiele von Toggle Scripten die ich verwende für zB: Licht schalten, Fernseher, Computer, AV Receiver usw...

    Toggle Script in Verbindung mit Homematic 6-fach Wandtaster

    Neue Variable PRESS_SHORT_TOGGLE mit Script und auslösendem Ereignis bei Variablenaktualisierung
    Wenn der Homematic Taster gedrückt wird verändert sich PRESS_SHORT und dort wartet auch ein Script mit auslösendem Ereignis welches den Status von PRESS_SHORT_TOGGLE verändert

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	WSKueche6fach.jpg 
Hits:	658 
Größe:	33.8 KB 
ID:	27257

    Inhalt von Script "Toggle_Kueche_6fach_Key1"
    PHP-Code:
    <?

    SetValue
    (53974 /*[WS Kueche 6fach Key1\PRESS_SHORT_TOGGLE]*/, !GetValue(53974 /*[WS Kueche 6fach Key1\PRESS_SHORT_TOGGLE]*/));

    ?>
    Inhalt von Script "LED_Kueche_schalten" (Homematic Schalter)
    PHP-Code:
    <?

    //LED-Stripes Küche an oder aus
    $currentstat GetValueBoolean51429 /*[S Küche LEDStripes\STATE]*/ );
    if (
    $currentstat == TRUE) {
      
    HM_WriteValueBoolean(15332 /*[S Küche LEDStripes]*/"STATE"false); //Gerät ausschalten
    }
    else {
      
    HM_WriteValueBoolean(15332 /*[S Küche LEDStripes]*/"STATE"true); //Gerät einschalten
    }

    ?>
    Anderes Beispiel mit Möller Eaton xcomfort:
    PHP-Code:
    <?
    // Trigger vom Script: Press Short Toggle (AN/AUS)
    $id_schaltaktor_pc 16670 /*[S Buero PC]*/;                //Objekt-ID des Schaltaktors (xcomfort) Instanz 
    $id_schaltaktor_status_pc 17190 /*[S Buero PC\Status]*/;  //Boolean Status Schaltaktor (xcomfort)
    $status_pc GetValueBoolean($id_schaltaktor_status_pc);
    if (
    $status_pc == FALSE) {     //wenn aus, dann Schalter PC ein
       
    MXC_SwitchMode($id_schaltaktor_pctrue);          //PC einschalten (xcomfort Befehl)
    } else {
       
    MXC_SwitchMode($id_schaltaktor_pcfalse);          //PC ausschalten (xcomfort Befehl)
    }
    ?>

    Toggle Script virtueller Schalter zB: für NFC Tag

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	VSSchlafzimmer.jpg 
Hits:	464 
Größe:	16.5 KB 
ID:	27259

    Im Script dann Philips HUE
    PHP-Code:
    <?
    /*

        PhilIPS hue LED Leuchte Schalten
        Ersteller: peterchrisben
        Datum: 08.02.2013
        Version: 0.1
         Selber verändert (Toggle Funktion) 02.11.2014

    */
    $bridge_ip '10.0.0.98';
    $lamp_no2// Schalfzimmer
    $key='ffffffffffffffffffffffffffffffffff';

                    
    $json_url_status 'http://'.$bridge_ip.'/api/'.$key.'/lights/'.$lamp_no.'/';
                    
    $json_url 'http://'.$bridge_ip.'/api/'.$key.'/lights/'.$lamp_no.'/state';

                    
    //Status abfragen
                    
    $json_url_fetch  file_get_contents($json_url_status);
                    
    $fetch_array json_decode($json_url_fetchtrue);
                    if(
    $fetch_array['state']['on'] == "1") {
                   
    $json_string '{"bri":128, "on":false}'// "bri" = Helligkeit (0-254) "on" = ein/aus (true/false)
                    
    } else {
                   
    $json_string '{"bri":128, "on":true}'// "bri" = Helligkeit (0-254) "on" = ein/aus (true/false)
                    
    }

                    
    //Schalten
                
    $ch curl_init$json_url );
                
    // Configuring curl options
                
    $options = array(
                                
    CURLOPT_RETURNTRANSFER => true,
                                
    CURLOPT_CUSTOMREQUEST => 'PUT'// -X
                                
    CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
                                
    CURLOPT_POSTFIELDS => $json_string
                                
    );


                
    // Setting curl options
                
    curl_setopt_array$ch$options );

                
    // Getting results
                
    $result =  curl_exec($ch);


            
    print_r ("Result: $result \n");



    ?>

    Toogle Boolean Variablen im Webfront


    Hier noch eine Info wie ich die Toggle Boolean Variablen im Webfront darstelle damit ich immer egal ob über Webfront, zB: Homematic Schalter oder Sprachsteuerung immer den richtigen Status habe über EIN/AUS

    Ein Script erstellen das Boolean_Aktion lautet mit folgendem Inhalt und bei mir abgespeichert wird in der Kategorie Scripte
    PHP-Code:
    <?

    if($IPS_SENDER == "WebFront")
    {
          
    SetValue($IPS_VARIABLE$IPS_VALUE);
    }

    ?>
    Bei der Toogle Boolean Variable unter eigene Aktion dann entsprechend dieses Script auswählen:
    Scripte\Boolean_Aktion

    Im Webfront dann einen Link auf die Toogle Boolean Variable definieren und nicht mehr auf den Schalter direkt.
    Geändert von Thiemo (08.11.14 um 13:16 Uhr)

  3. #3
    Registriert seit
    May 2013
    Beiträge
    188

    Standard Youtube Demos

    Blöderweise um 90 Grad verkehrt aufgenommen

    Sprachsteuerung


    Statusabfragen per Sprache
    http://youtu.be/vnHwJVDpVw4

    NFC-Tag Read
    http://youtu.be/hffL-rBm4zI

    NFC-Tag Write
    http://youtu.be/PAEU6GT5nsU
    Geändert von Thiemo (02.11.14 um 19:08 Uhr)

  4. #4
    Registriert seit
    Jan 2011
    Ort
    Wuppertal
    Beiträge
    135

    Hallo Thiemo,

    das ist GENIAL!!!!!

    Einzig die Lichtsteuerung muss noch aufgebohrt werden, ich habe z.B. mehrere Leuchten in einem Raum. Ich versuche mich da grade einzulesen, aber ich bin noch nicht so ganz durchgestiegen. Vielleicht hast Du da ja einen Tipp...
    Gruß, Marcus
    IPS 3.4 auf HP Proliant Microserver/Windows Small Business Server 2011, EIB, Squeezebox Server + Squeezebox Radio, EIB-Gateway auf Raspberry mit Buskopplung von SelfBus
    Elektrofachkraft nach DIN VDE 1000-10

  5. #5
    Registriert seit
    May 2013
    Beiträge
    188

    Zitat Zitat von Maloe Beitrag anzeigen
    Hallo Thiemo,

    das ist GENIAL!!!!!

    Einzig die Lichtsteuerung muss noch aufgebohrt werden, ich habe z.B. mehrere Leuchten in einem Raum. Ich versuche mich da grade einzulesen, aber ich bin noch nicht so ganz durchgestiegen. Vielleicht hast Du da ja einen Tipp...
    Ja das mit der Lichtsteuerung ist in der Tat noch ein Problem.
    Ich habe es bisher versucht mit "ART" und "RICHTUNG" abzudecken im Script um näher zu präzisieren wenn mehrere Lichter in einem Raum sind und man nicht immer alle schalten will.

    Also so zB: der Auszug vom Script oben:
    Art gibt es dann Tür; Fenster; Decke; Wand und Richtung Norden; Osten; Süden; Westen

    Wenn es dann so eingetragen wird als Beispiel:
    PHP-Code:
    $tg_info_devices = array(
    "Büro1" => array("Typ" => "Licht""Variable" => 12345"Art" => "Decke""Richtung" => "Norden""Aussprache" => "Im Büro ist das Licht an der Decke im Norden" ),
    "Büro2" => array("Typ" => "Licht""Variable" => 12346"Art" => "Decke""Richtung" => "Osten""Aussprache" => "Im Büro ist das Licht an der Decke im Osten" ),
    "Büro3" => array("Typ" => "Licht""Variable" => 12347"Art" => "Wand""Aussprache" => "Im Büro ist das Licht an der Wand" ),
    "Büro4" => array("Typ" => "Licht""Variable" => 12348"Art" => "Tür""Aussprache" => "Im Büro ist das Licht über der Tür" ),
    ); 
    Sollten dann folgende Befehle entsprechend steuern:
    "Schalte alle Lichter ein" => Büro1, Büro2, Büro3, Büro4, + Wohzimmer, Schlafzimmer usw....
    "Schalte das Licht im Büro ein" => Büro1, Büro2, Büro3, Büro4
    "Schalte das Licht im Büro an der Decke" => Büro1, Büro2
    "Schalte das Licht im Büro an der Decke im Osten" => Büro 2
    "Schalte das Licht im Büro über der Tür" => Büro 4
    "Schalte das Licht im Büro an der Wand" => Büro 3

    Problematisch wird es definitiv wenn man sehr viele Spots hat die alle einzeln ansprechbar sein sollen!
    Natürlich kann man die Art im PHP Script noch aufbohren zB: für Tisch um eine Tischlampe extra anzusprechen oder Arbeitsplatte um zB: das eingebaute Licht über der Arbeitsplatte unter Hängeregale anzusprechen oder dergleichen

    Das Script im ersten Posting habe ich abgeändert um zusätzliche Arten einzugeben und bei der Frage war noch ein Bug drinnen und bei einer Abfrage.
    Geändert von Thiemo (08.11.14 um 13:42 Uhr)

  6. #6
    Registriert seit
    May 2013
    Beiträge
    188

    Feedback ist immer gerne willkommen.

    Ich habe zB: noch eine Kleinigkeit verändert um Spracherkennungsfehler zu kompensieren. Manchmal versteht die Google Sprachsuche "Schalke" anstelle von "Schalte". Liegt vielleicht auch an meinem Akzent (Mundart)

    PHP-Code:
        case (preg_match("/schalte|schalke/i"$input) ? true false ) :
              
    $aktion "schalte";
              break; 

  7. #7
    Registriert seit
    Jan 2011
    Ort
    Kerken (NRW)
    Beiträge
    218

    Hallo Thiemo,

    Ich muss sagen 1A++++.

    Android App installiert, Dein Script ein bisschen abgeändert damit es meine Homematic Lichter schalten kann und es klappt.

    Ich habe meine Amazon "Echo" Vorbestellung wieder storniert. Die braucht mit Deinem Tool kein Mensch mehr!

    SSL klappt übrigens auch vorzüglich. Ich terminiere SSL an meinem Reverse Proxy und gehe dann mit HTTP weiter zu IPS.
    Jetzt müssen wir nur noch die offenen Themen, wie Du bereits im Script anmerktest, elegant lösen und wir haben eine super neue Möglichkeit unser IPS zu nutzen.

    Die langen Winterabende sind gerettet!

    P.S. Ich würde Dich für den IP-Symcon Oscar nominieren!
    Geändert von Heimgeist (17.11.14 um 08:15 Uhr)
    Viele Grüße Uwe

  8. #8
    Registriert seit
    Jan 2011
    Ort
    Wuppertal
    Beiträge
    135

    Hallo Thiemo,

    genau so soll's sein!

    Gut, dass wir hier keine Mundart sprechen...

    Uwe, ich bin bei Dir: IPS-Oscar für Thiemo!
    Gruß, Marcus
    IPS 3.4 auf HP Proliant Microserver/Windows Small Business Server 2011, EIB, Squeezebox Server + Squeezebox Radio, EIB-Gateway auf Raspberry mit Buskopplung von SelfBus
    Elektrofachkraft nach DIN VDE 1000-10

  9. #9
    Registriert seit
    Jan 2011
    Ort
    Wuppertal
    Beiträge
    135

    Sollte jemand, wie ich, auf EIB/KNX gesetzt haben, wird er leider ein kleines Problem bekommen. IPS geht leider bei EIB etwas anders mit den Variablen um, als man es erwarten würde. Eine Variable, die eine EIB-Gruppenadresse darstellt, kann nicht beschrieben werden. Stattdessen muss der Schreibbefehl auf die Instanz erfolgen.

    Zuerst wollte ich das Script erweitern, was mir aber zu komplex erschien; vor allem in Hinblick auf die weitere "Aufrüstung" mit neuen Funktionen. Ich hätte bei der Device-Definition am Anfang zusätzlich die Instanz mitgeben und dann die Auswertung entsprechend anpassen müssen. Die Lösung war eine Hilfsvariable einzusetzen, die mit dem Toggelscript und einem Ereignis, wie von Thiemo beschrieben, ausgestattet ist und zusätzlich noch ein Ereignis zu der "echten" Variable hinzufügen, was die Hilfsvariable schaltet, wenn die Aktion im WebFront ausgeführt wird. In der Spracherkennung wird die Hilfsvariable verwendet, die sendet im Script dann ein "EIB_Switch" an die Instanz und schaltet damit die Lampe ein/aus. Wird im WebFront geschaltet, wird über das Ereignis die Hilfsvariable "gleichgezogen".

    Dies nur als kleiner Hinweis an meine EIB-Leidensgenossen. Die Frage an Paresy und Steiner wäre, ob dieses "abnormale" Verhalten nicht programmtechnisch gelöst werden kann, damit wir EIBler nicht immer basteln müssen.
    Gruß, Marcus
    IPS 3.4 auf HP Proliant Microserver/Windows Small Business Server 2011, EIB, Squeezebox Server + Squeezebox Radio, EIB-Gateway auf Raspberry mit Buskopplung von SelfBus
    Elektrofachkraft nach DIN VDE 1000-10

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

    Das ist bei Homematic aber auch so. Statt SetValue musst Du Dir eine eigene Funktion basteln, die die übergeordnete Instanz ermittelt und dann dort den Befehl absetzt. Komplizierter wird es bei Unterschiedlichen Systemen. Wenn z.B. eine Lampe mit Homematic, die andere aber mit Siemens S7 geschaltet wird. Beide haben eine Boolean Variable (Licht an/aus), zum ändern muss man aber die übergeordnete Instanz bemühen und das mit komplett unterschiedlichen Befehlen. Mit dem Konzept der IPSLibrary sollte dies aber elegant lösbar sein.

    Gesendet von meinem Nexus 4 mit Tapatalk
    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