Beispielcode für TTS Ausgaben / Wetter, Fenster offen und mehr

Begonnen von CoolTux, 10 September 2015, 06:47:19

Vorheriges Thema - Nächstes Thema

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

kvo1

Hi Loen,
danke für die Beispiele, das runterregeln der Musiklautstärke bei ankommenden und abgehenden Anrufen klappt schon mal  ;)

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

CoolTux

Guten Morgen Klaus,

Das freut mich das es so gut klappt. Wünsche Dir weiterhin so viel Spaß und vor allem Erfolge.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net