NEWS
Fenster und andere Geräte zählen opt. Alexa Ansagen
-
Hier mal noch ein Vorschlag.
Vielleicht könnte man die Strucktur noch ein wenig übersichtlicher gestalten - wenn möglich.
Du klappst einmal das "Haus" auf und kannst dann gleicht zu den Fenstern, Steckdosen, Lichtern,....
gehen.
@falke69
Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll. -
Versionen 1.6.7 aktualisiert am 23.12.2020 Typ Blockly mit JavaScript Funktionen verwendete Adapter je nach dem was im Blockly aktiviert ist verwendete Geräte verschieden - gemischt was kann das Blockly wird hier beschrieben Hallo Zusammen.
Ich stelle hier mein Blockly zum Geräte zählen und optional zum Ansagen über den Alexa2 Adapter über speak, sowie optionaler Versand über Telegram / E-Mail zur Verfügung.
Das gesamte Blockly nutzt "alias'e". Alle anderen benötigten Datenpunkte erstellt und löscht das Blockly selbst, je nach dem was verwendet werden soll.
Wer also keine alias erstellen oder nutzen möchte kann an dieser Stelle aufhören zu lesen, für alle anderen Interessierten versuche ich möglichst genau zu beschreiben was zu tun ist.Mit Alexa geht dann z.B.
- Alexa, welche Fenster sind noch auf
- Alexa, welche Türen sind noch auf
- Alexa, welche Steckdosen sind noch an
- Alexa, welche Lampen sind noch an
- Alexa, was machen die Batterien
- Alexa, welche Bewegungsmelder sind aktiv
- Alexa, wie sind die Temperaturen (Ansage, aller Temperaturen meiner Räume und Außentemperatur nacheinander in einer Ansage)
Welche Frage in welcher Formulierung gestellt wird bestimmt Ihr natürlich selbst, da dies über eine Routine in der Alexa App gesteuert wird. Dazu später mehr.
Ein Hinweis gleich noch zu Beginn. Da die Ansage am angesprochenen ECHO erfolgen soll, kann es vorkommen, das, wenn es mehrere ECHO's in Hörweite gibt, die Ansage an einem anderen ECHO ausgegeben wird, weil sich ein anderer ECHO "angesprochen fühlt". Wenn ich in einem Raum bin, wo mich nur ein ECHO hören kann, funktioniert es bei mir zuverlässig.
Meine verwendeten Adapter dafür sind:
- Alexa2 Adapter 3.4.0
- iot Adapter 1.8.8
- Javascript Adapter 4.10.8
- Telegram Adapter 1.5.9 (optional)
- E-Mail Adapter 1.0.7 (optional)
- und wenn gewünscht (optional) iQontrol 1.5.2
- TR-064 4.2.1 Anruferansage (optional Telegram/EMAIL-extra Blockly im zweiten Beitrag)
SmartGeräte für den iot Adapter werden direkt im Blockly erstellt, das sind dann die Button für die spätere Routine in der Amazon App.
Das Blockly legt die benötigten Datenpunkte wahlweise unter 0_userdata.0 oder javascript.x selbst an (x=Javascript Instanznummer). Für die Erstellung der Datenpunkte nutze ich das Script von @Mic in einer Funktion. Dafür muß die Option "Erlaube das Kommando "setObject" im Javascript Adapter erlaubt sein.
Der Versand aller Nachrichten (Telegram oder EMAIL) ist immer schaltbar, z.B. wenn man eine Anwesenheitsfunktion hat, dann könnte man den Versand bei Abwesenheit "scharf" schalten.
Die Button hingegen funktionieren immer. Hier könnte man jeweils eine Routine in der Alexa App anlegen und den Versand des Gerätestatus-Versand auslösen.
Z.B.
Alexa, schicke mir den Fensterstatus.
Alexa, schicke mir den Lichtstatus
Alexa, schicke mir den Steckdosenstatus usw...Über diesen Weg lasse ich mir auch zum Beispiel auf Anforderung den Batteriestatus aller meiner Geräte mit Batterien als Liste schicken. Oder auch, Alexa schicke mir ein Bild von der Eingangskamera. Wenn man es auf die Spitze treibt, dann geht auch: Alexa, schicke mir den kompletten Status und dann trudeln bei mir nacheinander Bilder von drei Kameras, alle Batteriezustände, eine Liste mit geöffneten/gekippten Fenstern, ein Liste mit eingeschalteten Lampen usw. usw. usw. ein.
Wenn Ihr nun Lust auf das Blockly habt, dann ist jetzt einmalig etwas Fleißarbeit angesagt. Bevor Ihr das Blockly nutzen könnt, müssen die Alias für Eure Geräte, die Ihr im Blockly verwenden wollt, erstellt werden. Dafür eignet sich die Scriptvorlage von @CruziX hervorragend. Mit dieser Vorlage können alle Alias auf einmal erstellt werden. Eine Vorlage als Beispiel findet Ihr im Spoiler. An dieser Stelle sei gleich gesagt, sinnvolle Namen im Alias zu verwenden (id ist egal, nur der Name ist gemeint), da diese Namen dann für alles im Blockly verwendet werden, also alle Gerätenamen allgemein. Also immer so erstellen, das sich der Name auch z.B. für Alexa aussprechen lässt.
In der id keine Leerzeichen/Sonderzeichen oder Umlaute verwenden, damit vermeidet man direkt im Vorfeld mögliche Fehler.
Als erstes solltet ihr in den Aufzählungen neue Funktionen erstellen, diese kann man dann gleich im alias Script benutzen. Da auf das Plus drücken.

