Neues Modul 98_AWEAR: Notifications, Dialoge, Spracherkennung für Android Wear

Begonnen von xanker, 18 Mai 2016, 19:29:04

Vorheriges Thema - Nächstes Thema

xanker

Hallo zusammen,

da ich seit geraumer Zeit eine Android Wear Smartwatch (Moto 360 Sport) habe und von den Möglichkeiten von AutoWear (Tasker Plugin) inspiriert wurde, habe ich ein Modul geschrieben, welches JSON-Code erstellt der als Pushover-Nachricht versendet wird, sodass er von AutoWear (bzw. Tasker) ausgewertet werden kann. Dadurch ist es möglich, verschiedenste Screens und Notifications auf einer Android Wear anzuzeigen. Je nach Screen können z.B. Buttons definiert werden, welchen Commandos zugewiesen werden können, die dann beim Drücken zurück an FHEM gesendet werden (das Senden an FHEM geschieht dabei über andFHEM oder wenn man will auch per HTTPGET). Die Commandos werden im Reading "answer" des AWEAR Device gespeichert, darauf kann man dann z.B. per Notify reagieren.

Desweiteren lassen sich auch verschiedenste Informationen von der Smartwatch auslesen (z.B. Batteriestand, Bildschirm an/aus, Ladezustand, etc.) und ändern (z.B. Bluetooth, Wifi, Helligkeit, etc.). Man kann auch die Schrittzahl auslesen oder eine Pulsmessung starten und auslesen. Die Informationen werden alle als Reading gespeichert.

Als kleines i-Tüpfelchen besteht auch die Möglichkeit eine Sprachaufnahme auf der Smartwatch zu starten, der erkannte Text wird dann an FHEM gesendet.

Aufgrund der Abhängigkeiten zum Pushover-Modul und zu den Android-Apps Pushover, Tasker, AutoWear (und andFHEM), werde ich kurz erklären wie man das Modul nutzt.

Vorraussetzungen:

  • Die genannten Android-Apps auf dem Smartphone installieren welches mit einer Android Wear Smartwatch gepairt ist
  • Pushover einrichten und Pushover Device in FHEM anlegen (siehe commandref oder wiki)
  • Die beiden Tasker Profile aus dem Anhang in Tasker importieren (wer nicht weiß wie das geht -> Google)
  • andFHEM einreichten (Url, Anmeldedaten, etc. eingeben). Alternativ kann man in Tasker auch HTTPGET nutzen, dazu muss der Task "AWEAR2FHEM" entsprechend bearbeitet werden.
  • 98_AWEAR.pm in 'FHEM'-Ordner kopieren und AWEAR Device in FHEM anlegen...


AWEAR Device anlegen:
define <name> AWEAR <PushoverDevice>:<DeviceName>
<PushoverDevice> ist der Name des zuvor angelegten Pushover Device. <DeviceName> ist der Geräte-Name des Smartphones (diesen sieht man in der Pushover App: Settings -> Device name).

Jetzt erkläre ich noch kurz wie man Notifications und einen Spracherkennung-Screen anzeigt und wie man die Einstellungen der Smartwatch ausliest. Detaillierte Informationen über die Parameter und die anderen Screens habe ich in die commandref des Moduls eingetragen. Mann kann auch gewisse Icons einstellen, hierzu empfehle ich in AutoWear einen entsprechenden Screen zu erstellen, das gewünschte Icon auszuwählen und dann den String anzuschauen und als Wert des entsprechenden Parameters zu setzen. Die Parameter sind übrigens alle optional, es besteht für alle Parameter ein Standard-Wert.


