Android App IPSymconVoice

Neue Version 2.2.0 ist unterwegs. Sollte in den nächsten Stunden verfügbar sein.

Es gibt jetzt auf dem Wearable Device einen neuen Screen wenn man nach links wischt mit Einstellungen.

a.) „Starte Spracherk.“ bedeutet, dass wenn die App auf der Smartwatch gestartet wird, dann wird wahlweise gleich mit der Spracherkennung gestartet oder erst wenn das Mikrofon Symbol angeklickt wird
b.) „Halte letzten Text“ bedeutet, dass die letzte Erkennung so lange wie möglich angezeigt wird bis ein neuer Befehl kommt
c.) „Inaktivität Modus“ bedeutet bei Aktivierung, dass die App selber nicht beendet wird, sondern entsprechend schwarzer Hintergrund und gedimmt wird (Ambient Modus wird aktiviert)

Zusätzlich Bugfix behoben:

  • „DeaktiviereStandby“ sollte jetzt wieder so funktionieren wie angedacht
  • App Absturz bei einigen Geräten wenn während der App entsprechend das Bluetooth Gerät von der Gegenstelle getrennt wurde (das hat aber zur Konsequenz dass bei diesen Geräten eventuell entsprechend die App manuell gestoppt-/gestartet werden muss damit Bluetooth funktioniert)

Die Einstellungen vom Hauptgerät und vom Wearable Gerät werden jetzt auch untereinander synchronisiert.
Ein Offline Modus ist nicht möglich da man trotz WLAN nicht mit HttpUrlConnection usw… auf den IP-Symcon Server zugreifen kann. Ich habe das Coding entsprechend mit drinnen gelassen aber den Schalter „Offline Modus“ entsprechend deaktiviert (Hoffentlich wird das von Google in Zukunft irgendwann freigeschaltet für Wearable Devices). Ein „Sideload“ für Testzwecke bringt leider auch nichts da die App entsprechend abstürzt.

Was ich jetzt beobachtet habe wenn Bluetooth und WLAN Verbindung auf der Smartwatch gleichzeitig aktiv sind (Sony Smartwatch 3) dass dann nichts passiert da offensichtlich die MessageApi hier ein Problem hat. Wenn ich WLAN auf der Smartwatch entsprechend aktiviert habe und auf dem Smartphone Bluetooth zB: abschalte, dann funktioniert die Verbindung zum Smartphone über WLAN und dann weiter zum IP-Symcon Server ohne Probleme bei mir und auch die Rückmeldung zur Smartwatch ohne Probleme.

In einer Version 2.2.1 werde ich ein zusätzlichen Bildschirm auf dem Smartphone mit Wearable Einstellungen vornehmen (die gleichen wie auf der Smartwatch und noch 5 Favoriten die man mit einem entsprechenden Text hinterlegen kann). Die bis zu 5 Favoriten werden dann entsprechend auf die Smartwatch synchronisiert und dort in einem eigenen Bild angezeigt, sodass man diese einfach nur anklicken muss um entsprechend die Aktion auszuführen.

LG
Thiemo

Hallo,

