Mit Online Wetter z.B. Rolladen steuern?

Begonnen von ole30419, 08 Februar 2013, 20:02:33

Vorheriges Thema - Nächstes Thema

mmatt

Hallo zusammen
Ich versuche das hier geschriebene zu verstehen
(gar nicht so leicht als Anfänger)

Ich habe mal einen Versuch gemacht, weil mir nicht klar ist wann das notify gestartet wird.

fhem.cfg:
define notify_test notify Weather_Wetter {TestFunktion()}

99_Utils.pm:
sub
TestFunktion()
{
my $Sonne= ReadingsVal("Weather_Wetter","condition","kein Wert");
my $Wind= ReadingsVal ("Weather_Wetter","wind","kein Wert");
Log 1, "TestFunktion wurde aufgerufen Sonne ist: $Sonne, Wind ist: $Wind";
}


Log 1:
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13
2013.03.13 09:00:52 1: TestFunktion wurde aufgerufen Sonne ist: showers, Wind ist: 13


Nun habe ich im Log alle Stunde ca 30 Einträge ?
Die Frage ist warum 30 Einträge und nicht nur einer ?

Grüsse Martin

- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

MisterEltako

@ole30419

Bau dir doch zum Ausprobieren deine eigene Wettersituation:

[u]Fhem.cfg:[/u]
define Testaktor dummy
define Testung notify Test{Testroutine()}
 
[u]99_myUtils:[/u]
sub Testroutine() {\
 my $Temp = 7;
 my $Sonne = "sonnig";
 fhem ("set Testaktor 0");
 $hour = 11;
   if (($Temp >= 5)&&($Sonne =~ m/sonnig/)&&(Value("$Aktorname")!=1)&&($hour >= 10)){
           fhem("set $Aktorname 1");
           Log 1, "Beschattungsposition wird angefahren.";
   } elsif (($Temp<=2) && (Value("$Aktorname")==1)){
           fhem ("set $Aktorname 100");
   }
}

Dann kannst du schön mit den Parameteren spielen.... ;o)

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

ole30419

Hallo,
@MisterEltako ja das mache ich mal so, Danke !!!

@martin8573 ich kann es dir nicht sagen, wenn ich ein Log 1, hatte was Permanent abfragt hatte ich durchweg Einträge im Log bist ich die Abfrage gestoppt habe.

Gruß Ole
MfG Ole

MisterEltako

@martin8573

Es kommen entspechend deiner Definition ständig Einträge, wenn YahooWetter einen Event sendet.
Entweder du grenzt es noch ein auf einen bestimmten Wert oder baust das ganze in eine if-Abfrage, so daß nur Logeintrag erfolgt, wenn Wert geändert wurde.


define notify_test notify Weather_Wetter:(sunset.*|sunrise.*) {TestFunktion()}

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

mmatt

Danke Euch für die Antworten.

Ja, das ist schon so, sobald YahooWetter einen Event sendet wird das notify ausgelöst wird.
Und das sind halt mehrere Events.

@MisterEltako

Variante 1 "Das Eingrenzen auf einen bestimmten Wert" mit:
define notify_test notify Weather_Wetter:(sunset.*|sunrise.*) {TestFunktion()}
verstehe ich nicht ganz, genau genommen das (sunset.*|sunrise.*)
Kannst Du mir das erklären ?

Variante 2 "Eingrenzen in einer if-Abfrage, wenn Wert geändert wurde"
Ist das die ($hour >= 10)) wie in diesem Beispiel:
if (($Temp >= 5) && ($Sonne =~ m/sonnig/) && (Value("$Aktorname")!=1) && ($hour >= 10)){...

Nein das kann es auch nicht sein...
Also irgendwo ist bei mir noch der Wurm drin.

Was ich nicht sehe, wo in den ganzen Beispielen hier das Unterdrücken bei den
mehreren Yahoo Events passiert.

Oder hab das nur ich ?

Grüsse Martin








- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

MisterEltako

define notify_test notify Weather_Wetter:(sunset.*|sunrise.*) ....

müsste nach meinem Verständnis das notify nur aktivieren, wenn sich der Wert sunset oder sunrise im Yahoo-Wettermodul aktualisiert.

oder:

define Sonnenaufgang_alt dummy
define Sonnenuntergang_alt dummy
define Test notify YahooWetter:(sunset.*|sunrise.*) {\
  if (ReadingsValue("YahooWetter, "sunrise","") eq Value("Sonnenaufgang_alt") {......}
  if (ReafingsValue("YahooWetter, "sunset","") eq Value("Sonnenuntergang_alt") {.....}

...vergleicht, ob sich die gemeldete Zeit geändert hat un führt dann die entsprechende Funktion aus.
Dies liese sich noch schöner über die Readings machen, aber erst sollte deine Funktion problemlos laufen bevor es an das Feintuning geht :-)

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Dietmar63

Weather_Wetter:(sunset.*|sunrise.*)

ist ein regulärer Ausdruck, der in diesem Fall nur noch solche events druchläßt, die neben dem device Weather_Wetter die Events sunset sunrise durchläßt.

".*" steht für belibige Zeichen  
"|" ist ein logisches oder.

Am besten im Web nach Perl und regulären Ausdrücken suchen - das Thema ist nicht ganz einfach.
Hier kann man sie aber einfach ausprobieren: http://regex.powertoy.org/




Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ahstax

Tach auch,

Dieser Thread ist zwar schon recht alt - er beschreibt aber genau mein Vorhaben.

Daher gestatte ich mir trotz des Alters die Frage, ob das alles grundsätzlich so noch läuft und ob und wie im speziellen das Yahoo-Wetter, das ja in der hier verwendeten Form nicht mehr existiert, ersetzt wird/wurde/werden kann?

Sonnige Grüße,
Andreas

Christoph Morrison

Zitat von: ahstax am 23 Juni 2019, 21:05:09
Dieser Thread ist zwar schon recht alt - er beschreibt aber genau mein Vorhaben.
Daher gestatte ich mir trotz des Alters die Frage, ob das alles grundsätzlich so noch läuft und ob und wie im speziellen das Yahoo-Wetter, das ja in der hier verwendeten Form nicht mehr existiert, ersetzt wird/wurde/werden kann?

Moin,

nimm lieber AutoShuttersControl. Sollte können was du brauchst und ist ein aktuelles Modul mit gutem Support (und guter Doku).