Wenn`s klingelt spricht Alexa

Ich habe vor einigen Tagen mein Projekt abgeschlossen, das ich hier und jetzt mit euch teilen möchte.

Mein Wunsch war es immer schon wenn`s draußen klingelt wollte ich drinnen eine Sprachausgabe haben, sei es über Sonos oder Alexa. Nun gibt es ja verschiedene Ansätze über Raspberry usw, das mir aber dann immer zu aufwändig war.

Mein Aufbau jetzt sieht aus wie folgt, draußen an der Haustür einen Berker Doppel Taster aber nur mit einer Wippe. Der eine Schließer ist für die Klingel, der zweite geht auf meinen Fibaro Universal Binary Sensor. Weil beide Schließer potentialfrei sind gibt es da auch keinerlei Probleme. Somit habe ich einen Trigger für alles was ich in meiner HC2 ansteuern möchte. z.B. geht ein Monitor für 30 Sekunden an oder eine Lampe im Bad kurz an.

Nun zur Sprachsteuerung, vor kurzen hatte ich mir zwei Buttons von Amazon bestellt, um etwas zu probieren. Dabei habe ich gesehen, dass man eine Routine programmieren kann, das wenn man drückt Alexa irgendwas sagt.

Ich habe dann den Button aufgeschraubt und an einem der drei Taster anstelle der Feder zwei Drähte angelötet und diese dann an meinem Universal Binary Sensor angeschlossen. Und jetzt, wenn es klingelt spricht mein Echo Dot oder Show „es hat jemand geklingelt“.