Notification anlegen:
set <name> notification <parameter1>=<value1> ... <parameterN>=<valueN>
Dies erstellt eine Notification auf der Smartwatch, dabei können bis zu 5 Buttons angelegt werden, welche alle ein beliebiges Commando zurück an FHEM senden können. Der entsprechende Button wird nur angezeigt wenn ein Command gesetzt ist.
Mögliche Parameter sind:

  • id Wird als Prefix vor das Commando gesetzt das beim Drücken eines Buttons an FHEM gesendet wird (Standard: random([0,999999]). Eine gleiche id bedeutet auch, dass eine schon bestehende Benachrichtigung mit dieser id überschrieben wird, daher ist Standard auch random.
  • title Titel der Benachrichtigung (Standard: leer)
  • message Nachricht der Benachrichtigung (Standard: leer)
  • icon Icon der Benachrichtigung im oberen rechten Eck (Standard: "ic_launcher")
  • vibration Vibrationsmuster in dem die Smartwatch beim Eintreffen der Benachrichtigung vibriert (Standard: "0,150,300,150")
  • btn1cmd Command das Button 1 zurück an FHEM sendet, wenn er gedrückt wird (Standard: leer bzw. nicht angezeigt)
  • btn1label Label welches unterhalb von Button 1 angezeigt wird (Standard: leer)
  • btn1icon Icon von Button 1 (Standard: "navigation_accept")
  • btn2cmd,btn3cmd,btn4cmd,btn5cmd gleiches Prinzip wie btn1cmd
  • btn2label,btn3label,btn4label,btn5label gleiches Prinzip wie btn1icon
  • btn2icon,btn3icon,btn4icon,btn5icon gleiches Prinzip wie btn1icon
  • cmdhide Komma-Separierte Liste von (Tasker-)Commandos welche die Notification ausblenden (Standard: alle btnXcmd-Commands => Das bedeutet, dass beim drücken eines Buttons die Benachrichtigung automatisch ausgeblendet wird, will man das nicht, setzt man cmdhide=" ", dann wird die Benachrichtigung auch nach dem Drücken weiterhin angezeigt.)


Spracherkennungs-Screen anlegen:
set <name> voice <parameter1>=<value1> ... <parameterN>=<valueN>
Dies startet eine Spracherkennung auf der Smartwatch. Man kann dann beliebige Worte/Zahlen/Sätze sagen, welche dann als Text an FHEM gesendet werden.
Mögliche Parameter sind:

  • id Wird als Prefix vor den erkannten Text gesetzt der an FHEM gesendet wird (Standard: leer)
  • message Nachricht die oberhalb des Sprachaufnahme-Buttons angezeigt wird (Standard: leer)
  • vibration Vibrationsmuster in dem die Smartwatch beim Starten der Sprachaufnahme vibriert (Standard: "0,150,300,150")


Einstellungen der Smartwatch auslesen:
set <name> getsettings
Die Einstellungen werden als Readings gespeichert. Folgende Einstellungen werden ausgelesen:

  • brightnessmode Helligkeits-Modus (Automatic oder Manual)
  • brightness Helligkeitswert
  • bluetooth Bluetooth-Status (an oder aus)
  • wifi Wifi-Status (an oder aus)
  • keepscreenon Status ob der Bildschirm dauerhaft an ist (oder nicht)
  • screen Status ob der Bildschirm gerade an oder aus ist.
  • battery Batterie-Status in Prozent
  • power Lade-Status
  • light Wert des Lichtsensors
  • watchmodel Modellbezeichnung der Smartwatch


Wie erwähnt, alles weitere ist in der commandref des Moduls beschrieben. Ich hoffe es kann jemand was damit anfangen, oder hat gar ein paar Verbesserungsvorschläge (z.B. Alternativen für den Weg über Pushover). Bugreports sind auch willkommen...

Viele Grüße
xanker
Maintainer vom flex Style.
Intel NUC mit fhem in Docker Container | Homematic | SIGNALduino 433MHz | HUE Bridge | Harmony HUB | lepresenced | alexa-fhem ...

felskrone

Hallo Xanker,

erstmal vielen Dank dafür, dass Du Deine Arbeit mit uns teilst!
Ich bin zufällig über Deine Module gestolpert - das Thema interessiert mich grundsätzlich sehr. Ich habe auch fast alle benötigten Apps und Hardware im Einsatz.

FHEM auf Raspi, diverse Homematic-Komponenten, andFhem, Tasker und Auto-Wear, dazu eine LG G Watch R. Das einzige was fehlt, ist bei mir Pushover.
Bis vor kurzen hatte ich GCM-send und andNotify im Einsatz und habe gerade eben auf Telegram und das Telegram-Bot-Modul umgebaut. (sehr genial, insbesondere, weil man darüber auch Fhem per Mobil-Phone steuern kann, ohne einen Port zu öffnen, oder VPN zu benötigen)
Mich bei dem 1768 Service (Pushover) anzumelden, würde ich lieber vermeiden.

Leider habe ich im Moment so viele andere Baustellen, dass ich diese neue gerade bis auf weiteres nicht aufmachen kann.

Ich wollte nur mal ein Feedback geben, da bisher ja offenbar noch keiner reagiert hat. Ich werde den Fred auf jeden Fall im Auge behalten.

Gruß, fk

___________________________
FHEM 5.8 auf Raspi 1B und HMLAN

xanker

Hi felskrone,

hat mich bisher auch gewundert dass so gar niemand Interesse daran hat :D
An dem AWEAR Modul habe ich bisher nicht weiter gearbeitet, da es soweit (für meine Zwecke) funktioniert. Ich habe Pushover nur verwendet, da es in Tasker integriert ist.
Wenn ich wüsste wie ich das ganze mit Telegram umsetzten kann, dann wäre mir das sogar lieber.
Wenn du einen Tip für mich hast, dann könnte ich das am Wochenende implementieren. Ich müsste nur wissen wie ich in Tasker eine eingehende Telegram Nachricht verarbeiten kann.

Alternativ hab ich mir auch schon überlegt dafür ne eigene App zu schreiben, da es aber wohl kaum Interessenten gibt, wird sich der Aufwand wohl nicht lohnen.

Mein QuestionsModul hab ich auch soweit angepasst, dass ich die Fragen inkl. Antwortmöglichkeiten an die Uhr schicken kann. Das ist sehr praktisch, da es simpel zu definieren ist und für eine Frage nur ein Device angelegt werden muss, welches sowohl die Frage sendet, als auch die Antwort entgegennimmt und dann das entsprechende Kommando ausführt, ohne weitere Notifys oder DOIFs. Ich werde schauen dass ich am WE mal den Thread dazu aktualisiere.

Grüße
Maintainer vom flex Style.
Intel NUC mit fhem in Docker Container | Homematic | SIGNALduino 433MHz | HUE Bridge | Harmony HUB | lepresenced | alexa-fhem ...