Wettervorhersage per Pushover verschicken

Begonnen von FloZi, 04 August 2016, 13:34:02

Vorheriges Thema - Nächstes Thema

FloZi

Hallo zusammen,

ich spiele mich gerade ein bisschen an einer Wettervorhersage per Pushover. Diese soll jeden Vorabend (20:00 Uhr) verschickt werden.
Pushovermodul ist definiert, manuelles senden funktioniert.

Wettermodul definieren:
define Wetter Weather 20066971 3600 de
welches folgende readings ausgibt (hier nur die fc2 readings für morgen...fc1 für heute bis fc10 in 9 Tagen ist auch dabei):
Zitatfc2_code            47               2016-08-04 13:02:22
fc2_condition         vereinzelt Gewitter      2016-08-04 13:02:22
fc2_date            05 Aug 2016         2016-08-04 13:02:22
fc2_day_of_week           Fr               2016-08-04 13:02:22
fc2_high_c         21                    2016-08-04 13:02:22
fc2_icon            scatteredshowers      2016-08-04 13:02:22
fc2_low_c            13               2016-08-04 13:02:22

Dann habe ich eine readingsGroup definiert:
# Wettervorhersage - Morgen
define RG.Wetter.Morgen readingsGroup Wetter.*:fc2_.*

welche auch hübsch mit den gewünschten Werten gefüllt wird.

ZitatRG.Wetter.Morgen:
Wetter:fc2_code         47               2016-08-04 13:02:22
Wetter:fc2_condition         vereinzelt Gewitter      2016-08-04 13:02:22
Wetter:fc2_date            05 Aug 2016         2016-08-04 13:02:22
Wetter:fc2_day_of_week      Fr               2016-08-04 13:02:22
Wetter:fc2_high_c         21               2016-08-04 13:02:22
Wetter:fc2_icon            scatteredshowers      2016-08-04 13:02:22
Wetter:fc2_low_c         13               2016-08-04 13:02:22


so...ab hier passiert nichts mehr (zumindest nichts was ich sehen/nachvollziehen könnte!)


die Pushmeldung definieren:
define Pushmeldung.Wetter.Morgen notify RG.Wetter.Morgen {my $datum=(ReadingsVal("RG.Wetter.Morgen","Wetter:fc2_date"));;{my $condition=(ReadingsVal("RG.Wetter.Morgen","Wetter:fc2_condition"));;my $day=(ReadingsVal("RG.Wetter.Morgen","Wetter:fc2_day_of_week"));;my $tempmax=(ReadingsVal("RG.Wetter.Morgen","Wetter:fc2_high_c"));;my $tempmin=(ReadingsVal("RG.Wetter.Morgen","Wetter:fc2_low_c"));;fhem ("set PushOver msg 'Wetterinfo - Morgen:' 'Wettervorhersage für $day, den $datum: $condition - Temperaturen: Max: $tempmax - Min: $tempmin' '' 0 'none'")}

und das versenden definieren:
define Senden.Pushmeldung.Wetter.Morgen at *20:00:00 "set PushOver msg 'Wetterinfo - Morgen:' 'Wettervorhersage für $day, den $datum: $condition - Temperaturen: Max: $tempmax - Min: $tempmin' '' 0 'none'

Hat vielleicht jemand eine Idee?

Danke schonmal und lg FloZi

DeeSPe

Auf Anhieb sehe ich schon dass Du ReadingsVal nicht richtig benutzt denn es erfordert 3 übergebene Parameter (Name, Readingname, Defaultwert).

Berichtige das bitte und dann sollte es eventuell schon gehen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

eckonator

#2
Hi, unter deiner Vorlage habe ich dein Vorhaben nachgebaut und es funktioniert  ::)

Hier meine Lösung:
XXXXXX muss durch eure Städte-ID bei Yahoo geändert werden -> https://de.nachrichten.yahoo.com/wetter


# Weather Modul
define Wetter Weather XXXXXX 1800 de
attr Wetter room Wetter

