bpennypacker / SenseME-Indigo-Plugin

Indigo Plugin for 'Big Ass Solutions' Haiku Fans with SenseME
GNU General Public License v2.0
5 stars 4 forks source link

Missing key in dict after upgrade to 0.7.0 #10

Open mlamoure opened 5 years ago

mlamoure commented 5 years ago

See log below. Usually editing the device and saving it will add missing dicts, but when I tried that I got validation errors for my devices.

Stopped plugin "SenseME Fan 0.7.0" Starting plugin "SenseME Fan 0.7.0" (pid 22147) Started plugin "SenseME Fan 0.7.0" SenseME Fan Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last): File "plugin.py", line 515, in runConcurrentThread File "plugin.py", line 434, in processFanMessage KeyError: 'key fanTempUnits not found in dict'

SenseME Fan Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds) SenseME Fan Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last): File "plugin.py", line 515, in runConcurrentThread File "plugin.py", line 449, in processFanMessage KeyError: 'key fanTempUnits not found in dict'

SenseME Fan Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds) Z-Wave received "Upstairs Hallway Motion Sensor" status update is off Trigger Turn off lights when no motion in Upstairs Hallway SenseME Fan Error Error in plugin execution UiValidate:

Traceback (most recent call last): File "plugin.py", line 553, in validateDeviceConfigUi ValueError: invalid literal for int() with base 10: ''

SenseME Fan Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last): File "plugin.py", line 515, in runConcurrentThread File "plugin.py", line 434, in processFanMessage KeyError: 'key fanTempUnits not found in dict'

SenseME Fan Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds) SenseME Fan Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last): File "plugin.py", line 515, in runConcurrentThread File "plugin.py", line 449, in processFanMessage KeyError: 'key fanTempUnits not found in dict'

SenseME Fan Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)

bpennypacker commented 5 years ago

Sorry for the delay in getting back to you about this. Are you still seeing these errors or were you able to resolve it? If you're still seeing this then a few questions/suggestions:

How did you install the new version? Did you disable the old version before installing the new version?

Try disabling the plugin then re-installing and see if the error persists. If it does then try disabling it, removing the disabled plugin (Delete it from /Library/Application Support/Perceptive Automation/Indigo 7.2/Plugins (Disabled)/ or whatever version of Indigo you have), then re-installing it by double clicking on SenseME.indigoPlugin.

mlamoure commented 5 years ago

Hi there-

Same issue when following that disable and re-install procedure. But, I've gotten around it by hacking a bit.

I have a couple of published plugins for Indigo myself. Whenever you add a state to a existing device, Indigo throws ugly messages if someone upgrades and is missing those states. A hack is to edit the device, click save, and Indigo will add the missing properties during the save procedure. I tried that with your plugin, but I received a validation error:

Traceback (most recent call last): File "plugin.py", line 556, in validateDeviceConfigUi ValueError: invalid literal for int() with base 10: ''

SenseME Fan Error Error in plugin execution runConcurrentThread:

So, I commented out the Feireinheight block of your validateDeviceConfigUi function, lines following the else statement on 552. I was then able to re-save my devices, which seems to have added the keys. I then uncommented to be back aligned to your current release code.

My setup is now straight, but maybe adding some conditional checks to see if "fanTempUnits" is part of the dict for each fan device that the user has and adding it. I assume this was added on this latest release? If my solution was repeatable I would have submitted a pull request with the changes.

smokey-live commented 5 years ago

I'm having the same problem when upgrading to 0.7.0. Tried disabling the plugin and then upgrading but resulted in the same error.

gt3mike commented 5 years ago

Same here. Also tried deleting my fan and recreating it, and I can't create a new SenseME device. I'm told to check the highlighted fields on the device settings, but none of the fields are highlighted.

Happy to help test if you'd like.

codeskein commented 5 years ago

It appears that devices which were created with 0.6.1 are missing some fields that are needed for the configuration UI validation step to succeed. I've submitted a pull request (#11) which should fix that and, in turn, allow the original problem to be fixed by editing/saving the device.

smeee-again commented 4 years ago

I have the same issue but started with v0.7.0. I'm currently running the 0.6.1 plugin without issue.