Open 5trongthany opened 4 years ago
have you tried it with the http://
added like it suggested? If that works I'll add it to the docs
Reset my Mark 1, flashed the SD card. reinstalled the skill. Side note, when I try to do a custom install, it gets stuck loading and the power needs to be manually reset.
Logs from trying to turn on a lamp, then trying to turn off a fan.
TypeError: download() takes 1 positional argument but 2 were given
2020-11-10 21:46:19.748 | INFO | 824 | mycroft.skills.settings:_emit_settings_change_events:378 | Emitting skill.settings.change event for skill @dd90d275-2693-4afc-b4eb-1bd36534fee5|mycroft-mozilla-iot-skill
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:46:25.595 | INFO | 824 | QuestionsAnswersSkill | Searching for turn on lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-10 21:46:26.417 | INFO | 824 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:47:51.631 | INFO | 824 | QuestionsAnswersSkill | Searching for turn on lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-10 21:47:52.081 | INFO | 824 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:48:41.644 | ERROR | 824 | concurrent.futures | exception calling callback for <Future at 0x5c8c4450 state=finished raised TypeError>
Traceback (most recent call last):
File "/opt/python/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks
callback(self)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback
self.emit('error', exc)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit
self._emit_handle_potential_error(event, args[0] if args else None)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error
raise error
File "/opt/python/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
TypeError: download() takes 1 positional argument but 2 were given
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:48:51.599 | INFO | 824 | msm.mycroft_skills_manager | Best match (0.75): mycroft-mozilla-iot-skill.jamesmf by jamesmf
2020-11-10 21:48:51.600 | ERROR | 824 | SkillInstallerSkill | MSM failed: AlreadyInstalled(mycroft-mozilla-iot-skill.jamesmf)
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:49:01.161 | INFO | 824 | QuestionsAnswersSkill | Searching for turn on the lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-10 21:49:02.231 | INFO | 824 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:49:11.690 | INFO | 824 | QuestionsAnswersSkill | Searching for turn off fan
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-10 21:49:12.234 | INFO | 824 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-10 21:49:20.546 | INFO | 824 | mycroft.skills.settings:_emit_settings_change_events:378 | Emitting skill.settings.change event for skill mycroft-mark-1|20.08
2020-11-10 21:49:20.577 | INFO | 824 | mycroft.skills.mycroft_skill.mycroft_skill:handle_settings_change:308 | Updating settings for skill Mark1
2020-11-10 21:49:20.583 | INFO | 824 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /opt/mycroft/skills/mycroft-mark-1.mycroftai/settings.json
hmm, it looks like it tries and fails to update the skill perhaps? I'll see if anyone more familiar with msm can help
What does it look like when you first boot up? If it's working it should speak a list of the Things on your gateway. If that's failing it might be with a more informative error
Does this differ between Master and Dev branches of Mycroft-core?
We recently got a bug fixed upstream in Pyee and Dev uses the fixed version whilst Master is still running the old one. So this may resolve itself on the next release of core.
I think the download()
thing is a red herring. You fixed that issue here
oh yeah lol - yay me!
So it will be resolved with the next mycroft-core release :D
Updated the underlying OS on the Mark1 as it seemed to be pretty out of date(174 missing packages) and also installed a python package called `` that something in the startup complained about. Looking at the logs while I'm booting up the system I see the following log lines. I included some extra likes from before and after for context.
2020-11-16 18:40:36.982 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-spelling.mycroftai/settings.json
2020-11-16 18:40:37.105 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-spelling.mycroftai loaded successfully
2020-11-16 18:40:37.115 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf
2020-11-16 18:40:37.158 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
2020-11-16 18:40:37.225 | INFO | 845 | MozillaIoTSkill | Removing all handlers...
2020-11-16 18:40:37.290 | ERROR | 845 | mycroft.skills.skill_loader:_create_skill_instance:289 | Skill initialization failed with IndexError('string index out of range')
Traceback (most recent call last):
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 283, in _create_skill_instance
self.instance.initialize()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 143, in initialize
self._setup()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 147, in _setup
token=self.settings.get("token"), host=self.settings.get("host")
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 61, in __init__
if isinstance(host, str) and host[-1] == "/":
IndexError: string index out of range
2020-11-16 18:40:37.296 | ERROR | 845 | mycroft.skills.skill_loader:_communicate_load_status:327 | Skill mycroft-mozilla-iot-skill.jamesmf failed to load
2020-11-16 18:40:37.300 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-audio-record.mycroftai
2020-11-16 18:40:37.340 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-audio-record.mycroftai/settings.json
2020-11-16 18:40:37.443 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-audio-record.mycroftai loaded successfully
Hopefully this helps, I'm not entirely sure what these lines mean. Any suggestions for what I should do next?
Have you run: sudo mycroft-use unstable
This will switch you to the dev branch
This looks right to me if you just don't have the info saved in your settings (the url and gateway token)
On Mon, Nov 16, 2020, 1:43 PM 5trongthany notifications@github.com wrote:
Updated the underlying OS on the Mark1 as it seemed to be pretty out of date(174 missing packages) and also installed a python package called `` that something in the startup complained about. Looking at the logs while I'm booting up the system I see the following log lines. I included some extra likes from before and after for context.
2020-11-16 18:40:36.982 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-spelling.mycroftai/settings.json 2020-11-16 18:40:37.105 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-spelling.mycroftai loaded successfully 2020-11-16 18:40:37.115 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf 2020-11-16 18:40:37.158 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json 2020-11-16 18:40:37.225 | INFO | 845 | MozillaIoTSkill | Removing all handlers... 2020-11-16 18:40:37.290 | ERROR | 845 | mycroft.skills.skill_loader:_create_skill_instance:289 | Skill initialization failed with IndexError('string index out of range') Traceback (most recent call last): File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 283, in _create_skill_instance self.instance.initialize() File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 143, in initialize self._setup() File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 147, in _setup token=self.settings.get("token"), host=self.settings.get("host") File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 61, in init if isinstance(host, str) and host[-1] == "/": IndexError: string index out of range 2020-11-16 18:40:37.296 | ERROR | 845 | mycroft.skills.skill_loader:_communicate_load_status:327 | Skill mycroft-mozilla-iot-skill.jamesmf failed to load 2020-11-16 18:40:37.300 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-audio-record.mycroftai 2020-11-16 18:40:37.340 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-audio-record.mycroftai/settings.json 2020-11-16 18:40:37.443 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-audio-record.mycroftai loaded successfully
Hopefully this helps, I'm not entirely sure what these lines mean. Any suggestions for what I should do next?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jamesmf/mycroft-mozilla-iot-skill/issues/6#issuecomment-728251624, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB3SRJDG362FK75CVZ46OLLSQFXF5ANCNFSM4S7Q7RIA .
Possibly. I have the settings saved in home.mycroft.ai
correctly, but it's possible it didn't get saved to the skill running on the Mycroft. Where would I find go to check that?
This looks right to me if you just don't have the info saved in your settings (the url and gateway token) … On Mon, Nov 16, 2020, 1:43 PM 5trongthany @.***> wrote: Updated the underlying OS on the Mark1 as it seemed to be pretty out of date(174 missing packages) and also installed a python package called `` that something in the startup complained about. Looking at the logs while I'm booting up the system I see the following log lines. I included some extra likes from before and after for context. 2020-11-16 18:40:36.982 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-spelling.mycroftai/settings.json 2020-11-16 18:40:37.105 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-spelling.mycroftai loaded successfully 2020-11-16 18:40:37.115 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf 2020-11-16 18:40:37.158 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json 2020-11-16 18:40:37.225 | INFO | 845 | MozillaIoTSkill | Removing all handlers... 2020-11-16 18:40:37.290 | ERROR | 845 | mycroft.skills.skill_loader:_create_skill_instance:289 | Skill initialization failed with IndexError('string index out of range') Traceback (most recent call last): File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 283, in _create_skill_instance self.instance.initialize() File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 143, in initialize self._setup() File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 147, in _setup token=self.settings.get("token"), host=self.settings.get("host") File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/init.py", line 61, in init if isinstance(host, str) and host[-1] == "/": IndexError: string index out of range 2020-11-16 18:40:37.296 | ERROR | 845 | mycroft.skills.skill_loader:_communicate_load_status:327 | Skill mycroft-mozilla-iot-skill.jamesmf failed to load 2020-11-16 18:40:37.300 | INFO | 845 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-audio-record.mycroftai 2020-11-16 18:40:37.340 | INFO | 845 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-audio-record.mycroftai/settings.json 2020-11-16 18:40:37.443 | INFO | 845 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-audio-record.mycroftai loaded successfully Hopefully this helps, I'm not entirely sure what these lines mean. Any suggestions for what I should do next? — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#6 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB3SRJDG362FK75CVZ46OLLSQFXF5ANCNFSM4S7Q7RIA .
I have not tried to use the unstable yet, do you think that would help in this issue?
Have you run:
sudo mycroft-use unstable
This will switch you to the dev branch
Try changing the last part of the erroring line to host[-1:] == "/"
which should work for the empty string as well
The whole line would be
if isinstance(host, str) and host[-1:] == "/":
that's a good suggestion - when I wrote it using a .get('token')
I assumed that it would be missing, not defaulted to blank, and therefore would be either None
or a string with len > 0
.
That said, it will just error elsewhere until it gets a valid token.
@5trongthany I'm not sure why your settings aren't being downloaded fast enough, but you can always try editing your local settings.json
to confirm that it works once you paste the right values there.
I doubt you need to use the unstable branch if you successfully got to the point where it complains about a missing token
.
@jamesmf should I have a file named settings.json
? All I have are what the following screenshot contains. If I can edit the settingsmeta.yaml then I can give that a try. Otherwise I wonder if that might be a fault of a bad install.
I had mentioned before somewhere that I was having issues installing the skill, as the following would happen:
home.mycroft.ai
settings.json
is now by default created in the XDG dir... (so /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf
), check if it's there. if host and/or token is set to the empty string "" add some content?
@jamesmf you're right the value should be None there :/ but I guess technically it could be set to an empty string in the backend? (the yaml defaults the string to '' so it may be what happens)
Thanks for the pointer to where that setting is. I took a look in the json and it was empty, so I manually entered in the settings myself. I then tried to invoke the skill, which didn't work. I told it then to try to update config, to which I was told "no changes to apply"
2020-11-19 19:16:44.766 | INFO | 860 | mycroft.skills.skill_updater:_log_next_download_time:265 | Next scheduled skill update: 2020-11-19 20:16:44.762792
2020-11-19 19:16:44.769 | INFO | 860 | mycroft.skills.skill_updater:update_skills:168 | Skill update complete
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-19 19:46:05.629 | INFO | 860 | QuestionsAnswersSkill | Searching for turn on lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-19 19:46:06.044 | INFO | 860 | QuestionsAnswersSkill | Timeout occured check responses
2020-11-19 19:46:18.201 | ERROR | 860 | concurrent.futures | exception calling callback for <Future at 0x710d4290 state=finished raised TypeError>
Traceback (most recent call last):
File "/opt/python/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks
callback(self)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback
self.emit('error', exc)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit
self._emit_handle_potential_error(event, args[0] if args else None)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error
raise error
File "/opt/python/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
TypeError: download() takes 1 positional argument but 2 were given
I then try rebooting. Tailing the logs I see that it suggests I change the address for the gateway to "http://myipaddress/thing/" instead of just the IP address. I try changing it again and reboot once more. Here are the logs it provides after that change and me trying to turn on my lamp:
2020-11-19 19:52:03.065 | INFO | 839 | mycroft.skills.mycroft_skill.mycroft_skill:handle_settings_change:308 | Updating settings for skill MozillaIoTSkill
2020-11-19 19:52:03.070 | INFO | 839 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
2020-11-19 19:52:03.071 | INFO | 839 | MYCROFT | 10.10.10.10/things/
2020-11-19 19:52:03.073 | ERROR | 839 | concurrent.futures | exception calling callback for <Future at 0x5b8cded0 state=finished raised MissingSchema>
Traceback (most recent call last):
File "/opt/python/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks
callback(self)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback
self.emit('error', exc)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit
self._emit_handle_potential_error(event, args[0] if args else None)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error
raise error
File "/opt/python/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/mycroft_skill/mycroft_skill.py", line 312, in handle_settings_change
self.settings_change_callback()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 155, in on_websettings_changed
self._setup()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 147, in _setup
token=self.settings.get("token"), host=self.settings.get("host")
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 68, in __init__
self.things = self.get_things()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 92, in get_things
resp = self.request("GET", "/things/")
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 82, in request
response = requests.request(method, url, json=data, headers=self.headers)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/sessions.py", line 510, in request
prep = self.prepare_request(req)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/sessions.py", line 453, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/models.py", line 313, in prepare
self.prepare_url(url, params)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/models.py", line 387, in prepare_url
raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL '10.10.10.10/things/': No schema supplied. Perhaps you meant http://10.10.10.10/things/?
2020-11-19 19:52:03.184 | INFO | 839 | SkillInstallerSkill | Will install [] from the marketplace
2020-11-19 19:52:03.539 | INFO | 839 | SkillInstallerSkill | Will remove [] from the marketplace
2020-11-19 19:52:03.540 | INFO | 839 | SkillInstallerSkill | Will remove [] from the marketplace
2020-11-19 19:52:38.423 | INFO | 839 | ConfigurationSkill | Remote configuration updated
2020-11-19 19:52:47.438 | INFO | 839 | QuestionsAnswersSkill | Searching for turn on lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-11-19 19:52:48.051 | INFO | 839 | QuestionsAnswersSkill | Timeout occured check responses
hmmm, it looks like in that second set of logs, it still doesn't see the http://
in there. Not sure what would cause that
Anything you want me to try or to tinker with?
I had the same issue (mycroft complained about missing 'http://') and solved by doing the following.
Uninstalled all skills: sudo rm -R /opt/mycroft/skills/ Uninstalled skills folder in following location: /home/mycroft/.config/mycroft/ Reinstalled default skills: msm default Reinstalled miot skill: mycroft-msm install https://github.com/jamesmf/mycroft-mozilla-iot-skill setup skill in account with: http://192.168.0.XX + access token
i tried just uninstalling the skill, but that did not remove json file, and reinstalling skill did not help without removing folder from .config/skills.
It was necessary to add 'http://' at front of IP address
I will add error handling to that piece - it looks like that error happens during the settings_change_callback
which I'm guessing means the skill can't update its settings (which it needs to do in order to work).
Let me know if that doesn't fix it
Bad news is that we're still running into issues trying to get it manipulate the connected devices. The good news is that it looks to be trying now, so we got some progress!
Here's what I get when I tail logs while trying to interact with the skill
2020-11-30 17:59:55.326 | INFO | 844 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="fan", scene=None, value=None, state=None)
2020-11-30 17:59:55.394 | INFO | 844 | MYCROFT | Mozilla IoT was consulted
2020-11-30 17:59:55.395 | INFO | 844 | MYCROFT | null
2020-11-30 17:59:55.395 | INFO | 844 | MYCROFT | mozilla-iot: no such thing as fan
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event skill-iot-control.mycroftai:DeleteRequest
2020-11-30 18:00:05.305 | INFO | 844 | skill-iot-control_mycroftai:_delete_request:225 | Delete request 882179c3-7aa2-4a33-a46d-b757e991bd49
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-11-30 18:00:28.235 | INFO | 844 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-11-30 18:00:28.241 | INFO | 844 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.ON, thing=None, attribute=None, entity="bedroom lamp", scene=None, value=None, state=None)
2020-11-30 18:00:28.277 | INFO | 844 | MYCROFT | Mozilla IoT was consulted
2020-11-30 18:00:28.278 | INFO | 844 | MYCROFT | null
2020-11-30 18:00:28.281 | INFO | 844 | MYCROFT | mozilla-iot: no such thing as bedroom lamp
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event skill-iot-control.mycroftai:DeleteRequest
2020-11-30 18:00:38.411 | INFO | 844 | skill-iot-control_mycroftai:_delete_request:225 | Delete request 8d0a635f-c654-4b65-8949-c6ff608c45e8
When I try to interact with the skill, Mycroft says "I could not find any skills to handle that request."
I double checked my settings.json
and tried it both with just the IP address for the mozilla gateway, with http, and with https. Same results each time.
Let me know if there should be anything else I am checking. Thanks!
When the skill starts up (or when the settings change) you should see the skill print you a list of all the names of Things it finds - does that happen?
LOG.info(f"Entities Registered: {self._entities}")
should make it say what the entities it registered are.
My guess is that the initial call to get the names of all the Things on your gateway is failing, but since it fails gracefully now you can't see it. You might check the logs for either
MissingSchema
or HTTPError
as those are the two error types the skill catches
now
I get a number of logs when I watch Mycroft start up. First thing I noticed is as follows:
2020-12-01 21:05:16.237 | INFO | 863 | mycroft.skills.settings:get_local_settings:78 | /opt/mycroft/skills/mycroft-spelling.mycroftai/settings.json
2020-12-01 21:05:18.515 | INFO | 863 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-spelling.mycroftai loaded successfully
2020-12-01 21:05:19.713 | INFO | 863 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf
2020-12-01 21:05:19.760 | INFO | 863 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
2020-12-01 21:05:19.828 | INFO | 863 | MYCROFT | 10.10.10.10/things/
2020-12-01 21:05:19.841 | INFO | 863 | MYCROFT | Entities Registered: dict_keys([])
2020-12-01 21:05:19.847 | INFO | 863 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-mozilla-iot-skill.jamesmf loaded successfully
2020-
then a bit later
2020-12-01 21:05:48.132 | INFO | 863 | msm.mycroft_skills_manager | building SkillEntry objects for all skills
2020-12-01 21:05:48.147 | INFO | 863 | mycroft.skills.padatious_service:train:100 | Training... (single_thread=False)
--- Logging error ---
Traceback (most recent call last):
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 83, in request
response = requests.request(method, url, json=data, headers=self.headers)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/sessions.py", line 510, in request
prep = self.prepare_request(req)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/sessions.py", line 453, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/models.py", line 313, in prepare
self.prepare_url(url, params)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/requests/models.py", line 387, in prepare_url
raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL '10.10.10.10/things/': No schema supplied. Perhaps you meant http://10.10.10.10/things/?
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/python/lib/python3.7/logging/__init__.py", line 1025, in emit
msg = self.format(record)
File "/opt/python/lib/python3.7/logging/__init__.py", line 869, in format
return fmt.format(record)
File "/opt/python/lib/python3.7/logging/__init__.py", line 608, in format
record.message = record.getMessage()
File "/opt/python/lib/python3.7/logging/__init__.py", line 369, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "/opt/python/lib/python3.7/threading.py", line 890, in _bootstrap
self._bootstrap_inner()
File "/opt/python/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_manager.py", line 234, in run
self._load_on_startup()
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_manager.py", line 271, in _load_on_startup
self._load_new_skills()
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_manager.py", line 293, in _load_new_skills
loader = self._load_skill(skill_dir)
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_manager.py", line 300, in _load_skill
load_status = skill_loader.load()
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 162, in load
return self._load()
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 220, in _load
if skill_module and self._create_skill_instance(skill_module):
File "/opt/venvs/mycroft-core/lib/python3.7/site-packages/mycroft/skills/skill_loader.py", line 283, in _create_skill_instance
self.instance.initialize()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 153, in initialize
self._setup()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 157, in _setup
token=self.settings.get("token", ""), host=self.settings.get("host", "")
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 68, in __init__
self.things = self.get_things()
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 101, in get_things
resp = self.request("GET", "/things/")
File "/opt/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/__init__.py", line 87, in request
e,
Message: 'caught requests.exceptions.MissingSchema error in mycroft-mozilla-iot-skill: '
Arguments: (MissingSchema("Invalid URL '10.10.10.10/things/': No schema supplied. Perhaps you meant http://10.10.10.10/things/?"),)
What does this read to you to mean?
gotcha - that makes it seem like when the skill loads, it still isn't getting the version with the http://
in front.
Does it have the http://
in front in the settings at /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf
gotcha - that makes it seem like when the skill loads, it still isn't getting the version with the
http://
in front.Does it have the
http://
in front in the settings at/home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf
By default it does not. I added the http://
to the line manually and rebooted the Mark1. Here's what I get in the logs:
2020-12-03 16:55:07.297 | INFO | 839 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-spelling.mycroftai loaded successfully
2020-12-03 16:55:07.302 | INFO | 839 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf
2020-12-03 16:55:07.349 | INFO | 839 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
2020-12-03 16:55:07.416 | INFO | 839 | MYCROFT | http://10.10.10.10/things/
2020-12-03 16:55:07.650 | INFO | 839 | MYCROFT | Entities Registered: dict_keys([`proceeds to list my smart things, which it does correctly`])
2020-12-03 16:55:07.657 | INFO | 839 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-mozilla-iot-skill.jamesmf loaded successfully
However, when I try to invoke the skill by saying, for example, "turn off fan", I get a failure and the following log lines:
2020-12-03 16:58:35.487 | INFO | 839 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 16:58:35.491 | INFO | 839 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="fan", scene=None, value=None, state=None)
2020-12-03 16:58:35.552 | INFO | 839 | MYCROFT | Mozilla IoT was consulted
2020-12-03 16:58:35.552 | INFO | 839 | MYCROFT | null
2020-12-03 16:58:35.553 | INFO | 839 | MYCROFT | mozilla-iot: no such thing as fan
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event mycroft-mark-1.mycroftai:IdleCheck
Removing event skill-iot-control.mycroftai:DeleteRequest
and if I go back into the settings.json
, I see the ip address is missing the http at the start, even though I put it there earlier. Trying it again but without rebooting, I still am unable to interact with my smart devices. I decided to try adding an http://
to the line of the settingsmeta.yaml and rebooting to see if it would stick after that, and sure enough it did. However, trying to turn off a lamp or a fan after this still prooved fruitless.
2020-12-03 17:04:45.702 | INFO | 857 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /opt/mycroft/skills/mycroft-mark-1.mycroftai/settings.json
2020-12-03 17:04:50.783 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 17:04:50.788 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="lamp", scene=None, value=None, state=None)
2020-12-03 17:04:50.831 | INFO | 857 | MYCROFT | Mozilla IoT was consulted
2020-12-03 17:04:50.833 | INFO | 857 | MYCROFT | null
2020-12-03 17:04:50.834 | INFO | 857 | MYCROFT | mozilla-iot: no such thing as lamp
2020-12-03 17:04:50.846 | INFO | 857 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event skill-iot-control.mycroftai:DeleteRequest
2020-12-03 17:05:00.363 | INFO | 857 | skill-iot-control_mycroftai:_delete_request:225 | Delete request 4b254149-989f-4261-bb1c-1aaaceeb8e68
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 17:06:43.292 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 17:06:43.299 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="fan", scene=None, value=None, state=None)
2020-12-03 17:06:43.332 | INFO | 857 | MYCROFT | Mozilla IoT was consulted
2020-12-03 17:06:43.333 | INFO | 857 | MYCROFT | null
2020-12-03 17:06:43.334 | INFO | 857 | MYCROFT | mozilla-iot: no such thing as fan
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event skill-iot-control.mycroftai:DeleteRequest
2020-12-03 17:06:53.054 | INFO | 857 | skill-iot-control_mycroftai:_delete_request:225 | Delete request 29d545fa-8ad1-4b0c-b783-577497488974
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 17:07:22.425 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 17:07:22.429 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.ON, thing=None, attribute=None, entity="bedroom lamp", scene=None, value=None, state=None)
2020-12-03 17:07:22.459 | INFO | 857 | MYCROFT | Mozilla IoT was consulted
2020-12-03 17:07:22.460 | INFO | 857 | MYCROFT | null
2020-12-03 17:07:22.461 | INFO | 857 | MYCROFT | mozilla-iot: no such thing as bedroom lamp
So I am once again stuck.
hmmmm. in the proceeds to list my smart things, which it does correctly
are "fan" and "bedroom lamp" or "bedroom light" listed there exactly?
I'm not an expert on the interplay between settingsmeta.yml
, what you enter in the account, and how often your local settings.json
gets updated, but that sounds problematic.
Correct the sanitized version of the list is as follows:
spotify', 'lamp', 'light', 'lights', 'bedroom lamp', 'bedroom light', 'bedroom lights', 'phone', 'fan', 'datetime', 'weather (apartment)', 'weather (hometown)'
somehow it seems like your settings are getting overwritten. I am not sure why the save_settings
call keeps happening...
2020-12-03 17:04:50.846 | INFO | 857 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
I'm gonna add a 'debug what's available to the logs every time you miss` line
just merged a quick update
Updated by running git pull origin master
and tried again. Here comes some logs
2020-12-03 18:06:07.202 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 18:06:07.217 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="fan", scene=None, value=None, state=None)
2020-12-03 18:06:07.246 | INFO | 857 | MYCROFT | Mozilla IoT was consulted
2020-12-03 18:06:07.246 | INFO | 857 | MYCROFT | mozilla could not find fan. Available options are: []
2020-12-03 18:06:07.247 | INFO | 857 | MYCROFT | mozilla-iot: no such thing as fan
Removing event skill-iot-control.mycroftai:RunIotRequest
Removing event skill-iot-control.mycroftai:DeleteRequest
2020-12-03 18:06:17.237 | INFO | 857 | skill-iot-control_mycroftai:_delete_request:225 | Delete request 6f7282a1-3621-4e95-95dc-942a112eb578
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 18:06:35.684 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:299 | state is None
2020-12-03 18:06:35.700 | INFO | 857 | skill-iot-control_mycroftai:_trigger_iot_request:310 | Looking for handlers for: IoTRequest(action=Action.OFF, thing=None, attribute=None, entity="lamp", scene=None, value=None, state=None)
2020-12-03 18:06:35.724 | INFO | 857 | MYCROFT | Mozilla IoT was consulted
2020-12-03 18:06:35.725 | INFO | 857 | MYCROFT | mozilla could not find lamp. Available options are: []
2020-12-03 18:06:35.725 | INFO | 857 | MYCROFT | mozilla-iot: no such thing as lamp
No reboot tried. Let me know if I should test anything else.
I would try a reboot just in case the settings got overwritten and a reboot fixes.... if it doesn't, I'll need some help from someone who understands settings a bit better!
startup:
2020-12-03 18:11:42.678 | INFO | 860 | mycroft.skills.skill_loader:load:161 | ATTEMPTING TO LOAD SKILL: mycroft-mozilla-iot-skill.jamesmf
2020-12-03 18:11:42.726 | INFO | 860 | mycroft.skills.settings:get_local_settings:78 | /home/mycroft/.config/mycroft/skills/mycroft-mozilla-iot-skill.jamesmf/settings.json
2020-12-03 18:11:42.790 | INFO | 860 | MYCROFT | 10.10.10.10/things/
2020-12-03 18:11:42.804 | INFO | 860 | MYCROFT | Entities Registered: []
2020-12-03 18:11:42.810 | INFO | 860 | mycroft.skills.skill_loader:_communicate_load_status:320 | Skill mycroft-mozilla-iot-skill.jamesmf loaded successfully
2020
trying to start or stop things:
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 18:12:30.820 | INFO | 860 | mycroft.skills.settings:save_settings:111 | Skill settings successfully saved to /opt/mycroft/skills/mycroft-mark-1.mycroftai/settings.json
2020-12-03 18:12:34.155 | INFO | 860 | QuestionsAnswersSkill | Searching for turn off the fan
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-12-03 18:12:35.407 | INFO | 860 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 18:12:46.453 | INFO | 860 | QuestionsAnswersSkill | Searching for turn off fan
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-12-03 18:12:47.432 | INFO | 860 | QuestionsAnswersSkill | Timeout occured check responses
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 18:12:53.926 | INFO | 860 | ConfigurationSkill | Remote configuration updated
Removing event mycroft-mark-1.mycroftai:IdleCheck
2020-12-03 18:13:18.955 | INFO | 860 | QuestionsAnswersSkill | Searching for turn on the bedroom lamp
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
Removing event fallback-query.mycroftai:QuestionQueryTimeout
2020-12-03 18:13:20.035 | INFO | 860 | QuestionsAnswersSkill | Timeout occured check responses
@krisgesling do you have any thoughts on the skill settings here? something seems off. Everytime it starts back up the skill is getting the version of the host
attribute of the settings that doesn't have the http://
in front. When settingsmeta.yaml
is manually changed it'll work for a bit, but it seems to get overwritten eventually.
Is there at least a best way to get back to a clean slate to get rid of every reference to the ip-only value?
Currently at startup the skill will(/should) get the value stored in home.mycroft.ai. Is it this that overwrites the value?
Changing the settingsmeta.yaml (adding a text section or something) should be enough to make sure that the all settings on mycroft home are cleared and the default set in the settingsmeta.yaml should be provided.
Sorry there's a lot of log output above.
It looks like this is forked from HomeAssistant is that right? I did a small update to the Common IoT branch of HA recently to improve the handling of settings on first load and updates of settings. Primarily this commit. Some of that may be useful here.
Mycroft should fetch new settings at startup, and check for any updates from the backend every minute. The settings changed callback won't be called by default on first boot though.
If you change anything in the settingsmeta.yaml the backend will treat it as a new settings block and so user settings will be effectively cleared requiring them to input them again. It's a big limitation we need to address as it means that even fixing typo's in labels would "wipe" user settings.
Is there any chance the switch to XDG is causing issues? settings.json
used to be stored in the Skill directory /opt/mycroft/skills/skill-name/settings.json
but is now stored in the XDG config which is most likely ~/.config/mycroft/skills/skill-name/settings.json
. @5trongthany can you check which of these files exists, or if both exist delete the one from /opt/mycroft/...
I will be happy to help test this, but I will need to caveat that I won't be able to test quite as quickly for a couple of days. I recently moved and due to a mess up on multiple levels I am without internet at my new place. I am sending this from a mobile hotspot, which caps connected devices to 50-75kbps speed. Point being I won't be able to further test this until I get a more permanent solution set up at my new home. I'll be sure to update once I have more information.
Is there any chance the switch to XDG is causing issues?
settings.json
used to be stored in the Skill directory/opt/mycroft/skills/skill-name/settings.json
but is now stored in the XDG config which is most likely~/.config/mycroft/skills/skill-name/settings.json
. @5trongthany can you check which of these files exists, or if both exist delete the one from /opt/mycroft/...
@krisgesling looking at that commit, I'd still expect what is currently implemented to work (though I like the idea of catching the error and speaking instead of just not registering entities). I followed the pattern of calling ._setup()
(whose contents/name you improved in that commit) in initialize()
. Looking at that code is informative.
I won't touch settingsmeta.yaml
yet then.
I might add a check for 'http(s)://' since multiple people have had this issue
When trying to communicate with a device, it fails quickly and gives the following in the skills log:
I have replaced the IP for the device for privacy reasons.
Let me know if other logs or information would be helpful.