DWD-Unwetter-Binding (OH3) no warnings

Hi,

after enabling debugging of the DWD Unwetter Binding, I found exactly the same response as Reinhard did for the warncell id from my configuration.

So I suspect it’s a general issue with the binding? I’m using the SNAPSHOT that was announced here on Dec 30th.

By the way: In the complete json from the binding documentation I found two warncell ids for my city. I tried setting up the thing with both, but the results are always the same.

Regards
Daniel

Hi Forum,

does anyone has an idea to fix it?
Is it possible that there is a problem in the binding 3.0.1 that only fixed in Snapshot 3.1?

Best Regards,
Reinhard

Hello Forum,

I am testing the DWD Unwetter Binding just at the moment and have seen the same response.
I found warnings for several Cell-IDs in the json-file, but when I tested to request those warnings by using those Cell-IDs through the Unwetter-Binding it returned no warnings. I assume the reason for this is, that there are differences with the warnings issued through the json-file and the geoserver-request that the Unwetter-Binding uses.

I would suggest to enter the mentioned “raw request” in a web browser.

https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+‘109184000’ 

As a result a file "features.xml’ is returned. If this file contains

numberMatched=“0” numberReturned=“0”

then there is actually no warning returned by the DWD server for the given cell-ID and it is not a fault of the binding.

Regards,
Jörg

I did manage to get it running for my case.

The actual issue is: The module uses the hardcoded URL https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+

This does not work for “Landkreise”

I’ve changed the URL to https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Landkreise&CQL_FILTER=GC_WARNCELLID+LIKE+ which gives me the expected output for my cell ID.

I do see two solutions here:

  • Intruduce a parameter to use either the “Gemeine” or the “Landkreis” url
  • fallback to the “Landkreis” route as a fallback when there is no data returned from the “Gemeinde” route

Open for suggestion and willing to work on this :wink:

If someone is working on the “DWD-Unwetter” binding, i suggest to solve another problem:
(I know this is slightly off-topic, but it is only a short hint in case the code is revised anyway).

Converting the values for “ALTITUDE” and “CEILING” can lead to conversion errors:

<dwd:ALTITUDE>0</dwd:ALTITUDE>
 <dwd:CEILING>9842.5197</dwd:CEILING>

will throw a conversion error:

14:01:01.734 [WARN ] [se.internal.SseItemStatesEventBuilder] - Exception while formatting value '3000.00000456 m' of item WeatherWarnings_Heightto1 with format '%d m': d != java.math.BigDecimal

I assume that the conversion from “feet” to “m” is the reason for this. The correct result should be “3000 m”.

@JoergDr Thanks for the hint. I created a PR to fix it:

At the moment there is another issue with the “DWD-Unwetter” binding:
The DWD servers answer very slow. The timeout value of 5000 ms is not sufficient:

14:50:46.866 [WARN ] [er.internal.data.DwdWarningDataAccess] - Communication error occurred while getting data: java.util.concurrent.TimeoutException: Total timeout 5000 ms elapsed

(Please tell me if I should open a new thread instead of posting this here)

Regards,
Jörg

I think I’ll have the same problem as @plevie. Is there a solution for my issue?

Normally, you just have to wait until there is a concrete warning for your city.
I had to wait several weeks, until today. Now there is a warning “Sturmböen” and it is available for my city.

If you change the URL from “Warnungen_Gemeinden” to “Warnungen_Landkreise” you will get more warnings, but the location is less precise.

HI @joerg, I have tested with different cities (also cities where warnings at the moment are available). My scripting solution for DWD-Unwetter is working here. Only the binding in OH3 didn’t work :frowning:

Hi,

i have some debug-messages for this issue:

