Android App IPSymconVoice

Cool - Danke

Funktioniert einwandfrei

Hi Thimo,

hab mich seit langem wieder mal Deiner App gewidmet und bin erstaunt was sich da inzwischen getan hat. Kompliment - die App ist ja ganz schön umfangreich geworden.:slight_smile:
Eigentlich wollte ich das Tracking über den Tasker realisieren. Da Du das aber in die App so toll eingebaut hast habe ich die Tasker Variante wieder verworfen. Deine Variante ist einfach schneller einzurichten. Allerdings vermisse ich ein paar Funktionen, welche ich hiermit gern vorschlagen möchte.

Ich habe eingerichtet, dass wenn ich mich 20m bewege ein Tracking erfolgen soll und habe das bei der Fahrt von der Arbeit nach Hause getestet. Leider kamen in IPS bei meinem Weg von ca. 18km nur 2 Tracks an, obwohl er ja hierbei laufend senden müsste. Als Zeit habe ich 15 min angegeben um den Akku zu schonen. Das reicht für die normale Anwendung, wenn ich aber die Anwesenheit im Haus anzeigen möchte, können 15 min zu lange sein. Schön wäre hier eine Art GeoZaun einzurichten, welcher bei Durchdringung eine Info an IPS gibt. Ich berechne dann noch die Geschwindigkeit, die Entfernung vom Haus und in welche Richtung ich mich bewege. So kann ich darauf reagieren, ob ich weg fahre oder nach Hause komme. Wäre natürlich super wenn die Daten schon von IPSVoice kommen würden. Ich denke die Berechnung dieser daten im Gerät selbst ist genauer.

Schön ist auch die Idee von mr_cd, bei einer bestimmten SSID das Tracking automatisch zu stoppen und beim Verlassen wieder zu starten.

Du siehst, es gibt 'ne Mange Potential - ich freue mich auf die neuen Versionen.

Hallo Normi,

zu a.)
Ursprünglich dachte ich bzgl. Location das ist eine Oder Verknüpfung (Entweder Meter oder Sekunden). Leider ist das schlecht dokumentiert. Mittlerweile habe ich aber folgenden Beitrag gesehen:
android - LocationRequest smallest displacement and accuracy - Stack Overflow
Insofern scheint die Distanz nur dafür da zu sein um unnötige Updates zu vermeiden wenn er mal im Indoor Bereich Ausreißer hat. Also ist der Parameter nur dafür da um für Zuhause zB: 30m zu verwenden um nicht ständig die kleinsten Abweichungen zu erhalten. Das werde ich noch Anpassen in der Beschreibung. Ich habe Min. Distanz (Meter) 10 und Aktualisierung (Sek.) 30 drinnen. Damit kann ich leben bei meinem Sony Xperia Compact 3 bzgl. Akkuverbrauch. Natürlich desto öfter die Aktualisierungsrate stattfindest desto höher ist der Akkuverbrauch. Also bei 5 Sek. ist das schon deutlich bzgl. Akku spürbar

zu b.)
Creating and Monitoring Geofences | Android Developers
Hiermit müsste ich mich mal näher beschäftigen. Von der Priorität steht das aber klar hinter Punkt c.) um den ich mich jetzt dann während den Feiertagen kümmern werde.

zu c.)
Hier muss ich entsprechend mit einer Datenbank arbeiten und das ist wieder einmal Neuland für mich mit Android :wink:

Folgendes schwebt mir hier vor in einem eigenen Reiter bzgl. WLAN Tracking der Erreichbar ist aus dem Location Tracking heraus. Wenn dort nichts verändert wird, wird das Tracking über GPS/Provider auch nicht beeinflusst.
Ich hoffe ich bekomme hier überall so den Status mit bei Wechseln zwischen WLAN Netzwerken und beim Verlassen von Bereichen (damit muss ich mich erst beschäftigen)

  • FIXE LATITUDE (wenn leer wird diese nicht übermittelt bzgl. WLAN Tracking; ansonsten auf die Variable die bereits existiert fürs Tracken)
  • FIXE LONGITUDE (wenn leer wird diese nicht übermittelt bzgl. WLAN Tracking; ansonsten auf die Variable die bereits existiert fürs Tracken)
  • Option: bei WLAN Eintritt immer Tracking deaktivieren (AN/AUS) - deaktiviert dann die Einstellungen unten mit Eintritt
  • Option: bei WLAN Austritt immer weiter Tracken (AN/AUS) - deaktiviert dann die Einstellungen unten mit Austritt

