Neues Modul: 77_UWZ.pm

Begonnen von tdoe, 08 Februar 2015, 22:09:06

Vorheriges Thema - Nächstes Thema

TeeVau

Das ist übrigens das notify und die zusätzliche Function für die 99_myUtils.pm. Vielleicht mag sich ja auch jemand die Warnmeldungen aufs Handy ausgeben lassen:

Notify:

Unwetterzentrale:WarnCount:.* {
  if ($EVTPART1 > 0) {
    prowl(getUWZDetails("Unwetterzentrale"),"$EVTPART1 Warnmeldungen vorhanden",1);
  }
  else {
    prowl("Es gibt aktuell keine Warnmeldungen","Keine Warnmeldungen vorhanden",1);
  }
}


Und hier die Function:

# Gibt von einem Device UWZ alle Warnmeldungen aus mit Start-, Enddatum, Short Text und Long Text
# Author : TeeVau
# Aufruf : getUWZDetails("Unwetterzentrale")
# Param 1: Name des UWZ Device
# Return : Text mit allen Warnmeldungen
sub getUWZDetails($) {
  my ($device) = @_;
  my $warnCount = ReadingsVal($device,"WarnCount", undef);
  my $retVal = "";
  return undef if(!$device or !defined($warnCount));
 
  for(my $i = 0; $i < $warnCount; $i++) {
    my $warnStart = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_Start", undef)));
    my $warnEnd = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_End", undef)));
    my $warnShortText = ReadingsVal($device,"Warn_".$i."_ShortText", undef);
    my $warnLongText = ReadingsVal($device,"Warn_".$i."_LongText", undef);
   
    $retVal .= "Beginn: $warnStart Ende: $warnEnd\n";
    $retVal .= "$warnShortText\n";
    $retVal .= "$warnLongText\n\n";
  }
  return $retVal;
}


Klappt prima, die letzten Tag gab es die ein oder andere Warnmeldung :-)
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

AitschPi

Gute Idee - werde das gleich mal übernehmen und mir per whatsapp-Modul (yowsup) auch das passende Bildchen schicken lassen. ;o)
Echte Männer essen keinen Honig, sie kauen Bienen.

TeeVau

Denk nur dran, dass du dafür noch die Änderung von tdoe selber einpflanzen musst. Sonst wird das Reading WarnCount immer gelöscht und neu angelegt, was das notify jedes Mal triggern lässt.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

AitschPi

Danke, hätte ich fast vergessen. Und den Test gibt es nur auf mein Handy. Ein Bekannter machte neulich den Fehler, die frisch installierte Warnungen der Alarmanlage auch an seine bessere Hälfte senden zu lassen - einschließlich Kinderkrankheiten und folgender Fehlalarme... ;o)


Gesendet von iPhone mit Tapatalk - Tippfehler sind gratis.
Echte Männer essen keinen Honig, sie kauen Bienen.

marvin78

Warum ist das ein Fehler? Es ist doch gut, wenn sich die Dame(n) des Hauses auch an der Entwicklung beteiligen. Vernünftig denkende Menschen haben damit wohl kein Problem.

HoTi

Hallo tdoe,

wir dein Modul den weg ins "reguläre" FHEM finden?  ;D
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

tdoe

Moin RettungsTim,

das kommt darauf an, Ihr testet ja fleissig. Wenn die fhem-Gemeinde denkt dass das Modul ausgereift genug ist um den Weg ins SVN zu finden, werde ich mich erkundigen welche Schritte dafür notwendig sind.

Gruß tdoe

hexenmeister

Zitat von: tdoe am 11 September 2015, 09:39:09
[...] werde ich mich erkundigen welche Schritte dafür notwendig sind.
Im Profil den Zugang zum Entwicklerbereich beantragen, diesen Modul erwähnen und seinen sourceforge account nennen.
;)

HoTi

#128
Hallo,

bei mir liegt jetzt"endlich" mal eine warnung wegen Sturn an. Das sieht man schon in der Karte. Aber das Modul sagt immer Keine Warnung was mach ich da falsch?

State hängt auch in Initializing ?!

Internals:
   CountryCode bayern
   DEF        bayern 84431 3600
   INTERVAL   3600
   NAME       Unwetterzentrale
   NR         657
   PLZ        84431
   STATE      Initializing
   TYPE       UWZ
   URL        http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZbayern84431
   Readings:
     2015-09-16 09:01:23   WarnCount       0
     2015-09-16 09:01:23   durationFetchReadings 0.35
     2015-09-16 09:01:23   lastConnection  2 values captured in 0.35 s
     2015-09-16 09:01:23   state           Warnungen: 0
   Fhem:
     LOCAL      0
     modulVersion $Date: 2015-05-10 01:41:33 +0100 (Sun 10 Mai 2015) $
   Helper:
     Running_pid:
       abortFn    UWZ_Aborted
       finishFn   UWZ_Done
       fn         UWZ_Run
       pid        1715
       Abortarg:
Attributes:
   room       03_Umwelt
   verbose    0


*edit*
OK Fehler 1 war das statt bayern DE rein kommt.

jetzt findet er in den logs schon mal die Warnung. Aber die Readings werden nicht aktualisiert