dann auf das Plus bei neue benutzerdefinierte Gruppe klicken

Ich habe folgende erstellt (wenn Ihr die gleichen nehmt müsst Ihr das nichtmal im Blockly umstellen)
batterien_voll_leer_alias
batterien_volt_alias
bewegungsmelder_alias
fenster_alias
licht_alias
steckdosen_alias
temperaturen_alias
tueren_alias
batterien_prozent_aliasDas sind die Selektoren im Blockly









Das ganze sieht dann nach dem Blockly Start in den Objekten z.B. so aus: (wenn alle Schalter im Blockly auf wahr stehen)

01_Anzeigen_und_Listen

02_Trigger_und_Schalter

03_HTML_Daten hat zwei Unterordner

01_HTML_Hell_Dunkel_Festeinstellung ist nicht veränderbar und sieht so aus (helle Einstellung aktiv)

03_HTML_Eigene_Einstellung enthält die gleichen Datenpunkte und wird beim ersten verwenden des Triggers mit Standardwerten befüllt. Diese Werte können dann mit eigenen Werten überschrieben werden.
Und hier noch der Rest

Die Bilder bzw. Icon links und rechts habe ich als Base64 eingefügt. Ich benutze dafür das hier: https://www.base64-image.de/
Wenn iQontrol installiert ist, dann funktioniert auch der Pfad zu einem Icon (einfach den eingestellten Pfad zum Icon aus iQontrol kopieren und einfügen)
In den eigenen 02_HTML_Eigene_Einstellungen kann alles selbst an die eigenen Wünsche angepasst werden.Hier noch ein kurzes GiF
(klick auf das linke Icon schaltet die Farbeinstellungen durch. klick auf das rechte Icon blendet die Tabelle ein und aus bzw. schaltet auf aktiv/inaktiv)

-
@dslraser sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll.
Ich habe jetzt alle Blocklys vom 20.05.2020 installiert (Fenster, Steckdosen, Lichter, BWM).
Alphabetische Sortierung aktiv und inaktiv funktioniert.:+1:
Alexa Ansage (eine Instanz) funktioniert.:+1:
E-Mail Versand funktioniert.:+1:
Es ist Dir gelungen die eierlegende Wollmilchsau zu programmieren.:clap: :clap:
Tolle Arbeit, großer Respekt und vielen Dank, dass Du uns alles zur Verfügung stellst. -
Hallo @dslraser
ich versuche gerade, dein Temperaturskript bei mir zu implementieren (habe Zigbee-Sensoren; Datei 08Gesamttemperaturansage.txt). In der Anleitung steht, man soll den DatenpunktTemperatur_zu_String_mit_Kommaim JS-Element modifizieren - den gibts bei mir aber nicht? Hab schon die Blöcke verschoben, da versteckt der sich aber nicht...