# Jeden Tag um 20 Uhr den Wetterbericht via Push senden
define Wettervorhersage_Morgen notify Wetter:current_date_time:.* {\
  my $datum=ReadingsVal("Wetter","fc2_date","");;\
  my $condition=ReadingsVal("Wetter","fc2_condition","");;\
  my $day=ReadingsVal("Wetter","fc2_day_of_week","");;\
  my $tempmax=ReadingsVal("Wetter","fc2_high_c","");;\
  my $tempmin=ReadingsVal("Wetter","fc2_low_c","");;\
\
  my $hm = sprintf("%02d:%02d", $hour, $min);;\
  if ( $hm == "20:00") { \
    fhem ("set pushmsg msg 'Wetterinfo für Morgen: ' 'Wettervorhersage für $day, den $datum: $condition - Temperaturen liegen zwischen $tempmin °C und $tempmax °C.'")\
  }\
}
attr Wettervorhersage_Morgen room Wetter


Vielleicht hilft es jemandem.
Gruß Markus
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

chris1284

#3
flozis fehler ist würde ich meinen generel der versuch daten aus der rg zu lesen... die/eine rg hat keine readings (zumindest nicht in dem sinne wie er sie braucht) sondern zeigt nur readings aus anderen quellen. somit wird readingsval nicht greifen weil es keine readings gibt
eckonator hat das pferd richtig aufgezogen und hol die daten aus der quelle (dem wettermodul)

eckonator

Und noch zur Ergänzung, hier die in meinen Augen elegantere Lösung, da etwas kürzer und somit einfacher:



# Jeden Tag um 20 Uhr den Wetterbericht via Push senden
define Wettervorhersage_Morgen at *20:00:00 set pushmsg msg 'Wetterinfo für Morgen: ' 'Wettervorhersage für [Wetter:fc2_day_of_week], den [Wetter:fc2_date]: [Wetter:fc2_condition] - Temperaturen liegen zwischen [Wetter:fc2_low_c] °C und [Wetter:fc2_high_c] °C.'
attr Wettervorhersage_Morgen room Wetter
attr Wettervorhersage_Morgen group Wetter

FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

eckonator

Eine Glatteiswarnung habe ich auch noch gebastelt. Prüfung und Push-Versand erfolgt morgens um 6:


# Jeden Tag um 6 Uhr auf Glatteis prüfen und via Push warnen
define Meldung_Glaette_Gefahr at *06:00:00 { if((ReadingsVal("Wetter", "temperature", 99)) <= 3)\
{ fhem("set pushmsg msg 'Glättegefahr: ' 'Bitte fahr vorsichtig, es hat [Wetter:temperature] °C draußen: Es könnte glatt sein!'")}}
attr Meldung_Glaette_Gefahr room Wetter
attr Meldung_Glaette_Gefahr group Wetter
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

chris1284

suboptimal.. was ist wenn es mal um 06:30 Uhr  ;) glätte gibt... ich lasse mir warnmeldungen zum wetter direkt senden, anderst macht es wie ich finde wenig sinn

eckonator

Gut, die Idee dahinter war, ich geh um 8 aus dem Haus und steh um 7 auf. Wenn ich dann seh, dass es 0 Grad hat, reicht es mir dass ich vorsichtig fahren muss. Zuvor hatte ich es auch über das UWZ Modul probiert, nur dort kam ich nicht an die Glatteisdaten ran... wie hast du es gelöst?
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

chris1284

über uwz und doif. sobald eine warnung kommt gibts ne pushmeldung

DEF    
([uwzHannover:WarnCount])({
my $text;;
my $i;;
my $x = ReadingsVal("uwzHannover","WarnCount",0) - 1 ;;
for($i = 0;;$i<=$x;;$i++){
$text = ReadingsVal("uwzHannover","Warn_".sprintf($i)."_ShortText","ERROR");;
fhem("set PushMsg msg 'Warnung $i!' '$text' 'iPhone' 1 'siren' ");;}
})