Schnup89 / ioBroker_WearV2

WearApplication with SocketIO and JetpackCompose
9 stars 4 forks source link

ioBroker_WearV2

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.

Konfiguration ioBroker

🔴 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

image

Objekt Eigenschaften

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

image image

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.

Anordnung der Objekte

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.

RED X

Sollte ein Fehler auftreten wird fast immer ein rotes X irgendwo angezeigt.

Gelbes ?

Das gelbe Fragezeichen wird immer dann angezeigt wenn die Uhr keine Verbindung mit dem Server aufbauen kann

APK installieren

... ü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

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"

Konfiguration APP

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

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

Von Unterwegs die APP nutzen

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.

Schnelltaste

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

Known Bugs / Verbesserungen

In der aktellen Version sollte die App auch mit den bekannten Bugs zuverlässig laufen.

Jetpack Compose...

...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.

Changelog

2.9.2 (2024-05-23)

2.9 (2023-02-06)

2.8 (2023-01-16)

2.7.1 (2023-01-07)

2.7 (2023-01-06)

2.6 (2023-01-03)

2.5 (2022-02-02)

2.4 (2022-01-28)

2.3 (2022-01-25)

2.2 (2022-01-24)

2.1 (2022-01-23)

2.0 (2022-01-22)

License

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.