-
Hallo @dslraser
ich versuche gerade, dein Temperaturskript bei mir zu implementieren (habe Zigbee-Sensoren; Datei 08Gesamttemperaturansage.txt). In der Anleitung steht, man soll den DatenpunktTemperatur_zu_String_mit_Kommaim JS-Element modifizieren - den gibts bei mir aber nicht? Hab schon die Blöcke verschoben, da versteckt der sich aber nicht...

@Kueppert
ich schaue später mal.Edit: Ich sehe schon was Du meinst. Du hast die Gesamtansage genommen. Das ist die Zusammenfassung von 01 bis 07. (wenn man die alle hat) Da ist fas nicht drinn. Nimm mal eine der anderen. Da muss ich die Anleitung verbessern.
Und noch eine Frage, welche Javascript Version hast Du ? Bei Dir werden auch zwei Funktionen (die von Alexa) als Fehlerhaft angezeigt. -
@Kueppert
ich schaue später mal.Edit: Ich sehe schon was Du meinst. Du hast die Gesamtansage genommen. Das ist die Zusammenfassung von 01 bis 07. (wenn man die alle hat) Da ist fas nicht drinn. Nimm mal eine der anderen. Da muss ich die Anleitung verbessern.
Und noch eine Frage, welche Javascript Version hast Du ? Bei Dir werden auch zwei Funktionen (die von Alexa) als Fehlerhaft angezeigt. -
@dslraser danke dir :) Ich nutze wieder die 4.6.13. Kann die Finger von den neusten latest-Adaptern nicht weg lassen ^^
@dslraser bei Lichter hatte ich noch 2 unbekannte drin. Sind 2 Yeelight-Leuchtmittel.
Ein RAW-Datenpunkt hierzu (.power ist das was fehlt):{ "from": "system.adapter.yeelight-2.0", "ts": 1541241219406, "common": { "name": "Wohnzimmer-Stipe.power", "role": "switch", "type": "boolean", "write": true, "read": true, "smartName": { "de": "Yeelight-Wohnzimmerregal", "smartType": "LIGHT" } }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "yeelight-2.0.stripe-0x0000000004986798.control.power", "type": "state" }hab den Code selbst eingepflegt, tuts jetzt wunderbar :)
if (name.substr( -6) == ('.power')) return name.slice(0, -6); -
kleiner Hinweis für alle: ich hatte in meinem Fenster & Türen-Skript die Bezeichnung "Türen & Fenster" gewählt. Das hat bei mir dazugeführt, dass im iQontrol die HTML nicht korrekt angezeigt wurde. Hab jetzt auf "TuerenFenster" umgestellt und es geht.
Ob es mit der Bezeichnung die ich gewählt hatte zusammenhängt, weiß ich nicht genau. Die HTML wurde aber aktualisiert, aber in iQontrol trotzdem falsch angezeigt (ein offenes Fenster wurde als geschlossen ausgewiesen). Öffnete ich die HTML in WINSCP, war alles korrekt ausgewiesen. -
Hi,
habe gerade gemerkt, dass mein HM-LC-RGBW-WM und der HM-LC-Dim1PWM-CV nicht mit in der Liste auftauchen. Habe bei beiden Geräten den Level mit zu "Lichter" hinzugefügt. Diese werden aber nicht mit erkannt.
Muss ich hier eine andere Auswahl treffen?
-
Hi,
habe gerade gemerkt, dass mein HM-LC-RGBW-WM und der HM-LC-Dim1PWM-CV nicht mit in der Liste auftauchen. Habe bei beiden Geräten den Level mit zu "Lichter" hinzugefügt. Diese werden aber nicht mit erkannt.
Muss ich hier eine andere Auswahl treffen?
@falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
Level mit zu "Lichter"
level ist nicht dabei. welcher DP schaltet bei Dir an / aus ? WORKING vielleicht? Dann nimm mal den rein
-
@falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
Level mit zu "Lichter"
level ist nicht dabei. welcher DP schaltet bei Dir an / aus ? WORKING vielleicht? Dann nimm mal den rein
WORKING geht vor false auf true und wieder zurück. Das Gerät wird eigentlich hauptsächlich mit Alexa gesteuert. :-). Ansonsten noch mit HM-RC-2-PBU-FM. Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.
Ist auch nicht wirklich schlimm.
War mir nur jetzt erst aufgefallen. -
WORKING geht vor false auf true und wieder zurück. Das Gerät wird eigentlich hauptsächlich mit Alexa gesteuert. :-). Ansonsten noch mit HM-RC-2-PBU-FM. Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.
Ist auch nicht wirklich schlimm.
War mir nur jetzt erst aufgefallen.@falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.
Ich meinte damit ja auch ,das Du dann working in die Aufzählung packen sollst und level da raus nehmen sollst. Danach mal das Blockly neu starten.
-
Versionen 1.6.7 aktualisiert am 23.12.2020 Typ Blockly mit JavaScript Funktionen verwendete Adapter je nach dem was im Blockly aktiviert ist verwendete Geräte verschieden - gemischt was kann das Blockly wird hier beschrieben Hallo Zusammen.
Ich stelle hier mein Blockly zum Geräte zählen und optional zum Ansagen über den Alexa2 Adapter über speak, sowie optionaler Versand über Telegram / E-Mail zur Verfügung.
Das gesamte Blockly nutzt "alias'e". Alle anderen benötigten Datenpunkte erstellt und löscht das Blockly selbst, je nach dem was verwendet werden soll.
Wer also keine alias erstellen oder nutzen möchte kann an dieser Stelle aufhören zu lesen, für alle anderen Interessierten versuche ich möglichst genau zu beschreiben was zu tun ist.Mit Alexa geht dann z.B.
- Alexa, welche Fenster sind noch auf
- Alexa, welche Türen sind noch auf
- Alexa, welche Steckdosen sind noch an
- Alexa, welche Lampen sind noch an
- Alexa, was machen die Batterien
- Alexa, welche Bewegungsmelder sind aktiv
- Alexa, wie sind die Temperaturen (Ansage, aller Temperaturen meiner Räume und Außentemperatur nacheinander in einer Ansage)
Welche Frage in welcher Formulierung gestellt wird bestimmt Ihr natürlich selbst, da dies über eine Routine in der Alexa App gesteuert wird. Dazu später mehr.
Ein Hinweis gleich noch zu Beginn. Da die Ansage am angesprochenen ECHO erfolgen soll, kann es vorkommen, das, wenn es mehrere ECHO's in Hörweite gibt, die Ansage an einem anderen ECHO ausgegeben wird, weil sich ein anderer ECHO "angesprochen fühlt". Wenn ich in einem Raum bin, wo mich nur ein ECHO hören kann, funktioniert es bei mir zuverlässig.
Meine verwendeten Adapter dafür sind:
- Alexa2 Adapter 3.4.0
- iot Adapter 1.8.8
- Javascript Adapter 4.10.8
- Telegram Adapter 1.5.9 (optional)
- E-Mail Adapter 1.0.7 (optional)
- und wenn gewünscht (optional) iQontrol 1.5.2
- TR-064 4.2.1 Anruferansage (optional Telegram/EMAIL-extra Blockly im zweiten Beitrag)
SmartGeräte für den iot Adapter werden direkt im Blockly erstellt, das sind dann die Button für die spätere Routine in der Amazon App.
Das Blockly legt die benötigten Datenpunkte wahlweise unter 0_userdata.0 oder javascript.x selbst an (x=Javascript Instanznummer). Für die Erstellung der Datenpunkte nutze ich das Script von @Mic in einer Funktion. Dafür muß die Option "Erlaube das Kommando "setObject" im Javascript Adapter erlaubt sein.
Der Versand aller Nachrichten (Telegram oder EMAIL) ist immer schaltbar, z.B. wenn man eine Anwesenheitsfunktion hat, dann könnte man den Versand bei Abwesenheit "scharf" schalten.
Die Button hingegen funktionieren immer. Hier könnte man jeweils eine Routine in der Alexa App anlegen und den Versand des Gerätestatus-Versand auslösen.
Z.B.
Alexa, schicke mir den Fensterstatus.
Alexa, schicke mir den Lichtstatus
Alexa, schicke mir den Steckdosenstatus usw...Über diesen Weg lasse ich mir auch zum Beispiel auf Anforderung den Batteriestatus aller meiner Geräte mit Batterien als Liste schicken. Oder auch, Alexa schicke mir ein Bild von der Eingangskamera. Wenn man es auf die Spitze treibt, dann geht auch: Alexa, schicke mir den kompletten Status und dann trudeln bei mir nacheinander Bilder von drei Kameras, alle Batteriezustände, eine Liste mit geöffneten/gekippten Fenstern, ein Liste mit eingeschalteten Lampen usw. usw. usw. ein.
Wenn Ihr nun Lust auf das Blockly habt, dann ist jetzt einmalig etwas Fleißarbeit angesagt. Bevor Ihr das Blockly nutzen könnt, müssen die Alias für Eure Geräte, die Ihr im Blockly verwenden wollt, erstellt werden. Dafür eignet sich die Scriptvorlage von @CruziX hervorragend. Mit dieser Vorlage können alle Alias auf einmal erstellt werden. Eine Vorlage als Beispiel findet Ihr im Spoiler. An dieser Stelle sei gleich gesagt, sinnvolle Namen im Alias zu verwenden (id ist egal, nur der Name ist gemeint), da diese Namen dann für alles im Blockly verwendet werden, also alle Gerätenamen allgemein. Also immer so erstellen, das sich der Name auch z.B. für Alexa aussprechen lässt.
In der id keine Leerzeichen/Sonderzeichen oder Umlaute verwenden, damit vermeidet man direkt im Vorfeld mögliche Fehler.
Als erstes solltet ihr in den Aufzählungen neue Funktionen erstellen, diese kann man dann gleich im alias Script benutzen. Da auf das Plus drücken.

