[Unwetterwarnung] 77_UWZ.pm Modul für unwetterzentrale.de und wetteralarm.at

Begonnen von CoolTux, 23 März 2016, 12:06:02

Vorheriges Thema - Nächstes Thema

CoolTux

Gar nicht.  Das liegt daran das die meisten Readings gelöscht und somit ja doch geändert werden. Daher der Event.
Du kannst WarnCount zum Triggern verwenden.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Von meiner Seite her nicht. Es gibt bei älteren Perlversionen Meldungen das die Art der Unterdrückung nicht Unterstützt wird. Ich finde es ist egal ob ich wegen experimenteller Features ne Warnung bekomme oder wegen deren Meldungsunterdrückung. Finde zweites in Hinsicht auf die Zukunft besser.
Sprich ich lasse die Unterdrückung drin und bekomme lieber ne Warnung von alten Perlversionen. Alles unter 5.18.

Tobias hatte sich da zu meiner Nachfrage noch nicht geäußert und ich noch nicht wieder nach gefragt. Denke mal er hat auch gerade viel zu tun.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

RitterSport

Zitat von: CoolTux am 14 April 2016, 03:40:44
Gar nicht.  Das liegt daran das die meisten Readings gelöscht und somit ja doch geändert werden. Daher der Event.
Du kannst WarnCount zum Triggern verwenden.


Grüße

Das habe ich auch schon versucht, allerdings inkl. DOIF. Dennoch scheint er zu triggern und ich bekomme auch bei diesem DOIF alle 30 Min. eine neue Meldung.
define UnwetterwarnungDOIF DOIF ([Unwetterzentrale:WarnCount] = 0)\
({fhem ("set WhatsApp send 491xxxxx Keine Unwetterwarnung für dich mehr")})\
DOELSEIF ([Unwetterzentrale:WarnCount] = 1)\...

tdoe

Moin,

das "Problem" mit den experimental warnung ist folgendes, dass wenn die Perl-Version zu alt ist, dann führt das Unterdrücken der Warnung dazu dass das Modul garnicht funktioniert.

Und aus diesem Gesichtspunkt heraus denke ich dass es sinnvoll ist die Meldung zu belassen, und somit alle Perl-Versionen die nutzung des Moduls zu ermöglichen.

Nur um die paar Warnings beim Systemstart nicht zu sehen (wenn man sie sucht) nutzergruppen auszuschliessen denke ich ist die schlechteste Lösung.

CoolTux hatte auch schon versucht die Meldungsunterdrückung abhängig von der Perl-Version mit einzubauen, jedoch war dies leider nicht mit erfolg gekrönt.

Gruß Tobias

CoolTux


([Unwetterzentrale:WarnCount] == 0) ({fhem ("set WhatsApp send 491xxxxx Keine Unwetterwarnung für dich mehr")})

DOELSEIF
([Unwetterzentrale:WarnCount] == 1) (...

Machen wir mal einen mathematischen Vergleich draus dann passt das besser.
Und ich würde im DOELSEIF eine RegExpr für 1-9 machen.

Alternativ kannst Du auch ein Notify machen

Unwetterzentrale:WarnCount:.[1-9] { uwzWarnPush($NAME); }


Meine 99_myUtils_Sub sieht dann so aus


sub uwzWarnPush($) {

my ($name) = @_;
my $wNb = ReadingsVal( $name, "WarnCount", 0 ) - 1;
my $wType = ReadingsVal( $name, "Warn_${wNb}_Type_Str", 0 );
my $wText = ReadingsVal( $name, "Warn_${wNb}_ShortText", 0 );
my $wEnd = ReadingsVal( $name, "Warn_${wNb}_End_Date", 0 )." um ".ReadingsVal( $name, "Warn_${wNb}_End_Time", 0 );

fhem "set pushmsg msg 'Unwetterwarnung vor $wType' '$wText - Unwetterwarnung endet am $wEnd' '' 1 ''";
}


Musste halt auf Dein WhatsApp zu schneiden.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

Zitat von: RitterSport am 14 April 2016, 14:10:40
Das habe ich auch schon versucht, allerdings inkl. DOIF. Dennoch scheint er zu triggern und ich bekomme auch bei diesem DOIF alle 30 Min. eine neue Meldung.
define UnwetterwarnungDOIF DOIF ([Unwetterzentrale:WarnCount] = 0)\
({fhem ("set WhatsApp send 491xxxxx Keine Unwetterwarnung für dich mehr")})\
DOELSEIF ([Unwetterzentrale:WarnCount] = 1)\...


Wenn ich DOIF richtig verstanden habe (und nein, ich habe mir da keine Mühe gegeben ;)), triggert das DOIF auf ein beliebiges Reading. Ich halte ja noch immer notify für die einachste Variante in solchen Fällen.

CoolTux

Zitat von: tdoe am 14 April 2016, 14:23:24
Moin,

das "Problem" mit den experimental warnung ist folgendes, dass wenn die Perl-Version zu alt ist, dann führt das Unterdrücken der Warnung dazu dass das Modul garnicht funktioniert.

Und aus diesem Gesichtspunkt heraus denke ich dass es sinnvoll ist die Meldung zu belassen, und somit alle Perl-Versionen die nutzung des Moduls zu ermöglichen.

Nur um die paar Warnings beim Systemstart nicht zu sehen (wenn man sie sucht) nutzergruppen auszuschliessen denke ich ist die schlechteste Lösung.

CoolTux hatte auch schon versucht die Meldungsunterdrückung abhängig von der Perl-Version mit einzubauen, jedoch war dies leider nicht mit erfolg gekrönt.

