Homematic Sprachansage auf Android Tablet

Homematic Sprachansage per TextToSpeech Framework

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.
Da sich diese Art Ansagen sich angehäuft hatten, wurde also in jedem Programm ein Script eingefügt, das bis auf den auszugebenden Text immer identisch war. Inspririert durch das Telegram-Framework, habe ich kurzerhand ein Framework für den Home24-Mediaplayer gebastelt. Jetzt kann in einem Programm einfach eine Variable mit einem Text gefüllt werden. Dieser Text wird beim ausführen später auf dem Smartphone oder Tablet als Sprachansage ausgegeben.
Was man sonst noch tolles mit mit diesem Framework anstellen kann, ist in einem anderen Beitrag von mir zu lesen 🙂

Voraussetzung ist eine lauffähige CUxD Installation mit Exec-Gerät Konfiguration
TIPP: Installation CUxD-Addon

IP-Adresse fest vergeben

    Zuerst müssen wir dafür sorgen, dass alle Smartphones 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.

Home24-Mediaplayer auf Android-Gerät installieren
https://play.google.com/store/apps/details?id=com.home24.mediaplayer&hl=de
Sollte die App nicht funktionieren, so ist unter Umständen evtl. noch die App Home24 notwendig. Diese ist VOR dem Home24-Mediaplayer zu installieren.
Funktionstest im Browser mit http://HIER_DIE_IP_ADRESSE_EINTRAGEN:50000/tts=test

Variable anlegen
Quicktipp: Variable anlegen

  • Ansage
    Name: Ansage Typ: Zeichenkette

Programm anlegen
Quicktipp: Programm anlegen

  • Programm Ansage ausloesen
    Bedingung: Wenn… Systemzustand Variable Ansage bei Aktualisierung auslösen.
    Aktivität: Dann… Hier nichts eintragen!
    Sonst: Script sofort auslösen
    Homematic Sprachansage
    Achtung: im Script muss die IP-Adresse ihres Gerätes eingetragen werden!

    ! Home24 Mediaplayer-FRAMEWORK
    ! by www.homematic-guru.de
    
    string ip = "192.168.2.199"; !Hier die IP ihres Gerätes eintragen
    object o_msg = dom.GetObject ("Ansage");
    string s_msg = "." # o_msg.Value() # ".";
    
    if (s_msg != "..") {
      string s_replace;
      string s_newmsg;
      string s_atom;
      boolean b_first;
      foreach (s_replace, "Ä-%C3%84\tÖ-%C3%96\tÜ-%C3%9C\tä-%C3%A4\tö-%C3%B6\tü-%C3%BC\t&-%26\tß-%C3%9F") {
        b_first = true;
        s_newmsg = "";
        foreach (s_atom, s_msg.Split (s_replace.StrValueByIndex ("-", 0))) {
          if (b_first) {
            if (s_atom != s_msg) {
              s_newmsg = s_atom;
            }
            b_first = false;
          } else {
            s_newmsg = s_newmsg # s_replace.StrValueByIndex ("-", 1) # s_atom;
          }
        }
        if (s_atom != s_msg) {
          s_msg = s_newmsg;
        }
      }
      s_msg = s_msg.Substr (1, s_msg.Length() - 2);
    
      string s_cmd = "wget --no-check-certificate --quiet -O /dev/null \"http://" + ip + ":50000/tts=" # s_msg # "\"";
      dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State (s_cmd);
      o_msg.State ("");
    }
    !  Ende des Scripts
    

Jetzt ertönt aus dem Android-Gerät eine Sprachansage mit dem Text, den man in die Variable Ansage schreibt.

Hier ist ein schönes Beispiel, wie man dieses Framework einsetzen kann.

Fertig!

Verwendete Hardware


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