dann auf das Plus bei neue benutzerdefinierte Gruppe klicken

Ich habe folgende erstellt (wenn Ihr die gleichen nehmt müsst Ihr das nichtmal im Blockly umstellen)
batterien_voll_leer_alias
batterien_volt_alias
bewegungsmelder_alias
fenster_alias
licht_alias
steckdosen_alias
temperaturen_alias
tueren_alias
batterien_prozent_aliasDas sind die Selektoren im Blockly









Das ganze sieht dann nach dem Blockly Start in den Objekten z.B. so aus: (wenn alle Schalter im Blockly auf wahr stehen)

01_Anzeigen_und_Listen

02_Trigger_und_Schalter

03_HTML_Daten hat zwei Unterordner

01_HTML_Hell_Dunkel_Festeinstellung ist nicht veränderbar und sieht so aus (helle Einstellung aktiv)

03_HTML_Eigene_Einstellung enthält die gleichen Datenpunkte und wird beim ersten verwenden des Triggers mit Standardwerten befüllt. Diese Werte können dann mit eigenen Werten überschrieben werden.
Und hier noch der Rest

Die Bilder bzw. Icon links und rechts habe ich als Base64 eingefügt. Ich benutze dafür das hier: https://www.base64-image.de/
Wenn iQontrol installiert ist, dann funktioniert auch der Pfad zu einem Icon (einfach den eingestellten Pfad zum Icon aus iQontrol kopieren und einfügen)
In den eigenen 02_HTML_Eigene_Einstellungen kann alles selbst an die eigenen Wünsche angepasst werden.Hier noch ein kurzes GiF
(klick auf das linke Icon schaltet die Farbeinstellungen durch. klick auf das rechte Icon blendet die Tabelle ein und aus bzw. schaltet auf aktiv/inaktiv)

