How-To Fibaro Sprachausgabe (so gehts)

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", '');

-------------------------------------------------------------------------

Vielen Dank für deinen Beitrag :slight_smile:

Fibaro liest hier glaub ich leider nicht mit. Vielleicht entwickelt sich sowas bei der Amazaon Alexa-Integration, das wäre sicherlich interessant.

Gruß

Nach ersten Tests, funktioniert das ganze prima. Da das Empfangsgerät sehr leistungsfähig ist können damit auch sehr einfach Netzwerkweite Befehle, aufgeführt werden…

Einige in null komma nichts zu realisierende Dinge wären z. B.

… WakeOnLan
… Dateien etc auf Servern löschen
… SMS,Threema Nachrichten oder Emails. versenden
… bei neueren Android Versionen wird dadurch auch ein Port geöffnet und der Ping um Anwesenheit festzustellen ist damit wieder möglich.
… womöglich ist sogar eine Interaktion wie mit Amazon Echo etc mit Hilfe des Sprachassistenten am Smartphone realisierbar.

… Alles was wir mit dem Smartphone tun können, kann durch eine Tasker App und einen HTTP Server nun auch Fibaro.

Ich habe das jetzt noch nicht ausprobiert, aber warum geht das nur mit einem ausrangiertem/altem Smartphone?

Sorry für die späte Antwort. Das ist wohl ein Missverständnis, natürlich kann auch ein Google Pixel Plus für diese Aufgabe genommen werden.

Bei einer Festinstallation, so wie ich es in 2 Wohnbereichen vor habe reicht allerdings jedes Smartphone ab Android 4.1 aus. Es gibt ja genug ausrangierte Handys auf der Welt denke ich. Hierfür werde ich noch in ein paar aktive Lautsprecher und eine realistische Stimmausgabe investieren.

Hallo ragnarok

Ich hatte bei mir Probleme das Galaxy meiner Frau anzupingen da auch nach mehreren Scans kein offener Port zu finden war.
Verstehe ich das richtig, die App Automagic würde dieses Problem beheben indem es einen Port auf dem Handy öffnet?

Genau!

Scheinbar haben die neuen Android Versionen keine ständig offenen Ports mehr.

Mit Hilfe der app und eines http Webserver lässt sich jeder beliebige Port öffnen.
Ich hatte sonst keine andere app zum öffnen gefunden.

Weiter lässt sich somit die oben umworbenen Funktionen realisieren uvm. Eine Kommunikation zwischen Handy und Fibaro im vollen Umfang ist möglich.