Autor Thema: Modul für DWD Open Data  (Gelesen 95980 mal)

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Antw:Modul für DWD Open Data
« Antwort #690 am: 26 Mai 2020, 23:25:22 »
@Baeda

Danke für die Rückmeldung, freut mich, dass du die Ursache finden und beheben konntest.

Zitat
... schade ist hier nur (nach meinem Kenntnisstand..) dass man für die y-Achse "nur" 2 label/ranges angeben kann.
Mit mehr als 2 Y-Achsen tun sich die meisten Plotter schwer und es wird dann auch schnell unübersichtlich - ob es doch geht weiß ich auch nicht. Habe mich hier für 0-100 % und °C entschieden, damit kommt man relativ weit.

Grüße,
Jens

FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1191
  • Ein paar Wochen afk
    • Private Website
Antw:Modul für DWD Open Data
« Antwort #691 am: 04 Juni 2020, 21:14:47 »
Thema $warncellId:
Ich hatte gerade wieder die beiden Warnings zur $warncellId im Log:
2020.06.04 21:03:37.809 1: PERL WARNING: Use of uninitialized value $warncellId in division (/) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.04 21:03:37.809 1: PERL WARNING: Use of uninitialized value $warncellId in numeric eq (==) at ./FHEM/55_DWD_OpenData.pm line 1371.

Ich denke es sollte reichen wenn man davor $warncellId prüft und wenn es nicht definiert ist, einfach return 0 macht, ungefähr so (ungetestet):
sub IsCommuneUnionWarncellId($) {
  my ($warncellId) = @_;

  if (!$warncellId) {
    return 0;
  }

  return int($warncellId/100000000) == 5 || int($warncellId/100000000) == 7 || int($warncellId/100000000) == 8
         || $warncellId == UPDATE_COMMUNEUNIONS || $warncellId == UPDATE_ALL? 1 : 0;
}