nachdem ich bei meinem Sony Xperia Z3 Compact immer wieder mal das Problem hatte, dass das Spracheingabe Popup einfach gar nicht verschwunden ist nach der Spracherkennung oder erst nach einigen Sekunden verschwunden ist ((egal ob Bluetooth oder ohne) hier die Lösung:

Android Gerät -> Einstellungen -> „Ton & Benachr.“ -> „Audio-Einstellungen“ -> „ClearAudio+“ aktivieren und „Dynamik-Normalisierung“ aktivieren

LG
Thiemo

  • „DeaktiviereStandby“ sollte jetzt wieder so funktionieren wie angedacht

Danke für die rasche Behebung! Funktioniert jetzt. Aber warum schaltet sich dabei die App immer in den Vordergrund? Kann man das irgendwie unterdrücken? Ich habe IPSView laufen und möchte es aufschalten. Wenn ich zusätzlich den Befehl zum APP-Starten anfüge kommt zuerst trotzdem kurz die Haussteuerung hoch und danach gleich IPSView. Optisch nicht gerade ansprechend funktionell aber ok.

Gruß
Erich

Der einstellbare Delay für BT behebt meine Probleme mit der Freisprecheinrichtung. Allerdings muss ich die Verbindung nach der Sprachausgabe immer noch manuell beenden.

Die Wear Optionen funktionieten super.

Geniale App welche immer noch genialer wird. :wink:

Das mit der Spracheingabe trennen weiß ich jetzt an was es liegt. Hatte jetzt die Gelegenheit bei einer Dienstreise selbst zu testen. Es wird hier ein richtiger Call aufgebaut. Insofern muss ich schauen wie ich diesen trennen kann. Das dauert allerdings noch ein paar Tage bis ich dazu komme mir das anzuschauen.

LG
Thiemo

Das ist deswegen so gelöst, weil ich bei Custom Roms selber hin und wieder das Problem hatte, dass das Standby Deaktivieren nicht „durch“ kommt. Erst durch die tatsächliche Activity (in dem Fall halt kurz die eigene App) funktioniert es problemlos … Es wird da ein paar Millisekunden die Aktivität gehalten bevor sich diese wieder selbst beendet. Das müsste eigentlich schon der Fall sein wenn du nur Standby deaktivieren benutzt. Optisch ist es nicht ganz schön das stimmt :slight_smile:

Bei meinem Wand Tablet habe ich derzeit die IP Symcon App als Main App am laufen und mit meiner wird nur das Standby in Verbindung mit einem Bewegungsmelder deaktiviert. Das funktioniert bei mir. Dort verwende ich derzeit selten die Spracheingabe da ich auch viele Informationen mir nur kurz anschaue anstatt Aktionen zu setzen. Das wird sich wahrscheinlich ändern wenn ich in meiner App in einer zukünftigen Version das Web-Frontend mit einbinden werde und somit meine App als Main App verwenden kann.

Neue Version 2.2.1 ist unterwegs:

  • NEU: Smartwatch Schnellzugriff
    Definiere bis zu 5 Befehle im Smartphone/Tablet die auf der Smartwatch in einem eigenen Reiter dann verwendbar sind
  • Änderung: Layout geändert aufgrund neuen Einstellungs-Optionen bzgl. Smartwatch
  • Änderung: Bluetooth auflegen funktioniert jetzt hoffentlich bei Verwendung im Auto (leider keine Testmöglichkeit vorhanden)

LG
Thiemo

Hallo Thiemo,

erstmal ein ganz großes Lob für Dein super Projekt!
Genau davon habe ich geträumt, als ich meine Hausautomation eingerichtet habe: Steuerung à la Raumchiff Enterprise … :slight_smile:

Die App läuft auf meinem Tablet (Medion) und meiner Sony SmartWatch 3 soweit einwadfrei. Die Texte werden perfekt erkannt und in IP-Symcon läuft auch alles wie erwartet.
Allerdings gibt es einen Punkt, bei dem ich mir nicht sicher bin, ob das so laufen soll, oder meine Konfiguration noch einen Fehler hat.
Wenn ich die App auf meinem Tablet verwende, dann wird auf meinem Tablet sowohl die „Erkennung“ als auch die „IP-Symcon Antwort“ angezeigt.
Bei meiner SmartWatch wird allerdings nur die Erkennung angezeigt, die IP-Symcon Antwort leider nicht.
Wie gesagt, ich bin mir nicht sicher, ob das überhaupt von Dir implementiert ist, aber ich hatte Dich (s.u.) so verstanden, dass auch auf der SmartWatch die Antwort angezeigt wird.

Gruß,
Christian

Die Cloud-Sync muß bei der Android Wear App deaktiviert sein. Die Wear Watch funktioniert bei mir nur über Bluetooth (und deaktivierter Cloud-Sync).

Hallo,

danke für den Tipp. Über Bluetooth funktioniert es auch bei mir einwandfrei. Jetzt sehe ich auch die Antwort.

Prinzipiell funktioniert die SmartWatch bei mir auch über WLAN / Cloud-Sync. Lediglich die Antwort wurde nicht auf der SmartWatch angezeigt.

Ist das eine technische Restriktion, dass die Antwort über WLAN nicht geht, oder ist das ein Bug?

Vielen Dank,
Christian

Gute Frage. Bei mir geht es jedenfalls (leider) nicht sobald Cloud-Sync aktiviert ist … dann sowohl nicht über BT als auch WLAN. Ich vermute die App müsste dazu Ihre Daten via Google Cloud mit dem Wear Device austauschen. Ist aber auch nur eine Vermutung. (Android App IPSymconVoice - Seite 14)

Habe es gerade getestet aber es funktioniert leider immer noch nicht. Ich muß immer noch die Verbindung manuell trennen.

Danke für das Feedback. Ich brauche wohl ein neues Auto damit ich selber testen kann warum das einfach nicht funktionieren will :smiley:
Werde mich weiter per Google Suche damit beschäftigen wie das zu lösen ist.
Bzgl. Wear habe ich folgenden Beitrag gefunden
Always-on and Wi-Fi with the latest Android Wear update | Android Developers Blog
So wie es aussieht muss ich von MessageApi auf DataItem umstellen
Sending and Syncing Data | Android Developers

Dann sollte das Thema erledigt sein. Werde eine Version 2.2.2 bereit stellen.
Bzgl. Roadmap werde ich die Offline Spracherkennung ganz hinten anstellen und vorher Location und danach WebFront angehen.

+1 Liegt so auch voll in meinem Interesse. Nach Wear ist die Location Funktion für mich am interessantesten.

Wear über CloudSync wäre super. Auch nochmals danke für den Versuch das BT close Problem zu lösen.
Einfach nur genial die App!!!

Hallo,

Erstmal Wow! Hört sich toll an was da möglich ist. Leider hab es noch nicht hingekriegt, dass es bei mir läuft. Ich habe LCN und dein PHP Skript kopiert und wie auf dem Screenshot zu sehen folgende Ausgabe unten.

Dropbox - Screenshot 2015-07-09 14.09.10.png

Habe bisher die Receive und Send Nummern angepasst und die Zeile 16 (Büro mit meiner Nummer angepasst. Nix funktioniert. Wer hat eine Idee? Und was ist noch alles anzupassen ausser den Räumen und den dazugehörigen Nummern? Ich habe das jetzt so verstanden, dass ich immer den Namen angebe den ich auch im IPS verwende. Muß mein Licht auch im IPS mit Licht benannt sein? Ich habe Spots im Büro die in IPS mit Büro Spots benannt sind. Muss „Spots“ in „Licht“ umbenannt werden? Oder vielleicht "Licht in Zeile 16 des Skripts in „Spots“?

Freu mich schon auf die Bastelei und hoffe auf Hilfe von euch damit es losgehen kann.
LG
Cubus

Bekomme den Screeshot leider nicht angezeigt. Kannst Du den mit privater Nachricht zuschicken oder an thiemoumf@gmx.at ? Bitte auch von den BüroSpots … Hast Du hier die Instanz verwendet oder direkt eine Variable die Du hast zum schalten? Dann wäre noch interessant wie Du diese sonst ansteuerst bzw. ob es Homematic, FS20, Eaton Xcomfort oder was auch immer die Instanz selbst ist. Denn von dem php Script sieht man ganz unten die Funktion SetValueUniversal und in dieser ist derzeit als Instanz nur HomeMatic und EatonXcomfort drinnen. Hier müsste man für FS20, etc… noch die richtigen Schaltbefehle einbauen … Habe nur von diesen Marken leider nichts zum Testen. Wenn jedoch nicht die Instanz hinterlegt ist sondern direkt eine boolsche Variable die schaltbar ist, dann wird das entsprechend durchgeführt.

LG
Thiemo

Hallo Thiemo,

bin noch in der Arbeit, wird dir aber gerne heute oder morgen noch die Screenshots zukommen lassen. Ich steuere mit LCN an.

Gruß

Cubus

Das LCN habe ich irgendwie überlesen gehabt :slight_smile:

Probiere mal folgende 2 Funktionen zum Schluss vom php Skript in IP-Symcon auszutauschen. Habe jetzt LCN Unit mit aufgenommen.

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_SwitchMode($ParentID, 0);
                         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($ObjectID, IPS_GetInstanceListByModuleID($guid))) {
         return $module;
        }
    }
    return "";
}

