WearOS App für Interaktion mit ioBroker
Video: https://www.youtube.com/watch?v=gGTmlj9mHgY
Icons: https://github.com/ioBroker/ioBroker.icons-ultimate-png
Wenn die Uhr per WLAN verbunden ist, nutzt die App immer die direkte WLAN-Verbindung.
Wenn die Uhr nicht per WLAN mit Netzwerk verbunden ist, wird über den Bluetooth-Proxy des Smartphones kommuniziert.
🔴 Ab Version 2.6 muss der Websockets-Adapter installiert sein. 🔴
Vor Version 2.6 muss der SocketIO-Adapter installiert sein.
Standardmäig nutzt dieser den Port 8084, den merken wir uns für später.
🚧 Sollte der Websocket-Adapter bei euch noch nicht installiert sein, bitte unter der Instanz einen freien Port z.B. 8085 angeben, sonst gibt es Probleme mit dem Socket.IO Adapter.
Ich habe bei mir den Socket.IO Adapter deinstalliert und den Websocketsadapter installiert und habe keine Probleme damit. Ich kann jedoch nicht versprechen dass es bei euch genauso ist.
Grundkonfiguration
- Raum "WearOS" unter Aufzählung->Räume erstellen
- Die auf der Uhr dargestellten Objects/States müssen dem Raum
WearOS
zugeteilt werden -> Siehe Punkt Anordnung der Objekte
Objekt Eigenschaften
- Um ein Object/State nach eigenen Wünschen daruzustellen, gibt es folgende Parameter im Object-JSON:
Bild | JSON-Param | Funktion | Datentyp | Bemerkung |
---|---|---|---|---|
1 | "common"-"name" | Anzeigename | Zeichenk. | Setzen über "common"-Reiter |
2 | "common"-"unit" | Einheit (%,°C, etc) | Zeichenk. | Setzen über "common"-Reiter |
3 | "common"-"icon" | Icon | Zeichenk. | Setzen über "common"-Reiter (base64) |
4 | "common"-"write" | ReadOnly wenn false | Boolean | Setzen über "common"-Reiter |
5 | "common"-"color" | Farbe bei aktiv. | Zeichenk. | Setzen über "common"-Reiter |
6 | "common"-"min" | Bei Slider Min Wert | Zahl | Setzen über "common"-Reiter |
7 | "common"-"max" | Bei Slider Man Wert | Zahl | Setzen über "common"-Reiter |
7 | "common"-"steps" | Bei Slider Schritte | Zahl | Setzen über "common"-Reiter |
8 | "common"-"role" | Anzeigetyp | Zeichenk. | Setzen über "common"-Reiter |
8 | "common"-"colorBackground" | Chip-Hintergrundfarbe | Zeichenk. | Nimmt als Wert Color-Code wie "color"-Parameter |
Anzeigetyp
Die Rolle eines Objekt definiert den Anzeigetyp:
Rolle | Anzeige-Typ | Extra |
---|---|---|
switch* | Toggle | |
scene.states* | Toggle (Taster) | "desc": "press" |
scene.states* | Toggle | |
level* | Slider | |
Alles andere | Wertanzeige |
Um den Taster anzuzeigen im Objekt den Wert common.desc
auf press
setzen.
Leider ist es aktuell in ioBroker nicht möglich Objekte in Räumen per Drag&Drop
zu sortieren.
Die Objekte in den Räume können hier in der Reihenfolge geändert werden:
Objekt-Baum mit Expertenansicht öffnen und mit dem Schraubenschlüssel bei enum.rooms.WearOS
in der JSON die Reihenfolge von members
bearbeiten.
! Bei einer Zuordnung von Object über den Objekt-Baum wird die Reihenfolge zurückgesetzt!
! Räume am Ende anfügen geht über "Aufzählungen-Rooms-WearOS" per Drag&Drop
! Sobald die Räume geändert wurden, muss die App neu gestartet werden. Dazu reicht es den "Back"-Knopf an der Uhr zu drücken und die App neu zu öffnen.
Sollte ein Fehler auftreten wird fast immer ein rotes X irgendwo angezeigt.
- Sollte ein rotes X anstatt eines ICON dargestellt werden, kann das ICON nicht ausgelesen werden -> Bitte Issue eröffnen mit Objekt-JSON aus ioBroker
- Im Status-Indicator: Grüner Haken -> SocketIO ist verbunden mit ioBroker; Rotes X -> SocketIO hat die Verbindung zu ioBroker verloren
Das gelbe Fragezeichen wird immer dann angezeigt wenn die Uhr keine Verbindung mit dem Server aufbauen kann
- Bei dem ersten Starten der App, wenn keine URL vergeben ist
- Oder die URL in den Einstellungen der APP entspricht nicht einem URL-Format entspricht. Bitte die Eingabe nochmals prüfen.
... über den Wear Installer:
https://youtu.be/8HsfWPTFGQI
...Alternativ über das Program adb.exe:
https://dl.google.com/android/repository/platform-tools-latest-windows.zip <- adb.exe extrahieren nach z.B. C:\tmp
ioWearV2_5.apk nach C:\tmp\ kopieren
- per Kommandozeile (CMD) in den Ordner C:\tmp\ wechseln
- Auf der Uhr unter Entwickleroptionen "adb debugging" aktivieren
- adb connect 192.168.1.100 <- ersetze IP mit der IP der Uhr, kopplung auf der uhr zulassen
- adb install ioWearV2_5.apk
- anstatt C:\tmp könnt Ihr natürlich auch einen anderen Ordner nutzen
Sollte bei einem Update ein Fehler bei der Installation auftreten, die App im Menü mit einem langen Klick deinstallieren.
Alternativ mit folgendem adb-Kommando:
adb uninstall "com.schnup.iobrokerw"
Ab Version 2.9.2 gibt es ein Einstellungsmenü, die Server URL muss gesetzt werden mit HTTP oder HTTPS, wie gewünscht.
Server URL definieren im Format: http://192.168.10.4:8084
Ansonsten kann noch der Username und das Passwort für eine Authentifizierung mitgegeben werden.
Sollte der Websocket-Adapter kein valides Zertifikat präsentieren, kann dies mit der Option "Ignore Insecure Certificate" ignoriert werden.
Bei einem langen Klick auf Url, Username oder Passwort wird der aktuelle Wert gelöscht.
Fehlermeldungen werden in der Objekt-Liste ganz oben angezeigt, hier die möglichen Fehlermeldungen und Lösungen:
Fehlermeldung | Lösung |
---|---|
Bitte Server angeben | URL konfigurieren |
Not reachable | Der Websocket-Dienst ist unter der angegeben URL nicht erreichbar. URL sollte, wenn von Webbrowser aufgerufen "Not implemented" anzeigen |
Enum WearOS not found | Der Raum wurde in ioBroker nicht gefunden, bitte auf Groß und Kleinschreibung achten. Mit aktiviertem Expertenmodus in der Objektansicht des ioBroker sollte folgendes Objekt exisiteren: enum.rooms.WearOS |
Die Uhr (galaxy watch4, andere nicht getestet) baut die Verbindung in der Regel über den Bluetooth-Proxy über das Telefon auf.
Das bedeutet dass die App über das SmartPhone zum ioBroker kommuniziert.
Ist das SmartPhone nicht verfügbar wird die App, wenn vorhanden, direkt über WLAN die Verbindung zum ioBroker aufbauen.
Den Bluetooth-Proxy können wir uns zu nutze machen wenn wir unterwegs sind, denn sobald das SmartPhone über einen VPN-Tunnel den ioBroker erreicht, wird damit auch die Uhr bzw. die APP eine Verbindung von unterwegs aufbauen können.
Damit die APP schnell geöffnet werden kann, habe ich diese auf die "Doppelklick"-Tastenfunktion der Uhr-Taste gelegt.
Zu finden hier: Einstellungen - Erweiterte Funktionen - Anpassen von Tasten > Hier kann die App verlinkt werden
Sporadisch kurzer Verbindungsverlust, siehe Websocket vs PollingXHR- Fixed V2.6Manchmal werden mehrere "Instanzen" erstelltWenn Server URL definiert ist und nicht erreichbar bleibt die App Startbildschirm- Fixed V2.1- "Swipe" zu schließen aktivieren wenn kein Slider konfiguriert ist
Rückgabewert anhand des definierten Typ Boolean/"ON","OFF"<-ToggleChip ist jetzt immer booleanConnection Manager implementieren und bei WiFi immer dieses zuerst nutzen- Sollte kein Problem mehr sein, V2.6
In der aktellen Version sollte die App auch mit den bekannten Bugs zuverlässig laufen.
...ist das neuste Toolkit zur Android APP-Entwicklung:
https://developer.android.com/jetpack/compose
Leider ist dieses noch relativ "neu" und es mussten im Code einige (vermultiche) Bugs brücksichtigt bzw. Workarounds implementiert werden.
Bzgl. der Performance hoffe ich hier auf einige Updates in der Zukunft.
- (schnup89) Neu: Authentifizierung Username/Passwort kann aktiviert werden
- (schnup89) Neu: Ignorieren von Unsicheren Webserverzertifikaten kann aktiviert werden
- (schnup89) Neu: Einstellungsmenü erweitert
- (schnup89) Bugfix: Issue #13 Abfangen von Fehlerszenarien (Kein Connect, Enum nicht korrekt)
- (schnup89) Bugfix: Issue #14 Taster Korrektur, bei mehr als einem Taster wurde alle gleichzeitig aktiv
- (schnup89) Sonstiges: Grade-Upgrade + Automatic Keystore signing
- (schnup89) Bugfix: Issue #10 Langsamer start durch Websockets-Timer gelöst
- (MDeeApp) Bugfix: PR #11 Slider Steps und RÜckgabewert korrigiert, danke @MDeeApp
- (schnup89) Funktion: Versionsanzeige auf "Settings"-Schaltfläche
- (schnup89) Bugfix: Issue #9 Bei "Taster" wurde Icon falsch eingefärbt
- (schnup89) Funktion: Icon's werden nicht mehr standardmäßig Gelb eingefärbt, dafür kann der "color" Parameter verwendet werden
- (schnup89) Funktion: Slider Unterstützt nun auch den "Step" Parameter von ioBroker
- (schnup89) Bugfix: Issue #8 Bezel scroll funktioniert manchmal nicht
- (schnup89) Bugfix: Issue #7 Farben werden immer eingefärbt wurde angepasst
- (schnup89) Bugfix: Issue #6 Slider Absturz
- (schnup89) Bugfix: Issue #4 App startet länger 🔴 Build Optionen gefixed, evtl. Neuinstallation der App notwendig
- (schnup89) Bugfix: Issue #5 Freier Platz am oberen Rand der Liste gefixed
- (schnup89) Funktion: Farbauswahl für "Chips" hinzugefügt
- (schnup89) Funktion: Taster (Schalter) hinzugefügt
- (schnup89) Funktion: (Compose, Kotlin) Libraries etc. auf aktuellen Stand importiert
- (schnup89) Funktion: !!! Socket.IO wird ioBroker-Seitig nicht mehr weiterentwickelt, deshalb umstieg auf Websockockets, anderer Adapter notwendig
- (schnup89) Funktion: scene.states als ToggleChip hinzugefügt
- (schnup89) Funktion: WLAN wird nun standardmäßig genutzt, wenn verbunden. Alternativ Bluetooth-Proxy
- (schnup89) Funktion: Exit-Button hinzugefügt
- (schnup89) BUGFIX: Color-Code Error Handling implementiert
- (schnup89) BUGFIX: App kann nicht mehr parallel ausgeführt werden, nur noch eine Instanz zugelassen
- (schnup89) BUGFIX: ToggleChip schreibt nun boolean anstatt string in ioBroker
- (schnup89) BUGFIX: Slider-Fixed bei -1 oder "out-of-range"
- (schnup89) BUGFIX: V2 konnte nicht installiert werden -> Sollte behoben sein
- (schnup89) BUGFIX: Wenn Server URL definiert ist und nicht erreichbar bleibt die App Startbildschirm
- (schnup89) Initial Release
MIT License
Copyright (c) 2023 Author tobias_tsafi@gmx.de
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.