Nun kann man aber bei einer Routine mit Sprachausgabe immer nur Gerät ansteuern, weshalb ich mehrere Routinen mit gleichem Inhalt erstellt habe nur immer ein anderes Gerät angewählt, und siehe da alle meine Alexas sprechen wenn`s draußen klingelt.

Grüße

DickerDad

2 Like

Mega!
Das muss ich nachbauen!
Hast du mal ein Link zum Amazon Button?
Meinst du die dashbuttons?

die Idee mit mehreren Routines ist genial ,bin ich nicht draufgekommen ,danke

1 Like

Echo Buttons (Pack mit 2 Buttons) - Ein lustiger Begleiter für Echo

Nicht die Dashbuttons…

Sehr tolle Lösung.

Kannst du ein Schaltplan skizzieren für uns und die Nachwelt deiner Lösung?
Ein Bild wie du die Drähte verlötet hast wäre auch hilfreich.

Button habe ich gefunden:
Echo Buttons (Pack mit 2 Buttons) - Ein lustiger Begleiter für Echo

Beste Grüße

Hallo zusammen,
es freut mich sehr das mein Projekt bei euch Zuspruch findet, hier jetzt grob ein Schaltbild mit Echo Button und dem Binary Sensor.

Die vier Metallfedern müsst ihr natürlich beim zusammenbau weglassen, und die drei kleinen Kunststoff Schalter die auf die Platine drücken auch.

Grüße

Buttonmit%20Draht
echo-button-2-

1 Like

Ich selber habe aber bei dieser ganzen Schaltung aber noch ein Problem, und vielleicht kann mir da jemand von euch helfen. Ich hatte das Problem schon einmal gepostet bin aber nicht weiter gekommen. Wie oben beschrieben wird beim klingeln draußen mein Monitor in der Küche für 60 Sekunden eingeschaltet wenn er aus ist. Das funktioniert auch soweit ganz gut mit einer grafischen Szene. Das einzige Problem an der Sache ist, wenn der Monitor schon eingeschaltet ist, und das auch so bleiben soll, geht er nach 60 Sek. aus. Das würde ich gerne mit LUA ändern. Wenn der Klingeltaster gedrückt wird, wird eine Abfrage der Geräte gemacht wird, ob eingeschaltet oder nicht. Der Monitor soll dann eingeschaltet bleiben, die Leuchten sollen kurz für 5 Sekunden ein- und dann sofort wieder ausschalten. Kann mir jemand bei dieser Szene helfen, oder gibt es so eine Szene schon, da ich selber mit LUA keinerlei Erfahrungen habe.

Grüße

DickerDad

Leider kann ich noch keine vollständigen Szenen in LUA programmieren, aber ich versuche immer die Block-Szene in LUA umzuwandeln und ein paar “Bausteine” auszutauschen. Dass das nicht immer das Gelbe vom Ei ist, weiß ich auch.
Versuch mal das hier:

if (tonumber(fibaro:getValue(MonitorID, “value”)) > 0)
then
debug(“green”,“Monitor ist bereits eingeschaltet.”)
else
fibaro:call(MonitorID,“turnOn”)
fibaro:sleep(60x1000);
fibaro:call(MonitorID,“turnOff”)

Also die Block-Szene in LUA umwandeln (evtl. vorher kopieren) und “MonitorID” durch die ID des Monitors (WallPlug, Switch, etc.) austauschen. Der Block ersetzt dann die letzten drei Zeilen in der Block-Szene:
Monitor…
und…
Monitor…

Um die Debug-Funktion noch einzuschalten, müsste der folgende Code an erster Stelle noch eingefügt werden:

–[[
%% properties
%% events
%% globals
Klingel Neu
–]]

local vardebug = true

function debug(color, message)
if (vardebug) then
fibaro:debug(string.format(’<%s style=“color:%s;”>%s</%s>’, “span”, color, message, “span”));
end
end

Ich hoffe, dass es verständlich ist und funktioniert. Ansonsten einfach mal die Block-Szene in LUA umwandeln und den gesamten Code posten.

An alle Anderen: Sollte der Code falsch oder zu optimieren sein, bin auch ich für jede Unterstützung dankbar.

Edit - Hier gibt´s übrigens eine ganz gute Übersicht von den Standard-LUA-Befehlen:

Sehr schöne Idee. Jetzt mal ganz vereinfacht, wenn ich so einen Button direkt an meine Wohnungstür
packe und in Bluetooth Enternung zu z.B. einem Echo Dot bin, dann klappt die Sprachausgabe auch direkt?
Mal angenommen mir klaut keiner das Teil. :slight_smile:
Da ich auf Z-Way setze könnte ich mir auch eine Verdrahtung wie oben beschrieben vorstellen, aber
fürs Erste suche ich nur Sprachausgabe.
Danke

Hallo, ich glaube nicht das sich der Button über Bluetooth verbindet, er verbindet sich über WLAN, aber grundsätzlich spricht Alexa dann wenn jemand drückt. Ist aber sehr auffällig weil er ja noch blau und grün leuchtet beim drücken.

Grüße

In der Beschreibung steht doch was von Bluetooth, habe ich eben gelesen. Jetzt wundert es mich nur das meiner so funktioniert, er sitzt in meiner Hauptverteilung 20 m entfernt und getrennt durch eine Beton Decke.

–[[
%% properties
306 value
%% weather
%% events
%% globals
–]]

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(306, “value”)) > 0 )
or
startSource[“type”] == “other”
)
then
fibaro:call(219, “turnOn”);
fibaro:call(124, “turnOn”);
fibaro:call(184, “startProgram”, “5”);
fibaro:call(235, “turnOn”);
setTimeout(function()
fibaro:call(124, “turnOff”);
fibaro:call(235, “turnOff”);
end, 5000)
setTimeout(function()
fibaro:call(184, “turnOff”);
end, 10000)
setTimeout(function()
fibaro:call(219, “turnOff”);
end, 30000)
end

@dirkg173 > hier ist meine Szenze in LUA umgewandelt.

Grüße

Ok, so spontan blick ich da jetzt nicht durch. Was mich auch wundert, dass Du jetzt 3 Timeouts hast, in der Blockszene aber nur 2 (5 und 60 Sekunden).
Schreib mir mal bitte, was sich hinter den einzelnen IDs verbirgt.

Hallo, das Timeout 5 Sek kannst du außer Acht lassen, das schaltet nur eine Gruppe von Lampen für 5 Sek. ein und wieder aus. Wichtig ist der Monitor mit ID 219 . ID 124 ist meine Lampe im Büro die auch kurz an und aus geht. ID 184 ist die LED in der Küche , das gleiche. ID 235 ist Licht im Bad alle gehn für 5 Sekunden an und wieder aus.

Grüße

Versuch das mal. Also bitte unten, über dem Debug-Fenster “Start” drücken. Falls das Script nicht durchlaufen sollte, mir die Fehlermeldung posten.
Eventuell muss ich noch etwas nacharbeiten, was “sleep” bzw. “setTimeout” betrifft, mit Zweitem habe ich nämlich noch nicht gearbeitet.

–[[
%% properties
306 value
%% weather
%% events
%% globals
–]]

local Monitor = 219
local Lampe_B = 124
local LED_K = 184
local Licht_B = 235

local vardebug = true

function debug(color, message)
if (vardebug) then
fibaro:debug(string.format(’<%s style=“color:%s;”>%s</%s>’, “span”, color, message, “span”));
end
end

function Monitor_an()
if (tonumber(fibaro:getValue(Monitor, “value”)) > 0)
then
debug(“green”,“Monitor ist bereits eingeschaltet.”)
else
fibaro:call(Monitor,“turnOn”)
fibaro:sleep(60x1000);
fibaro:call(Monitor,“turnOff”)

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(306, “value”)) > 0 )
or
startSource[“type”] == “other”
)
then
fibaro:call(Lampe_B, “turnOn”);
fibaro:call(LED_K, “startProgram”, “5”);
fibaro:call(Licht_B, “turnOn”);
Monitor_an()
setTimeout(function()
fibaro:call(Lampe_B, “turnOff”);
fibaro:call(Licht_B, “turnOff”);
end, 5000)
setTimeout(function()
fibaro:call(LED_K, “turnOff”);
end, 10000)
end

[DEBUG] 15:55:09: 2019-10-19 15:55:09.783402 [ fatal] Unknown exception: /opt/fibaro/scenes/115.lua:1: unexpected symbol near char(226)

Ok, das müssen in Zeile 1 und 7 natürlich zwei Striche sein.
Die Seite hier macht automatisch aus zwei Einzelstrichen einen langen Strich gemacht.

51

[DEBUG] 16:06:51: 2019-10-19 16:06:51.224991 [ fatal] Unknown exception: /opt/fibaro/scenes/115.lua:18: unexpected symbol near char(226)

Jetzt kommt diese Fehlermeldung, aber jetzt schonmal vielen Dank für deine Mühe.

Hm…
Dann tausche bitte die Zeilen 14-20 durch folgende aus:

local function Debug( color, message )
fibaro:debug(string.format(’<%s style=“color:%s;”>%s’, “span”, color, message, “span”))
end

Wie gesagt, ich bastel mir die Szenen meistens aus anderen zusammen. :wink:
Aber warum da eine Fehlermeldung gekommen ist, verstehe ich trotzdem nicht. Das hat nur was mit der Debug-Ausgabe zutun.

Hallo, sorry aber wenn ich die Klingel betätige passiert nichts, also Monitor geht nicht an. Und wieder eine Fehlermeldung…

[DEBUG] 16:15:54: 2019-10-19 16:15:54.106098 [ fatal] Unknown exception: /opt/fibaro/scenes/115.lua:15: unexpected symbol near char(226)