2021-05-13 18:35:16.786 [DEBUG] [.internal.handler.DwdUnwetterHandler] - Start initializing!
2021-05-13 18:35:16.788 [DEBUG] [r.internal.data.DwdWarningDataAccess] - Refreshing Data for cell 109476000
2021-05-13 18:35:16.788 [DEBUG] [.internal.handler.DwdUnwetterHandler] - Finished initializing!
2021-05-13 18:35:16.833 [TRACE] [r.internal.data.DwdWarningDataAccess] - Raw request: https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+%27109476000%27
2021-05-13 18:35:16.834 [TRACE] [r.internal.data.DwdWarningDataAccess] - Raw response: <?xml version="1.0" encoding="UTF-8"?><wfs:FeatureCollection xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dwd="http://www.dwd.de" xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" numberMatched="0" numberReturned="0" timeStamp="2021-05-13T16:35:16.805Z" xsi:schemaLocation="http://www.dwd.de https://maps.dwd.de/geoserver/dwd/wfs?service=WFS&amp;version=2.0.0&amp;request=DescribeFeatureType&amp;typeName=dwd%3AWarnungen_Gemeinden http://www.opengis.net/wfs/2.0 https://maps.dwd.de/geoserver/schemas/wfs/2.0/wfs.xsd http://www.opengis.net/gml/3.2 https://maps.dwd.de/geoserver/schemas/gml/3.2.1/gml.xsd"/>

At the moment there is a warning for 27109476000 and I’ll get this: numberMatched=“0” numberReturned=“0”

A technical call auf the Website ist working also on the system:

curl https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json | less

Is there any idea for it? My scripted solution finds warnings for the cellid.

Very very strange …

Best regards,
Reinhard

@eidelsburger

Hi,
sorry for my late reply, but I somehow missed the message that there was a reply for me here.

Have you tried to enter the request URL direct in a browser?
For example:

https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+%27808117002%27

The OH3 binding worked fine for me in the past and I got warnings issued for my city, but at the moment, the DWD warning server does not function at all, I get the following answer when I use the OH3 binding or if I enter the request URL direct in a browser:

<script/>
<ows:Exception exceptionCode="InvalidParameterValue" locator="GetFeature">
<ows:ExceptionText>Illegal property name: WARNCELLID for feature type dwd:Warnungen_Gemeinden</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>

Maybe this is only a temporary error.

Best regards,
Jörg

Hi,

at the moment the webservice seams to work. For this request:

https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+%27808117002%27

I’ll get this response:

<ows:ExceptionReport xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 https://maps.dwd.de/geoserver/schemas/ows/1.1.0/owsAll.xsd">
<ows:Exception exceptionCode="InvalidParameterValue" locator="typeName">
<ows:ExceptionText>Feature type dwd:Warnungen_Gemeinden unknown</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>

And this message I’ll didn’t get from the Log in the binding. My scripted solution works fine, so I think the “Warnungen_Gemeinden” ist not integrated in the binding.

If I have a look at WFS 2.0.0 at 2m Temperatur an RBSN Stationen from GeoServer: Willkommen

There is only this feature type available:

<FeatureType xmlns:dwd="http://www.dwd.de">
<Name>dwd:Warnungen_Gemeinden_vereinigt</Name>
<Title>Wetterwarnungen und Vorabinformationen auf Gemeindeebene (vereinigte Warngebiete)</Title>

For this call / request:

https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinde&CQL_FILTER=WARNCELLID+LIKE+%27808117002%27

I get this response:

<ows:ExceptionReport xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 https://maps.dwd.de/geoserver/schemas/ows/1.1.0/owsAll.xsd">
<ows:Exception exceptionCode="InvalidParameterValue" locator="GetFeature">
<ows:ExceptionText>Illegal property name: WARNCELLID for feature type dwd:Warnungen_Gemeinden_vereinigt</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>

It seams that the WARNCELLID ist not the right parameter for the call.

Does someone has an idea for a workaround?

Best regards,
Reinhard

I assume there currently is a bug on the DWD geoserver.

As the error messages are changing during the last days, they might be testing new software at DWD. I recommend to wait some days, so maybe the problems will disappear.

As the OH3-DWD-Unwetter-Binding does not recognize this behaviour as an error, I suggest to add something like a “Status” or “Error” channel, so one can distinct between “no warnings available” and “service unavailable”.

Best regards,
Jörg

8.6.2021:
The problem seems to be solved.
But a “status” or “error” channel in the binding would be helpful.

Hi,

I have done some tests with different WARNCELLID’s. If have used my ID for “Gemeinde” (Amtlicher Gemeindeschlüssel – Wikipedia) and a prepended “8”.

Now I get Warnings for my “Gemeinde” (with “Landkreis” it didn’t work in the binding for my scenario).

Best regards,
Reinhard

Just some additional information:

A detailed explanation of the CQL_FILTER can be found here:

IMHO the current implementation is quite dangerous:

  • An empty response from the DWD server doesn’t result in a message in the debug log. Get your WARNCELLID wrong, and you’ll never see a warning.
  • There is no way to know the NAME of the region corresponding to the data. Get your WARNCELLID wrong (especially when using the wildcard %), and you’ll see wrong or no warnings at all.

So it is of utmost importance to get your WARNCELLID right:

BTW, thanks to @malmix (see Obviously simple task: textbox to display item (string) with more than approximately 56 characters on the sitemap. But how? - #4 by malmix) I found a quite elegant way to embed long texts into sitemaps:

Webview url="http://<ip address>:8080/rest/items/DWDUnwetterWarnungen_Description1/state" visibility=[DWDUnwetterWarnungen_Warning1==ON] height=3
Image url="https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/json/warnungen_gemeinde_map_de.png" visibility=[DWDUnwetterWarnungen_Warning1==ON]

hi all,

is this binding still broken ? (used the ‘official’ one)

just tried it during an active warning for e.g. this cellID :

“109189000”: [{
“regionName”: “Kreis Traunstein”,
“state”: “Bayern”,
“event”: “STURMBÖEN”,
“level”: 3,
“type”: 1,
“description”: “Es treten oberhalb 1500 m Sturmböen mit Geschwindigkeiten um 70 km/h (20m/s, 38kn, Bft 8) aus westlicher Richtung auf. In exponierten Lagen muss mit Sturmböen bis 85 km/h (24m/s, 47kn, Bft 9) gerechnet werden.”,
“end”: 1636045200000,
“start”: 1636009200000,
“headline”: “Amtliche WARNUNG vor STURMBÖEN”,
“instruction”: “ACHTUNG! Hinweis auf mögliche Gefahren: Es können zum Beispiel einzelne Äste herabstürzen. Achten Sie besonders auf herabfallende Gegenstände.”,
“stateShort”: “BY”,
“altitudeStart”: 1500,
“altitudeEnd”: null
}, {
“regionName”: “Kreis Traunstein”,
“state”: “Bayern”,
“event”: “WINDBÖEN”,

and i did not receive any warning…

log:
Raw request: https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID+LIKE+‘109279000’
14:49:19.967 [TRACE] [ter.internal.dto.DwdWarningDataAccess] - Raw response: <?xml version="1.0" encoding="UTF-8"?><wfs:FeatureCollection xmlns:xs=“XML Schema” xmlns:dwd=“http://www.dwd.de” xmlns:wfs=“http://www.opengis.net/wfs/2.0” xmlns:gml=“http://www.opengis.net/gml/3.2” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” numberMatched=“0” numberReturned=“0” timeStamp=“2021-11-04T13:49:19.911Z” xsi:schemaLocation=“http://www.dwd.de https://maps.dwd.de/geoserver/dwd/wfs?service=WFS&version=2.0.0&request=DescribeFeatureType&typeName=dwd%3AWarnungen_Gemeinden http://www.opengis.net/wfs/2.0 https://maps.dwd.de/geoserver/schemas/wfs/2.0/wfs.xsd http://www.opengis.net/gml/3.2 https://maps.dwd.de/geoserver/schemas/gml/3.2.1/gml.xsd”/>

as mentioned above, the cell is included in the warnings:
https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json

Same for me. I just see the updated timestamp, but get no values. I tried several different (active) IDs.
Is there a fix that can be installed manually?

Hello all together,

I put the jar-file into the addons folder and uninstalled the “original” DWD Unwetter Binding.

But the “new” binding doesn’t start.

The log entries says:

Error while starting bundle: file:/Users/PJH/openhab3/addons/org.openhab.binding.dwdunwetter-3.1.0-SNAPSHOT.jar

org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.dwdunwetter [286]

Unresolved requirement: Import-Package: javax.measure; version="[1.0.0,2.0.0)"

Can anybody help me?

Thank you and best regards. Paul

Hello all,
I installed the original binding under OH3.3 but could not receive updates.
After some searches in the internet I found these 2 links which helped solve the problem:
https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_en_pdf_1_12.html
and
https://www.dwd.de/DE/leistungen/warnungen/neue_warngebiete_aufstellung.html
In my case the root cause was a new cell_id for the community I am living in.
Maybe it helps some of you to solve the problems.