*edit2*
log:
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.499 There are 1 warnings active
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.530 Warn_0_Type: 2
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.532 Warn_0_uwzLevel: 7
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.535 Warn_0_Severity: 7
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.537 Warn_0_Start: 1442491200
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.539 Warn_0_End: 1442509200
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.557 Warn_0_levelName: alert_forewarn_orange
2015.09.17 07:29:52 1: PERL WARNING: Wide character in print at fhem.pl line 817.
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.559 Warn_0_LongText: Durch einen starken Druckanstieg von West nach Ost sind ab Donnerstagmittag ist immer wieder kr�ftige Windb�en m�glich. Dabei kommt es zu B�en zwischen 60 und 80 km/h, �rtlich auch mehr. Der Wind weht aus S�dwest bis West. Im Laufe des Nachmittags l�sst der Wind langsam nach.
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.561 Warn_0_ShortText: Kr�ftige S�dwest- bis Westwindb�en in den Nachmittagsstunden m�glich.
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.564 Warn_0_IconURL: http://www.unwetterzentrale.de/images/icons/sturm-7.gif
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.573 Warn_0_Hail: 0
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.582 Done fetching data
2015.09.17 07:29:52 3: UWZ Unwetterzentrale: Run.583 Will return : Unwetterzentrale|Warn_0_Type|2|Warn_0_uwzLevel|7|Warn_0_Severity|7|Warn_0_Start|1442491200|Warn_0_End|1442509200|Warn_0_levelName|alert_forewarn_orange|Warn_0_LongText|Durch einen starken Druckanstieg von West nach Ost sind ab Donnerstagmittag ist immer wieder kräftige Windböen möglich. Dabei kommt es zu Böen zwischen 60 und 80 km/h, örtlich auch mehr. Der Wind weht aus Südwest bis West. Im Laufe des Nachmittags lässt der Wind langsam nach.|Warn_0_ShortText|Kräftige Südwest- bis Westwindböen in den Nachmittagsstunden möglich.|Warn_0_IconURL|http://www.unwetterzentrale.de/images/icons/sturm-orange.gif|Warn_0_Hail|0|durationFetchReadings|0.36|WarnCount|1


*edit3*
UWZ gelöscht. Neu definiert und jetzt gehts.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

HoTi

Tja fehler gefunden. Beim Telnet war ein SSL verschlüsselung und Passwort gesetzt. Das Mag UWZ wohl nicht :-(
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

tdoe

Hallo RettungsTim,

Zitat von: RettungsTim am 17 September 2015, 14:46:11
Tja fehler gefunden. Beim Telnet war ein SSL verschlüsselung und Passwort gesetzt. Das Mag UWZ wohl nicht :-(

Fast ;-)

Das Modul setzt BlockingCalls ein, siehe dazu hier: http://www.fhemwiki.de/wiki/Blocking_Call

Zitat:
Zitat
Bei Funktionen die mit BlockingCall aufgerufen werden muss der Rückgabewert entweder eine Zahl, oder ein einzeiliger String sein, da dieser über den Telnetprompt als Perl-Befehl ( {finishFn("returnvalue")} ) zurückgegeben wird.

Und hierbei ist wohl das "Problem".

Ich hab es zwar selbst nicht getestet, jedoch wenn ich mir die Beschreibung so anschaue von Telnet, so könnte in diesem Fall das attribut "globalpassword" helfen.

Zitat
globalpassword
Just like the attribute password, but a password will only required for non-local connections.


Gruß Tobias

HoTi

Das würde auch das erklären:
2015.09.17 14:11:51 1: CallBlockingFn: Can't connect to localhost:: IO::Socket::INET: Bad hostname 'localhost:'
Use of uninitialized value in concatenation (.) or string at FHEM/Blocking.pm line 105.
Use of uninitialized value in concatenation (.) or string at FHEM/Blocking.pm line 105.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

HoTi

Zitat von: tdoe am 17 September 2015, 15:11:04
Ich hab es zwar selbst nicht getestet, jedoch wenn ich mir die Beschreibung so anschaue von Telnet, so könnte in diesem Fall das attribut "globalpassword" helfen.

Nein das bring nicht die Lösung! Habe das so gehabt:

attr telnetPort SSL 1
attr telnetPort globalpassword mySecret
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

tdoe

Moin RettungsTim,

Zitat von: RettungsTim am 17 September 2015, 15:18:13
Nein das bring nicht die Lösung! Habe das so gehabt:

attr telnetPort SSL 1
attr telnetPort globalpassword mySecret

Damit hab ich es am laufen:
Globaler, SSL gesicherter telnet:

define telnetPortSSL telnet 7072 global
attr telnetPortSSL SSL 1
attr telnetPortSSL globalpassword secret
attr telnetPortSSL room Optionen


Laucht auf allen interfaces:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:7072            0.0.0.0:*               LISTEN      12106/perl



Dann ein zweites OHNE SSL:

define telnetForBlockingFn telnet 7073
attr telnetForBlockingFn room Optionen


lauscht NUR auf localhost:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:7073          0.0.0.0:*               LISTEN      12106/perl



Gruß Tobias

rrr

#134
Es wäre schön, wenn das Löschen vom WarnCount-Reading nun auch im Modul entfernt wird, damit nicht jeder die Änderung selber vornehmen muss...

Dabei könnte das Modul doch auch mal den Weg ins fhem-repo finden, oder?