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.
    Wie man dies auf der Fritzbox einrichtet, beschreibe ich hier kurz.

  • 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.

Variable anlegen

Quicktipp: Variable anlegen

  • GOOGLETTS
    Name: GOOGLETTS Typ: Zeichenkette

Homematic Sprachansage über Google Home oder Chromecast Variable GOOGLETTS

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.
Homematic_node-red-contrib-chromecast

Node-Red Flow erstellen

Die komplette Logik wird in einem neuen Flow abgebildet.
Das sieht dann wie folgt aus:

Homematic RedMatic Google Home Sprachansage Flow

  • 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.

    RedMatic Flow Import 1

    Anschließend wählt man new flow und klickt auf Import.
    RedMatic Flow Import 2

    [
        {
            "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.
    Homematic RedMatic Google Home TTS_ P aendern

  • Flow veröffentlichen

    Ist alles soweit umgesetzt, erfolgt per Klick auf Deploy die Veröffentlichung des Flows.
    RedMatic Flow veröffentlichen

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!


Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

Fatal error: Uncaught Exception: Template 'templates/form/web/widgets/#type.html' not found ! in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php:723 Stack trace: #0 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php(454): WYSIJA_help_render_engine->_loadTemplate('templates/form/...') #1 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php(169): WYSIJA_help_render_engine->_parse('\n{include file=...') #2 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/form_engine.php(756): WYSIJA_help_render_engine->render(Array, 'templates/form/...') #3 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/form_engine.php(638): WYSIJA_help_form_engine->render_web_body() #4 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/views/front/widget_nl.php(160): WY in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 723