MiGoller / ioBroker.xplora

Inofficial ioBroker adapter for Xplora® smartwatches.
MIT License
4 stars 0 forks source link

es6 module fehler #1

Closed Snago636 closed 2 years ago

Snago636 commented 2 years ago

Leider funktioniert das Script bei mir seid einem Komplett update von ioBroker nicht mehr. Bei const xpa = require("xplora-api.js"); bringt er mir ein Fehler.

file is a commonjs module it may be converted to an es6 module

habe jetzt schon überall geschaut aber keine lösung gefunden. Würde mich freuen wenn du mir vielleicht weiterhelfen könntest.

gruß Snago

MiGoller commented 2 years ago

Hey @Snago636 ,

danke für Dein Feedback. Ich habe das aktuell weiterhin genau so laufen. Kannst Du mir bitte mal die Versionsnummern Deines ioBroker Controllers und des JavaScript Adapters geben? Ich brauche auch die Node.js Version.

$ iobroker version
$ iobroker version javascript
$ node -v

Dann schauen wir weiter, ok?

VG, MiGoller

Snago636 commented 2 years ago

Hi @MiGoller ,

danke für die schnelle Antwort.

root@ioBroker:/opt/iobroker# iobroker version 3.3.15 root@ioBroker:/opt/iobroker# iobroker version javascript 5.2.8 root@ioBroker:/opt/iobroker# node -v v12.22.4

freu mich wenn ich weiter helfen kann.

Snago636 commented 2 years ago

Sry Sry Sry. Muß mich leider berichtigen. Mir ist gerade eingefallen das ich mal deine xplora-api.js angepasst habe. Darauf hin hab ich deine alte getestet und die läuft einwandfrei.

Hatte mir noch eingebaut das ich vor der abfrage nochmal den standort aktualisieren lassen habe. Und durch meine updaterei hat er irgendwie wieder die originale xplora-api.js eingesetzt.

Leider fehlt jetzt meine Version der xplora-api.js. aber ich versuche es nochmal zusammen zu basteln. Dann schick ich dir das mal irgendwie vielleicht kannst du das ja dann korreckt einbauen.

MiGoller commented 2 years ago

Alles gut. Deine Initiative würde ich aber gerne in die API einfließen lassen. Magst Du mir den Code senden oder einen PR machen?

Snago636 commented 2 years ago

@MiGoller Ups mit dem Edit überschnitten. Wie gesagt ich schau mir das nochmal an wie das war und schicke es dir dann. Aber nicht wundern. Ich habe nicht so wirklich ahnung von dem ganzen. Also wird es sicherlich sehr leihenhaft aussehen. :)

MiGoller commented 2 years ago

Ich bin auch kein Profi, sondern gebe der Community etwas zurück für das, von dem ich profitiere. Dieses Issue mache ich dann aber zu, ok?

Snago636 commented 2 years ago

Ja klar kann zu gemacht werden. Ich melde mich dann nochmal falls ich es nochmal hinbekomme. Wie kann ich es dir dann zukommen lassen?

Snago636 commented 2 years ago

So da ich leider null Ahnung von Github habe und wie ich PR machen kann... (irgendwie blicke ich da nicht ganz durch) also schreibe ich es einfach mal hier. Falls jemand mal ne tolle Anleitung für Github und die verwendung auf deutsch hat immer her damit. :)

also meinem Javascript im ioBroker habe ich vor "Get the last known position for each child's watch" folgendes hinzugefügt. const askWatch = await gqlHandler.askWatchLocation(issueToken.user.children[0].ward.id); await Sleep(15000)

ersteres ruft die neue Funktion (Methode oder wie man das auch immer nennt) auf und zweiteres ist einfach damit er 15 sekunden wartet bevor er mit dem eigentlichen Script weiter macht. (da er etwas braucht um den Standort zu aktualisieren)

In der xplora-api.js habe ich dann foldendes hinzugefügt.

askWatchLocation(wardId) { return __awaiter(this, void 0, void 0, function* () { return yield this.runAuthorizedGqlQuery(GQLQueries.QUERY.askWatchLocateQ, { "uid": wardId }); }); }

und bei const GQLQueries habe ich bei QUERY

"askWatchLocateQ": "query askWatchLocate($uid: String!) {\n askWatchLocate(uid: $uid)\n}"

So das war es eigentlich schon gewesen. Ich hoffe es ist verständlich und ich hab nicht zu viel falsch gemacht.

Snago636 commented 2 years ago

Achja und das ganz habe ich variabel vom intervall her gemacht damit er jenach Standort verschiedene Intervalle hat.

schedule('*/' + getState("0_userdata.0.xplora_interval").val + ' * * * *', function () { xploraGetWardLocations(); });