Each observation type needs an assignment to a unit group. So if you define
a new observation type you have to write somewhere:
weewx.units.obs_group_dict.setdefault('your_observation_type','group_something')
The unit group must exist. group_direction is an example of a unit group
that is connected to the unit degree_compass.
Please also not the name of the unit degree_compass, not otherwise round.
If you want to define a new unit group, say group_coordinate, you have to
write:
*for* group *in* weewx.units.std_groups:
weewx.units.std_groups[group].setdefault('group_coordinate',
'degree_compass')
You can include that code in user/extensions.py.
Stefan Gliessmann schrieb am Mittwoch, 21. August 2024 um 15:46:28 UTC+2:
> A GPS device in my RV sends the current coordinates via MQTT to my weewx
> server.
> The coordinates are displayed with units = None.
> Trying to change them to units = degree_compass or units = " °" results in
> the below error:
>
> Aug 21 15:28:26 rvwx weewx[1590] DEBUG weewx.units: Unable to convert from
> None to °
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: MQTT: Unexpected
> exception of type <class 'KeyError'>
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** Traceback (most
> recent call last):
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** File
> "/usr/share/weewx/weewx/restx.py", line 382, in run_loop
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: ***
> self.process_record(_record, dbmanager)
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** File
> "/usr/share/weewx/user/mqtt.py", line 516, in process_record
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** data =
> self.filter_data(record)
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** File
> "/usr/share/weewx/user/mqtt.py", line 496, in filter_data
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** v =
> weewx.units.convert(from_t, to_units)[0]
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** File
> "/usr/share/weewx/weewx/units.py", line 1454, in convert
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: ***
> conversion_func = conversionDict[val_t[1]][target_unit]
> Aug 21 15:28:26 rvwx weewx[1590] ERROR weewx.restx: *** KeyError: None
> Aug 21 15:28:26 rvwx weewx[1590] CRITICAL weewx.restx: MQTT: Thread
> terminating. Reason: None
>
> Here is the relevant section from weewx.conf to display coordinates in
> belchertown skin:
> [[MQTT]]
> server_url = mqtt://
> zzzz:[email protected]:1883/
> <http://zzzz:[email protected]:1883/>
> topic = RV
> unit_system = METRIC
> binding = loop, archive
> log_success = true
> [[[inputs]]]
> [[[[latitude]]]]
> # units = " °"
> format = %.3f
>
> and MQTT subscribe to Write the GPS data received via MQTT into the weewx
> db:
> [MQTTSubscribeService]
> # This section is for the MQTTSubscribe service.
>
> # Turn the service on and off.
> # Default is: true
> # Only used by the service.
> enable = true
> log = true
>
> # The MQTT server.
> # Default is localhost.
> host = "wxvm.bz3gfkrlqtrsc3sv.myfritz.net"
>
> # The port to connect to.
> # Default is 1883.
> port = 1883
>
> # Maximum period in seconds allowed between communications with the
> broker.
> # Default is 60.
> keepalive = 60
>
> # username for broker authentication.
> # Default is None.
> username = xxxx
>
> # password for broker authentication.
> # Default is None.
> password = yyyy
>
> # The binding, loop or archive.
> # Default is: loop
> # Only used by the service.
> binding = loop
>
> # The message handler to use
> [[message_callback]]
> # The format of the MQTT payload.
> # Currently support: individual, json, keyword
> # Must be specified.
> type = json
>
> # The topics to subscribe to.
> [[topics]]
> # Units for MQTT payloads without unit value.
> # Valid values: US, METRIC, METRICWX
> # Default is: US
> unit_system = US
> # adjust_start_time = 1
> use_server_datetime = True
> use_topic_as_fieldname = true
>
> [[[RVGPS/#]]]
> # The WeeWX name.
> # Default is the name from MQTT.
> #name = Latitude
>
> # True if the incoming data should not be processed into WeeWX.
> # Valid values: True, False
> # Default is False
> ignore = False
>
> # True if the incoming data is cumulative.
> # Valid values: True, False
> # Default is False
> # contains_total = False
>
> # The conversion type necessary for WeeWX compatibility
> # Valid values: bool, float, int, none
> # Default is float
> # conversion_type = int
>
> # The units of the incoming data.
> # Useful if this field's units differ from the topic's
> unit_system's units.
> # Valid values: see,
> http://www.weewx.com/docs/customizing.htm#units
> # Default is not set
> # units = degree_compass
>
> [image: Screenshot 2024-08-21 at 15.40.43.png]
>
> This is how it Looks on belchertown skin with units = None, e.g. no change
> of units intented.
>
> TIA,
> Stefan
>
>
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/ec6cbf5b-e5d0-45b4-ae64-c74b82e1e64cn%40googlegroups.com.