Für alle WLAN Netze die aktuell aktiv sind bzw. aktiv waren während man früher in den Einstellungen war kann man dann folgendes Konfigurieren:
Eintritt WLAN-Name Austritt
Aktiv WLAN1 Aktiv (bedeutet bei Eintritt Location Tracking deaktivieren; bei Austritt aktivieren falls deaktiviert)
Inaktiv WLAN2 Aktiv (bedeutet bei Eintritt keine Änderung; bei Austritt aktivieren falls deaktiviert)
Aktiv WLAN3 Inaktiv (bedeutet bei Eintritt Location Tracking deaktivieren; bei Austritt keine Änderung)
Inaktiv WLAN4 Inaktiv (bedeutet bei Eintritt keine Änderung; bei Austritt keine Änderung)

Ich hoffe das bekomme ich so zusammen. Das wird sicherlich eine Challenge werden :smiley:

LG
Thiemo

PS: Eine Version 2.3.2.2 ist unterwegs mit zusätzlichen Optionen bzgl. Webfront in den App - Einstellungen (eventuell ein wenig nach unten Scrollen notwendig)

  • App gleich mit Webfront starten AN/AUS
  • Webfront Zurück Button AN/AUS
  • Webfront Sprachsteuerung Button AN/AUS

Super Thimo,

ich freue mich schon auf die neue Version. :slight_smile:
Werde jetzt mal die Einstellung zum Tracking mit 10m und 30s testen.

Die Idee zum WLAN Ein- und Austrittspunkt ist super und würde ja zumindest zum Teil die Geofences ersetzen. Bin gespannt wie sich das System dann bei meinen 3 Access-Points verhält. :wink:

Viele Grüße und schöne Vorweihnachtszeit
Norman

Hallo Thiemo,

bei mir klappt seit dem vorletzten Update die Offlineerkennung auf meinen Huawei Geräten (Mate 7 Smartphone und Link10+ Tablet) nicht mehr. Auf einem Samsung Tablet (Galaxy Tab3) funktioniert es weiterhin. Blöderweise nutze ich es aber nur über die Huawei Geräte.
Hast du ne Ahnung an was das liegen kann?

LG
Bruno

Wie weit kommt er denn noch? Wird das Schlüsselwort noch erkannt und folgt der Piep-Ton als Antwort oder auch schon nicht mehr? Das was sich geändert hat ist eine neue Android Studio Version die ausgerollt wurde auf meinem PC zum entwicklen und zwischen Oktober und November Release folgendes:
compile ‚com.android.support:support-v13:23.1.1‘
compile ‚com.google.android.gms:play-services-wearable:8.3.0‘
compile ‚com.google.android.gms:play-services-location:8.3.0‘
compile ‚com.android.support:design:23.1.1‘
bei Android tut sich da ja ständig was :slight_smile:

Vorher (25.10.)

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "de.ip_symcon.www.haussteuerung"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 22
        versionName "2.3.2"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

//for KeywordWatcher in Background the assets.xml file on D:\Android
//ant.importBuild 'assets.xml'
//preBuild.dependsOn(list, checksum)
//clean.dependsOn(clean_assets)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.zxing:core:3.1.0'
    compile 'com.google.zxing:android-integration:3.1.0'
    compile 'com.android.support:support-v13:23.1.0'
    compile 'com.google.android.gms:play-services-wearable:8.1.0'
    compile 'com.google.android.gms:play-services-location:8.1.0'
    compile 'com.android.support:design:23.1.0'
    wearApp project(':haussteuerungwear')
    //for KeywordWatcher in Background
    //compile files('libs/pocketsphinx-android-0.8-nolib.jar')
}

ant.importBuild 'assets.xml'
preBuild.dependsOn(list, checksum)
clean.dependsOn(clean_assets)

Dazwischen (vom 15.11.2015)

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "de.ip_symcon.www.haussteuerung"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 23
        versionName "2.3.2.1"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

//for KeywordWatcher in Background the assets.xml file on D:\Android
//ant.importBuild 'assets.xml'
//preBuild.dependsOn(list, checksum)
//clean.dependsOn(clean_assets)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.zxing:core:3.1.0'
    compile 'com.google.zxing:android-integration:3.1.0'
    compile 'com.android.support:support-v13:23.1.1'
    compile 'com.google.android.gms:play-services-wearable:8.3.0'
    compile 'com.google.android.gms:play-services-location:8.3.0'
    compile 'com.android.support:design:23.1.1'
    wearApp project(':haussteuerungwear')
    //for KeywordWatcher in Background
    //compile files('libs/pocketsphinx-android-0.8-nolib.jar')
}

ant.importBuild 'assets.xml'
preBuild.dependsOn(list, checksum)
clean.dependsOn(clean_assets)