Ich kriege nun die Fehlermeldung …" Du hast vergessen einen Typ mitzugeben!" ", dies steht auch als Bemerkung bei der androidSend Variable in IPS. An was liegt es. Ich habe auch noch nicht wirklich verstanden wie die Namen übereinstimmen müssen. Die Variable in IPS für meine Beleuchtung in der Küche heißt z.B. „Küche Decke“. Wie muß ich die Zeile im Skript anpassen? Muß ich hier aus „Zeile 21 Küche Licht“ im Skript Küche Decke machen? Oder muß ich aus meiner Benennung Küche Licht machen?

Bitte um Hilfe

Gruß

Cubus

Habe Dir per E-Mail geantwortet. Ich hoffe somit kommst Du klar.

Hallo,

die Version 2.3.0 habe ich soeben in den Google Play Store hochgeladen.

Neu ist jetzt die Funktion Standortermittlung im Reiter „Standortermittlung“.
Wenn man das Nutzen will muss man dort entsprechend den Service Starten durch „Starte Tracking“.
ACHTUNG: Sobald eine neuere Version der App ausgerollt wird, werden Services automatisch beendet.

Bei Bedarf kann man neben einer Variable Latitude und Longitude in IP Symcon (diese sind mit Float mit 8 Dezimalstellen anzulegen) auch eine String Variable mit der Adresse hinterlegen. Wenn man hier in der App den Wert 0 drinnen lässt, dann findet keine Adressermittlung statt. Adressermittlung bedeutet höheren Akkuverbrauch und natürlich erhöhtes Datenvolumen.

