Homematic Sprachansage auf Google Home / Chromecast
Homematic Sprachansage per TextToSpeech auf dem Google Home oder Chromecast sprechen lassen
Ich nutze Homematic Sprachansagen schon über eine lange Zeit. So wird z.B. angesagt wenn die Waschmaschine fertig ist oder sich Jemand im Garten bewegt.
Diese Art der Sprachansagen nutze ich über ein Android Tablet schon mehrere Jahre. Nun ist das auch über den Google Home möglich!
Nach der Umsetzung dieser Anleitung kann in einem Programm einfach eine Variable mit einem Text gefüllt werden. Dieser Text wird beim ausführen eines Programms auf dem Google Home als Sprachansage ausgegeben.
Voraussetzung ist eine lauffähige RedMatic Installation
TIPP: Installation RedMatic-Addon
Los geht’s!
IP-Adresse fest vergeben
-
Zuerst müssen wir dafür sorgen, dass der Google Home Lautsprecher immer die gleiche IP-Adresse vom DHCP zugewiesen bekommen.
- Auf der Fritzbox-Weboberfläche einloggen.
- Unter Heimnetz > Heimnetzübersicht die Geräte heraussuchen.
- Unter Details des jeweiligen Smartphones die Option Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen setzen und die IP-Adresse notieren. Hier kann auch gleich ein gebräuchlicher Name als Hostname vergeben werden. Mit dem Speedport oder auch anderen Routern funktioniert dies ähnlich.
Wie man dies auf der Fritzbox einrichtet, beschreibe ich hier kurz.
Variable anlegen
- GOOGLETTS
Name: GOOGLETTS Typ: Zeichenkette
Node-Red Nodes installieren
Um den Google Home sprechen zu lassen, benötigt Node-Red 2 zusätzliche Nodes:
- node-red-contrib-chromecast
- node-red-contrib-google-tts
Diese lassen sich bequem über den Node-Red Menüpunkt Manage Palette installieren.
Dazu öffnet man in der Homematic-Weboberfläche den Menüpunkt Node-Red unter Einstellungen -> Systemsteuerung -> Node-Red und anschließend Manage Palette oder drückt Strg+Shift+P.
Dort nun auf den Reiter Install wechseln und einfach nach z.B. node-red-contrib-chromecast suchen und auf Installieren klicken.
Node-Red Flow erstellen
Die komplette Logik wird in einem neuen Flow abgebildet.
Das sieht dann wie folgt aus:
-
Importieren
Normalerweise würde man dazu im Node-Red Menü auf + klicken und sich die entsprechenden Nodes zurechtklicken.
Da dort noch einige Parameter eingestellt werden müssen, könnt ihr euch mein Flow einfach importieren.
Dazu kopiert man das nachfolgende Script per Strg+C in die Zwischenablage und geht oben rechts im Node-Red Menü unter Import auf Clipboard.
Anschließend wählt man new flow und klickt auf Import.
[ { "id": "8795429a.00c0e", "type": "tab", "label": "Google-Home-TTS", "disabled": false, "info": "Homematic-Guru.de\nHomematic Sprachansage auf Google Home / Chromecast\nhttps://homematic-guru.de/homematic-sprachansage-auf-google-home-chromecast\n" }, { "id": "6ec066e5.53fb88", "type": "google-tts", "z": "8795429a.00c0e", "name": "tts", "inputField": "payload", "inputFieldType": "msg", "outputField": "payload", "outputFieldType": "msg", "languageField": "de", "languageFieldType": "str", "speedField": "1", "speedFieldType": "num", "x": 265, "y": 93, "wires": [ [ "78cc9b5b.c3a094" ] ] }, { "id": "93b76709.9ffa38", "type": "chromecast-play", "z": "8795429a.00c0e", "name": "", "url": "", "contentType": "", "ip": "", "x": 539, "y": 92, "wires": [ [ "dcc0c6a3.9725d8" ] ] }, { "id": "78cc9b5b.c3a094", "type": "function", "z": "8795429a.00c0e", "name": "Parameter", "func": "msg.payload = {\n ip: '192.168.2.123', //Google Home oder Chromecast IP\n url: msg.payload,\n contentType: 'audio/mp3'\n}\nreturn msg;", "outputs": 1, "noerr": 0, "x": 401, "y": 92, "wires": [ [ "93b76709.9ffa38" ] ] }, { "id": "1861a96b.743187", "type": "ccu-sysvar", "z": "8795429a.00c0e", "name": "GOOGLETTS", "ccuConfig": "38263145.35ea0e", "topic": "ReGaHSS/${Name}", "x": 118, "y": 93, "wires": [ [ "6ec066e5.53fb88" ] ] }, { "id": "a1f4644c.2bd9d8", "type": "ccu-sysvar", "z": "8795429a.00c0e", "name": "GOOGLETTS", "ccuConfig": "38263145.35ea0e", "topic": "ReGaHSS/${Name}", "x": 839, "y": 166, "wires": [ [] ] }, { "id": "dcc0c6a3.9725d8", "type": "template", "z": "8795429a.00c0e", "name": "Text löschen", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "plain", "template": "", "output": "str", "x": 682, "y": 166, "wires": [ [ "a1f4644c.2bd9d8" ] ] }, { "id": "38263145.35ea0e", "type": "ccu-connection", "z": "", "name": "localhost", "host": "localhost", "regaEnabled": true, "bcrfEnabled": true, "iprfEnabled": true, "virtEnabled": true, "bcwiEnabled": false, "cuxdEnabled": false, "regaPoll": true, "regaInterval": "30", "rpcPingTimeout": "60", "rpcInitAddress": "127.0.0.1", "rpcServerHost": "127.0.0.1", "rpcBinPort": "2047", "rpcXmlPort": "2048" } ]
-
Parameter anpassen
Nun muss noch die IP des Google Home bzw. Chromecast im Script geändert werden.
Dazu einfach einen Doppelklick auf das Element Parameter machen und die IP abändern.
-
Flow veröffentlichen
Ist alles soweit umgesetzt, erfolgt per Klick auf Deploy die Veröffentlichung des Flows.
Jetzt ertönt aus dem Google Home Lautsprecher eine Sprachansage mit dem Text, den man in die Variable GOOGLETTS schreibt.
Hier ist ein schönes Beispiel, wie man diese Sprachausgabe einsetzen kann.
Fertig!