aktuelle Wetteransage bei Tastendruck über Sonos Lautsprecher

Begonnen von funduro, 05 November 2016, 13:37:32

Vorheriges Thema - Nächstes Thema

funduro

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



Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

funduro


RadioJames

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);
}
There are 10 kind of people. Those who understand binary and those who don't.