Hallo Leute,
ich scheitere leider seit ein paar Stunden an einer wahrscheinlich einfachen Aufgabe mit notify und readings:
Ich will mir bei einem Tastendruck das aktuelle Wetter vom Befehl weather über meinen Sonos Lautsprecher ausgeben lassen.
Sonos ist bereits erfolgreich integriert, aber ich verstehe nicht, wie ich es mit dem notify hin bekomme.
Hier mal das, was ich bisher gemacht habe:
define MeinWetter Weather 676864 3600 de
Und hier komme ich nicht weiter:
define Sprachausgabe01 notify fb2:AI set Sonos_Kueche Speak 20 de xxxHier soll mein Wetter rein, welches vorgelesen werden sollxxx
Ich weiß nicht wie ich diese weather-Readings dort oben rein bekomme :'(
fb2 ist meine Fernbedienung
MeinWetter hat z.B. die readings:
"temperature" welches z.Zt. 8 °C hat
oder "wind_speed" mit 23 km/h
Wie kann ich also den Text ansagen lassen: Es ist gerade x Grad Celsius bei einer Windgeschwindigkeit von y?
Vielen Dank schon mal
Hi,
mit [Device:Reading]
Also probiere set Sonos_Kueche Speak 20 de Es sind [MeinWetter:temperature] grad
Der Zugriff mit [Device:Reading] funktioniert aber nicht überall in FHEM, es hängt vom Modul ab.
Mit Perl geht es so{my $temp = ReadingsVal("MeinWetter","temperature","unbekannt") ;; fhem "set Sonos_Kueche Speak 20 de Es sind $temp grad"}
Gruß Otto
Vielen Dank. Das funktioniert. :)
Danke für die geile Idee.
Hier ist meine Umsetzung:
##########################################################################################
# Diese Funktion bereitet die Wetterdaten, die durch das FHEM Module "Weather" zur
# Verfügung gestellt werden, zu einem Wetterbericht auf und übergibt diesen dann der
# Funktion "Speech_Speak", die den Wetterbericht per Sprache ausgibt auf einer Sonos
# Komponente ausgibt.
# (define MeinWetter Weather XXXXXXXX 3600 de)
#
# Parameter: $when "HEUTE": Wetterbericht von heute
# "MORGEN": Wetterbericht von morgen
#
##########################################################################################
sub
Speech_Wetterbericht($)
{
my ($when) = @_;
my $wetterbericht;
my $city = ReadingsVal("MeinWetter", "city", "Stadt unbekannt");
my %wind_direction = (
"N" => "nördlicher Richtung", "NNO" => "Nordnordost", "NO" => "Nordost", "ONO" => "Ostnordost",
"O" => "östlicher Richtung", "OSO" => "Ostsüdost", "SO" => "Südost", "SSO" => "Südsüdost",
"S" => "südlicher Richtung", "SSW" => "Südsüdwest", "SW" => "Südwest", "WSW" => "Westsüdwest",
"W" => "westlicher Richtung", "WNW" => "Westnordwest", "NW" => "Nordwest", "NNW" => "Nordnordwest");
my %month = (
"Jan" => "Januar", "Feb" => "Februar", "Mar" => "März", "Apr" => "April", "May" => "Mai",
"Jun" => "Juni", "Jul" => "Juli", "Aug" => "August", "Sep" => "September", "Oct" => "Oktober",
"Nov" => "November", "Dec" => "Dezember");
if ($when eq "HEUTE") # Wetterbericht von heute
{
my $today = ReadingsVal("MeinWetter", "fc1_date", "Datum unbekannt");
my $t_min = ReadingsVal("MeinWetter", "fc1_low_c", "Mindesttemperatur unbekannt");
my $t_max = ReadingsVal("MeinWetter", "fc1_high_c", "Höchsttemperatur unbekannt");
my $humidity = ReadingsVal("MeinWetter", "humidity", "Luftfeuchtigkeit unbekannt");
my $pressure = ReadingsVal("MeinWetter", "pressure", "Luftdruck unbekannt");
my $pressure_trend = ReadingsVal("MeinWetter", "pressure_trend_txt", "Luftdruck Tendenz unbekannt");
my $condition = ReadingsVal("MeinWetter", "condition", "Aussicht unbekannt");
my $wind_condition = ReadingsVal("MeinWetter", "wind_condition", "Wind unbekannt");
$wetterbericht = "Heute ist der ";
($today =~ /^(\d*) (...) (\d*)/);
$wetterbericht = $wetterbericht.$1." $month{$2} ".$3.". Das Wetter für ".$city.". Die Temperatur liegt zwischen ".$t_min." Grad und ".$t_max." Grad Celsius.";
$wetterbericht = $wetterbericht." Die Luftfeuchtigkeit liegt bei ".$humidity." Prozent.";
$wetterbericht = $wetterbericht." Der Luftdruck beträgt ".$pressure." Millibar, Tendenz ".$pressure_trend;
$wetterbericht = $wetterbericht.". Die Aussicht ".$condition;
($wind_condition =~ /^Wind: (.+) (\d*) km\/h/);
$wetterbericht = $wetterbericht.". Windgeschwindigkeit ".$2." Kilometer pro Stunde aus ".$wind_direction{$1};
}
elsif ($when eq "MORGEN") # Wetterbericht von morgen
{
my $tomorrow = ReadingsVal("MeinWetter", "fc2_date", "Datum unbekannt");
my $t_min = ReadingsVal("MeinWetter", "fc2_low_c", "Mindesttemperatur unbekannt");
my $t_max = ReadingsVal("MeinWetter", "fc2_high_c", "Höchsttemperatur unbekannt");
my $condition = ReadingsVal("MeinWetter", "fc2_condition", "Aussicht unbekannt");
($tomorrow =~ /^(\d*) (...) (\d*)/);
$wetterbericht = "Das Wetter in ".$city." für morgen, den ".$1." $month{$2} ".$3;
$wetterbericht = $wetterbericht." Die Temperatur liegt zwischen ".$t_min." Grad und ".$t_max." Grad Celsius.";
$wetterbericht = $wetterbericht.". Die Aussicht ".$condition;
}
else # Fehlerfall, zukuenftige Erweiterungen über zusaetzliches elsif
{
Log(1, "Speech_Wetterbericht: falscher Parameter: $when");
}
Speech_Speak("Sonos_Wohnzimmer", $wetterbericht);
}