Nachher (aktuelle Version 12.12.)

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "de.ip_symcon.www.haussteuerung"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 24
        versionName "2.3.2.2"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

//for KeywordWatcher in Background the assets.xml file on D:\Android
//ant.importBuild 'assets.xml'
//preBuild.dependsOn(list, checksum)
//clean.dependsOn(clean_assets)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.zxing:core:3.1.0'
    compile 'com.google.zxing:android-integration:3.1.0'
    compile 'com.android.support:support-v13:23.1.1'
    compile 'com.google.android.gms:play-services-wearable:8.3.0'
    compile 'com.google.android.gms:play-services-location:8.3.0'
    compile 'com.android.support:design:23.1.1'
    wearApp project(':haussteuerungwear')
    //for KeywordWatcher in Background
    //compile files('libs/pocketsphinx-android-0.8-nolib.jar')
}

ant.importBuild 'assets.xml'
preBuild.dependsOn(list, checksum)
clean.dependsOn(clean_assets)

LG
Thiemo

Da passiert gar nix mehr. Ich sage „Computer“ und der Bildschirm bleibt schwarz. Beim eingeschaltetem Gerät passiert auch gar keine Aktion. Wie gesagt bei dem Samsung Tab geht es. Habe es auch schon mit anderen Wörtern und natürlich mit reboot probiert.

LG

Bruno

Wenn Du die Offline Spracherkennung der App in den Sprach Einstellungen der App stoppst und wieder startest, kommt dann nach einiger Zeit (kann je nach Performance vom Device schon auch 30Sek. dauern) kurz eingeblendet die Meldung „Haussteuerung: Offline Spracherkennung wurde erfolgreich gestartet“ oder kommt „Haussteuerung: Offline Spracherkennung konnte nicht gestartet werden!!!“ oder kommt gar nichts???

Bei mir funktioniert es noch tadellos auf folgenden Geräten „Samsung Galaxy S1 mit CyanogenMod Android 4.4“; „ASUS TF300T mit Cyanogenmod Android 5.1.1“ und „Sony Xperia Z3 Compact mit Android 5.1.1“

Von welchen Eigenschaften hängt es denn ab, ob das App installiert werden kann? Hätte gedacht Android 5 ist vorraussetzung.
Habe ein Handy mit 4.1 da taucht die Software im App store nicht auf. Nur die alte ohne offline Erkennung.
Dann habe ich ein Galaxy s2 auf Android 5 geflasht. Dort kann man die App installieren. Aber das offline lässt sich nicht Starten. Auch nach 1 Stunde ist es nicht bereit.

Hallo Thiemo,

kann es sein, dass der integrierte Browser in der Haussteuerung keine cookies speichert?
Wenn ich das Webfront mit .B. Firefox aufrufe werden die letten Einstellungen (Grafik HD , Zeitraum usw.) wohl gespeichert.
Sind nach einem Neustart vorhanden.
Der Browser in der Haussteuerung erinnert sich an nichts.

Baldur, der schöne Weihnachten wünscht

Ab Android 4.2 kann die neueste Version installiert werden da ich für das Webfront verschiebbare Buttons verwende für Zurück und Sprachsteuerung (Floating Buttons) und hierfür Android 4.2 Voraussetzung ist. Ich dachte eigentlich die App verschwindet dann aus dem PlayStore für ältere Versionen damit man diese dort gar nicht mehr installieren kann. Nachdem das aber anscheinend nicht der Fall ist muss ich das in der Beschreibung entsprechend anpassen :slight_smile:

Bzgl. Offline Spracherkennung gibt es so eigentlich keine weiteren Einschränkungen (zumindestens sind von CMUSphinx/Pocketsphinx der das anbietet keine Einschränkungen bekannt). Ich hatte bisher noch keine Probleme. Die Offline Spracherkennung geht bei mir auch auf einem chinesischen Tablet Teclast X98 Air II mit Android 5. Entsprechend einschalten in den Settings der App, dann warten bis die Meldung kommt „…wurde gestartet“; dann noch einmal ein paar Sekunden warten (ca. 5-10) und wenn Schlüsseltwort Computer nicht verändert wurde dann Computer sagen. Ein wenig warten bis der Piepston kommt. Dann auch nicht sofort loslegen (sonst verschwindet der Anfang) sondern auch kurz Warten (1-2Sek) und den normalen Sprachbefehl durchgeben.

LG
Thiemo

Hallo Baldur,

ja. Der integrierte Browser ist entsprechend eine WebView in Android die verwendet wird.
Werde für die nächste Version folgendes implementieren.
CookieManager | Android Developers
Dann sollten Cookies gespeichert werden.

