Thanks. Logged a generic reply on that support page asking for local api to be reinstated.
I just ordered a harmony elite yesterday and was hoping to connect it to my HA
Thanks. Logged a generic reply on that support page asking for local api to be reinstated.
I just ordered a harmony elite yesterday and was hoping to connect it to my HA
you still can, jus dont update the firmware
The .net repository looks like a great resource. They have figured out discovery and the returned hub info seems to be everything needed to discover and set up a connection.
Good to hear, but I hope Logitech reverts or make an option in the app to open API access if a user wants it
I canāt believe that there hasnāt been a response yet from Logitech. Itās been almost 24 hours since it was reported on the Logitech forums, and Logitech is yet to give an official response. I would have thought that if it was an accident/mistake they would have come out already and said so and that they are working on a fix. Most people would be happy with that and happy to wait a day or so.
In my opinion, the fact that nothing has been said, to me seems like this was intentional and āwe will see what the fall out is and go from thereā. It seems that more people use the local API than they thought and itās has bitten them in the rear end and they are scrambling to come up with a solution.
I sincerely hope that this is a mistake and that there has been a lack of communication and that things are restored, but Iām not holding my breath. Iām prepared to pack my Harmony Elite back in the box and get a refund. Iāve been using harmony remotes for years, and they are good at what they do. I donāt know where Iād go if I was to go with another vendor.
Initially Iāve blocked the hub from reaching the internet myself after doing the firmware rollback. The iOS app will be stuck at getting device configuration and switching the activities from the HA will work but for some reason the activity is changed after ~ 1 minute. Why this insane delay?
yes, noticed this delay too in the beginning, i think the hub is in a timeout or something
my delay is now gone
What can I do to help? I have a week off starting soon.
yeah, I have Ubiquiti and I was shocked that the process of blocking a website by name was so incredibly difficult. Something any cheesy $50 router can do in a few clicks.
I ended up solving the problem with my pi-hole. a few clicks and it was done.
Can someone try this and see if it returns your hubId? Just donāt post it publicly. Replacing the IP of course with your own. I wasnāt able to get the hub to reply by sending it a broadcast. Probably code error on my partā¦But noticed the iOS app makes a POST to the hub on 8088 when you manually enter the IP address of your hub.
So itās looking like if you at least know your hub ip addresses, you could query it for the hubId, and then from the hubId, pull down the config with all of your devices/activities, etcā¦ I will say, the hub itself seems to continually broadcast itself out. So a listener may be able to notice these if on the same L2 network and identify all hubs.
import requests
import json
hub_ip = '192.168.10.5'
hub_port = '8088'
# POST capture via Wireshark.
# This is from manually connecting to hub via iOS app
# ie, manually enter hub IP Address
#
#
#POST / HTTP/1.1
#Host: 192.168.10.5:8088
#Origin: http//:localhost.nebula.myharmony.com
#Accept-Charset: utf-8
#Content-Type: application/json
#Content-Length: 56
#Connection: keep-alive
#Accept: application/json
#User-Agent: Harmony_iOS_5.5_16
#Referer: http//:localhost.nebula.myharmony.com/mobile-fat.html
#Accept-Language: en-us
#Accept-Encoding: gzip, deflate
headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Origin': 'http//:localhost.nebula.myharmony.com'}
r = requests.post('http://' + hub_ip + ':' + hub_port, json={"id": 124, "cmd": "connect.discoveryinfo?get", "params": {}}, headers=headers)
hub_data = json.loads(r.text)
hub_id = hub_data['data']['remoteId']
account_id = hub_data['data']['accountId']
print('Harmony Hub ID: ' + hub_id)
#print('Harmony Account ID: ' + account_id)
Iāll give it a whirl, but I blocked the update. Wonāt be home til later.
I have a shitty router, not as easy as you thinkā¦ I had to block all internet connection for the harmony.
āThe WebSocket implementation has a real annoying āfeatureā though where to connect you have to know the deviceās āremote idāā¦ which seemingly isnāt published anywhere, and requires a bonjur style discovery call to get the hubs to advertise themselves.ā
I found that if you do an http POST to the Hub, you can get the hub id (remoteId) back. Someone else will have to also test and make sure it works also.
Can confirm when I run your code I get the hubId back:
root@optimus:~$ python hub_test.py
Harmony Hub ID: ****100
From my harmony app settings Iām on 4.15.206 firmware
EDIT: Also confirmed same behavior on my second hub.
Great. So then running this code (after doing a find/replace on YOUR_HUB_IP and YOUR_HUB_ID) leaving the quotes in tact, should return all of your devices, their IDās, and available actions for each.
Note: Regarding find/replace, I havenāt successfully re-structured the json data to where I can substitute variables. Thus, the find/replace. Just quickly cobbling together code to test things. So using raw strings for now. Sorry!
Careful. There are distinct HubId (not unique), UUID (unique), and RemoteId values. You want the RemoteId one specifically for the websocket connection.
Not a bad shout, ended up setting up OpenDNS Home VIP and blocked the domains on thereā¦
Ok I ran your code and hereās the result. Iām not sure if the deviceIds are secret, so I blanked them out:
Worked for me as well.
For Finxbox users ( I know that there are a few on this board) you can always go into your device and āpauseā internet access forever. Just another way to stop the hub to communicate with Logitech servers.