Hallo,
lange habe ich überlegt, wie ich eine manierliche Sprachausgabe des Fibaro Systems hinbekomme. Mit der folgenden Lösung reicht schon ein ausrangiertes Smartphone um eine manierliche Sprachrausgabe zu bekommen (durch das Handy sogar über Bluetooth etc…)
Benötigt werden:
- ein Android Smartphone (wegen der App - evtl. gibt es diese auch bei iOS, dann darf es natürlich auch ein IPhone sein)
- die App Automagic (erhältlich im Playstore - credits an Martin, welcher hier schon seit Jahren einen unangetasteten Support bietet und jegliche Probleme schnell löst und in neuen Funktionen umsetzt)
- idealerweise sollte am Smartphone eine feste IP vergeben werden
Kurzbeschreibung:
Sobald sich der Inhalt einer globalen Variable z.B. “Sprachausgabe” verändert, wird am Smartphone der Inhalt der Variable als Text laut vorgelesen (dies kann dann einfach so am eigenen Handy passieren - so ist es bei mir, da ich das Handy immer in der Hosentasche habe -, oder aber auch über Lautsprecher in den Räumen wie z.B. bei Alexa etc - ich denke die Möglichkeiten hier sind ja unbegrenzt, da jedes Smartphone Bluetooth und Klinkenausgang besitzt).
wie funktionierts?:
Fibaro gibt einen HTTP Request aus und am Handy läuft ein einfacher stromsparender Web Browser (durch die App Automagic einfachst programmiert), welcher
die Nachricht empfängt und den Text als Sprachausgabe verarbeitet und ausgibt.
Im Anhang die Szene zum senden des Textes wenn die Variable Sprachausgabe geändert wird, und der sogenannte Flow der App welcher die Ausgabe dann ausführt.
Über weiterführende Ideen würde ich mich freuen. Ich beabsichtige mir morgens wenn ich unter der Woche das erste mal Licht im Badezimmer einschalte, die aktuelle Wetterlage, den Stromverbrauch von gestern und Informationen wie Termine zur Müllabholung, zum gestrigen Stromverbrauch etc vorlesen zu lassen.
Wichtig! Bitte den im folgenden Satz die IP Adresse auf die Eures Smartphones ändern:
local url = (“http://<IP-ADRESSE-HIER>:<PORT-HIER>/automagic?text=” …speak);
Viel Spaß damit!
P.S. @fibaro, bitte integriert doch mal eine solche Sprachausgabe in Eure App - dies wäre ein leichtes und wir bräuchten nicht diesen Umweg zu gehen - ausrangierte Smartphones gibt es mittlerweile genügend.
--[[
%% properties
%% weather
%% events
%% globals
Sprachausgabe
--]]
---------------------------------------------------------------------------
------------------- Fibaro Sprachausgabe ~ by McTool 2017 -----------------
---------------------------------------------------------------------------
--
-- Hard- Software needed for audio output: Smartphone + Tasker-App Automagic
-- Trigger: variable "Sprachausgabe"
--
-- function: if variable "Sprachausgabe" changes this script sends a http
-- request to every IP listet in the Settings.
-- The app Automagic (available for Android Smartphones through
-- the playstore) gives an speech output.
--
-- Flow: in the app Automagic we need to create a Flow with the following
-- points:
-- 1. HTTP Request with path /automagic (standard) and Port 8080
-- 2. Speechoutput with the text: {param_text}
-- ... further we could save the volume before output and set it to loud,
-- then output and set it back to normal. An other action could be to
-- display the text of {param_text} as a toast message on handy screen.
--
-- I searched long for the way of giving fibaro an speech output. Now we
-- can use old smartphones and connect them even with bluetooth or an audio
-- cable to get the speech-output in every room (or just by your handy that
-- you wear with you) ---> enjoy!
---------------------------------------------------------------------------
local speak = tostring(fibaro:getGlobalValue("Sprachausgabe"));
-- format http output string...
local url = ("http://192.168.2.88:8080/automagic?text=" ..speak);
-- ...and replace every space with sign %20
local url=string.gsub(url," ","%%20");
-- save date and time for debug output
Date = os.date("%d.%m.%y", os.time())
-- output
local http = net.HTTPClient()
http:request(url, {
success = function(resp)
if resp.status == 200 then
fibaro:debug(Date .." - Success-output: " ..speak);
else
fibaro:debug(Date .." - Error:" ..resp.status)
end
end
})
-- reset of variable:
fibaro:setGlobal("Sprachausgabe", '');
-------------------------------------------------------------------------