Hallo FHEM Community,
Ich habe seit langer Zeit mehrere TTS Ausgaben als Info oder Warnungen bei mir am laufen. Noch bis vor kurzem als Ausgabe auf mein FritzPhone und aktuell nun auf meine Androidgeräte mit Hilfe des AMAD Modules.
Hier einige Beispiele:
Wenn ich Abends ins Bett gehe informiert mich mein Wohnzimmer Tablet darüber wo noch Fenster offen sind und wie das Wetter am nächsten Morgen wird. So kann ich einschätzen ob ich im Winter zum Beispiel früher aufstehen sollte und wie ich mich anziehen sollte.
Diese Lösung läuft bei mir über das RESIDENTS Device, Abends schalten sich die noch wachen Bewohner auf gotosleep worauf dann das RESIDENTS Device ebenfalls auf gotosleep schaltet und dann kommt die Durchsage, ausserdem geht im Bad das Licht an, in 2 Minuten werden alle Lichter und Verbraucher in nicht benötigten Räumen ausgeschalten und das Flurlicht simuliert einen Sonnenuntergang ;D
## Ansagen
##
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
my $temp = ReadingsVal("weatherProplanta","fc1_temp06","100");
my $condition = ReadingsVal("weatherProplanta","fc1_weatherMorning","Weltuntergang");
my $fensterOffen = statusFensterOffen();
if ($fensterOffen eq "") {
fhem "set Nexus10Wohnzimmer volume 5; sleep 2; set Nexus10Wohnzimmer ttsMsg Es ist $hour:$min Uhr. Morgen früh werden $temp Grad und $condition. Ich wünsche eine gute Nacht";
} else {
fhem "set Nexus10Wohnzimmer volume 5; sleep 2; set Nexus10Wohnzimmer ttsMsg Achtung, $fensterOffen noch offen! Es ist $hour:$min Uhr. Morgen früh werden $temp Grad und $condition. Ich wünsche eine gute Nacht";
}
und hier die Sub "statusFensterOffen" welche ich in einer 99_myUtils_Helper.pm eingetragen habe.
sub statusFensterOffen() {
my @monitored=devspec2array("(FensterKontakt.*):FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
$msgtext .= AttrVal($_,"alias",$_);
if ($i < $cnt_devs - 2) {
$msgtext .= ", ";
}
if ($i == $cnt_devs - 2) {
$msgtext .= " und ";
}
$i++;
}
return $msgtext if ($cnt_devs > 0);
}
Eine Ähnliche Konstellation habe ich am Morgen. Hier habe ich ein Notify, welches ausgelöst wird wenn ein ROOMMATE Device von awoken oder asleep auf home springt.
List vom Notify
Internals:
DEF rr_.*.:home.* { RrHomeAsleepMsg($NAME) }
NAME notifyRrHomeAsleepMsg
NR 275
NTFY_ORDER 50-notifyRrHomeAsleepMsg
REGEXP rr_.*.:home.*
STATE 2015-09-10 05:11:47
TYPE notify
Readings:
2015-09-07 17:40:43 state active
Attributes:
Und hier der Code aus der Sub "RrHomeAsleepMsg" welche wieder in meiner 99_myUtils_Helper.pm drin steht.
sub RrHomeAsleepMsg($) {
my ( $NAME ) = @_;
my $DNAME = AttrVal($NAME,"alias",$NAME);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
my $tempH = ReadingsVal("weatherYahoo","fc1_high_c","100");
my $tempL = ReadingsVal("weatherYahoo","fc1_low_c","100");
my $condition = ReadingsVal("weatherYahoo","fc1_condition","Weltuntergang");
if( $DNAME eq "rr_1" || $DNAME eq "rr_2" ) {
if( ReadingsVal( "$NAME", "lastState", "0" ) eq "awoken" || ReadingsVal( "$NAME", "lastState", "0" ) eq "asleep" ) {
fhem "set Nexus10Wohnzimmer volume 5; sleep 2; set Nexus10Wohnzimmer ttsMsg Guten Morgen $DNAME, es ist $hour:$min Uhr. Heute werden zwischen $tempL und $tempH Grad und $condition.";
return undef;
}
}
}
Und zu guter letzt bat mich noch ein AMAD User darum zu zeigen wie man folgendes lösen kann.
Ein Beispiel für das runterregeln der Musiklautstärke bei ankommenden und abgehenden Anrufen. Der Hintergrund hierfür ist folgender. Mein Wohnzimmer Tablet ist auch gleichzeitig Multimedia Station für Musik. Kommt nun im Wohnzimmer ein Anruf an oder will jemand mit dem Wohnzimmertelefon telefonieren, so wird automatisch die Musiklautstärke runtergeregelt. Im Moment noch etwas dumm, da ich noch keine Bedingung drin habe ob überhaupt Musik gehört wird oder nicht :)
Ich verwende hierfür das "FB_CALLMONITOR" Modul.
Hier ein List meines Notifys.
Internals:
DEF CallmonTuxNetDSL01:event:.* { if ($EVTPART1 eq "call" || $EVTPART1 eq "ring") {
fhem "set Nexus10Wohnzimmer volume 2";
} elsif ($EVTPART1 eq "disconnect") {
fhem "set Nexus10Wohnzimmer volume 5";
}
}
NAME notifyAnrufMusiklautstaerke
NOTIFYDEV CallmonTuxNetDSL01
NR 367
NTFY_ORDER 50-notifyAnrufMusiklautstaerke
REGEXP CallmonTuxNetDSL01:event:.*
STATE 2015-09-09 21:26:07
TYPE notify
Readings:
2015-09-07 17:41:07 state active
Attributes:
Ähnliches habe ich für meine Tochter gelöst. Da sie mit 13 Jahren verständlicher Weise wenig Interesse am familiären Umfeld zeigt (immer Kopfhörer auf um Musik zu hören), habe ich ihre Schreibtischlampe (Hue Color) mit dem CallMonitor verbunden. Nun blinkt Ihre Lampe 10 mal rot auf wenn ein Anruf rein kommt und sonst niemand weiter zu Hause ist.
So das soll es erstmal gewesen sein, hoffe ich konnte damit den einen oder anderen inspirieren.
Grüße
Leon
Hi Loen,
danke für die Beispiele, das runterregeln der Musiklautstärke bei ankommenden und abgehenden Anrufen klappt schon mal ;)
klaus
Guten Morgen Klaus,
Das freut mich das es so gut klappt. Wünsche Dir weiterhin so viel Spaß und vor allem Erfolge.
Grüße