[SOLVED] Weatherflow Smart Weather Station binding

OK. I’m a little puzzled… clearly hub-status and hub_status are two different message formats. Can you let me know what firmware revision you’re using on the hub and air sensors?

HUB: rev 30
AIR: rev 20

Ok. You’re running the beta firmware. I’ve added parsing support for the new hub status message (but we don’t do anything with it yet, as it’s pretty low level stuff). You can find the newest version at the download page listed above.

Let me know if that solves the problem!

One thing seems to be fixed :smiley: now the other one:
2018-02-06 20:26:06.727 [ERROR] [ather.model.SmartWeatherDeserializer] - Received unknown SmartWeather message type: device_status
2018-02-06 20:26:06.734 [WARN ] [atherflowsmartweather.util.UdpServer] - UdpServer.Listener org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1@1d875a2 threw an exception: null

Yes, since we know that these are legitimate (new) types of messages, it’s not really an error… I will take a look through the newest firmware details and add parsers for the messages. I’m not sure what, if anything, we should do with the data since it seems like they are new messages that don’t replace the existing data (as of yet).

I’ll post back when I get these added.

Bill

1 Like

Just to be sure, I hope you use this page ? https://weatherflow.github.io/SmartWeather/api/udp/v30/

Hi Bill,

I’ve just updated to your latest binding version and am still seeing DiscoveryServiceCallback errors:

2018-02-09 09:24:42.352 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:24:52.352 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:25:02.352 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:25:12.352 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:25:16.753 [INFO ] [.SmartWeatherStationDiscoveryService] - Already have thing with ID=weatherflowsmartweather:air:HB-00001121:AR-00008797
2018-02-09 09:25:16.802 [INFO ] [ather.handler.SmartWeatherAirHandler] - parsing observation record: [1.518128716E9, 1013.0, 24.38, 85.0, 0.0, 0.0, 2.98, 1.0]
2018-02-09 09:25:22.355 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:25:32.353 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!
2018-02-09 09:25:42.351 [WARN ] [nternal.SmartWeatherDiscoveryService] - DiscoveryServiceCallback not set. This shouldn’t happen!

Hi,

What version of OpenHAB are you running? I’ve noticed some strange behavior on the official 2.2.0 release… the feature (the DiscoveryServiceCallback) that’s causing the error is used to make sure we don’t create duplicate inbox entries and when that hasn’t been set by OpenHAB on the bundle’s startup, that “error” message is printed. Restarting the bundle seems to fix the problem until you restart OpenHAB. It seems like maybe a timing problem on startup, but if that’s the case, it isn’t anything that a binding would have control over.

I’m told that 2.3.0 fixes the problem but I haven’t had a chance to test it.

Bill

Yes, that’s what I am using as a reference. The status messages are very different and have some very low-level infomation in them; I’m not sure if it makes sense to display any of it in the UI…

Thanks Bill. Yes, I’m running the 2.2.0 release and have just restarted the bundle which has stopped th warning messages.

Just wanted to mention that I set up a fresh install of the latest 2.3 snapshot today and the problem seems to be resolved.

At weatherflow community someone posted nice GUI https://weather34.com/
This would be spectaculat to have something similat done with e.g. habpanel

1 Like

hub-status was changed to hub_status to maintain consistency in naming keys.

You can follow the link below.

If you haven’t activated your account on the WeatherFlow community, I highly suggest you do and join the developers forum.

Hi @GaryFunk… thanks for the tip. I’ve signed up and will try to catch up on all of the discussion.

Yes, I ran across that shortly after I received my air sensor. I guess in theory it’s possible to duplicate that display. WeatherFlow seemed to indicate tat the time that it worked natively with the SmartWeathe station, but I wasn’t able to confirm that. Does anyone have any info about the status of the Weather32 UI?

The author, Brian, is on the WeatherFlow forum and can answer questions.

Bill, WeatherFlow will be pushing out firmware v35 to the Hub this week.it has LOT of API changes

