Bonjour à tous,
Depuis hier 18:00, mes infos de localisation et de batterie ne remontent plus via le plugin ioscloud.
Même problème avec le compte de ma femme, aucune remontée depuis hier.
J’ai bien pensé à un problème d’authentification, redéroulé la procédure indiquée dans ce post : https://community.jeedom.com/t/probleme-localisation-ios-cloud/71613
Mais rien n’y fait.
J’ai supprimé le cookie, relancé une authentification et je suis toujours face au même problème :
l’authentification semble se faire correctement
0097|[2022-10-06 17:33:11]DEBUG : Code verification successful.
0098|[2022-10-06 17:33:11]DEBUG : GET https://idmsa.apple.com/appleauth/auth/2sv/trust
0099|[2022-10-06 17:33:12]DEBUG : https://idmsa.apple.com:443 "GET /appleauth/auth/2sv/trust HTTP/1.1" 204 0
0100|[2022-10-06 17:33:12]DEBUG : Saved session data to file
0101|[2022-10-06 17:33:12]DEBUG : Cookies saved to /var/www/html/plugins/ioscloud/resources/ioscloud/pyicloud/XXX/johndoe
mais ensuite la localisation et la batterie restent au même statut bien que la log montre l’exécution du cron
0133|[2022-10-06 17:40:11]DEBUG : ------------------- updateLocation : XXX---------------------- Compte iCloud
Je complète en disant que mes appareils semblent bien détectés, mais pas plus.
Effectivement, cela m’a fait penser au problème de novembre 2021, mais après avoir refait la procédure d’identification le soucis persiste pour moi aussi…
Hello, non toujours le même soucis. J’ai retenté différentes procédures pour renouveler le cookie mais rien n’y fait.
En regardant les logs j’ai l’impression que tout se passe bien, le cookie est récupéré, la liste des devices remonte (a ce moment même le niveau de batterie remonte mais ne semble pas exploité).
Ensuite le cron tourne mais ni la position, ni la batterie se sont mis à jour.
Il y a du y avoir un petit changement côté Apple qui fait que le pluging ne trouve plus ces infos.
Bonjour @ZygOm4t1k . Nous sommes un certain nombre à avoir besoin de votre aide, ayant tous le même soucis (sans doute suite à un changement Apple). Si vous avez le temps de nous aider, ca serait sympa. Merci.
Je pense que dès qu’on sauve dans l’écran avec les credentials, une mise à jour se fait et, à ce moment là, les bonnes informations sont reçues. Mais, ensuite, les mises à jour ne se font plus.
Bon en attendant que le plugin puisse reprendre du service j’ai regardé du côté de PyiCloud.
J’ai créé un virtuel avec les infos batterie, localisation, statut et timestamp et je mets tout ça à jour avec les infos remontées par PyiCloud.
Pour le moment j’ai un scénario qui pousse les infos de ce virtuel vers mes objets iOsCloud car je n’ai pas envie de modifier tous mes scénarios qui sont basés dessus mais si le plugin ne peut pas être mis à jour je basculerai complètement sur PyiCloud.
Pour ceux que ça intéresse, voici le bout de code que j’utilise (dans une script)
import os
import sys
from pyicloud import PyiCloudService
import requests
import math
print("Setup Time Zone")
os.environ["TZ"] = "Europe/Paris"
APIKEY = "API JEEDOM"
APIKEY_VIRTUAL ="API PLUGIN VIRTUEL"
BASEURL = "https://MONJEEDOM/core/api/jeeApi.php?apikey="
RADIUS = 6378137
latDomicile = LATITUDE DE REFERENCE POUR CALCULER LA DISTANCE
longDomicile = LONGITUDE DE REFERENCE POUR CALCULER LA DISTANCE
distancePresence = DISTANCE (en m) POUR DETERMINER LA PRESENCE BASEE SUR LA DISTANCE
try:
solve2FA = int(sys.argv[1])
except:
solve2FA = 0
pass
print("Py iCloud Services")
api = PyiCloudService("USER ICLOUD","MDP ICLOUD")
if api.requires_2fa:
URL = BASEURL + APIKEY + "&type=message&category=iOsCloud&message=Two-factor authentication required."
requests.get(URL)
print("Two-factor 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)
#
# Find iPhone
#
print("Devices")
for iDevice in api.devices:
if str(iDevice)[0:9] == "NOM DE MON TELEPHONE":
break
#
# Battery & Status
#
print("Battery & Status")
batteryLevel = round(iDevice.status()["batteryLevel"]*100,1)
status = iDevice.status()["deviceStatus"]
URL = BASEURL + APIKEY_VIRTUAL + "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value=" + str(batteryLevel)
requests.get(URL)
URL = BASEURL + APIKEY_VIRTUAL + "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value=" + str(status)
requests.get(URL)
#
# Infos
#
print("Infos")
latitude = iDevice.location()["latitude"]
longitude = iDevice.location()["longitude"]
position = str(latitude) + "," + str(longitude)
distance = math.sqrt( ((longitude-longDomicile) * math.cos(latitude / 180 * math.pi ))**2 + (latitude-latDomicile)**2 ) / 180 * math.pi * RADIUS
presence = (distance <= distancePresence)
timestamp = iDevice.location()["timeStamp"]
URL = BASEURL + APIKEY_VIRTUAL+ "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value=" + position
requests.get(URL)
URL = BASEURL + APIKEY_VIRTUAL+ "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value="+str(round(distance,1))
requests.get(URL)
URL = BASEURL + APIKEY_VIRTUAL+ "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value=" + str(timestamp)
requests.get(URL)
URL = BASEURL + APIKEY_VIRTUAL+ "&plugin=virtual&type=event&id=IDCOMMANDE_A_METTRE_A_JOUR&value=" + str(presence)
requests.get(URL)
Je pense que le soucis est dans le code 3rdparty que @ZygOm4t1k utilise dans son plugin . J’ai ouvert une issue : {« desc »:« default text from ResponseContentFilter »}" · Issue #10 · Neal/FindMyiPhone · GitHub
Il y a eu, à mon avis, un changement avec IOS 16.
La function make_request qui fait un appel CURL renvoie ceci : " {« desc »:« default text from ResponseContentFilter »}"
Espérons que Neal identifie le même problème et le corrige, ce qui nous permettrait ensuite de mettre à jour facilement le plugin pour le faire refonctionner (il suffirait de prendre le nouvelle version du code de Neal et de le mettre dans le plugin)
Bonjour @Arsach
J’essaie votre script via le plugin script (j’aimerais bien qu’il tourne de là, histoire de centraliser tout dans Jeedom). Mais j’obtiens ce message d’erreur.
C’est la ligne « from pyicloud import PyiCloudService » qui pose problème