Gruß Tobias

Hallo Tobias,

Die Info mit dem "dass das Modul garnicht funktioniert." hatte mir gefehlt. Ich hatte hier im Forum eine Meldung und da war nur von einer Warnung die Rede, nicht davon das es gar nicht mehr geht.
Mit dieser Info stimme ich Tobias zu. Dann lieber die alten Warnings lassen.


Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

FunkOdyssey

Ich habe ein Problem mit dem autom. Update:


2016.04.14 15:57:01 1 : uwz
2016.04.14 15:57:02 1 : UPD FHEM/77_UWZ.pm
2016.04.14 15:57:02 1 : Got 43222 bytes for FHEM/77_UWZ.pm, expected 43293
2016.04.14 15:57:02 1 : aborting.

tdoe

Moin,

Zitat von: FunkOdyssey am 14 April 2016, 15:57:57
Ich habe ein Problem mit dem autom. Update:


2016.04.14 15:57:01 1 : uwz
2016.04.14 15:57:02 1 : UPD FHEM/77_UWZ.pm
2016.04.14 15:57:02 1 : Got 43222 bytes for FHEM/77_UWZ.pm, expected 43293
2016.04.14 15:57:02 1 : aborting.



...ist gefixt, wobei das Modul ja nun direkt in fhem ist ;-)

Gruß Tobias

CoolTux

Hätte ich mehr rot nehmen sollen? Oder gleich ne Nackte mit dem Hinweisschild    ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

tdoe

Zitat von: CoolTux am 15 April 2016, 12:53:13
Hätte ich mehr rot nehmen sollen? Oder gleich ne Nackte mit dem Hinweisschild    ;D

Das mit der Nackten fänd ich gut :-D ... vielleicht eine die ein Schild wirft wo drauf steht "upstream" oder so.... ;-)


Gruß Tobias


CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net


RitterSport

@CoolTux
Danke für den Denkanstoss, der soweit auch besser klappt.
Du hast vorher die Readingsvalue  Type_Str; End_Date; End_Time erzeugt.
Leider reichen meine Programmierkenntnisse nicht ganz aus um diese zu Erzeugen.
Kannst du mir einen Hinweis geben?



[code]
sub uwzWarnPush($) {

my ($name) = @_;
my $wNb = ReadingsVal( $name, "WarnCount", 0 ) - 1;
my $wType = ReadingsVal( $name, "Warn_${wNb}_Type_Str", 0 );
my $wText = ReadingsVal( $name, "Warn_${wNb}_ShortText", 0 );
my $wEnd = ReadingsVal( $name, "Warn_${wNb}_End_Date", 0 )." um ".ReadingsVal( $name, "Warn_${wNb}_End_Time", 0 );

fhem "set pushmsg msg 'Unwetterwarnung vor $wType' '$wText - Unwetterwarnung endet am $wEnd' '' 1 ''";

[/quote]


CoolTux

Zitat von: RitterSport am 17 April 2016, 12:10:04
@CoolTux
Danke für den Denkanstoss, der soweit auch besser klappt.
Du hast vorher die Readingsvalue  Type_Str; End_Date; End_Time erzeugt.
Leider reichen meine Programmierkenntnisse nicht ganz aus um diese zu Erzeugen.
Kannst du mir einen Hinweis geben?



[code]
sub uwzWarnPush($) {

my ($name) = @_;
my $wNb = ReadingsVal( $name, "WarnCount", 0 ) - 1;
my $wType = ReadingsVal( $name, "Warn_${wNb}_Type_Str", 0 );
my $wText = ReadingsVal( $name, "Warn_${wNb}_ShortText", 0 );
my $wEnd = ReadingsVal( $name, "Warn_${wNb}_End_Date", 0 )." um ".ReadingsVal( $name, "Warn_${wNb}_End_Time", 0 );

fhem "set pushmsg msg 'Unwetterwarnung vor $wType' '$wText - Unwetterwarnung endet am $wEnd' '' 1 ''";





Hallo,

Weiß gerade nicht wie genau Du das meinst. Daher hole ich etwas aus.
Mit ReadingsVal kann man den Wert eines Readings einlesen. In meinen Fall lese ich ihn in Variablen ein.
Schau Dir mal die Readings von Unwetter an. Alle haben eine Nummer, beginnend mit 0. Null ist die erste Unwettermeldung. Alles was hinter Warn eine Null hat gehört zur ersten Meldung.

Warn_0_Type_Str

Ist die Art der Meldung von der ersten Warnmeldung.

Damit ich mir nicht alle Meldungen schicke sondern immer nur die letzte/aktuelle habe ich den WarnCounter missbraucht.

Die Nummer des Warnreadings ist immer WarnCounter - 1.
Also WarnCounter ist 2, somit wäre die letzte Warnmeldung Warn_2_

Am besten Du suchst mal eine Region mit Warnung und trägst sie zum Spielen in Deine Definition ein.

Warn Nummer = $warnNb

Und die Warnnummer ergibt sich ja aus dem WarnCount Reading - 1

Nun will ich immer die letzte Warnung in Variablen einlesen.
Um das Reading WarnTyp zu bekommen mache ich also

$wType = ReadingsVal( $name, "Warn_${wNb}_Type_Str", 0 );

Weil meine Variable mitten in einem String steckt und man nicht weiß wo hört der String auf wo fängt Variable an muss man es ihm sagen. Daher statt $wNb also ${wNb} somit weiß Perl wo der String auf hört und wo er die Variable einsetzen soll.

Hoffe das war so bisschen verständlich.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net