I just set up an Acurite Atlas with the lightning detector sensor add-on.
The strike_count that it outputs is cumulative (after I found I had 5000+
lightning strikes per 1min archive interval). I have it, and the
strike_distance outputs mapped to weewx as below. rtl_433 is converting
strike_distance from the imperial 'miles' that is natively output, to
metric 'km', hence the additional units switch:
[[[rtl_433/pi4b8/devices/Acurite-Atlas/A/571/strike_count]]]
name = lightning_strike_count
contains_total = true
[[[rtl_433/pi4b8/devices/Acurite-Atlas/A/571/strike_distance]]]
name = lightning_distance
units = km
The sensor output always has a strike count and distance, but since the
strike count is cumulative, there should be no recorded distance if the
delta is 0.
In StdCalibrate/Corrections, I have these:
radiation = luminosity / 126.7 if luminosity is not None else None
(<----this is working as expected)
lightning_distance = lightning_distance if lightning_strike_count > 0 else
float('nan') (<----does not work)
lightning_distance = lightning_distance if lightning_strike_count > 0 else
None (<----does not work)
lightning_distance = lightning_distance if lightning_strike_count > 0 else
Null (<----does not work)
The *radiation *observation is being recorded as 0 when *luminosity *is
recorded as 0. But, since 0 is a valid possible output, if 0 != None, then
0/126.7 = 0. Fair enough.
The *lightning_distance* should be evaluating as 0 or None, but instead is
being recorded as the sensor's output value, while *lightning_strike_count*
is recorded as 0. I went into the db and ran the following, then rebuilt
the affected dailies:
- update archive set lightning_strike_count = 0 where
lightning_strike_count > 5;
- update archive set lightning_distance = 0 where lightning_strike_count
= 0;
strike_count > 5 was because I caught my contains_total omission mid day
yesterday, and there was thunder last night. Strikes before the storm were
largely invalid, but distance wasn't necessarily.
[image: Screenshot 2025-04-01 141609.png]
Straight away, *lightning_distance* is being recorded as the sensor's
value, instead of 0, or ideally None/null.
0 is a valid possible distance, assuming I get a direct strike. Without a
strike, it's not 0 distance- there *isn't* a distance.
Rather than continue trying random changes to the Corrections logic, can
anyone point to where the issue or mistake may lie? Is it something to do
with the referenced *lightning_strike_count* being a cumulative number? Do
I just need to yield and make the logic evaluate to 0?
--
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 visit
https://groups.google.com/d/msgid/weewx-user/6012f81c-ca35-4e72-969e-b3c9431a5fedn%40googlegroups.com.