Closed Quentame closed 5 years ago
Hi just wanted to ack your ticket and say I will try to help when I am at my desk. I have the same device here so pretty confident we can get it work. I am actually working on revamping the pairing experience but it won’t land until 0.94.
@Jc2k Thanks for the hard work, I appreciate the effort.
Koogeek appliances are just crap, I'm just too late to return them. So I'm looking forward to this :)
Have actually managed to fix point (2) in my local dev environment, but it's going to be in 0.94 (lots of large pending changes first).
The best workaround for (1) atm is to restart HA after your device is in pairing mode. HA will do a scan at boot and after about 30s your device should show up. I'm not sure how frequent scans are after that. I think the core team might be making improvements around discovery but I can't help with this bit atm.
For (3), it is definitely always XXX-XX-XXX
for all HomeKit devices, regardless of what the label says. It's part of the crypto implementation so if a manufacturer deviates from this it wont work with an iPhone. Validation has been added for this and its trickling its way down from unmerged Github branches. But we need to update the input text to be clearer too.
There should normally be a popup! So this must be an 'unusual' error.
On this version of HA i'd expect LS1 to work so can you confirm it's version for me.
Then one LS1 at a time:
/config/configuration.yaml
, make sure /config/.homekit
exists (you said that it did, but i wanted to make sure it was relative to your configuration.yaml
in particular. I often say /config/.homekit
when its just a path i made up).I followed this procedure with my LS1 and it works.
Hi @Jc2k !
My versions are HA 0.91.4 and Koogeek LS1 2.3.6 (all latest updates).
I do have the config/configuration.yaml
file in the same directory as the .homekit
directory.
I followed your steps but after 15 mins HA restared, no configurator.ls1 appears from the notification panel. Perhaps the nmap_tracker
is finding the light strip on the network !
Is there a way to manually trigger the discovery ? Like in services ? (looked, but can't find)
0.94.0 looks promising, already waiting for it !
Thanks for the quick answer and for your contributions and implication about this component, thumbs up ! 👍
I come to the point where I see HA showing me the configurator option but it won't accept the HomeKit code (I use the format XXX-XX-XXX
but I did try XXXXXXXX
just in case).
I can wait until 0.94, there's so much else I want to learn about HA while I wait :D
@Jc2k
Hi,
I have 3 wifi switches (Insignia) which have an independent control app, but are also HomeKit compliant and have Homekit PIN for setup, I am running ubuntu on a docker with hassio 0.91.4
I reset the switches and delete it from the native app "insignia connect"
I am adding 1 by 1 in the app because all 3 has the same entity_id name, when the setup its done in the app for the 1st switch, I restarted hassio, in the front UI configurator link I entered the PIN code, the 1st time nothing happened jus the cursor spin for 1 minute, I closed the popup message and opened again, re-enter the code and this time I got this message:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/websocket_api/commands.py", line 122, in handle_call_service
connection.context(msg))
File "/usr/local/lib/python3.7/site-packages/homeassistant/core.py", line 1138, in async_call
self._execute_service(handler, service_call))
File "/usr/local/lib/python3.7/site-packages/homeassistant/core.py", line 1160, in _execute_service
await handler.func(service_call)
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/configurator/__init__.py", line 221, in async_handle_service_call
call.data.get(ATTR_FIELDS, {}))
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/homekit_controller/connection.py", line 127, in device_config_callback
self.controller.perform_pairing(self.hkid, self.hkid, code)
File "/usr/local/lib/python3.7/site-packages/homekit/controller/controller.py", line 329, in perform_pairing
raise AlreadyPairedError('Alias "{a}" is already paired.'.format(a=alias))
homekit.exceptions.AlreadyPairedError: Alias "5A:81:84:CA:1A:13" is already paired.
I restarted hassio one more time assuming that the switch was already pair with my HA and nothing, in the HA UI the configurator window still there, if I re-enter the PIN code again I got the message:
"This accessory is already paired to another device. Please reset the accessory and try again"
but not error message on the logger. I do have the config/configuration.yaml file but NOT the .homekit directory
thanks for your help
PS: In one of my tries after estart HA got this eror in the logger:
Error doing job: Fatal error on transport TCPTransport (error status in uv_stream_t.shutdown callback) OSError: [Errno 107] Socket not connected
I dont know if is related or not
@jcalderon71 Thanks for the detailed report.
The problem is the .homekit
directory not existing. Pairing works but it fails to save the pairing. The second time the pairing already exists in memory so you get an AlreadyPairedError
. Then when you restart it clears out the pairing from memory, but the device still thinks its paired. So you need to reset the device to try again.
The .homekit directory is supposed to be created automatically but on 0.91 it isn't. In 0.94 the directory is going away entirely as homekit_controller embraces all the modern and up to date API's for integration building. But for long and boring reasons some of that code got merged too soon. It's fixed in 0.92 but in the meantime you need to make the .homekit
directory and try again. You need to follow the same procedure I posted already:
It will take a while to pair. The process isn't as optimised as it could be and there is a cryptographic exchange that is quite slow on some devices. But it should go through and you should find you have a pairing.json
file in your .homekit
directory. If that file exists pairing has worked.
The 2nd error (The OSError
) is unrelated and is probably nothing to worry about.
@Quentame am baffled by your discovery issue so i'm going to start from the basics. Can you post the changes you made to your configuration.yaml
to try and enable the homekit controller?
@Jc2k Thanks for the advice, I created the .homekit
directory and so far the 1st switch is working
@Jc2k
Here is part of my configuration.yml :
# Discover some devices automatically
discovery:
enable:
- homekit
# Tracking
device_tracker:
# iCloud
- platform: icloud
username: !secret icloud_mail
password: !secret icloud_password
gps_accuracy_threshold: 150
# Network scan
- platform: nmap_tracker
hosts: 192.168.0.1/24
home_interval: 10
exclude:
- 192.168.0.10 # NAS
- 192.168.0.13 # TV
- 192.168.0.21 # Hue Bridge
I'm gonna update to 0.92.0 tonight to see if there is some changes ...
python3 -m homekit.discover --log DEBUG
as found in #23259 (which the description of the problem is the same), returns :
And can you see that the Koogeek is on your network? (It looks like 2 different discovery mechanisms don’t think it is)
Yes I can
It is « LED Cuisine », the « LED Canapé » is disconnected due to the names in the configurator which are both « LS1 ». So no more red light « climbing to the wall » coming from the sofa, until I can pair the kitchen light strip :D
Absent => Away
Maison => Home
Just in case ;)
I feel like i'm missing something obvious with your case @Quentame!
It just doesn't make sense with anything i've seen with the LS1! The python3 -m homekit.discover
command should always see the LS1, even if its paired. So i would normally assume there was something weird going on with bonjour on your network - but the Phillips Hue is visible which proves it works.
When you can see that Cuisine is on the network AND you can't see a configurator, can your iphone see that the LS1 is available to pair? Is the discover command still not returning anything at that time?
Hi @Jc2k !
To be clearer, I made a video :sweat_smile:
https://photos.app.goo.gl/mLxcWUKrMJfdur21A
https://photos.app.goo.gl/dpXczpzhxWnkfnDz5
HA restarted around 8:05PM, at 10:53PM I got the configurator (forgot to look more often)
Hope it helped.
PS: sorry for my English it’s been a long time.
Thank you for all the effort you put into this, and your english is pretty amazing actually. I wish my French was half as good (it's not even close :cry:).
Unfortunately i'm still baffled by whats going on 😭
I'm at a complete loss as to why discovery sometimes works but can take hours to do so. I would like to leave it and concentrate on pairing but i think its actually part of the problem. There is a mismatch between the homekit_python API and the HA API which means that homekit_python does its own discovery as well when you try to pair. This is not normally a problem, but in your case homekit_python's discovery never seems to work (e.g. python3 -m homekit.discover
). So I think we have to get to the bottom of that...
Are you able to easily run docker containers outside of your NAS or get an interactive terminal on a docker container on your NAS? I want to try and right some discovery diagnostic scripts and match them to how you can easily run them.
I can run HA in Docker on my Mac or maybe the interactive mode is working on the NAS throw SSH (not available on the NAS Docker Web App).
OK - docker on mac should be doable. Do you use brew at all? I do most of my dev with the python3 package from brew so if you already use that this will be super easy.
I do :beer: my Mac yep
Hi @Quentame - sorry for not getting back sooner.
0.14.0 of homekit_python has just released - have submitted a PR to update to it (#23562). I don' /think/ that will help with your situation but if you want to try it then its worth a shot.
The other thing i want to rule out is if a longer discovery interval will help. You can actually specify how long the discover command should wait for with the -t
option. Can you try:
python3 -m homekit.discover -t 60
I'm wondering if the default (30s) is too short for your device. That would be weird given its not for my LS1, but it seems to match with what was happening in the video. So I want to see if there is a value that consistently is long enough. Try 60, 180, 300, etc. Is there a value that is always long enough? Whats the lowest value that works 5 times in a row? If you power cycle the LS1 does it still work 5 times in a row?
HA discovery is different to homekit.discover. If i understand it correctly it runs for 30s every X minutes, so it could be that we could discover the device much quicker if there was a longer discovery window.
Hey there @Jc2k, mind taking a look at this issue as its been labeled with a integration (homekit_controller
) you are listed as a codeowner for? Thanks!
This is a automatic comment generated by codeowners-mention to help ensure issues and pull requests are seen by the right people.
@Quentame any luck with the command above?
Hi @Jc2k !
Sorry for not answering, I had kinda busy weeks. Already 21 days ago :scream: !!
So, with : python3 -m homekit.discover -t 120
running inside the Docker container, I could see my light strip almost every time but HA not.
Then, I kept triggering the command to maintain a certain connection and HA discovered the strip, it tooks around 20 min.
But since I reboot HA, the strips became unavailable :
Maybe I have network or device issues, I don't know.
Thanks again.
Right now on a restart the entities are only loaded after discovery happens again. So even though it worked enough to pair and it records the IP address in the pairing it wont load the entity again until the next discovery finds the Bonjour mdns record. For whatever reason HA's zeroconfig implementation isn't managing to do this repeatedly.
It's weird that the command i gave you seems to be reliable because it uses the same underlying zeroconfig library.
There are a couple of things that will help your specific case:
aiozeroconf
. It is always monitoring mdns records so should work better in this case (the current one scans for 30s, sleeps for X minutes, then repeats).But doesn't fix the underlying issue, which feels networky but im out of ideas.
I can automate the homekit.discovery
command at HA boot and see what happens, also check my router settings.
I upgrade HA uselly the day after the release, I'll let you know about the famous 0.94 benefits.
Both of the things i mentioned above are in 0.94. So if you manage to pair them now they should stay working after HA restarts.
Okey, will test.
Actually, I made automations like I said, and it was working nice (usually < 5 min to be recognize by HA). I will past my code when I can reach it.
I said "will test" because my NAS, which was hosting HA, just failed to death two days ago ... :disappointed: No data should be lost but since I didn't really complete my HA config, I haven't configure backups for it (genius). Kinda end of next week should be fine.
Hope you got everything running again. Were you able to test yet?
Hey !
It was longer because I returned it, the shop don’t have replacement pieces. I get it back 4 days ago, but I also change my IPS during this time to go fiber, and router change place ... so I should move the UPS, Hue bridge and Z-wave ... long story 😅
Working with it the week end !
Hi again !
So, I've boot HA (0.93.4 I suppose) on the new NAS and of course the LS1s were still unavailable. I've updated HA to 0.95.4, still the same. So as my LS1s were paired with the old NAS I decided to deleted the entities from HA (an alert told me to disabled homekit_controller to "take the effect" properly or something) I reseted, linked to my iPhone, updated LS1s, and removed them from the Home app. I've disabled HomeKit in the discovery component (as it's enabled by default now), restart HA. Enabled again and restart (about the alert I received when I deleted the entities). Since all of that HA didn't recognized my LS1s, no notifications.
Did I made something wrong ? How can I "reset" the homekit_controller to install the LS1 properly on the new NAS ?
My homekit.discovery
automation (which was working before changing the NAS, paired with the old I guess) :
configuration.yaml
shell_command:
search_homekit: python3 -m homekit.discover -t 120
automation/homekit.yaml
- alias: homekit_find_devices
trigger:
- platform: homeassistant
event: start
- platform: time_pattern
minutes: 5
condition:
condition: template
value_template: >
{{ states('light.koogeek_ls1_205cad') == 'unknown' or states('light.koogeek_ls1_2043cf') == 'unknown' }}
action:
service: shell_command.search_homekit
Thanks.
Is the HA container deployed with host mode networking?
And is the zeroconf component turned on?
Host mode : ON Zeroconf component: NO (docs)
I thought the Zeroconf was part of the core, but obviously not, just found out. I apparently didn't read the release notes entirely, shame on me.
Will update my conf.
OK, so zeroconf
is awesome, it's working perfectly now !!!
I plugged only one LS1, add the zeroconf component and restart HA, the LS1 was recognized directly after HA started.
And then I plugged the other one, and it took 10s to discover it.
I'm closing the issue.
Home Assistant release with the issue: 0.91.4
Last working Home Assistant release (if known): N/A
Operating environment (Hass.io/Docker/Windows/etc.):
Component/platform:
https://www.home-assistant.io/components/homekit_controller/
Description of problem:
Hello,
I am trying to pair my Koogeek LS1 (my first HomeKit HA pairing) for an automation, but I am facing some problems :
I did : I solved the problem of the 2 LS1 by unplugged one (old fashon way :smile:). I reset the LS1, which was previously paired with my iPhone. I tryed all pattern of the HomeKit code (XXX-XX-XXX and XXXXXXXX) I tryed to just give the Wi-Fi to the LS1 but to pairing with my iPhone. Of course, restart HA and LS1. I looked at issues in GitHub, but no log to find any good match.
Nothing works.
I have the
/config/.homekit
folder created and empty.configuration.yaml
Traceback (if applicable):
No log at all :cry:
Additional information:
Maybe linked with #23189, #18949, #23172 and #15692