
Dies ist der dritte Versuch, ein Smart Home mit Android zu befreunden. Ich möchte Sie daran erinnern, dass der erste Versuch, Android-Geräte über HTTP zu steuern, die Verwendung der Paw Server-Anwendung war. Diese Anwendung ermöglichte die Verwendung der BeanShell-Sprache, um Ihren Code in eine XML-Seite einzubetten und mit ihr zu interagieren, Daten zu empfangen oder zu verwalten. Für die Integration in den Smart Home-Server (
ioBroker ) wurde ein Treiber geschrieben, für die erste Konfiguration mussten jedoch Skripte manuell geladen werden. Darüber hinaus wurden über den Treiber Skripte aktualisiert, die das Hinzufügen neuer Funktionen und das Beheben von Fehlern ermöglichten, aber auch eine Reihe von Einschränkungen auferlegten, wenn versucht wurde, von den in Paw Server festgelegten Methoden zur Implementierung neuer Funktionen abzuweichen.
Der zweite Versuch bestand darin, Ihre Anwendung basierend auf der Quelle vom Paw-Server zu erstellen. Das Hauptziel bestand darin, den Konfigurationsprozess für den Benutzer zu vereinfachen und neue Funktionen hinzuzufügen, die in der vorherigen Version nicht implementiert werden konnten.
In derselben Version wurde beschlossen, den Paw-Server vollständig zu verlassen und die Anwendung und den Treiber für ioBroker neu zu schreiben. Fügen Sie neben dem vorhandenen HTTP auch neue Verbindungsmethoden und MQTT hinzu. Fügen Sie weitere Einstellungen für die Auswahl von Ereignissen hinzu, sowohl vom System selbst als auch von integrierten Sensoren. Natürlich wird die Anwendung als erstes für ioBroker optimiert, kann aber ohne große Schwierigkeiten in andere Systeme integriert werden.
Google PlayMit der Anwendung können Sie:
- Abrufen des Status der Systemeinstellungen (Helligkeit der Hintergrundbeleuchtung, Bildschirmstatus, Lautstärke, Akku usw.)
- Empfangen Sie Daten von eingehenden Anrufen, Spracherkennung
- Empfangen Sie Daten von eingebauten Sensoren.
- Standortkoordinaten abrufen.
- Holen Sie sich eine Liste der installierten Anwendungen und starten Sie sie.
- Verwalten Sie die Systemeinstellungen (Helligkeit der Hintergrundbeleuchtung, Lautstärke usw.).
- Anrufe tätigen.
- Erstellen Sie Benachrichtigungen und Dialogfelder.
- Senden Sie Text an die Sprachsynthese.
- Interagiere mit Tasker.
- Senden Sie Dateien an Geräte (nur HTTP).
Aussehen

Das Erscheinungsbild der Anwendung ist nicht endgültig und kann variieren. Ich würde gerne viel ändern oder hinzufügen, aber das ist alles mit der Zeit.
Bei der Navigation durch die Anwendung sollte es meiner Meinung nach keine Schwierigkeiten geben. Beim ersten Start informiert die Anwendung kurz über die aktuellen Änderungen in der neuen Version und schlägt vor, den „Assistenten“ zu verwenden. In den Anwendungseinstellungen können Sie die grundlegenden Betriebsparameter ändern, den Verbindungstyp auswählen, die Ereignisse auswählen, die an den Server übertragen werden, und den Zugriff auf einige Daten (Telefonbuch, Nachrichten, Anrufliste und Fotos) zulassen oder verweigern.
Auf dem Hauptbildschirm können Sie die "Kacheln" sehen, obwohl dies eine Testversion ist, aber im Laufe der Zeit plane ich, ihre Funktionen zu erweitern. Von den derzeit verfügbaren "Kacheln" gibt es: Schaltfläche, Dimmer, Zeit, Liste, Farbe, Informationen. Die Hauptaufgabe der Kacheln besteht darin, Daten (Befehle) vom Server zu senden oder zu empfangen oder andere Geräte zu verwalten. Obwohl es kein Gesamtbild darüber gibt, wie alles funktionieren sollte, werde ich jetzt nicht alle Nuancen beschreiben.
Verbindungen
In Bezug auf Verbindungen und Steuerbefehle verfügt die Anwendung über zwei Verbindungsoptionen über HTTP und MQTT. Jede Methode hat ihre Vor- und Nachteile, welche Verbindungsmethode Sie wählen.
HTTP
Bei dieser Methode wird eine Verbindung über WLAN mit einem lokalen Netzwerk hergestellt. Die Anwendung "erhöht" ihren Webserver (die IP-Adresse und der Port sind in der Benachrichtigung beim Herstellen der Verbindung zu sehen) und gewährt Zugriff auf die Verwaltung. Dies kann entweder direkt (über einen Browser) oder in Integration mit dem UD-Server über POST- oder GET-Anforderungen erfolgen.