Hallo, wird Linkeddevices nicht unterstützt?
Gerät unbekannt:
Bad an, Funkschalter Vorraum 1 an, Schlafzimmer an, Büro aus, Geraet unbekannt aus, Hue Spot 1 aus, Hue Spot 2 aus, Hue lightstrip Küche ausBeispiel beim Licht Skript:

-
Hallo, wird Linkeddevices nicht unterstützt?
Gerät unbekannt:
Bad an, Funkschalter Vorraum 1 an, Schlafzimmer an, Büro aus, Geraet unbekannt aus, Hue Spot 1 aus, Hue Spot 2 aus, Hue lightstrip Küche ausBeispiel beim Licht Skript:

-
@Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
@sigi234 zeig mal den RAW Datenpunkt :)
{ "from": "system.adapter.linkeddevices.0", "user": "system.user.admin", "ts": 1590156753378, "common": { "name": "Led Wohnzimmer", "type": "boolean", "role": "state", "desc": "Created by linkeddevices", "min": false, "max": true, "smartName": { "de": "Wohnzimmer Led", "smartType": "LIGHT" }, "custom": { "linkeddevices.0": { "enabled": true, "parentId": "wifilight.0.192_168_178_28.on", "parentType": "boolean", "isLinked": true, "mergeSettingsOnRestart": true } }, "icon": "linkeddevices_small.png" }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "linkeddevices.0.Led Wohnzimmer.on", "type": "state" } -
@Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
@sigi234 zeig mal den RAW Datenpunkt :)
{ "from": "system.adapter.linkeddevices.0", "user": "system.user.admin", "ts": 1590156753378, "common": { "name": "Led Wohnzimmer", "type": "boolean", "role": "state", "desc": "Created by linkeddevices", "min": false, "max": true, "smartName": { "de": "Wohnzimmer Led", "smartType": "LIGHT" }, "custom": { "linkeddevices.0": { "enabled": true, "parentId": "wifilight.0.192_168_178_28.on", "parentType": "boolean", "isLinked": true, "mergeSettingsOnRestart": true } }, "icon": "linkeddevices_small.png" }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "linkeddevices.0.Led Wohnzimmer.on", "type": "state" }@sigi234 dafür müsstest bei getParentName noch folgende Zeile ergänzen (Name wäre aber nicht so schön...):
if (name.substr( -3) == ('.on')) return name.slice(0, -3);alternativ, wenn du nur .on-Datenpunkte von LinkedDevices drin hast so:
if (name.substr( -3) == ('.on')) return name.slice(17, -3);teste mal.
-
@sigi234 dafür müsstest bei getParentName noch folgende Zeile ergänzen (Name wäre aber nicht so schön...):
if (name.substr( -3) == ('.on')) return name.slice(0, -3);alternativ, wenn du nur .on-Datenpunkte von LinkedDevices drin hast so:
if (name.substr( -3) == ('.on')) return name.slice(17, -3);teste mal.
@Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
getParentName
Wohin einfügen?
-
@Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
getParentName
Wohin einfügen?
-
@sigi234 Bilder sagen mehr als 1000 Worte:


Man wäre ich Stolz, wenn ich dir hätte jetzt helfen können :grinning:
@Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
@sigi234 Bilder sagen mehr als 1000 Worte:
Man wäre ich Stolz, wenn ich dir hätte jetzt helfen können :grinning:
:+1: :grinning:
Bad an, Funkschalter Vorraum 1 an, Schlafzimmer an, Büro aus, Hue Spot 1 aus, Hue Spot 2 aus, Hue lightstrip Küche aus, Led Wohnzimmer aus