Mit dem Parameter Min. Distanz (Meter) wird eingestellt wie weit man sich in Metern bewegen muss damit ein neues Tracking stattfindet. Je höher hier der Wert ist desto weniger Abfragen gibt es und desto besser wird der Akku geschont. Es ist aber zum Parameter darunter eine UND Verknüpfung. Das bedeutet wenn man als Aktualisierung nur zB: 600Sek eingestellt hat, dass auch nur alle 600Sek eine Aktualisierung stattfindet wenn man sich innerhalb diesen 600 Sek. um zB: 10 Meter bewegt hat. Wenn nicht findet nach 600Sek. keine Aktualisierung statt.

Mit dem Parameter Aktualisierung (sek.) wird eingestellt wird oft eine Standortermittlung durchgeführt wird. WICHTIG: Ein Wert kleiner als 5 Sekunden kann zwar eingestellt werden in der App aber der Service macht das trotzdem nicht öfter als 5 Sekunden. Ein höherer Wert schont natürlich hier den Akkuverbrauch. Ich habe zB: 30 Sekunden bei mir als Aktualisierungsintervall eingestellt.

In den Android Grundeinstellungen (nicht in meiner App) sollte man natürlich auch die Standortermittlung entsprechend einstellen damit es funktioniert.

Hier habe ich entsprechend ein Beispiel Skript „BerechneAnwesenheit“ bzgl. Anwesenheitsstatus aufgrund Latitude/Longitude

<?

//Ändere folgendes auf Deine Werte
$idlatitude = 58336;    //ID float Variable GPSLatitude
$idlongitude = 42892;   //ID float Variable GPSLongitude
$idanwesenheit = 47676; //ID boolean Variable Anwesenheitsstatus
$latitudemin = 38.079054;  //from GoogleMaps
$latitudemax  = 38.079499;  //from GoogleMaps
$longitudemin = 24.475229;  //from GoogleMaps
$longitudemax = 24.476146;  //from GoogleMaps
//Ende Änderung

//Ab hier nichts mehr ändern
$latitude = GetValueFloat($idlatitude);
$longitude = GetValueFloat($idlongitude);
$anwesenheit = GetValueBoolean($idanwesenheit);

if ($latitude >= $latitudemin && $latitude <= $latitudemax ) {
	if ($longitude >= $longitudemin && $longitude <= $longitudemax) {
		SetValueBoolean($idanwesenheit, true);
	} else {
		SetValueBoolean($idanwesenheit, false);
	}
} else {
	SetValueBoolean($idanwesenheit, false);
}
?>

PS: Zusätzliche Informationen
Für die Standorterrmittlung werden die Google Play Services benutzt. Gerade am Land kann es schon mal zu ein paar Ausreißern kommen wenn man das Tracking zB: in der Arbeit auf der Fahrt nach Hause einschaltet in meiner App und dann wenn man zuhause ist entsprechend weiter laufen lässt. Grund ist, dass innerhalb vom Gebäude natürlich weiterhin das Tracking stattfindet wenn es nicht explizit wieder abgeschaltet wird, aber dort kein exaktes GPS Signal zur Verfügung steht und somit die Zellinformationen/WLANs benutzt werden vom Google Play Servicedienst. Insofern überlege ich in einer zukünftigen Version, den Service bzgl. Standortermittlung entsprechend auf einen Button am Homescreen meiner App mit zu ermöglichen mit Ein/Ausschalten und eventuell auch noch ein eigenes Widget dafür zur Erstellen mit dem ganz Simple die Standortermittlung aktiviert/deaktiviert werden kann.

Hi Thiemo,
danke schon mal für das lang ersehnte Tracking Feature. In nur 10min eingerichtet funktioniert es soweit ganz gut.
Weitere Tests mit mehr Bewegung stehen noch aus. :wink:
Wirklich genial umgesetzt.

Ideal wäre es wenn die Standortermittlung bei der Verbindung mit bestimmten WLAN SSIDs ausgeschaltet werden könnte.
Noch besser … wenn mit SSID verbunden ein bestimmter (einstellbarer) Lat/Lon einmalig gesendet wird.
Wichtig wäre für mich aber daß mehrere WLAN SSID’s angegeben werden können da ich mehrere SSID’s verwende um jeden Winkel zu versorgen. 5 SSID’s wären erstmal ausreichend. :wink: