Autor Thema: Morgendliche Wetteransage  (Gelesen 1884 mal)

Online rischbiter123

  • Full Member
  • ***
  • Beiträge: 415
Morgendliche Wetteransage
« am: 15 Januar 2019, 20:44:33 »
Hier mal eine andere Möglichkeit, sich das Wetter ansagen zu lassen, basierend auf dem Weather-Modul mit DarkSky. Das entsprechende Device heißt 'WetterWhv', also bei Bedarf ändern.

Für die 99_myUtils:
sub TemperaturAnsage($$) {
my ($Az, $Bz) = @_; # Az = Wetterdevice  Bz = Ausgabedevice
### Definieren bzw Auslesen der Variablen ###
my $temperatur = (ReadingsVal($Az,"temperature",99));
$temperatur =~ s/\./ komma /; # Punkt durch Komma ersetzen
my $humid=(ReadingsVal($Az,"humidity",99));
$humid =~ s/\./ komma /;
my $temperatur1 = (ReadingsVal($Az,"fc1_high_c",99));
my $condit = (ReadingsVal($Az,"condition","Nebel"));
my $condit1 = (ReadingsVal($Az,"fc1_condition","Nebel"));
my $winge = (ReadingsVal($Az,"wind_speed",99));
my $winrich1 = (ReadingsNum($Az,"wind_direction",99));
my $winrich = & WindRichtung($winrich1); # Umwandlung der Windrichtung
### Zusammensetzen der Ansage # Aufgeteilt für bessere Übersicht ###
my $Ansage1 = "Guten Morgen. Es ist ".$condit." und ".$condit1." bei einer Temperatur von ".$temperatur." Grad und einer Luftfeuchtigkeit von ".$humid." Prozent. ";
my $Ansage2 = "Der Wind weht aus ".$winrich." mit einer Geschwindigkeit von ".$winge." Kilometer pro Stunde. Die Tageshöchsttemperatur liegt voraussichtlich bei ".$temperatur1." Grad. ";
my $Ansage3 = " Ich wünsche einen schönen Tag!";
### Ansage auf der/den ausgewählten Instanzen ###
my $Ansage = $Ansage1.$Ansage2.$Ansage3;
fhem ("set $Bz tts $Ansage");
}

sub WindRichtung($) {
my ($WiRi) = @_;
my $winrich = "";
if (($WiRi > 348.75 and $WiRi <= 360.00) or ($WiRi > 0 and $WiRi <= 11.25))
{
$winrich = "Norden";
}
elsif ($WiRi > 11.25 and $WiRi <= 33.75)
{
$winrich = "NordNordOst";
}
elsif ($WiRi > 33.75 and $WiRi <= 56.25)
{
$winrich = "NordOst";
}
elsif ($WiRi > 56.25 and $WiRi <= 78.75)
{
$winrich = "OstNordOst";
}
elsif ($WiRi >= 78.75 and $WiRi < 101.25)
{
$winrich = "Osten";
}
elsif ($WiRi >= 101.25 and $WiRi < 123.75)
{
$winrich = "OstSüdOst";
}
elsif ($WiRi >= 123.75 and $WiRi < 146.25)
{
$winrich = "SüdOst";
}
elsif ($WiRi >= 146.25 and $WiRi < 168.75)
{
$winrich = "SüdSüdOst";
}
elsif ($WiRi >= 168.75 and $WiRi < 191.25)
{
$winrich = "Süden";
}
elsif ($WiRi >= 191.25 and $WiRi < 213.75)
{
$winrich = "SüdSüdWest";
}
elsif ($WiRi >= 213.75 and $WiRi < 236.25)
{
$winrich = "SüdWest";
}
elsif ($WiRi >= 236.25 and $WiRi < 258.75)
{
$winrich = "WestSüdWest";
}
elsif ($WiRi >= 258.75 and $WiRi < 281.25)
{
$winrich = "West";
}
elsif ($WiRi > 281.25 and $WiRi <= 303.75)
{
$winrich = "WestNordWest";
}
elsif ($WiRi > 303.75 and $WiRi <= 326.25)
{
$winrich = "NordWest";
}
elsif ($WiRi > 326.25 and $WiRi <= 348.75)
{
$winrich = "NordNordWest";
};
return $winrich;
}

Der Aufruf der Funktion kann z.B. mit fogendem DOIF erfolgen.

defmod MorgenSpeech DOIF ([07:01:00]) ({TemperaturAnsage("WetterWhv", "MyTTSwz");;})({TemperaturAnsage("WetterWhv", "MyTTS");;}) DOELSEIF ([10:10:00]) ({TemperaturAnsage("WetterWhv", "MyTTSwz");;})({TemperaturAnsage("WetterWhv", "MyTTS");;})
attr MorgenSpeech do always
attr MorgenSpeech room Programme
attr MorgenSpeech wait 0,5:0,5

Die Ausgabe erfolgt in diesem Beispiel über zwei unterschiedliche Fhem-Instanzen. Verbesserungsvorschläge sind wie immer herzlich willkommen.

Andreas
« Letzte Änderung: 17 Januar 2019, 16:53:17 von rischbiter123 »
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline t1me2die

  • Sr. Member
  • ****
  • Beiträge: 528
Antw:Morgentliche Wetteransage
« Antwort #1 am: 16 Januar 2019, 12:38:47 »
Moin Andreas,

danke für die Inspiration.

Evtl. solltest du noch erwähnen, dass dein DarkSky Device "WetterWhv" heißt, ansonsten versuchen hier evtl. einige Leute per Copy & Paste glücklich zu werden und wundern sich, wieso sie keine Werte erhalten.

Gruß
Mathze

Online rischbiter123

  • Full Member
  • ***
  • Beiträge: 415
Antw:Morgentliche Wetteransage
« Antwort #2 am: 16 Januar 2019, 13:17:27 »
Danke für den Hinweis. habe es dazugeschrieben.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Offline nils_

  • Hero Member
  • *****
  • Beiträge: 1166
Antw:Morgentliche Wetteransage
« Antwort #3 am: 16 Januar 2019, 16:23:55 »
Verbesserungsvorschläge sind wie immer herzlich willkommen

ich würde das wetterdevice und das ausgabe-device als parameter übergeben.  8)
viele Wege in FHEM es gibt!

Online rischbiter123

  • Full Member
  • ***
  • Beiträge: 415
Antw:Morgentliche Wetteransage
« Antwort #4 am: 16 Januar 2019, 20:49:57 »
Habe nach nils_ Vorschlag oben mal eine allgemeinere Version eingestellt.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Offline FranzB94

  • Full Member
  • ***
  • Beiträge: 456
Antw:Morgentliche Wetteransage
« Antwort #5 am: 17 Januar 2019, 16:42:02 »
Hi!
Vielleicht könntest du die Threadüberschrift noch auf Morgendliche Wetteransage verallgemeinern.

Gruß Franz

Online rischbiter123

  • Full Member
  • ***
  • Beiträge: 415
Antw:Morgendliche Wetteransage
« Antwort #6 am: 17 Januar 2019, 16:57:06 »
 :P erledigt. Das kommt, wenn man abends schreibt.  ;D
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

 

decade-submarginal