LG
Thiemo

Das mit den Versionen passt dann schon. Bei 4.1 wird es im Store ja nicht angezeigt

Wäre es trotzdem evtl möglich dass du die offline Erkennung noch in die alte Version integrieren kannst? Ich kann das Handy leider nicht weiter updaten. Es ist perfekt für die Anzeige (amoled) und wäre super wenn es mit der Sprache noch steuerbar ist. Ohne erst separat zu starten

Das werde ich prüfen. Es müsste gehen wenn ich den Webfront Bereich bzgl. den Buttons so gestalte, dass diese unter Android Version 4.1 nicht verfügbar sind und dann auch die Einstellungen bzgl. WebFront für Android Version 4.1 entsprechend eingeschränkt sind.

Hi!

Ich habe mir auch endlich mal die Zeit genommen und die Android App „Haussteuerung“ getestet. Die Spracherkennung funktioniert soweit, der Text steht in der Variable in IPS. Ich würde mir da zwar selbst ein Skript schreiben, aber das ist ein anderes Thema :slight_smile:
Hier auf jeden Fall schon mal ein dickes DANKE für die App! Allein der Text in IPS ist schon mal eine echt feine Sache :cool:

Mein Hauptproblem ist > die Offline-Spracherkennung funktioniert nicht auf meinem Wand-Tablet :frowning:
Das Tablet hat Android 4.4.4 installiert und ich habe auch die Deutsche Offline-Sprache nachgeladen. Aber egal was ich mache, keine Reaktion auf verschiedene Code-Wörter :frowning:

Dann habe ich die Haussteuerung-App auf einem Samsung Galaxy Tab 2 mit Android 4.4.2 installiert und dort funktionierte die Offline-Spracherkennung auf Anhieb :confused: Da kam auch direkt beim Öffnen der Einstellungen der App ein Hinweis auf „High Quality Sprache“ (oder so etwas in der Art) zum Download.

1.) Wie könnte ich die Offline-Sprachsteuerung auf dem anderen Tablet mit Android 4.4.4 zum Laufen bekommen?
2.1) Hat jemand Empfehlungen für Bluetooth Mikrofone oder allgemein Mikrofone die die Sprache im kompletten Raum gut empfangen/aufnehmen? Funktioniert das überhaupt mit einem Bluetooth Mikrofon? Lauschen die dauerhaft?
2.2) Ginge auch ein „normales“ PC-Tischmikrofon am Tablet? Lauschen die dauerhaft? Hat da schon jemand was mit externen Mikrofonen getestet? In Google nennt sich das auch „Grenzflächenmikrofon“. Oder auch in mehreren Räumen per Funk oder WLAN angebunden? Habe allerdings null Plan von Mikrofonen :frowning: Ausgabe würde ich über Sonos machen :cool:
3.) Das Skript in Post1 zum Verarbeiten der Kommandos ist das aktuelle Skript? Oder gibt es noch ein anderes/neueres?

Danke und Grüße,
Chris

zu 1.) Es könnte eventuell daran liegen Manifest.permission | Android Developers . Diese Berechtigung wurde irgendwann in letzter Zeit bei einer der Versionen nicht mehr automatisch mit dazu generiert beim Build Prozess aus dem Android Studio heraus. Ich werde diese Berechtigung explizit aufnehmen in mein Manifest. Da ich aber gerade in der App einiges umbaue bzgl. WLAN Tracking muss ich schauen ob ich eine Zwischenversion zustandebringe. Ansonsten wird es ca. 1-2 Wochen dauern bis die nächste Version kommt.
zu 2.1.) leider keine Ahnung
zu 2.2) Habe gerade ein USB Jabra Speak mit einem USB Adapter Kabel an mein Sony Xperzia Z3 Compact Smartphone per USB Micro Stecker angehängt. Das klappt dann mit Sound/Mikrofon auf dem Jabra. Bei einer Entfernung von 3 Meter ist es allerdings schon nicht mehr geeignet um das gesprochene deutlich zu übersetzen. OK Google wird bei dieser Entfernung noch ohne Probleme erkannt. Wäre halt die Frage ob es mit spezielleren Grenzflächenmikrofonen besser geht auf größere Entfernungen.
zu 3.) Skript im ersten Post aktualisiert auf meine aktuellste Version (ist aber auch schon vom Juli). Für mich reicht diese bisher so. Hat aber sicherlich noch Potential.
Eine Alternative findest Du hier in diesem Post aus dem Thread:
Android App IPSymconVoice - Seite 3

LG
Thiemo