(Das zweite return statement sieht auch nicht so toll aus finde ich :-( )
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Antw:Modul für DWD Open Data
« Antwort #692 am: 05 Juni 2020, 19:04:20 »
@Christoph Morrison

Danke für den Hinweis. Das würde sicher so funktionieren wie du vorschlägst, aber es wäre nur Symptombekämpfung, denn auch der Code nach dem Aufruf von isCommuneUnionWarncellId() ist auf eine definierte $warncellId angewiesen. In Zeile 986 wird das z.B. auch noch mal geprüft.

Was mich hier interessiert: Warum ist $warncellId bei dir undefiniert? Habe das selbst noch nicht gehabt, werde mir das aber noch genauer ansehen.

Schade, dass du keinen Stacktrace im Log hast. Wenn man FHEM so startet, wird Perl gesprächiger:
/usr/bin/perl -MCarp::Always fhem.pl fhem.cfg
Grüße,
Jens
FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1191
  • Ein paar Wochen afk
    • Private Website
Antw:Modul für DWD Open Data
« Antwort #693 am: 05 Juni 2020, 19:47:10 »
@Christoph Morrison

Danke für den Hinweis. Das würde sicher so funktionieren wie du vorschlägst, aber es wäre nur Symptombekämpfung, denn auch der Code nach dem Aufruf von isCommuneUnionWarncellId() ist auf eine definierte $warncellId angewiesen. In Zeile 986 wird das z.B. auch noch mal geprüft.


Was mich hier interessiert: Warum ist $warncellId bei dir undefiniert? Habe das selbst noch nicht gehabt, werde mir das aber noch genauer ansehen.

Die Meldung kam beim Start von FHEM auf meiner Produktionsmaschine, d.h. es gibt dort kein Stacktrace. Ich schaue mal, ob ich auf der Integrationsmaschine den Fehler reproduzieren kann, dann poste ich dir auch einen Stacktrace. Im laufenden Betrieb nach dem Start kommt die Fehlermeldung auch nicht mehr.
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Antw:Modul für DWD Open Data
« Antwort #694 am: 06 Juni 2020, 11:17:36 »
Habe mir den Code noch mal angesehen. Die Sub isCommuneUnionWarncellId() wird aus mehreren Abläufen aufgerufen, die meisten prüfen bzw. initialisieren $warncellId explizit vorher. Mir ist kein Ablauf aufgefallen, der offensichtlich problematisch ist. Wenn ich mein FHEM neu starte, tritt das Problem (leider) nicht auf.

Falls das mit dem Stacktrace nichts wird, könnte ich für Testzwecke eine Debug-Version des Moduls erstellen, dass auf Loglevel 4 zusätzliche Ausgaben macht ohne wie bei Loglevel 5 das Logfile mit den XML-Rohdaten zu fluten.

Grüße,
Jens
FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1191
  • Ein paar Wochen afk
    • Private Website
Antw:Modul für DWD Open Data
« Antwort #695 am: 15 Juni 2020, 16:51:18 »
Tatsächlich kommt die Meldung gar nicht beim Boot, sondern beim Shutdown. Edit: Und zwar dann, wenn DWD noch keine Chance hatte, irgendwelche Daten abzurufen:

Ohne Daten:
Internals:
   .TZ       
   .fetchAlerts
   FHEM_TZ   
   FUUID      5ee78b69-f33f-a8a4-e8b8-59d22f56554222a8
   NAME       general.weather.forecast.dwd
   NR         98
   STATE      defined
   TYPE       DWD_OpenData
   .attraggr:
   .attrminint:
   READINGS:
     2020-06-15 16:53:29   state           defined
Attributes:
   alertArea  105754000
   alertLanguage DE
   forecastDays 5
   forecastStation 10320
   forecastWW2Text 1

→ Stacktrace

Mit zwischenzeitlichem Datenabruf:


Internals:
   .TZ       
   .fetchAlerts
   .warncellId -3
   ALERTS_IN_CACHE 8
   FHEM_TZ   
   FUUID      5ee78b8f-f33f-a8a4-b186-4469943192a6783d
   NAME       general.weather.forecast.dwd
   NR         98
   STATE      updating alerts cache
   TYPE       DWD_OpenData
   .attraggr:
   .attrminint:
   READINGS:
     2020-06-15 16:54:16   state           updating alerts cache
Attributes:
   alertArea  105754000
   alertLanguage DE
   forecastDays 5
   forecastStation 10320
   forecastWW2Text 1

→ kein Stacktrace.

Ich denke es liegt daran, dass bei der Version ohne Stacktrace das Internal .warncellId noch nicht gesetzt ist - du müsstest das im Prinzip sofort beim Define mit einem Wert belegen.


####
####    Global
####
attr global userattr ASC:0,1,2 ASC_AutoAstroModeEvening ASC_AutoAstroModeMorning ASC_LockOut ASC_Mode_Down ASC_Pos_Reading ASC_Roommate_Device ASC_Roommate_Reading ASC_WindowRec DbLogExclude DbLogInclude DbLogValueFn:textField-long HmIp3D HmIpKey HmIpSGTIN alarm_system_interior alarm_system_outer_shell alarm_system_perimeter cmdIcon devStateIcon devStateIcon:textField-long devStateStyle icon installationRoom msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue sortby webCmd webCmdLabel:textField-long widgetOverride ASC_BlockingTime_afterManual ASC_Down ASC_Mode_Up ASC_Shading_Direction ASC_Shading_Mode ASC_Shading_Pos ASC_ShuttersPlace ASC_Up ASC_Ventilate_Pos ASC_Ventilate_Window_Open ASC_WindowRec_subType
attr global altitude 80
attr global autoload_undefined_devices 1
attr global autosave 0
attr global backup_before_update 0
attr global commandref modular
attr global dnsServer 192.168.0.16
attr global holiday2we general.holidays.nrw
attr global language DE
attr global latitude 51.9293504
attr global logfile ./log/fhem/fhem.log
attr global longitude 8.377413199999978
attr global modpath .
attr global motd
attr global mseclog 1
attr global pidfilename /var/run/fhem/fhem.pid
attr global room hidden
attr global showInternalValues 1
attr global statefile ./fhem.save
attr global updateInBackground 1
attr global verbose 5
attr global stacktrace 1

# strange log entries for this fella
# define ActionDetector CUL_HM 000000
# setuuid ActionDetector 5e1128c7-f33f-15c9-cd37-40ff6adbe1a43eff
# attr ActionDetector .mId no
# attr ActionDetector event-on-change-reading .*
# attr ActionDetector model ACTIONDETECTOR
# attr ActionDetector subType virtual

####
####    Includes
####

include ./cfg.d/general/frontends.cfg

defmod general.weather.forecast.dwd DWD_OpenData
    attr general.weather.forecast.dwd alertArea 105754000
    attr general.weather.forecast.dwd alertLanguage DE
    attr general.weather.forecast.dwd forecastDays 5
    attr general.weather.forecast.dwd forecastStation 10320
    attr general.weather.forecast.dwd forecastWW2Text 1

################################################
################################################

# FHEM will add new new devices below this comment section

################################################
################################################



2020.06.15 16:49:27.159 5: Starting notify loop for global, 1 event(s), first is SHUTDOWN
2020.06.15 16:49:27.159 5: createNotifyHash
2020.06.15 16:49:27.160 5: End notify loop for global
2020.06.15 16:49:27.160 0: Server shutdown
2020.06.15 16:49:27.160 1: PERL WARNING: Use of uninitialized value $warncellId in division (/) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.15 16:49:27.160 1: stacktrace:
2020.06.15 16:49:27.160 1:     main::__ANON__                      called by ./FHEM/55_DWD_OpenData.pm (1371)
2020.06.15 16:49:27.160 1:     DWD_OpenData::IsCommuneUnionWarncellId called by ./FHEM/55_DWD_OpenData.pm (839)
2020.06.15 16:49:27.160 1:     DWD_OpenData::Shutdown              called by fhem.pl (3792)
2020.06.15 16:49:27.160 1:     main::CallFn                        called by fhem.pl (1816)
2020.06.15 16:49:27.160 1:     main::CommandShutdown               called by fhem.pl (710)
2020.06.15 16:49:27.160 1: PERL WARNING: Use of uninitialized value $warncellId in division (/) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.15 16:49:27.160 1: stacktrace:
2020.06.15 16:49:27.160 1:     main::__ANON__                      called by ./FHEM/55_DWD_OpenData.pm (1371)
2020.06.15 16:49:27.160 1:     DWD_OpenData::IsCommuneUnionWarncellId called by ./FHEM/55_DWD_OpenData.pm (839)
2020.06.15 16:49:27.160 1:     DWD_OpenData::Shutdown              called by fhem.pl (3792)
2020.06.15 16:49:27.160 1:     main::CallFn                        called by fhem.pl (1816)
2020.06.15 16:49:27.160 1:     main::CommandShutdown               called by fhem.pl (710)
2020.06.15 16:49:27.160 1: PERL WARNING: Use of uninitialized value $warncellId in division (/) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.15 16:49:27.160 1: stacktrace:
2020.06.15 16:49:27.160 1:     main::__ANON__                      called by ./FHEM/55_DWD_OpenData.pm (1371)
2020.06.15 16:49:27.160 1:     DWD_OpenData::IsCommuneUnionWarncellId called by ./FHEM/55_DWD_OpenData.pm (839)
2020.06.15 16:49:27.160 1:     DWD_OpenData::Shutdown              called by fhem.pl (3792)
2020.06.15 16:49:27.160 1:     main::CallFn                        called by fhem.pl (1816)
2020.06.15 16:49:27.160 1:     main::CommandShutdown               called by fhem.pl (710)
2020.06.15 16:49:27.160 1: PERL WARNING: Use of uninitialized value $warncellId in numeric eq (==) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.15 16:49:27.160 1: stacktrace:
2020.06.15 16:49:27.160 1:     main::__ANON__                      called by ./FHEM/55_DWD_OpenData.pm (1371)
2020.06.15 16:49:27.160 1:     DWD_OpenData::IsCommuneUnionWarncellId called by ./FHEM/55_DWD_OpenData.pm (839)
2020.06.15 16:49:27.160 1:     DWD_OpenData::Shutdown              called by fhem.pl (3792)
2020.06.15 16:49:27.160 1:     main::CallFn                        called by fhem.pl (1816)
2020.06.15 16:49:27.160 1:     main::CommandShutdown               called by fhem.pl (710)
2020.06.15 16:49:27.160 1: PERL WARNING: Use of uninitialized value $warncellId in numeric eq (==) at ./FHEM/55_DWD_OpenData.pm line 1371.
2020.06.15 16:49:27.160 1: stacktrace:
2020.06.15 16:49:27.160 1:     main::__ANON__                      called by ./FHEM/55_DWD_OpenData.pm (1371)
2020.06.15 16:49:27.160 1:     DWD_OpenData::IsCommuneUnionWarncellId called by ./FHEM/55_DWD_OpenData.pm (839)
2020.06.15 16:49:27.160 1:     DWD_OpenData::Shutdown              called by fhem.pl (3792)
2020.06.15 16:49:27.160 1:     main::CallFn                        called by fhem.pl (1816)
2020.06.15 16:49:27.160 1:     main::CommandShutdown               called by fhem.pl (710)
« Letzte Änderung: 15 Juni 2020, 16:56:46 von Christoph Morrison »
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar
Hilfreich Hilfreich x 1 Liste anzeigen

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Antw:Modul für DWD Open Data
« Antwort #696 am: 17 Juni 2020, 20:47:50 »
Danke für die super Analyse.

Da der Fehler beim Shutdown auftritt, ist die Lösung sogar noch einfacher, denn der Shutdown-Ablauf ist zum Abbrechen und Aufräumen vorgesehen. Im konkreten Fall gibt es aber bei der Vorhersage nichts aufzuräumen, sonst wäre die warncellId initialisiert - also kann man dann die Anweisungen überspringen.

Neue Version folgt ...
FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Testversion verfügbar
« Antwort #697 am: 17 Juni 2020, 22:42:44 »
Es gibt eine neue Testversion des DWD OpenData Moduls (1.014006):

https://raw.githubusercontent.com/jnsbyr/fhem/develop/FHEM/55_DWD_OpenData.pm

Sie behebt folgende Fehler:
  • $warncellId nicht initialisiert bei FHEM Shutdown vor der 1. Vorhersageabfrage, @Christoph Morrison
  • Rotation der Vorhersagedaten wird nicht ausgeführt, wenn der Download vom DWD fehlschlägt
  • vorhandene Warnungen werden gelöscht, wenn der Download vom DWD fehlschlägt

Rückmeldungen sind erwünscht.

Grüße,
Jens
FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth

Offline rcmcronny

  • Full Member
  • ***
  • Beiträge: 193
Antw:Modul für DWD Open Data
« Antwort #698 am: 18 Juni 2020, 11:55:34 »
Hi Jens,

ich habs mal mit eingespielt, nach einem shutdown restart läuft erstmal alles wie bisher. Sieht also gut aus.
So als kurze Rückmeldung schonmal :)

Ronny
Hilfreich Hilfreich x 1 Liste anzeigen

Offline jensb

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 687
    • GitHub Projekte
Antw:Modul für DWD Open Data
« Antwort #699 am: 21 Juni 2020, 18:07:33 »
Danke für die Rückmeldung, das Update ist eingecheckt und wird ab Montag dem 22.06.2020 über FHEM zur Verfügung stehen.

Grüße,
Jens
FHEM 6 - RPi 4 Raspbian 10 + PiTFT - OPi Zero Armbian 5.35
EnOcean, LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, Stromzähler (ES-Fer), Gaszähler - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - SIGNALduino - Bluetooth