Antworten von Anfragen werden im JSON-Format zurückgegeben, der Gerätename, die IP-Adresse und der Befehlsstatus werden im Antworttext übertragen. Einige Anforderungen rufen einen zusätzlichen „Rückruf“ auf. Wenn Sie beispielsweise Text an die Sprachsynthese senden, sendet die Anwendung eine Anforderung an den Server über den Beginn des Sprechens des Textes und dessen Fertigstellung. Auf die gleiche Weise überträgt die Anwendung Daten über Ereignisse und Messwerte integrierter Sensoren an den Server. Für eine vollwertige Arbeit ist es daher erforderlich, dass der UD-Server sie verarbeiten kann.
MQTT
Das MQTT-Protokoll ist sehr beliebt und wird von verschiedenen DD-Systemen unterstützt. Dies erleichtert die Integration der Anwendung in diese. Bei Auswahl dieser Verbindungsmethode können Sie sowohl lokale als auch externe MQTT-Broker verwenden.
Wenn Sie eine Verbindung zum MQTT-Broker herstellen, wird der Hauptzweig
/ PAW / erstellt , gefolgt vom Namen der Geräte (jedes Gerät muss einen eigenen haben), die wiederum in zwei Zweige des Themas
/ info / und
/ comm / unterteilt sind. Dies können Sie anhand des Namens erraten Der Zweig info (information) veröffentlicht alle eingehenden Informationen vom Gerät, und der Zweig comm (command) enthält Themen zu dessen Verwaltung. Dies geschieht aus Gründen der Klarheit, um besser zu verstehen, welches Thema für was verantwortlich ist.

Auch im Hauptzweig gibt es
/ all_devices / in diesem Zweig gibt es Themen, für die alle Geräte abonniert sind,
sodass Sie alle Geräte gleichzeitig verwalten können.
Aus Gründen der Universalität können in diesen Themen, deren Werte wahr (wahr) oder falsch (falsch) sein können, unterschiedliche Werte angenommen werden, dh
1, ein, automatisch, wahr ist der wahre Wert und
0, aus, falsch, manuell ist falsch . Ein weiteres Merkmal der Anwendung besteht darin, dass zur Überprüfung der Ausführung des Befehls bei erfolgreicher Ausführung ein leerer Wert im selben Thema veröffentlicht wird. Wenn der Wert nach der Veröffentlichung nicht verschwunden ist, weist dies darauf hin, dass beim Ausführen des Befehls ein Fehler aufgetreten ist oder der Wert nicht mit dem richtigen Wert für dieses Thema übereinstimmt. Wenn beispielsweise beim Ändern des Lautstärkepegels der Wert für einen bestimmten Lautstärketyp nicht der Anzahl entspricht oder das Maximum überschreitet, wird ein Fehler zurückgegeben.
Auch in dieser Version wurde der Befehlssatz für Benachrichtigungen und „Dialoge“ erweitert, mit dem Sie detailliertere Informationen anzeigen und mit dem Benutzer interagieren können, wenn das Gerät als Informant verwendet wird. Bei der Erstellung sind eine große Anzahl von Parametern erforderlich. Daher muss der Wert im entsprechenden Thema im JSON-Format veröffentlicht werden.
Für Benachrichtigungen Thema
/ comm / Benachrichtigung / erstellen (unten ist ein Beispiel für den Wert)
{ "noti":"Any text", "title":"Title 2", "info":"Any text", "vibrate":true, "sound":true, "light":true, "id":2 }
Für "Dialoge" Thema
/ Kommunikation / Benachrichtigung / Alarm . Die Antwort aus den "Dialogen" kommt im JSON-Format und wird im Thema
/ info / alert / response veröffentlicht { "alert":"Turn the lights off?", "title":"Light", "negative":"No", "positive":"Yes", "neutral":"Neutral", "sound":true, "id":2 }
IoBroker-Integration

Durch die Einbettung der Fähigkeit, das MQTT-Protokoll in Anwendungen zu verarbeiten, wollte ich nur die Integration in das System vereinfachen und das Schreiben eines separaten Treibers vermeiden. Einige Funktionen können jedoch nicht über das MQTT-Protokoll implementiert werden, weshalb auf einen Treiber nicht verzichtet werden kann.
Die Struktur von Treiberobjekten ähnelt der Struktur von MQTT und ist ebenfalls in zwei Zweige
/ info / und
/ comm / unterteilt . Sie verfügt über ähnliche Befehle zum Verwalten und die gleiche Reaktion auf falsche Daten. Ich werde die Treibereinstellungen und den Betrieb hier nicht beschreiben, alle aktuellen Informationen werden auf
GitHub aktualisiert.
Anmerkungen
Bei der Verwaltung der Systemeinstellungen (Steuerung der Helligkeit der Hintergrundbeleuchtung, Aufwachen aus dem Ruhezustand usw.) reagieren verschiedene Geräte unterschiedlich auf Befehle oder nicht. Aufgrund der Vielzahl von Geräten, SDK-Versionen und Firmware ist es schwierig, ein Verhaltensmodell pro Befehl festzulegen. Hier müssen Sie die Aktion entsprechend Ihrem Gerät auswählen. Damit die meisten Geräte den Bildschirm ausschalten (in den Ruhezustand versenden), reicht es aus, die Zeitüberschreitung für die Hintergrundbeleuchtung zu ändern. Bei einigen Geräten funktioniert dies jedoch nicht. In der gleichen Situation wie bei anderen Systemeinstellungen treten bei den meisten Geräten sofort Änderungen auf, bei anderen ist es jedoch erforderlich, das Gerät in den Ruhezustand zu versetzen und dann zu aktivieren, damit die Änderungen wirksam werden. Die kleinsten Probleme dieser Art treten mit SDK 19 (Android 4.4) auf, dies ist jedoch nicht korrekt.) Vergessen Sie auch nicht, dass Tasker unterstützt wird. Wenn Ihnen eine Funktion fehlt, können Sie sie hinzufügen und über die Anwendung interagieren.