NEWS
[Vorlage] Android Wecker iobroker blockly
-
Hallo zusammen,
ich habe lange nach einer guten und zuverlässigen Lösung für eine Wecker Integration in iobroker zusammen mit einem Android Handy gesucht und bin nun fündig geworden. Das Ergebnis möchte ich hier mit euch teilen:
Anforderung:
- Mit einer Android Wecker App Wecker stellen
- Uhrzeit und Wecker Status an iobroker übertragen
- Weckerklingeln an iobroker übertragen
- xx Minuten vor dem Klingeln Aktionen auslösen (Rollo langsam hochfahren.. etc.)
- Umgekehrte Richtung möglich, sprich Wecker in iobroker stellen, Handy klingeln lassen
- Integration in Visualisierung (in diesem Fall: Habpanel)
Umgesetzt habe ich das ganze mit der tollen App Alarm Clock MQTT von Joakim Plantin:
https://play.google.com/store/apps/details?id=se.jplantin.jp.alarmclock
Ich habe mit Joakim Kontakt aufgenommen und wir haben in gemeinsamer Arbeit die App soweit optimiert, dass diese ideal mit iobroker zusammen funktioniert.
Die in der App eingestellten Weckzeiten werden an iobroker übertragen. In der Habpanel Vis sieht das dann so aus:Hier folgt nun die Anleitung wie das ganze eingerichtet werden muss:
-
mqtt broker/Client Adapter installieren und wie folgt einrichten:
-
Die MQTT Android Wecker App installieren und folgende Einstellungen vornehmen:
- Host mit passendem Port eintragen
- Unter Identity den Username eintragen wie in dem mqtt Adapter, sowie Passwort. Außerdem eine Client ID die ihr frei wählen könnt.
- Unter WiFi Settings muss das WLAN eingetragen sein, aus dem ihr den Wecker stellen werdet.
-
Eine Weckzeit einstellen und die MQTT Events verschicken
Nun könnt ihr testhalber einen Wecker in der App einstellen und unter "MQTT Events" die passenden mqtt Nachrichten auswählen welche die App an euren iobroker verschicken soll.
Ich habe dafür bei mir folgende Events konfiguriert:
-
Wenn ihr das so eingerichtet habt und einen Test Alarm speichert und Aktiviert, dann sollten bei euch in iobroker folgende Objekte auftauchen:
-
Diese Werte könnt ihr nun in bei euch in iobroker finden und diese sollten in etwa so aussehen:
-
Zusätzlich zu diesen Objekten solltet ihr als Vorbereitung für das Blockly noch folgende Objekte anlegen:
-
Damit ist alles vorbereitet. Nun könnt ihr das Blockly bauen. Den kompletten Export findet ihr unten im Anhang. Hinweis: Ich habe 2 Wecker gemacht (für mich und meine Freundin).
Hinweis zu Fehlermeldungen: Vermutlich wird eine Fehlermeldung kommen weil ich das Objekt "Alarmanlage" nicht habt, ich schalte bei Weckerstellung sofort die Alarmanlage mit scharf.
Ebenfalls müsst ihr die Blöcke für den zweiten Wecker weglöschen, oder die Objekte auch entsprechend erstellen, falls ihr mit 2 Weckern arbeiten wollt.
In dem Beispiel erstelle ich direkt noch eine weitere Weckzeit - nämlich für mein Rollo, welches 1h vor Weckerklingeln alle 20 min ein Stück weiter hochfährt. Das Script füge ich euch ebenfalls noch mit an.
Hinweis: Insbesondere durch die Verwendung von 2 Weckern ist das Rollo Script etwas komplexer, da es verschiedene Weckzeiten gibt aber nur ein Rollo. Das ist aber in dem Script gelöst. Schlummermodus ist ebenfalls berücksichtigt.In der MQTT App kann ich auch einen Wecker erstellen, der nur eine MQTT Nachricht schickt ohne Klingeln. So könnt ihr euch nur von Rollo, Licht, Musik oder ähnlichen von iobroker gesteuerten Dingen wecken lassen. Ihr könnt dafür das Rollo Script als Vorlage nehmen und die für euch passenden Geräte einfügen.
An dieser Stelle möchte ich mich nochmal ganz herzlich bei Joakim Plantin bedanken, dass er so gute Arbeit mit seiner App geleistet hat um diese für die iobroker community gut nutzbar zu machen.
Euch allen wünsche ich viel Spaß mit dem Android Wecker in iobroker.
***Update 16.01.2022:
- Einige alte nicht mehr benötigte Blöcke im Wecker Script entfernt.
- Neues Feature: anstatt der fixen Vorlaufzeit von 60 Minuten für den Rolladen kann man diesen nun in folgenden Schritten (Minuten) anpassen: 15, 30, 45 und 60 Minuten. Wichtig: Dafür müsst ihr ein zusätzlichen Datenpunkt anlegen "rollo_weckzeit", da die Zeitberechnung nun ausschließlich über einen timestamp in Sekunden ab Tagesanfang berechnet und umgerechnet wird.
Wecker Script (Stand 16.01.2022): wecker-blockly 4.2 2022-01-16.txt
Rolladen Script (Stand 16.01.2022): Schlafzimmer Rollo Wecker 3.0 2022-01-16.txt -
Update 09.04.2020:
Wecker Script:
- Fehlerbehebungen in Wecker 2
- Änderung des "Schlafen"-Modus - der Schlafen Modus ist nun unabhängig vom Wecker, so dass man auch ohne Wecker in den "Schlafen" Modus gehen kann und somit von den Automatisierungen profitieren kann.
Rollo Auto Script:
- Fehlerbehebungen, Vereinfachungen
- Hinzufügen eines zusätzlichen Abfrage, wenn Person 1 schon aufgestanden ist, Person 2 aber noch z.B. 2 Stunden schläft: Das Rollo fährt dann zurück in die für die Person 2 aktuell sinnvolle Position.
-
Hi, danke für diesen Tipp. Habe ich mir direkt installiert.
Könntest du bitte ein Beispiel nennen, wie der Wecker seitens ioBroker manipuliert werden kann? Aktivieren/Deaktivieren oder Uhrzeit ändern o.ä.
Hatte testweise im Objekt "alarm_activated" das json geändert und publish aktiviert, hatte aber nicht funktioniert.Habe dem Entwickler auch mal eine Email geschrieben. Folgendes habe ich als Verbesserungen vorgeschlagen:
-
Wäre klasse wenn das main-topic "alarm_clock_mqtt" in einer separaten Variable z.B. "topic_prefix" stehen würde.
-
"custom payload" sollte auch innerhalb eines jsons zusammen mit der alarm id gesendet werden. Zum Beispiel: {id:1, value: custom_text}
-
allgemein sollte ein Gesamtstatus existieren, um eine Übersicht der Wecker sicherzustellen. Zum Beispiel:
{[id:1, active:true/fals, alarm_trigger: 12:00], [id:2, active:true/fals, alarm_trigger: 7:00] }
-
-
Hallo,
eine super Sache - hatte schon länger nach einer Möglichkeit gesucht meinen Android Wecker in iobroker zu integrieren.Ich bin gerade dabei das ganze einzurichten und habe auch soweit in der Android App alle mqtt Daten eingegeben - der mqtt Adapter war bei mir bereits in iobroker installiert.
Nachdem ich die Daten in der App eingegeben hatte steht im Log: Starting -Mqtt Service - Testing Connection - Stopping Mqtt Service. Einen Alarm habe ich in der App gesetzt und unter Add Events mal nach und nach alle events angewählt, dann tauchte auch im iobroker unter den Objekten mqtt folgendes auf:Jedoch sieht es für mich so aus als ob da noch so einiges fehlt. Zudem scheint die Verbindung nicht kontant zu Stande zu kommen. Beim Versuch einen neuen Alarm zu erstellen folgendes:
Im Log der App steht ständig: No response from server
Im iobroker Log:
Eine Idee wie man das beheben kann bzw. was da los ist?
LG
-
@smartmood
Welche Messages gesendet werden sollen, kann in den Einstellungen ausgewählt und angepasst werden. Settings > Mqtt > Mqtt TopicsP.S.: bei mir steht auch "no response from server". Aber es kommt dennoch alles an...
Evtl müsste man QoS erhöhen, erst dann bekommt man doch ein Acknowkedge zurück, oder? -
@smartmood Ich hatte Anfangs auch ein paar Probleme bei der Einrichtung der Verbindung bzw. Übertragung der Mqtt Daten. Jetzt funktioniert es bei mir aber mit mehreren Smartphones stabil.
Meine MQTT Einstellungen siehst du oben im Eingangsthread.
Hast du in den WiFi Settings der App dein WLAN eingetragen?
Alternativ mal mit einem anderen Smartphone probiert? -
@GiuseppeS Möchtest du die App von iobroker - Seite aus manipulieren? Das geht meines Wissens nicht.
Das Wecker Script beinhaltet ja auch ein kleines iobroker-internes Wecker Script, welches unabhängig von der App funktioniert. Dieses kannst du im einzelnen nutzen und über iobroker (Vis, Habpanel, etc.) direkt ansteuern.
Kannst dich dann z.B. per Pushover Nachricht auf dein Handy ebenfalls wecken lassen. -
@smile said in [Vorlage] Android Wecker iobroker blockly:
Zusätzlich zu diesen Objekten solltet ihr als Vorbereitung für das Blockly noch folgende Objekte anlegen:
Das Verstehe ich leider garnicht.
So siehts bei mir aus:
Ebenso wird mir beim Importieren von "Rollo Wecker.txt" folgendes angezeigt:
-
@MisterBlinki
versuch das mal. Beim export ist wohl ein bisschen zuviel reingekommen:
Rollo Wecker.txt@smile
Bei fehlen die Wecker-Objekte... Hast du noch weitere Einstellungen drinnen?!
Wenn ich pushover nicht habe, kann ich dann auch den Versand per telegram zulassen? -
@jwerlsdf
Funktioniert! Danke! -
@MisterBlinki Ich habe die .txt Datei gerade einmal neu exportiert und im Eingangsthread neu hochgeladen.
Grundsätzlich sieht das alles richtig bei dir aus. -
Vielleicht zu einfach, aber unter punkt 6. der Erklärung schreibst du als Vorbereitung anlegen...
Unter Javascript oder unter mqtt?
Und wie kommen dort die "formatierten" Werte hinein?Sorry, bin noch "ganz am Anfang" mit Iobroker.
-
@MisterBlinki Kein Thema, ging mir am Anfang auch so, zum Glück haben mir einige nette Menschen geholfen in das Thema reinzukommen.
Ich lege die anderen Objekte unter Javascript an.
Hier lege ich generell die allermeisten meiner Iobroker Objekte an. Hier siehst du mal meine Ordnerstruktur:
Die Objekte im "Wecker" Ordner sind dann von unterschiedlichem Typus. True/False Objekte sind Logikwerte, Zahlen sind Zahlen und 09:00 ist "gemischt" wegen des ":" zwischen den Zahlen.
Wenn du die Werte im Javascript Ordner unter der Ordnerstruktur angelegt hast, dann erkennt das Blockly Script diese und sofern die MQTT Verbindung steht und das Script läuft solltest du dort auch entsprechende formatierte Werte reinbekommen. -
@smile sagte in [Vorlage] Android Wecker iobroker blockly:
Hast du in den WiFi Settings der App dein WLAN eingetragen?
Alternativ mal mit einem anderen Smartphone probiert?Nein mein WLAN hatte ich nicht in den Wifi Settings der App eingetragen - habe ich gerade mal gemacht und werde nochmal testen
-
Update 26.04.2020:
Wecker Script:- Anpassung an die MQTT Werte aus der aktuellsten Android App Version
- Fehlerbehebungen beim Schlummermodus
Rollo Auto Script:
- Verbesserung: Nach dem das Rollo komplett hochgefahren ist und die Aktion zuende ist, startet die Zeitprüfung nun neu und prüft auch ohne den Wecker erneut zu aktivieren, ob das Rollo nach der nächsten Nacht hochfahren soll.
-
@smile said in [Vorlage] Android Wecker iobroker blockly:
Update 26.04.2020:
Wecker Script:- Anpassung an die MQTT Werte aus der aktuellsten Android App Version
- Fehlerbehebungen beim Schlummermodus
Rollo Auto Script:
- Verbesserung: Nach dem das Rollo komplett hochgefahren ist und die Aktion zuende ist, startet die Zeitprüfung nun neu und prüft auch ohne den Wecker erneut zu aktivieren, ob das Rollo nach der nächsten Nacht hochfahren soll.
Hallo Smile...
Ich finde dieses Thema mega spannend und versuche mich daran. Ich habe nichts importiert, sondern bastle selber.
Mein Problem:
Wenn ich in der App die Weckzeit ändere dann bekommt iobroker dieses auch mit. Also die Verbindung zu iobroker steht.
Aber wenn der Wecker startet, wird der Datenpunkt nicht aktualisiert. Oder besser gesagt nicht immer. Und ich finde beim besten Willen den Fehler nicht. Im Log steht nichts weiter.
Wie gesagt werden die anderen Datenpunkte (z.B. die Weckzeit) werden ja aktualisiert..Hast Du eine Idee?
-
Hi Frank. Tatsächlich habe ich das Problem auch. Bei mir ist es nicht so schlimm, da für mich dieser Datenpunkt nicht so wichtig ist.
Du könntest dir hier auch Abhilfe schaffen indem Du iobroker den Datenpunkt aktualisieren lässt, bzw. einen eigenen Datenpunkt erstellst; Du machst einen Trigger auf die Weckzeit und iobroker löst dann aus was du möchtest. -
Update 25.06.2020:
-
Rollo Auto Script
Weckzeit wird nicht mehr nach hh:mm erfasst sondern in Sekunden ab Tagesbeginn (Timestamp). Zuverlässigere Funktion und Fehlertoleranter, da eine gewisse Range an Sekunden abgefragt wird. -
Rollo Hochfahrzeiten wurden angepasst, das Rolle fährt nun seltener, dafür schneller hoch.
-
-
@smile Wäre es noch möglich eine volume range pro Alarm zur Verfügung zu stellen, sonst haut er gleich voll rein, ich stand heute früh direkt im Bett ^^
Des Weiteren noch eigene Music Titel von der SD auswählbar? -
funktioniert die app noch bei jemanden?