PS: Neue Version 2.3.2.3 wird in kürze über den PlayStore ausgerollt:

  • Neu: Android 4.1 Support wurde wieder aufgenommen
  • Neu: Berechtigung READ-/WRITE_EXTERNAL_STORAGE für Offline Spracherkennung
  • Neu: Webfront Wechsel zwischen Hochformat und Querformat passiert nun ohne erneutem Laden des Webfronts
  • Neu: Als Vorbereitung für Version 2.3.3 zusätzliche WLAN (WIFI) Berechtigungen bereits enthalten

Hallo Thiemo,

die Beschreibung Deiner App liest sich sehr gut. Wenn das Aufwecken der App per Sprache funktioniert würde ich auch mal gerne ein paar Tests absolvieren. Zur Zeit arbeite ich per Tasker, aber damit bekomme ich das Aufwecken nur per Taster hin. Ich habe die Entwicklung der App vorerst zurückgestellt und arbeite jetzt an dem verarbeitenden Script.

Du hast Deine App sehr stark auf IPS ausgerichtet. Ich benutze IPS nur noch als Webserver und kann nicht ausschließen, dass ich in Zukunft komplett darauf verzichten werde. Kannst Du eine Möglichkeit einbauen, dass der erkannte Text per URL an eine beliebige Website übergeben wird?

[HR][/HR]

An alle Scriptentwickler: Ich habe einen etwas anderen Ansatz. Bei mir erhält jedes Gerät notwendige Worte, die zur Erkennung des Gerätes verpflichtend gefunden werden müssen. Jedem Wort ist ein Zahlenwert zugewiesen. Die Werte werden aufsummiert und wenn ein Grenzwert erreicht wird, dann gilt das Gerät als erkannt. Zusätzlich können Stoppworte vergeben werden. Wird ein Stoppwort erkannt, so kann das Gerät nicht gemeint sein. Z. B. ist „Obergeschoss“ als Stoppwort für die Rollladen im EG vergeben. So werden diese Geräte bei „Alle Rollladen im Obergeschoss schließen“ ignoriert. Bei „Alle Rollladen schließen“ sind aber auch die EG-Rollladen enthalten.

Eine weitere Änderung ist, dass ich die Spracheingabe durch Makros ersetzten kann. Die Makros sind einfach wieder Texte, die genauso per Sprache an das Script übergeben werden könnten.

    'GUTENACHT'=>array(
        'pflicht'=>array(
            'gute nacht'    =>  100            
        ),
        'min'   =>  200,
        'replace_suche'=>array(
            'alle rollladen runter',
            'treppe erdgeschoss obergeschoss für drei minuten einschalten',
            'haustüre abschließen',
            'erdgeschoss alle lampen aus'
        ),
        'rtn'=>'Gute Nacht'
    ),

Beschreibung: Ein Stoppwort existiert nicht, daher wird nach den Worten „gute“ und „nacht“ gesucht. Für jedes gefundenes Wort wird der Statuswert um 100 erhöht. Wenn der Statuswert min. 200 groß ist, wird der Suchstring (steht bei mir in einem Array z. B. [0]=>‚Wecker auf 10 Uhr stellen‘ [1]=>‚Gute Nacht‘). Das Array wird einfach durch das neue Array ‚replace_suche‘ ersetzt und die dort angegebenen Befehle werden dann ausgeführt, als hätte ich diese so per Sprachanweisung angegeben.

Guten Rutsch, Christoph

Das Aufwecken per Sprache funktioniert ja bereits. Jetzt sollte es mit der letzten Version mit der Berechtigung auch wieder für die genannten Devices funktonieren die Probleme hatten. Also ich kann die Offline Spracherkennung bei folgenden Devices verwenden: (Teclast X98 Air II Tablet mit Android 5; Sony Xperia Z3 Compact mit 5.1.1; Samsung Galaxy S1 mit Cyanogenmod auf 4.4.4; Asus TF300T Tablet mit Cyanogenmod auf 5.1.1)
Wenn ich das erweitere auf URL (also normale HTTP Seiten mit GET/POST Funktion) dann müsste ich aber noch die URL Parameter konfigurierbar machen. Wenn ich das umsetze dann erst mit einer späteren Version. Derzeit liegt der Fokus auf das Feature WLAN Tracking das doch wesentlich mehr Aufwand ist als ursprünglich vermutet :slight_smile: Nebenbei ist mir gestern aufgefallen dass die Smartwatch Verbindung nicht mehr richtig funktioniert. Da muss ich auch an einem Fix arbeiten.

LG
Thiemo

Sehr schön. Mit dem Update konnte ich die App auf dem Smartphone installieren. Jetzt geht es wieder. Danke dir