I am using weewx-MQTTSubscribe to bring data into Weewx from sensors, so i
don't use SDR sensor map, see config for mqttsubscribe here
https://github.com/bellrichm/WeeWX-MQTTSubscribe/wiki/Configuring A number
of unsuccessful tries to modify mqttsubscribe are commented out.
[MQTTSubscribeDriver]
[[topics]]
[[[rtl_433/9b13b3f4-rtl433/devices/Acurite-6045M/C/223/strike_count]]]
[[[[rtl_433/9b13b3f4-rtl433/devices/Acurite-6045M/C/223/strike_count]]]]
name = lightning_strike_count #strikes_total
#strike_count
contains_total = true
# conversion_type = int
# units = count
# expires_after = 0
[[[rtl_433/9b13b3f4-rtl433/devices/Acurite-6045M/C/223/storm_dist]]]
[[[[rtl_433/9b13b3f4-rtl433/devices/Acurite-6045M/C/223/storm_dist]]]]
name = lightning_distance #strike_dist #LS_1_distance
# units = mile
# conversion_type = int
# expires_after = 0
[[Corrections]]
# For each type, an arbitrary calibration expression can be given.
# It should be in the units defined in the StdConvert section.
# Example:
lightning_distance = lightning_distance if lightning_strike_count
> 0 else None
[Accumulator]
[[lightning_strike_count]]
extractor = sum
[[lightning_distance]]
extractor = min
# merger = minmax
On Wednesday, August 11, 2021 at 7:58:38 AM UTC-4 [email protected] wrote:
> I think going back to your original issue something seems to be off. Can
> you post you weewx.conf for lightning data? If you're using sdr, should
> contain the following in each section:
>
> [SDR]
> [[sensor_map]]
> ......
> lightning_distance = distance.XXXX.AcuriteLightningPacket
> strikes_total = strikes_total.XXXX.AcuriteLightningPacket
> [[deltas]]
> rain = rain_total
> lightning_strike_count = strikes_total
>
> [StdCalibrate]
>
> [[Corrections]]
> lightning_distance = lightning_distance if lightning_strike_count
> > 0 else None
>
> [Accumulator]
> [[lightning_strike_count]]
> extractor = sum
> [[lightning_distance]]
> extractor = min
>
> On Tuesday, August 10, 2021 at 2:46:44 PM UTC-4 [email protected] wrote:
>
>> Initially I thought Rich's solution was going to work, adding his
>> suggested correction <lightning_distance = lightning_distance if
>> 'lightning_strike_count'in locals() and lightning_strike_count> 0 else
>> None> eliminated my fixed lightning_distance data in the absence of
>> lightning_counts, but it created a new problem, now I don't get
>> lightning_distance values with a lightning strike. I triggered the
>> lightning detector with a spark by transiently shorting a battery charger
>> at time 14:22:16 , which produced 2 detected lightnings and 14:22:24 which
>> produced one, but the lightning_distance remains at None. My mqtt explorer
>> reports the lightning detector is sending a constant 12-mile lightning
>> distant
>>
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.82,
>> lightning_distance: None, maxSolarRad: None, outHumidity: 73.0, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.81,
>> lightning_strike_count: 2.0, maxSolarRad: None, rainRate: 0.32, usUnits: 1
>> <--------------------------------------------------------
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.82,
>> lightning_distance: None, lightning_strike_count: 0.0, maxSolarRad: None,
>> rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.83,
>> lightning_distance: None, lightning_strike_count: 0.0, maxSolarRad: None,
>> rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.81,
>> lightning_distance: None, maxSolarRad: None, rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.82,
>> lightning_distance: None, maxSolarRad: None, rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:16 EDT (1628619736) dateTime: 1628619736.83,
>> lightning_distance: None, maxSolarRad: None, rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.67,
>> lightning_distance: None, maxSolarRad: None, outTemp: 82.000004, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.68,
>> lightning_distance: None, maxSolarRad: None, outTemp: 82.000004, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.69,
>> lightning_distance: None, maxSolarRad: None, outTemp: 82.000004, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.67,
>> lightning_distance: None, maxSolarRad: None, outHumidity: 73.0, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.68,
>> lightning_distance: None, maxSolarRad: None, outHumidity: 73.0, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.69,
>> lightning_distance: None, maxSolarRad: None, outHumidity: 73.0, rainRate:
>> 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.68,
>> lightning_strike_count: 1.0, maxSolarRad: None, rainRate: 0.32, usUnits: 1
>> <-----------------------------------------------------------
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.69,
>> lightning_distance: None, lightning_strike_count: 0.0, maxSolarRad: None,
>> rainRate: 0.32, usUnits: 1
>> LOOP: 2021-08-10 14:22:24 EDT (1628619744) dateTime: 1628619744.69,
>> lightning_distance: None, lightning_strike_count: 0.0, maxSolarRad: None,
>> rainRate: 0.32, usUnits: 1
>>
>>
>> On Tuesday, August 10, 2021 at 9:20:17 AM UTC-4 [email protected] wrote:
>>
>>> I'm no python expert (probably know just enough to be dangerous), but
>>> something like this might get you want you want.
>>>
>>> # ligtning_strike_count must exist and have a count > 0 for
>>> lightning_distance to have a valid value
>>> lightning_distance = lightning_distance if 'lightning_strike_count'in
>>> locals() and lightning_strike_count> 0 else None
>>>
>>> rich
>>> On Tuesday, 10 August 2021 at 03:03:01 UTC-4 gjr80 wrote:
>>>
>>>> On Tuesday, 10 August 2021 at 08:37:42 UTC+10 [email protected] wrote:
>>>>
>>>>> Here is my output running weewxd directly, I see three lines which
>>>>> show lightning_distance to be None, which is expected from corrections,
>>>>> but
>>>>> the following three lines show lightning_distance to be 11.999... It
>>>>> appears the correction " lightning_distance = lightning_distance if
>>>>> lightning_strike_count > 0 else None" is working but being ignored in
>>>>> final
>>>>> output to graph and database. Any additional thoughts?
>>>>>
>>>>
>>>> The reason you see no change to lightning_distance for some packets is
>>>> that for those packets lightning_strike_count does not exist so your
>>>> calibration expression fails and no change is made, in other words
>>>> lightning_distance remains as it was 11.9999999954. Why does this
>>>> happen, in layman's terms when lightning_strike_count is not in the
>>>> loop packet the calibration expression in effect has an unknown variable (
>>>> lightning_strike_count) and the calibration expression raises an
>>>> error. The StdCalibrate service which handles the calibration
>>>> expressions catches that error and discards that calibration expression.
>>>> Given the limitations of the StdCalibrate service I am not aware of
>>>> any calibration expression that would do as you want, of course a WeeWX
>>>> and
>>>> python wizard might come along an prove me wrong!
>>>>
>>>> My thoughts on a solution, unless there is a simple solution in your
>>>> WeeWX driver or elsewhere upstream of WeeWX I would be writing your own
>>>> WeeWX service to look at the packet and make the necessary correction.
>>>> This
>>>> way you can use a bit of python code to do exactly what you want and you
>>>> won't be limited by the single line expressions as used by StdCalibrate.
>>>> All up it should take no more than 10 lines of code. The service could be
>>>> a
>>>> data_service or process_service (refer weewx.conf [Engine] [[Services]])
>>>> but would need to appear before StdArchive is called. The advantage of
>>>> your own service is that there is no need to change any one else's code
>>>> (eg
>>>> WeeWX driver, upstream code) so you will not have your changes lost during
>>>> an upgrade (WeeWX or otherwise).
>>>>
>>>> Gary
>>>>
>>>
--
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/6b5c9d95-6dbc-4358-b9da-c6b7c968394fn%40googlegroups.com.