Falls jemand mal die Sprachausgabe von aktuellem Datum und Uhrzeit auf dem Android Tablet realisieren möchte. Benötigt WebViewControl (für ttsSay) siehe: http://forum.fhem.de/index.php/topic,10628.0.html
##############################################
#Sprachausgabe auf Android Tablet
#benötigt WebViewControl
#Frank D. 23.07.2014
##############################################
package main;
use strict;
use warnings;
use POSIX;
use CGI::Carp qw(fatalsToBrowser);
sub
myoutdateUtils_Initialize($$)
{
my ($hash) = @_;
}
sub date_time()
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my $datum_2 = sprintf("%s der %2d. %s %04d",
$Wochentage[$Wochentag],
$Monatstag,
$Monatsnamen[$Monat-1],
$Jahr,
);
my $zeit_1 = sprintf("%02d:%02d Uhr",
$Stunden,
$Minuten,
);
#return $datum_2;
#Sprachausgabe
fhem "set androidTablet ttsSay $datum_2, $zeit_1";
#
}
1;
Mit der Änderung von fhem "set androidTablet ttsSay $datum_2, $zeit_1"; in "set MyTTS tts..." müsste die Ausgabe auch mit Text2Speech funktionieren, hab ich aber nicht getestet.
P.S. Version mit Ansage der Temperatur weiter unten in Antwort 7
VG
Frank
Hm, ich würde ja tendentiell raten, einfach nur die Variablen Tag, Monat, Jahr, Stunden und Minuten zurück zu liefern.
Dann kann man das auch bequem in anderen Teilen von fhem nutzen, sowie sich seine Sprachausgabe selber zusammen basteln.
Unabhängig vom Modul das letztlich die Zeit anzeigt/spricht?
Hab mir das gebastelt, um mir nach dem Aufstehen und betreten des Wohnzimmers den Wochentag, Datum und Uhrzeit ansagen zu lassen. Da ich WebVievControl auf dem Tablet sowieso 24/7 laufen habe habe ich es für ttsSay geschrieben, sollte beim Aufruf von {date_time} aber auch mit myTTS tts funktionieren und ist durch die sub auch von fhem in anderen Teilen verwendbar.
Ist ja nur die Zeile:
fhem "set androidTablet ttsSay $datum_2, $zeit_1";
Oder wer den String braucht, mit return ($datum_2, $zeit_1)
zu ändern
VG
Frank
Nachtrag,
habe das ganze mit der Ausgabe der aktuellen Außentemperatur erweitert dabei wird bei
der Ausgabe über MyTTS (Text2Speech) leider kein "Komma" angesagt. Mit ttsSay geht es aber. Eigendlich benutzen ja beide Module die Google Engine. Habe das aber nicht weiter verfolgt, da sämtliche Sprachausgaben bei mir über ttsSay erfolgen.
VG
Frank
Hallo Franky08,
könntest Du nochmal den Codeschnipsel posten bei dem auch die Temperatur drin vorkommt ich sehe hier nur Datum Uhrzeit
Hallo,
der Betreff heisst ja auch Sprachausgabe von Datum und Zeit auf Android Tablet
Ich lese hier nichts was mit der Temperatur zu tun haben sollte.
Aber im anderen Beitrag hast du Antwort - es bringt nichts seine Frage breit zu fächern ;)
Grüße
Hallo franky08, bekomme es bei mir nicht am laufen, habe deine pm datei in meinen Ordner FHEM kopiert, und neugestartet, aber er spricht immer nur "Dollar Datum Unterstrich 2" usw.
Was mache ich falsch ?
Grüße Marcel
Hier nochmal die komplette sub, mit Ansage der Temperatur. Getestet nur mit ttsSay von WebViewControl:
##############################################
package main;
use strict;
use warnings;
use POSIX;
use CGI::Carp qw(fatalsToBrowser);
sub
myoutdateUtils_Initialize($$)
{
my ($hash) = @_;
}
sub date_time()
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my $datum_2 = sprintf("Hallo,guten Tag, heute ist %s der %2d. %s %04d",
$Wochentage[$Wochentag],
$Monatstag,
$Monatsnamen[$Monat-1],
$Jahr,
);
my $zeit_1 = sprintf("Es ist %02d:%02d Uhr",
$Stunden,
$Minuten,
);
my $temp=ReadingsVal('Temperatur_Garten','temperature','Fehler');
fhem "set ViewSonic ttsSay $datum_2, $zeit_1, Die aktuelle Temperatur im Garten beträgt $temp Grad";
}
1;
VG
Frank
@Ma_Bo
Wie machst du die Sprachausgabe, über ttsSay (WVC) oder über TTS? Mit ttsSay von WebViewControl sollte es funktionieren, mit TTS (Text2Speech) habe ich es NICHT getestet!
VG
Frank
Über ttsSay (WVC) , aber habe jetzt mal ein wenig getestet, läuft jetzt. ;)
Hallo Ma_Bo
ich habe das gleiche Problem mit der Sprachausgabe
Kannst Du mir bitte erklären, wie du es gelöst bekommen hast?
Danke im voraus
tagedieb
@tagedieb
Hallo, was passiert wenn du in der Komandozeile {date_time} eingibst?
Und:
Zitat von: franky08 am 13 Dezember 2014, 16:27:33
Wie machst du die Sprachausgabe, über ttsSay (WVC) oder über TTS? Mit ttsSay von WebViewControl sollte es funktionieren, mit TTS (Text2Speech) habe ich es NICHT getestet!
VG
Frank
Hallo franky08
danke für deine Hilfestellung -
es passiert etwas eigenartiges Please define androidTablet first
mein fhem Befehl lautete jedoch set Kuechendisplay ttsSay $datum_2, $zeit_1
muss ich dieses "androidTablet" stellvertretend für meine Androidtablets installieren?
gruss tagedieb
Nee ;)
Bei mir hat das Teil den Namen androidTablet, den must du natürlich anpassen! Wenn das Teil bei dir "Kuechendisplay" heist.
Die letzte Zeile in der utils:
fhem "set ViewSonic ttsSay $datum_2, $zeit_1, Die aktuelle Temperatur im Garten beträgt $temp Grad";
ViewSonic mit Kuechendisplay ersetzen
Oder aus dem ersten Code androidTablet mit Kuechendisplay ersetzen:
fhem "set androidTablet ttsSay $datum_2, $zeit_1";
Hallo franky08
danke - ich habe es auch gerade gesehen und geändert - ES funktioniert ;D
vielen, vielen Dank!!
ich wünsche einen schönen 3.Advent
gruss tagedieb
Joh, gleichfalls einen schönen 3. Advent.
VG
Frank
Kann mir einmal bitte einer Helfen.......
habe die Datei 99_myout.....jetzt im edit file ordner stehen. wie kann ich das denn jetzt mit webviewcontrol verknüpfen....
Hallo die letzte codezeile in der utils ist für die Sprachausgabe zuständig:
#Sprachausgabe
fhem "set androidTablet ttsSay $datum_2, $zeit_1";
"androidTablet" must du natürlich mit dem Namen deines Tablets, welches du in WVC definiert hast, ersetzen!
P.S. die "Verknüpfung" mit WVC ist doch über ttsSay schon gegeben, da must du nichts mehr machen.
P.S.2 und der Aufruf aus fhem heraus erfolgt durch Aufruf der sub, also {date_time}
VG
Frank
Ich habe auch noch einmal eine Frage........wann sagt es das ??? wenn du aufstehst....aber wie wird es aktiviert....??
Wird bei mir über einen Bewegungsmelder getriggert aber erst ab einer bestimmten Helligkeit (über at disable 0) ist und nach der Ansage wird das notify bis zum nächsten Morgen deaktiviert (disable 1)
VG
Frank
Hallo,
bin blutiger Anfänger , könnte bitte Jemand ein Bespiel schreiben wie man den Code aus FHEM bei einem Notify aufruft?
Vielen Dank
Joachim
Hallo, welchen Code möchtest du aus einem notify aufrufen und wie soll notify getriggert werden?
VG
Frank
Hallo Frank,
ich würde das zB. verbinden wollen mit dem Anschalten einer Lampe oder auch wenn ich mein LG TV anmache.
Den Part der Notify's verstehe ich inzwischen, aber ich weiss nicht wie es weitergehen muss, dass dann das Modul aufgerufen wird..
Das ist jetzt nur Pseudocode, ich weiss ja leider nicht wie es richtig aussehen muss.. :-\
define Zeitansage_WZ_Lampe_an notify WZ_Lampe set ttssay ZEITANSAGE
VG
Joachim
Hallo, du must mit dem notify die sub aufrufen. Also, wenn der Name der sub <date_time> lautet, dann rufst du das über
{date_time} auf.
Also
define Zeitansage_WZ_Lampe_an notify WZ_Lampe {date_time}
VG
Frank
P.S. ich würde WZ_Lampe noch ein regex spendieren, sonst löst das notify bei jedem Event von WZ_Lampe aus, z.B.
... notify WZ_Lampe:on {date_time} löst aus wenn die Lampe eingeschaltet wird
Hallo Frank,
danke - jetzt hab ich's kapiert. :)
Viele Grüße
Joachim