NEWS
Apple Find Me HTTP-Request Fehler
-
@stefu87_ch sagte in Apple Find Me HTTP-Request Fehler:
Bei mir funktioniert der Adapter seit einigen Wochen auch nicht mehr. Bekomme den gleichen Fehler.
Du weisst aber schon dass das Dein eigener Beitrag ist ?!
https://forum.iobroker.net/topic/56349/apple-find-me-http-request-fehler -
@djmarc75 ja das weiss ich, aber dazwischen hat er einige Zeit einwandfrei funktioniert und jetzt fängt er wieder an mit Fehler im Log schreiben.
-
@stefu87_ch sagte in Apple Find Me HTTP-Request Fehler:
dazwischen hat er einige Zeit einwandfrei funktioniert
na das stand hier ja nirgendwo
-
Hallo Zusammen,
kennt jemand eine funktionierende Alternative um den Standort von Apple Geräten abgefragt zu bekommen?
Am besten ohne zusätzliche App die auf den Geräten installiert werden muss.Habe vom gleichen Entwickler eine Variante für NodeRed gefunden. Weiß jemand ob das noch funktioniert oder ob da die gleiche Problematik besteht? Ich selbst habe NodeRed (noch) nicht im Einsatz.
https://github.com/PfisterDaniel/node-red-contrib-apple-find-me
-
@prorun denke das brauchst du nicht zu testen, das letzte Release ist aehnlich dem iobroker-Adapter, seitdem hat der Entwickler wohl keine Zeit mehr gehabt, daran zu arbeiten.. und Apple hat wohl die Anmeldung geaendert..
-
@ilovegym sagte in Apple Find Me HTTP-Request Fehler:
itdem hat der Entwickler wohl keine Zeit mehr gehabt, daran zu arbeiten.. und Apple hat wohl die Anmeldung geaendert..
Moin, gibt es dazu schon neue Infos?
-
Habe die gleiche Frage? Würde den Adapter gerne nutzen.
-
@snotech Ich habe parallel zu iobroker unter Anderem Homeassistant laufen. Dafür git es eine Integration iClod3 v3. Damit habe ich alles Benötigte in Homeassistant. Und für iobroker gibt es einen Adapter „Hass“, mit dem man eben Homeassistant mit iobroker verknüpft.
Läuft stabil, ist aber nichts, was man mal eben schnell in 10 Minuten einrichtet. Lesen der Dokus (Aufsetzen von Homeassistant sowie die verlinkte Doku für iCloud3) ist zwingend erforderlich.Gruss, Jürgen
-
@snotech @Wildbill @thorkillar
ein neuer Developer hatte vor ein paar Monaten etliche Wochen dran gesessen, aber leider ist nicht moeglich, den Adapter vernuenftig wieder zum laufen zu bringen, da hier eine API benutzt wird, die nicht mehr richtig von Apple unterstuetzt wird.
Von daher ist das Projekt erstmal auf Eis.
Ich schreib dem Developer mal(weiss nicht ob er hier im Forum ist, glaube nicht), ob er sich diese icloudv3 mal ansehen kann.. vielleicht gehts ja damit doch als iobroker-adapter.. waere schon cool..
-
könnte man nicht hier reinschauen, wie das bei ha gemacht wird?
https://github.com/gcobb321/icloud3_v3/blob/a3f302b132dc68beadd4ad9c303d13e3c22c5d9e/custom_components/icloud3/support/pyicloud_ic3.py#L1549nur diesen Teil hat chatgpt wie folgt übersetzt
klar, das ist nur ein Teil und da muss man sich etwas tiefer reinknien.
evtl könnte jemand mit python kenntnissen und einer ha installation da an bestimmten stellen noch sowas wie console.log einbauen um die request reihenfolge herauszufinden.
aber machbar müsste das schon seinclass FindMyFriendsService { constructor(PyiCloud, serviceRoot, Session, params) { this.Session = Session; this.PyiCloud = PyiCloud; this.params = params; this._serviceRoot = serviceRoot; this.refreshAlways = false; this.response = {}; this.isServiceAvailable = true; this.isServiceNotAvailable = false; this.setServiceAvailable(serviceRoot !== null); this.deviceIdByFmfEmail = {}; this.fmfEmailByDeviceId = {}; this.deviceInfoByFmfEmail = {}; this.deviceFormIcloudFmfList = []; this.devicesWithoutLocationData = []; this._contactsEndpoint = `${this._serviceRoot}/co`; this._contactsRefreshUrl = `${this._contactsEndpoint}/startup`; this._contactsNextUrl = `${this._contactsEndpoint}/contacts`; this._contactsChangesetUrl = `${this._contactsEndpoint}/changeset`; this.refreshClient(); } setServiceAvailable(available) { this.isServiceAvailable = available; this.isServiceNotAvailable = !available; } refreshClient() { if (this.isServiceNotAvailable) return; let paramsContacts = {...this.params, clientVersion: "2.1", locale: "en_US", order: "last,first"}; this.Session.get(this._contactsRefreshUrl, { params: paramsContacts }) .then(response => { this.response = response.data; let paramsNext = { ...paramsContacts, prefToken: this.response.prefToken, syncToken: this.response.syncToken, limit: "0", offset: "0", }; return this.Session.get(this._contactsNextUrl, { params: paramsNext }); }) .then(response => { this.response = response.data; }) .catch(error => { console.error(error); this.response = {}; }); } contactsAll() { this.refreshClient(); return this.response.contacts; } _confFmfDevicesNotSetUp() { const devicesNotSetUp = Gb.confDevices .filter(confDevice => confDevice[CONF_FMF_EMAIL] !== NONE_FNAME && !this.deviceIdByFmfEmail[confDevice[CONF_FMF_EMAIL]]) .map(confDevice => `${confDevice[CONF_IC3_DEVICENAME]} (${confDevice[CONF_FMF_EMAIL]})`); return devicesNotSetUp.length ? devicesNotSetUp.join("\n") : ""; } get timestampField() { return 'timestamp'; } get dataSource() { return FMF_FNAME; } // ... Weitere Methoden hier ... contactIdFor(identifier, defaultValue = null) { const lookupKey = identifier.includes("@") ? "emails" : "phones"; const matcher = item => { const hit = item[lookupKey]; if (!Array.isArray(hit)) { return hit === identifier; } return hit.includes(identifier); }; const candidates = this.contactDetails .filter(matcher) .map(item => item.id); return candidates.length ? candidates[0] : defaultValue; } locationOf(contactId, defaultValue = null) { const candidates = this.locations .filter(item => item.id === contactId) .map(item => item.location); return candidates.length ? candidates[0] : defaultValue; } get data() { if (!this.response) { this.refreshClient(); } return this.response; } get locations() { return this.response.locations || []; } get followers() { return this.response.followers || []; } get following() { return this.response.following || []; } get contactDetails() { return this.response.contactDetails || []; } get myPrefs() { return this.response.myPrefs || []; } get deviceIdentifier() { return `${this.response.firstName || ''} ${this.response.lastName || ''}`.trim(); } toString() { try { return `<FindMyFriendsService: ${this.PyiCloud.apple_id}>`; } catch { return "<FindMyFriendsService: NotSetUp>"; } } }