bpennypacker / WeatherFlow-Indigo-Plugin

Indigo Plugin for obtaining weather from WeatherFlow
GNU General Public License v2.0
3 stars 2 forks source link

TypeError list indices integers not floats 0.3.3 #37

Open Ghawken opened 2 years ago

Ghawken commented 2 years ago

Hi

Thanks for this plugin - working really well with a Tempest device.

Except:

Have occasionally seen this error:

2022-06-25 04:32:56.098 Gecko inTouch Spa Plugin Debug  GeckoSpaEvent.RUNNING_PING_RECEIVED: {'last_ping_at': datetime.datetime(2022, 6, 24, 18, 32, 56, 97528, tzinfo=datetime.timezone.utc)}
2022-06-25 04:33:22.299 WeatherFlow Smart Weather Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
  File "plugin.py", line 717, in runConcurrentThread
  File "plugin.py", line 645, in _process_message
  File "plugin.py", line 933, in process_ops_tempest
TypeError: list indices must be integers, not float

2022-06-25 04:33:22.300 WeatherFlow Smart Weather Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)

The corresponding data from the Tempest seems to be this:

2022-06-25 04:33:22.093 DEBUG   Plugin._process_message:    {
    "device_id": 136314,
    "firmware_revision": 165,
    "hub_sn": "HB-00042529",
    "obs": [
        [
            1656095598,
            0.15,
            0.98,
            1.5,
            182,
            3,
            1016.2,
            13.9,
            67,
            0,
            0.0,
            0,
            0.0,
            0.0,
            0,
            0,
            2.64,
            1,
            0.010278,
            null,
            null,
            0
        ]
    ],
    "serial_number": "ST-00053701",
    "source": "mqtt",
    "summary": {
        "air_density": 1.23325,
        "delta_t": 3.2,
        "dew_point": 7.9,
        "feels_like": 13.9,
        "heat_index": 13.9,
        "precip_accum_local_yesterday": 0.011252,
        "precip_analysis_type_yesterday": 0,
        "precip_minutes_local_day": 0,
        "precip_minutes_local_yesterday": 8,
        "precip_total_1h": 0.010278,
        "pressure_trend": "steady",
        "pulse_adj_ob_temp": 14.0,
        "pulse_adj_ob_time": 1656095538,
        "pulse_adj_ob_wind_avg": 1.0,
        "raining_minutes": [
            4,
            2,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
        ],
        "strike_count_1h": 0,
        "strike_count_3h": 0,
        "strike_last_dist": 37,
        "strike_last_epoch": 1655805764,
        "wet_bulb_globe_temperature": 14.9,
        "wet_bulb_temperature": 10.7,
        "wind_chill": 13.9
    },
    "type": "obs_st"
}
2022-06-25 04:33:32.499 DEBUG   Plugin._process_message:    {
    "hub_sn": "HB-00042529",
    "ob": [
        1656095603,
        1.05,
        200
    ],
    "serial_number": "ST-00053701",
    "type": "rapid_wind"
}

Looks like everything is correct - from here: https://weatherflow.github.io/Tempest/api/ws.html

Just seems like device is passing a 0.0 rather than a 0 - that or it is sending the wrong field in the incorrect index? Checking the others index's compared to above - they all seem correct, just does seem to be precipation type as a 0.0 float for some reason?

Grognard77586 commented 2 years ago

I am having this issue as well.

Oct 28, 2022 at 3:07:11 PM
   WeatherFlow Smart Weather Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
  File "plugin.py", line 717, in runConcurrentThread
  File "plugin.py", line 645, in _process_message
  File "plugin.py", line 933, in process_obs_tempest
TypeError: list indices must be integers, not float

   WeatherFlow Smart Weather Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Grognard77586 commented 2 years ago

A further empirical observation: In my case these errors only occur during periods where my Tempest is measuring rainfall; I assume that may be the offending list index.