ioBroker.iobapp verbindet iPhone, iPad und Apple Watch mit ioBroker. Der Adapter nimmt Sensordaten, Standort-Updates, Indoor-BLE-Scans, HealthKit-Werte und App-/Watch-Aktionen der iOS-App entgegen und legt sie als ioBroker-Objekte unter iobapp.<instanz> ab.
Der aktuelle Fokus liegt auf einer Home-Assistant-ähnlichen iOS-Integration: iOS-Systemtrigger, Silent Push, Geozonen, Sensor-Snapshots und transparente Diagnose statt eines dauerhaft laufenden Hintergrund-WebSockets.
- iPhone-/iPad-Sensoren: Batterie, Ladezustand, Netzwerkstatus, Gerätestatus, App-Version, letzter Flush und Diagnosewerte
- Standort und Presence: GPS-Position, Geozonen, Zone betreten/verlassen,
last_update_trigger - Apple Watch: Watch-Snapshots über das iPhone, Batterie-/Bewegungs-/Health-Kontext soweit durch iOS/watchOS verfügbar
- HealthKit: optionale Health-Daten wie Herzfrequenz, HRV, Blutsauerstoff und weitere freigegebene Werte
- Notifications: ioBroker-Nachrichten an einzelne Geräte, Personen oder globale Ziele; Fallback über Apple Push, wenn die App nicht per WebSocket erreichbar ist
- Silent Push: Wake-Push über externes Relay, wenn ein Gerät zu lange kein
last_seengesendet hat - Indoor-Positionierung: BLE-/iBeacon-Scans, Räume/Areas lernen, Beacons klassifizieren und Area-Kandidaten prüfen
- NFC/App-Actions: optionale Actions für Tags, Widgets und AppIntents über den Action-Katalog
Die iOS-App hält keine dauerhaft garantierte Hintergrundverbindung offen. iOS beendet Apps im Hintergrund bewusst. Deshalb arbeitet die Integration mit Ereignissen, die iOS zuverlässig zulässt:
- App-Start und Foreground
- Significant Location Change
- Geofence Enter/Exit
- Battery-/Motion-/Network-Änderungen, soweit iOS sie liefert
- Watch Context Updates
- BGAppRefresh-Fenster
- Silent Push über APNs als zusätzlicher Wake-Trigger
Der Adapter bleibt rückwärtskompatibel zum bestehenden WebSocket-Protokoll. Neue Funktionen werden über optionale Capabilities aktiviert.
In ioBroker Admin:
Adapteröffnen- GitHub-/Custom-Installation wählen
- Repository eintragen:
https://github.com/DNAngelX/ioBroker.iOSAppAdapter
Alternativ auf dem ioBroker-Host:
iobroker url https://github.com/DNAngelX/ioBroker.iOSAppAdapter --host <host>Danach eine Instanz iobapp.0 anlegen oder neu starten.
- App
IoBroker Toolsinstallieren - ioBroker-System hinzufügen
- Host, WebSocket-Port, Benutzer und Passwort eintragen
- Verbindung testen
- Sensoren, Standort, HealthKit, Watch und Indoor-Positionierung nach Bedarf aktivieren
Standard-Port des Adapters:
9192/tcp
Dieser Port wird von der iOS-App für die direkte WebSocket-Verbindung zum Adapter genutzt.
Empfehlung:
- im Heimnetz direkt
http://<iobroker-ip>:9192verwenden - außerhalb des Heimnetzes bevorzugt VPN, WireGuard, Tailscale oder Reverse Proxy nutzen
- Port
9192nicht ungeschützt dauerhaft ins Internet öffnen
Wenn ein direkter Zugriff bewusst gewünscht ist, muss im Router eine TCP-Portfreigabe auf den ioBroker-Host eingerichtet werden:
Extern: 9192/tcp -> ioBroker-IP:9192/tcp
Mit MyFRITZ! kann ein stabiler DNS-Name auf den Anschluss zeigen, z. B.:
jan-smarthome.abc123.myfritz.net
Beispiel für direkten WebSocket-Zugriff:
jan-smarthome.abc123.myfritz.net:9192
Sicherer ist ein Reverse Proxy mit TLS, z. B.:
https://ios.example.myfritz.net
Der Proxy sollte dann nur die benötigten ioBroker-iOS-Endpunkte weiterleiten und TLS erzwingen.
Silent Push läuft nicht direkt über ioBroker zum iPhone. Apple verlangt APNs. Deshalb sendet der Adapter bei Bedarf an ein Relay, das APNs mit deinem Apple Developer Key anspricht.
Standard in der Entwicklung:
https://ios.stoll-mueller.de
Für einen eigenen Relay-Server muss nach außen normalerweise nur HTTPS freigegeben werden:
443/tcp -> Relay-Server:443/tcp
Wenn NGINX oder ein anderer Reverse Proxy davor sitzt, bleibt der Node-/Relay-Port intern und wird nicht direkt veröffentlicht.
Benutzername/Passwort: einfache Adapter-Authentifizierung für die iOS-AppWebSocket-Port: Port für direkte App-Verbindungen, Standard9192Silent-Push-Relay aktivieren: Fallback-Wake über APNs erlaubenRelay-URL: URL des Push-Relays, z. B.https://ios.stoll-mueller.deRelay API-Key: Schlüssel, mit dem der Adapter beim Relay autorisiert wirdWake nach Minuten ohne Last Seen: ab wann ein Gerät per Silent Push geweckt werden sollMinimaler Abstand zwischen Wake-Pushes: Schutz gegen Push-SpamIndoor-Positionierung: BLE-Scans, Lernphase, Mindest-Konfidenz und Presence-Timeout
Typische Struktur:
iobapp.0.person.<Person>.<Device>.sensors.*
iobapp.0.person.<Person>.<Device>.location.*
iobapp.0.person.<Person>.<Device>.diagnostics.*
iobapp.0.person.<Person>.<Device>.indoor.*
iobapp.0.indoor.areas.*
iobapp.0.indoor.beacons.*
iobapp.0.messages.*
Wichtige Diagnosewerte:
sensors.last_seendiagnostics.last_flushdiagnostics.last_ackdiagnostics.last_triggerindoor.last_scanindoor.beacon_countindoor.current_areaindoor.confidence
Indoor-Positionierung basiert auf BLE-/iBeacon-Signalen, nicht auf WLAN-BSSID. iOS gibt BSSID/MAC-Adressen aus Datenschutzgründen nicht zuverlässig frei.
Vorgehen:
- Indoor in App und Adapter aktivieren
- Räume/Areas in ioBroker oder in der App auswählen bzw. benennen
- Lernphase starten und die relevante Area 10-30 Sekunden ablaufen
- Im Indoor-Dashboard feste Beacons als
fixed, mobile Geräte alsmobileund Störquellen alsignoredklassifizieren - Area-Kandidaten in der App prüfen und bei Bedarf pro Area Beacons ein- oder ausschließen
Hinweis: anonyme BLE-Geräte ohne stabilen Namen können ihre iOS-Identifier ändern. Die App filtert generische Peripheral-Einträge deshalb aus Indoor-Fingerprints heraus.
- Standort, HealthKit und Indoor-Positionierung sind opt-in.
- HealthKit-Daten werden nur gelesen, wenn der Nutzer sie in iOS freigibt.
- APNs-Schlüssel gehören nicht in Community-ioBroker-Installationen. Für produktive Installationen sollte ein Relay genutzt werden.
- Öffentliche Portfreigaben sollten auf HTTPS/VPN/Reverse Proxy begrenzt werden.
npm install
npm run build
npm testFür lokale Tests kann der Adapter per GitHub-URL oder lokalem Paket in ioBroker installiert werden.
- README und Projektbeschreibung für öffentliche Tests überarbeitet
- Adapter-Metadaten auf das aktuelle GitHub-Repository korrigiert
- Indoor-/Silent-Push-/Port-Dokumentation ergänzt
- Area-spezifische Include- und Exclude-Modi für Indoor-Beacons ergänzt
- Indoor-Kandidaten um Beacon-Match-Details und App-gesteuerte Beacon-Klassifizierung ergänzt
- Indoor-Area-Kandidaten zurückgeben und leere manuelle Lernscans akzeptieren
- Indoor-Dashboard zeigt nur direkte Area-Kanäle als Areas an
- Indoor-Area-Belegung ergänzt und falsche Indoor-Treffer durch Fingerprint-Abdeckungswertung reduziert
- Indoor-Dashboard-Listen für Geräte, Areas, Area-Details und Beacons separat scrollbar gemacht
- Indoor-Admin-Tab korrekt registriert und ioBroker-Räume über schnellen Enum-View-Fallback geladen
- Indoor-Area- und Beacon-Verwaltung mit Fallback auf gelernte Areas für die iOS-App ergänzt
- Scrollbarkeit der Settings-Seite und Label-Kontrast im Dark Theme korrigiert
- Admin-UI-Start mit dem Materialize-GenericApp-Translation-Set korrigiert
- Materialize-Settings-UI korrigiert und ioBroker-Admin-Tab für Indoor-Positionierung ergänzt
- Indoor-Positionierung mit BLE-Beacon-Scans, Raum-Lernen und zentralen Area-Fingerprints ergänzt
- Nachrichtentypen ergänzt und NFC-Tag-Routing verbessert
- Nachrichten-Routing für Personen und globale Nachrichten korrigiert
- UI-Fix
- Umstellung von REST auf WebSocket
- Verbesserungen im Nachrichten-Cache
- Apple Push Service/APNs ergänzt
- Integrationsprüfungen ergänzt
- WebSocket-Bugfix
- Port-Bugfix
- Initiale Version
MIT License
Copyright (c) 2024 DNAngelX stolly82@web.de
