Localisation et batterie ne remontent plus

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.

0117|[2022-10-06 17:33:15]DEBUG : Array (     [0] => Array         (             [id_cloud] => XXX         )
0118|[2022-10-06 17:33:15]DEBUG : iPhoneXX
0119|[2022-10-06 17:33:15]DEBUG : AirPods XXX

D’autres personnes que moi rencontrent-elles également le même soucis ?

PI, je suis en Jeedom 4.2.21, mon plugin est en beta.

Bonjour,
pareil depuis hier 18h, je suis en 4.2.16 avec dernière version bêta du plugin
Cordialement

](Communauté Jeedom - Espace communautaire de la solution domotique Jeedom)Bonjour idem pour moi message et alerte fonctionne mai ni batterie et localisation ne fonctionne depuis hier soir
Sans titre 2.pdf (295,6 Ko)
ioscloud.pdf (168,9 Ko) 2022-05-02 14:55:29
jeedom Version 4.2.21

Bonjour
Idem chez moi, du coup j’anticipe les demandes du gouvernement et mon cumulus n’as pas chauffé cette nuit ! :rofl: :rofl: :rofl:
Cordialement

1 « J'aime »

Bonsoir,

Juste pour info, je ne pense pas que le problème vienne d’une modif Apple, j’utilise PyiCloud et ça fonctionne toujours. :wink:

A+.

Salut @Arsach,

As-tu résolu le problème de ton côté ?

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…

2 « J'aime »

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.

Salut @arcameca,

Est-ce que avec ta solution tu récupère également la localisation ?

Salut à tous,

Après plusieurs tentatives, cela semble refonctionner avec mon compte. Je n’ai pas encore essayer le compte de mon épouse.

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.

1 « J'aime »

Effectivement, je viens de constater cela… :frowning:

Tout à fait, localisation et niveau de batterie me concernant.

Plus d’infos ici :
https://community.jeedom.com/t/probleme-localisation-ios-cloud/71613/113

1 « J'aime »

même problème ici.

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)
3 « J'aime »

C’est dommage que @ZygOm4t1k ne nous réponde pas

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,
pour info j’ai le pb avec des iphones sous IOS 15
Cordialement

1 « J'aime »

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

Comment avez-vous fait ?

Bonsoir,

Avez vous installé PyiCloud avant de lancer votre script ?