Hi,
Can anyone help with a problem with the OpenHAB skill, or more specifically, what might be a back-end issue with settingsmeta.yaml
please ?
Summary
A recent commit enhanced the OpenHAB skill to support skill settings, rather than mycroft.conf
manual config, however the account control panel Skills page Configure Your Skills
doesn’t show the OpenHAB skill, and manual editing gives upload settings errors.
Manual changes to the skill config file works fine, but gives server upload errors.
Detail
After many useful months of using Mycroft to control my OpenHAB home automation server via the OpenHAB skill, it stopped working after upgrading to 19.08.
This commit made changes to mode from mycroft.conf to skill settings, which is should be a useful enhancement:
Unfortunately, the skills Marketplace shows the openHAB
skill in the IoT
category, however attempting to install via the skills marketplace doesn’t seem to make any changes.
My Mycroft account Skills page Configure Your Skills
doesn’t show the OpenHAB skill, however the command line on my Mark 1 does work, and shows the latest version:
$ msm list
...stuff deleted...
openhab-skill.openhab [installed]
...stuff deleted...
$ sudo msm update
...stuff deleted...
INFO - Nothing new for openhab-skill.openhab
...stuff deleted...
Workaround
After looking in the logs to find the config error, I manually hacked the skill config JSON file to get the skill working.
After restarting the skills, the OpenHAB skill originally failed to get local settings:
sudo service mycroft-skills restart
tail -f /var/log/mycroft/skills.log
#
2019-10-14 12:07:55.916 | INFO | 29592 | mycroft.skills.skill_loader:load:112 | ATTEMPTING TO LOAD SKILL: openhab-skill.openhab
2019-10-14 12:07:55.933 | INFO | 29592 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/openhab-skill.openhab/settings.json
2019-10-14 12:07:55.942 | ERROR | 29592 | mycroft.skills.skill_loader:_create_skill_instance:222 | Skill __init__ failed with InvalidURL('Failed to parse: None:None',)
Traceback (most recent call last):
My workaround was to manually edit the openhab-skill.openhab/settings.json
file to add add the host and port, then restart:
vim /opt/mycroft/skills/openhab-skill.openhab/settings.json
# add host and port
{"__mycroft_skill_firstrun": false, "host": "openhabserver.local", "port": "8080"}
sudo service mycroft-skills restart
tail -f /var/log/mycroft/skills.log
Removing the old config also tidied things up:
sudo vim /etc/mycroft/mycroft.conf
# removed...
"openHABSkill": {
"host": "opehabserver.local",
"port": "8080"
},
This restored the skill so switch off radio
started working again.
New error uploading config
It does look like the Mycroft server isn’t recognising the OpenHAB skill settings as a regular task tries to upload the local settings I manually created, and fails:
2019-10-14 12:58:55.158 | WARNING | 30805 | mycroft.skills.settings:_update_settings_meta:301 | DEPRECATION WARNING: The "name" attribute in the settingsmeta file is no longer supported.
2019-10-14 12:58:55.644 | ERROR | 30805 | mycroft.skills.settings:_issue_api_call:310 | Failed to upload skill settings meta for @...UUID removed...|openhab-skill
Traceback (most recent call last):
File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/skills/settings.py", line 307, in _issue_api_call
self.api.upload_skill_metadata(self.settings_meta)
File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/api/__init__.py", line 382, in upload_skill_metadata
"json": settings_meta
File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/api/__init__.py", line 69, in request
return self.send(params)
File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/api/__init__.py", line 152, in send
return self.get_response(response, no_refresh)
File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/api/__init__.py", line 174, in get_response
raise HTTPError(data, response=response)
requests.exceptions.HTTPError: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
settingsmeta.yaml
As the server backend isn’t offering parameters for the OpenHAB binding, I suspect the definition of the settingsmeta.yaml
isn’t being recognised.
The skill file is here:
Looking at the Mycroft docs, the only obvious difference is a lack of a value: ""
, although this is hinted as being optional:
https://mycroft-ai.gitbook.io/docs/skill-development/next-steps/skill-settings#web-configurable-settings-with-settingsmeta-file
Any ideas please?