HI Bill,
I switched to OH 2.3 (beta) and I frequently get the following error:
2018-02-28 00:06:01.760 [ERROR] [l.SmartWeatherUDPListenerServiceImpl] - Unable to parse message.
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: For input string: "1,0"
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:245) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:235) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:887) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:952) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:925) [22:com.google.gson:2.7.0]
at org.openhab.binding.weatherflowsmartweather.model.SmartWeatherDeserializer.deserialize(SmartWeatherDeserializer.java:45) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.model.SmartWeatherDeserializer.deserialize(SmartWeatherDeserializer.java:1) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:887) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:852) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:801) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:773) [22:com.google.gson:2.7.0]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl.processMessage(SmartWeatherUDPListenerServiceImpl.java:63) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl.access$0(SmartWeatherUDPListenerServiceImpl.java:56) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1.packetReceived(SmartWeatherUDPListenerServiceImpl.java:39) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer.fireUdpServerPacketReceived(UdpServer.java:544) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer.runServer(UdpServer.java:357) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer$1.run(UdpServer.java:219) [197:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NumberFormatException: For input string: "1,0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:580) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:615) ~[?:?]
at com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:260) ~[?:?]
at com.google.gson.internal.bind.JsonTreeReader.nextInt(JsonTreeReader.java:243) ~[?:?]
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:243) ~[?:?]
… 20 more
2018-02-28 00:06:01.790 [WARN ] [atherflowsmartweather.util.UdpServer] - UdpServer.Listener org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1@1541a50 threw an exception: null

Of course this is beta, but maybe it is worth to mention this error.

From some time binding stopped work. Items do not update. I hope this is because of beta firmware rev 35 changes?

2018-03-03 23:55:29.185 [WARN ] [atherflowsmartweather.util.UdpServer] - UdpServer.Listener org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1@10b0dec threw an exception: null
2018-03-03 23:55:35.428 [ERROR] [ather.model.SmartWeatherDeserializer] - Received unknown SmartWeather message type: device_status
2018-03-03 23:55:35.431 [WARN ] [atherflowsmartweather.util.UdpServer] - UdpServer.Listener org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1@10b0dec threw an exception: null
2018-03-03 23:55:35.545 [WARN ] [ather.handler.SmartWeatherHubHandler] - air observation but not for us.
2018-03-03 23:55:35.549 [WARN ] [ather.handler.SmartWeatherHubHandler] - air observation but not for us.
2018-03-03 23:55:39.145 [ERROR] [l.SmartWeatherUDPListenerServiceImpl] - Unable to parse message.
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: For input string: "1,0"
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:245) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:235) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) [22:com.google.gson:2.7.0]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:887) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:952) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:925) [22:com.google.gson:2.7.0]
at org.openhab.binding.weatherflowsmartweather.model.SmartWeatherDeserializer.deserialize(SmartWeatherDeserializer.java:45) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.model.SmartWeatherDeserializer.deserialize(SmartWeatherDeserializer.java:1) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:887) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:852) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:801) [22:com.google.gson:2.7.0]
at com.google.gson.Gson.fromJson(Gson.java:773) [22:com.google.gson:2.7.0]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl.processMessage(SmartWeatherUDPListenerServiceImpl.java:63) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl.access$0(SmartWeatherUDPListenerServiceImpl.java:56) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1.packetReceived(SmartWeatherUDPListenerServiceImpl.java:39) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer.fireUdpServerPacketReceived(UdpServer.java:544) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer.runServer(UdpServer.java:357) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at org.openhab.binding.weatherflowsmartweather.util.UdpServer$1.run(UdpServer.java:219) [271:org.openhab.binding.weatherflowsmartweather:2.2.0.201802060049]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NumberFormatException: For input string: "1,0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:580) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:615) ~[?:?]
at com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:260) ~[?:?]
at com.google.gson.internal.bind.JsonTreeReader.nextInt(JsonTreeReader.java:243) ~[?:?]
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:243) ~[?:?]
… 20 more
2018-03-03 23:55:39.172 [WARN ] [atherflowsmartweather.util.UdpServer] - UdpServer.Listener org.openhab.binding.weatherflowsmartweather.internal.SmartWeatherUDPListenerServiceImpl$1@10b0dec threw an exception: null

I think this is because the weatherflow people have changed the format of individual fields in the hub_status message, which is still present only in beta versions of the firmware. Hopefully when they release a production version with that message type, they’ll stop changing things and I can fix the error permanently.