iCloud Binding Communication Error

My iCloud Binding was also offline since November 2021. But now, I don’t know why, the iCloud Binding works again since the 16th of March, without any action from my side.

My Openhab Binding is 2.5.8 with a certificate update

2 Likes

I can confirm, 2.5.8 is working here too again

:thinking:

iOS15.4 was released day before.
Perhaps Apple changed anything in their infrastructure?

Hi there,
since yesterday, my icloud-binding reports “communication error - icloud response invalid: null”

Restart of the Binding or the OH-Instance does not help.
All other services in my network and OpenHAB are working fine.
I use OH 3.3 Release Version.

Can somebody confirm this behaviour ?

Thanks, Ralph

I have exactly the same issue as of about 7 hours ago. All 3 iCloud bindings have communication errors.

Same issue here

Same here OH3.3 stable

Same issue here

With the growing number of affected users, I opened an issue on GitHub iCloud Binding COMMUNICATION_ERROR iCloud response invalid: null · Issue #13090 · openhab/openhab-addons · GitHub

3 Likes

Same here. openHAB 3.2

Same Here, OpenHAB 3.3.0 Build #2899

Same here. OH3.3.0 release on rpi4/bullseye. iCloud binding v3.3.0. Subjectively it has been disconnecting with increasing frequency for a few weeks and now is down altogether.

Same here.

Same here (OH 3.2.0)

Same here.

same for me (OH 3.3)

I have also the same problem

Same issue. OH 3.3.0 Release Rpi 4 - Bullseye. Deleted things/items. Removed binding and reinstalled. Sames issue in bridge setup.

Guys, it is absolutely unnecessary to post a “me too” to this topic.
It seems, Apple changed something, so we need to investigate on that.
I will open an issue on Github for that.

EDIT: Just saw that issue already exist:

1 Like

I have found an alternative solution for this problem.
Ther is an linux python package called pyicloud ( pyicloud · PyPI
I have configured an an exec binding in openhab to use this package.
Things I have done:

  1. changed openhab user in linux to allow logon.
  2. su - openhab
  3. tar -xf picklepete-pyicloud-1.0.0-0-g332cc9f.tar.gz package into /var/lib/openhab/iCloud
  4. cd /var/lib/openhab/iCloud
  5. pip install -r requirements.txt to install all the required software.
  6. then I created a script using the examples on pyicloud · PyPI
  7. script example: myloc.py:
    =====================

#!/usr/bin/env python
#import os
#os.chdir(“/var/lib/openhab/iCloud”)

from pyicloud import PyiCloudService
api = PyiCloudService(‘icloud_username’, ‘password’)
loc = api.iphone.location()

if api.requires_2fa:
print(“Two-factor authentication required.”)
code = input("Enter the code you received of one of your approved devices: ")
result = api.validate_2fa_code(code)
print(“Code validation result: %s” % result)

if not result:
    print("Failed to verify security code")
    sys.exit(1)

if not api.is_trusted_session:
    print("Session is not trusted. Requesting trust...")
    result = api.trust_session()
    print("Session trust result %s" % result)

    if not result:
        print("Failed to request trust. You will likely be prompted for the code again in the coming weeks")

elif api.requires_2sa:
import click
print(“Two-step authentication required. Your trusted devices are:”)

devices = api.trusted_devices
for i, device in enumerate(devices):
    print(
        "  %s: %s" % (i, device.get('deviceName',
        "SMS to %s" % device.get('phoneNumber')))
    )

device = click.prompt('Which device would you like to use?', default=0)
device = devices[device]
if not api.send_verification_code(device):
    print("Failed to send verification code")
    sys.exit(1)

code = click.prompt('Please enter validation code')
if not api.validate_verification_code(device, code):
    print("Failed to verify verification code")
    sys.exit(1)

#print (loc)
lat = str(loc[‘latitude’])
lon = str(loc[‘longitude’])
sep = “,”
out=lat+sep+lon
print (out)

exit()

=====================================
replace (‘icloud_username’, ‘password’) with your icloud ID!!!

  1. chmod 755 myloc.py

  2. as user openhab run: python myloc.py
    reply the 2FA code shown on your iPhone into the software (needs one time only)
    Then press ENTER and the current location of your iPhone wil be returned.

  3. In the white list (/etc/openhab/misc/exec.whitelist)
    add the following line:
    python /var/lib/openhab/iCloud/myloc.py
    This allows exec to run the script

In the exec binding in openhab chose an repeat interval of 300 sec ( just like the iCloud binding) and switch the “Autorun” slider to on!
add the channel “output” to an item as an location point.

Then you can use this item as an normal location item!

Thats it.
It works perfectly. I’m using this Alternatieve Solution on my openHAB 3.2.0 version.

Maybe you can use this “work around” to overcome the iCLoud Binding errors!!!
Good luck with this!

1 Like

I was able to update the binding and bring my account and devices back online, on OH 3.3 Release Build. Is there somewhere I can upload the jar for others to test?

1 Like