NEWS
Test Adapter Husqvarna Automower v0.3.x
-
@arnod
Ja, das Script verwende ich! Die Daten werden auch alle ordentlich unter den jeweiligen Datenpunkten in schedule und dem jeweilgem Tag abgelegt. Die Umrechnung der Zeiten funktioniert auch. Nur wenn ich den SET-Befehl "save all schedules" aufrufe werden die Daten nicht zum MĂ€her ĂŒbertragen ???@ghifunk
Was steht dann im LOG, wenn du das auf debug einstellst?
Werden die Daten richtig zum Server geschickt ?"data":"{\"data\":{\"type\":\"calendar\",\"attributes\":{\"tasks\":[{\"start\":1020,\"duration\":240,\"monday\":false,\"tuesday\":true,\"wednesday\":false,\"thursday\":false,\"friday\":true,\"saturday\":false,\"sunday\":false}]}}}"};und wie sieht die Antwort aus ?
[wss.on - message]: {"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","type":"settings-event","attributes":{"calendar":{"tasks":[{"start":1020,"duration":240,"monday":false,"tuesday":true,"wednesday":false,"thursday":false,"friday":true,"saturday":false,"sunday":false}]}}} -
@arnod
Jetzt sehe ich gerade, daĂ bei mir im Ordner unter dem Ordner schedule nochmal einer mit "0" angelegt ist...!!
Da passt doch glaube ich was nicht?@ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:
@arnod
Jetzt sehe ich gerade, daĂ bei mir im Ordner unter dem Ordner schedule nochmal einer mit "0" angelegt ist...!!
Da passt doch glaube ich was nicht?Das ist so in Ordnung.
Es sind vier Timer, die eingestellt werden können, von 0 bis 3. -
@ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:
@arnod
Jetzt sehe ich gerade, daĂ bei mir im Ordner unter dem Ordner schedule nochmal einer mit "0" angelegt ist...!!
Da passt doch glaube ich was nicht?Das ist so in Ordnung.
Es sind vier Timer, die eingestellt werden können, von 0 bis 3. -
@arnod
Hallo, eine Frage:
Ich habe den Automower 415X und bekomme den Zeitplan auss der Vis nicht an den MĂ€her ĂŒbertragen.
Hat das Problem noch jemand mit dem GerÀt oder geht es nur bei mir nicht?
Die mit der App eingestellten MĂ€htage werden in den kleinen Markierungen neben den Tagen grĂŒn
eingetragen aber die Werte aus der Visu erreichen den MĂ€her nicht.
vieleicht kann jemand helfen?
GruĂ Gerhard@ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:
Die mit der App eingestellten MĂ€htage werden in den kleinen Markierungen neben den Tagen grĂŒn
eingetragen aber die Werte aus der Visu erreichen den MĂ€her nicht.Wenn die kleinen Markierungen grĂŒn sind, wurde das auch an den MĂ€her ĂŒbertragen.
Diese Felder verweisen auf die ID husqvarna-automower.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxx.calendar
0 bis 3 und das sind Werte die vom MĂ€her kommen.
-
@ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:
Die mit der App eingestellten MĂ€htage werden in den kleinen Markierungen neben den Tagen grĂŒn
eingetragen aber die Werte aus der Visu erreichen den MĂ€her nicht.Wenn die kleinen Markierungen grĂŒn sind, wurde das auch an den MĂ€her ĂŒbertragen.
Diese Felder verweisen auf die ID husqvarna-automower.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxx.calendar
0 bis 3 und das sind Werte die vom MĂ€her kommen.
-
@ghifunk
Was steht dann im LOG, wenn du das auf debug einstellst?
Werden die Daten richtig zum Server geschickt ?"data":"{\"data\":{\"type\":\"calendar\",\"attributes\":{\"tasks\":[{\"start\":1020,\"duration\":240,\"monday\":false,\"tuesday\":true,\"wednesday\":false,\"thursday\":false,\"friday\":true,\"saturday\":false,\"sunday\":false}]}}}"};und wie sieht die Antwort aus ?
[wss.on - message]: {"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","type":"settings-event","attributes":{"calendar":{"tasks":[{"start":1020,"duration":240,"monday":false,"tuesday":true,"wednesday":false,"thursday":false,"friday":true,"saturday":false,"sunday":false}]}}} -
@arnod
im Log finde ich nichts, was mit Wochentagen oder Zeiten dazu zu tun hat ?
oder ich suche an der falschen Stelle. -
wie ich sehe, wird nichts ĂŒbertragen, was mit timern oder zeiten zu tun hat.
ich habe den Adapter auf debug eingestellt und dann im Log danach gesucht.@ghifunk ich habe gerade nochmal in den scheduler-Werten gesehen, daĂ alle Werte rot sind. hat das was zu bedeuten?
Wenn ich dann auf Speichern drĂŒcke, geht der "Speichern" -Wert kurz af True (grĂŒn) und dann wieder auf rotjetzt ha ich im Log doch noch was gefunden:
"Content-Length":191},"method":" post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{ "type":"calendar","attributes":{"tasks":[{"start":540,"duration":360,"monday":true ,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":wahr,"Sonntag":falsch}] }}}"}axios/0.27.2","Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":[{" start":540,"dauer":360,"montag":wahr,"dienstag":wahr,"mittwoch":falsch,"donnerstag":wahr,"freitag\ ":false,"samstag":true,"sonntag":false}]}}}"}axios/0.27.2","Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx -xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":[{" start":540,"dauer":360,"montag":wahr,"dienstag":wahr,"mittwoch":falsch,"donnerstag":wahr,"freitag\ ":false,"samstag":true,"sonntag":false}]}}}"}"Kalender","Attribute":{"Aufgaben":[{"Start":540,"Dauer":360,"Montag":true,"Dienstag" :true,"mittwoch":false,"donnerstag":true,"freitag":false,"samstag":true,"sonntag":false}]}}}"}"Kalender","Attribute":{"Aufgaben":[{"Start":540,"Dauer":360,"Montag":true,"Dienstag" :true,"mittwoch":false,"donnerstag":true,"freitag":false,"samstag":true,"sonntag":false}]}}}"} -
@baddik
DafĂŒr findest du auf Github ein Script, das diese Werte berechnet.
Funktioniert aber nicht sehr gut und muss noch mal optimiert werden.
Habe ich mir mal vorgenommen, wenn ich mehr Zeit habe. -
@arnod hallo,
ich habe eben nochmal die Daten etwas aufgeschlĂŒsselt:
Ich denke mal, da ist was durcheinander... ist original so aus dem Log kopiert!Content-Length":607},"method":" post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{ "type":"calendar","attributes":{"tasks":
[{"start":540,"duration":360,"monday":true ,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":wahr,"Sonntag":falsch},
{"Start":420,"Dauer":360,"Montag":false,"Dienstag":true,"Mittwoch":false,"donnerstag":wahr,"freitag":falsch,"samstag":wahr,"sonntag":falsch},
{"start":300,"dauer":120," Montag":wahr,"Dienstag":falsch,"Mittwoch":wahr,"Donnerstag":falsch,"Freitag":wahr,"Samstag":falsch,"Sonntag\ ":true},
{"Start":600,"Dauer":120,"Montag":false,"Dienstag":true,"Mittwoch":false,"Donnerstag\ ":true,"freitag":false,"samstag":false,"sonntag":true}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},
{"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},
{"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}
dazu die Eingabemaske:

[onStateChange]: HTTP-Statusantwort: 400; headers: {"content-type":"application/vnd.api+json","
content-length":"435","connection":"close","date":"Mi, 31. Aug. 2022 13:03 :16 GMT","
x-amzn-requestid":"zzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz","
x-amzn-remapped-content-length":"435","x-amzn-remapped-connection" :"keep-alive","
x-amz-apigw-id":"XutTTFnQjoEFW0g=","x-amzn-remapped-date":"Mi, 31. August 2022 13:03:16 GMT","
x-cache ":"Fehler von cloudfront","via":"1.1 b88825ad151091557d336c3519215162.cloudfront.net (CloudFront)","
x-amz-cf-pop":"TXL52-C1","x-amz-cf-id": " r4Pv0Um_UADmOY2-N1yfx3SIGAGv12Kbd3RlfL9iJo8if3HOqad0Lg=="};
Daten: {"errors":[{"id":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","status":"400","code":"
invalid.mower. schedule.format","title":"UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen: MowerSchedule.
Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen:
MowerSchedule.Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen: MowerSchedule.
Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]} -
@arnod hallo,
ich habe eben nochmal die Daten etwas aufgeschlĂŒsselt:
Ich denke mal, da ist was durcheinander... ist original so aus dem Log kopiert!Content-Length":607},"method":" post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{ "type":"calendar","attributes":{"tasks":
[{"start":540,"duration":360,"monday":true ,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":wahr,"Sonntag":falsch},
{"Start":420,"Dauer":360,"Montag":false,"Dienstag":true,"Mittwoch":false,"donnerstag":wahr,"freitag":falsch,"samstag":wahr,"sonntag":falsch},
{"start":300,"dauer":120," Montag":wahr,"Dienstag":falsch,"Mittwoch":wahr,"Donnerstag":falsch,"Freitag":wahr,"Samstag":falsch,"Sonntag\ ":true},
{"Start":600,"Dauer":120,"Montag":false,"Dienstag":true,"Mittwoch":false,"Donnerstag\ ":true,"freitag":false,"samstag":false,"sonntag":true}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},
{"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}donnerstag":falsch,"freitag":true,"samstag":falsch,"sonntag":true},
{"start":600,"dauer":120," Montag":falsch,"Dienstag":wahr,"Mittwoch":falsch,"Donnerstag":wahr,"Freitag":falsch,"Samstag":falsch,"Sonntag\ ":Stimmt}]}}}"}
dazu die Eingabemaske:

[onStateChange]: HTTP-Statusantwort: 400; headers: {"content-type":"application/vnd.api+json","
content-length":"435","connection":"close","date":"Mi, 31. Aug. 2022 13:03 :16 GMT","
x-amzn-requestid":"zzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz","
x-amzn-remapped-content-length":"435","x-amzn-remapped-connection" :"keep-alive","
x-amz-apigw-id":"XutTTFnQjoEFW0g=","x-amzn-remapped-date":"Mi, 31. August 2022 13:03:16 GMT","
x-cache ":"Fehler von cloudfront","via":"1.1 b88825ad151091557d336c3519215162.cloudfront.net (CloudFront)","
x-amz-cf-pop":"TXL52-C1","x-amz-cf-id": " r4Pv0Um_UADmOY2-N1yfx3SIGAGv12Kbd3RlfL9iJo8if3HOqad0Lg=="};
Daten: {"errors":[{"id":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","status":"400","code":"
invalid.mower. schedule.format","title":"UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen: MowerSchedule.
Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen:
MowerSchedule.Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}
UngĂŒltiges MĂ€hplanformat","detail":"UngĂŒltiges Planformat im Anfragetext.
Parsing-Nachricht: Mehr als zwei Aufgaben betreffen den Dienstag. Entstand beim HinzufĂŒgen: MowerSchedule.
Task[start=600,duration=120,monday=false,tuesday=true,wednesday=false,thursday=true,friday=false,saturday=false,sunday=true,missionId=<null>] "}]}Werden die anderen Objekt ID's vom Adapter befĂŒllt oder bleiben alle leer?
Ich wĂŒrde mal mit einem Timer anfangen und alle anderen löschen.
PrĂŒfe mal, ob beim Ăndern der Tage in der ersten Zeile in VIS auch die entsprechenden ID's vom Adapter geĂ€ndert werden (...calendar.0.monday bis sundday), wenn ja, dann mal speichern und im LOG schauen, wie die Antwort von Husqvarna ist, ob die Werte ĂŒbernommen wurden.
Versuch es mal nur mit einem Tag und prĂŒfe, ob die RĂŒckantwort von Husqvarna passt. -
Werden die anderen Objekt ID's vom Adapter befĂŒllt oder bleiben alle leer?
Ich wĂŒrde mal mit einem Timer anfangen und alle anderen löschen.
PrĂŒfe mal, ob beim Ăndern der Tage in der ersten Zeile in VIS auch die entsprechenden ID's vom Adapter geĂ€ndert werden (...calendar.0.monday bis sundday), wenn ja, dann mal speichern und im LOG schauen, wie die Antwort von Husqvarna ist, ob die Werte ĂŒbernommen wurden.
Versuch es mal nur mit einem Tag und prĂŒfe, ob die RĂŒckantwort von Husqvarna passt.@arnod
Hallo, habe jetzt nur den ersten timer stehen gelassen. Es erfolgt auch nur die entsprechende Ausgabe, welche zumindest die richtigen Werte beinhaltet. Es erfolgt aber wieder eine Fehlermeldung.
Ich weiĂ nicht was ich noch machen kann? Oder braucht der 415X ein anders Datenformat?
Vielleicht ist doch jemand hier der auch einen 415X hat und evtl. das gleiche Problem...hier der entsprechende Log-Auszug:
"Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":
[{"start":540,"duration":360,"monday":true,"tuesday":true,"wednesday":false,"thursday":true,"friday":false,"saturday":true,"sunday":false}]}}}"}husqvarna-automower.0
2022-08-31 20:33:54.473 info This mower use missions and can not be updated by this endpoint Nothing set[onStateChange]: HTTP status response: 400; headers: {"content-type":"application/vnd.api+json","content-length":"201","connection":"close","date":"Wed, 31 Aug 2022 18:33:54 GMT","
x-amzn-requestid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","x-amzn-remapped-content-length":"201","
x-amzn-remapped-connection":"keep-alive","
x-amz-apigw-id":"Xvdu7HYxDoEFmmw=","
x-amzn-remapped-date":"Wed, 31 Aug 2022 18:33:54 GMT","
x-cache":"Error from cloudfront","via":"1.1 969e7c67b62bdfae78f727a06e4512c2.cloudfront.net (CloudFront)","
x-amz-cf-pop":"TXL52-C1","x-amz-cf-id":"LPrXqGEaWud_7zyvx6nyYadgtVgNL2mEEuP0giMSJ73MA8MeNuzM7g=="}; data: {"errors":[{"id":"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzz","
status":"400","code":"illegal.argument","title":"Illegal argument","detail":"This mower use missions and can not be updated by this endpoint"}]} -
Alles erledigt, aber Werte Ă€ndern sich nur bei Neustart des Adapters. Selbst wenn der Mower unterwegs ist Ă€ndert sich nichts. Developer Acc hat ice987 fĂŒr mich geprĂŒft. Der ist iO angelegt und verknĂŒpft.
Es handelt sich bei den Mower um den AM 415X mit neuster Firmware.
Im App werden die Daten stÀndig aktualisiert, im Adapter nur bei Neustart des Adapters.
js-controller ist jetzt 4.0.23 und node bei 16.
@kaschi68
Hallo Kaschi68,
ich habe gerade gelesen, daĂ du auch einen 415X hast. Ich habe ein Problem mit der Ăbertragung des Zeitplanes an den MĂ€her..
Hast du schon mal ausprobiert ob das bei dir funktioniert? Das wĂŒrde mich sehr interessieren.
GruĂ Gerhard -
@arnod
Hallo, habe jetzt nur den ersten timer stehen gelassen. Es erfolgt auch nur die entsprechende Ausgabe, welche zumindest die richtigen Werte beinhaltet. Es erfolgt aber wieder eine Fehlermeldung.
Ich weiĂ nicht was ich noch machen kann? Oder braucht der 415X ein anders Datenformat?
Vielleicht ist doch jemand hier der auch einen 415X hat und evtl. das gleiche Problem...hier der entsprechende Log-Auszug:
"Content-Length":191},"method":"post","url":"https://api.amc.husqvarna.dev/v1/mowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/calendar","data":"{"data":{"type":"calendar","attributes":{"tasks":
[{"start":540,"duration":360,"monday":true,"tuesday":true,"wednesday":false,"thursday":true,"friday":false,"saturday":true,"sunday":false}]}}}"}husqvarna-automower.0
2022-08-31 20:33:54.473 info This mower use missions and can not be updated by this endpoint Nothing set[onStateChange]: HTTP status response: 400; headers: {"content-type":"application/vnd.api+json","content-length":"201","connection":"close","date":"Wed, 31 Aug 2022 18:33:54 GMT","
x-amzn-requestid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","x-amzn-remapped-content-length":"201","
x-amzn-remapped-connection":"keep-alive","
x-amz-apigw-id":"Xvdu7HYxDoEFmmw=","
x-amzn-remapped-date":"Wed, 31 Aug 2022 18:33:54 GMT","
x-cache":"Error from cloudfront","via":"1.1 969e7c67b62bdfae78f727a06e4512c2.cloudfront.net (CloudFront)","
x-amz-cf-pop":"TXL52-C1","x-amz-cf-id":"LPrXqGEaWud_7zyvx6nyYadgtVgNL2mEEuP0giMSJ73MA8MeNuzM7g=="}; data: {"errors":[{"id":"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzz","
status":"400","code":"illegal.argument","title":"Illegal argument","detail":"This mower use missions and can not be updated by this endpoint"}]}@ghifunk
Kann auch sein, dass dein MĂ€her das ĂŒber die API nicht unterstĂŒtzt.
Du kannst ja mal auf der Husqvarna API Seite mit deiner Mower ID direkt versuchen, ob das funktioniert.
Dazu einfach unter POST /mowers/{id}/calendar auf der Seite im Feld ID deine ID eintragen:
Husqvarna Connect API -
@kaschi68
Hallo Kaschi68,
ich habe gerade gelesen, daĂ du auch einen 415X hast. Ich habe ein Problem mit der Ăbertragung des Zeitplanes an den MĂ€her..
Hast du schon mal ausprobiert ob das bei dir funktioniert? Das wĂŒrde mich sehr interessieren.
GruĂ Gerhard@ghifunk
Hallo Gerhard, ich nutze den MĂ€hplan aus dem Adapter nicht. Ich hatte ihn mal getestet, aber bei mir wurden die MĂ€hzeiten (auch) nicht ĂŒbertragen.
Dazu muss ich aber sagen das ich noch ein grösseres Problem hatte. Meine Objekte haben sich nur nach Adapter Neustart aktualisiert.
Heute den Fehler gefunden. Ist bisher nicht aufgefallen bei anderen Adaptern. Meine Ordner-Rechte mĂŒssen nicht gepasst haben. Nach dem Durchlaufen vom ioBroker Fixer wurden jetzt im Betrieb alle Objekte aktualisiert.
Den MĂ€hplan organisiere ich anders, da mein Rolltor auf sein muss, bevor der Mower startet.
Ich starte und stoppe ĂŒber den Adapter Zeitschaltuhr in VIS. Alles andere hat nicht geklappt, da es zu Verzögerungen mit den Statusmeldungen kommt und der Mower sonst das Rolltor einfĂ€hrt.GruĂ und schönen Abend,
Kaschi -
@ghifunk sagte in Test Adapter Husqvarna Automower v0.3.x:
@arnod
Jetzt sehe ich gerade, daĂ bei mir im Ordner unter dem Ordner schedule nochmal einer mit "0" angelegt ist...!!
Da passt doch glaube ich was nicht?Das ist so in Ordnung.
Es sind vier Timer, die eingestellt werden können, von 0 bis 3. -
@arnod Ich bekomme bei irgendwie nur den Datenpunkt Distance from Charingstation angezeigt. MĂŒssten das nicht mehr sein?
@lustig29
Welches Script verwendest du?
Das originale von Github oder das geÀnderte von mir?
Beim Script von Github wurden anscheinend alle Tageswerte entfernt, sei dem im Adapter die "Statistics" Werte hinzugefĂŒgt wurden.
Wenn ich mein Script optimiert habe, werde ich ice987987 mal fragen, ob er das auf seiner Github Seite verwenden will.Bei meinem Script, das ich ursprĂŒnglich von ice987987 ĂŒbernommen habe, werden noch folgende Objekt ID's angelegt:
drivenDistanceToday
drivenDistanceTotal
chargingTimeToday
mowingTimeToday
GoogleMapsLinkEs werden auch ID's fĂŒr die Timer angelegt und die Urzeit umgerechnet fĂŒr die Adapter ID's
.calendar.0.durationund.calendar.0.start.Was noch nicht richtig funktioniert, ist die Berechnung der Ladezeiten und gefahrene Distanz.
-
@lustig29
Welches Script verwendest du?
Das originale von Github oder das geÀnderte von mir?
Beim Script von Github wurden anscheinend alle Tageswerte entfernt, sei dem im Adapter die "Statistics" Werte hinzugefĂŒgt wurden.
Wenn ich mein Script optimiert habe, werde ich ice987987 mal fragen, ob er das auf seiner Github Seite verwenden will.Bei meinem Script, das ich ursprĂŒnglich von ice987987 ĂŒbernommen habe, werden noch folgende Objekt ID's angelegt:
drivenDistanceToday
drivenDistanceTotal
chargingTimeToday
mowingTimeToday
GoogleMapsLinkEs werden auch ID's fĂŒr die Timer angelegt und die Urzeit umgerechnet fĂŒr die Adapter ID's
.calendar.0.durationund.calendar.0.start.Was noch nicht richtig funktioniert, ist die Berechnung der Ladezeiten und gefahrene Distanz.
-
@lustig29
Kein Problem://*************************************************************************************************** //++++++++++++++++++++++++++++++++++++++++ USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++++ const instanz = '0_userdata.0.'; // Hier kann die Instanz angepasst werden const PfadEbene1 = 'Husqvarna.'; // Hier kann der Pfad angepasst werden const PfadEbene2 = ['Statistik.', 'Zeiten.', 'Allgemein.']; // Hier kann der Pfad angepasst werden const Mower_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' // Mower ID vom Husqvarna Adapter const sID_Regensensor = 'hm-rpc.3.1.RAINING' // Pfad Regensensor true = Regen //++++++++++++++++++++++++++++++++++++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++++++++++++++++ //*************************************************************************************************** let drivenDistanceToday,drivenDistanceTotal,drivenDistance = 0,chargingTimeToday,chargingTimeTotal,chargingTime = 0,mowingTimeToday,mowingTimeTotal,mowingTime = 0; let chargingStationLatitude = 0,chargingStationLongitude = 0,distanceFromChargingStation = 0; // create required folders and states CreateState(); async function CreateState(){ for (let i = 0; i <= 3; i++) { createStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_'+i, '00:00', false, {name: 'Schedule '+i+' Start Zeit ', desc: 'Start Zeit Timer '+i, role: 'value', type: 'string', read: true, write: true, def: '00:00', unit: 'Uhr'}); createStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_'+i, '00:00', false, {name: 'Schedule '+i+' Ende Zeit ', desc: 'Ende Zeit Timer '+i, role: 'value', type: 'string', read: true, write: true, def: '00:00', unit: 'Uhr'}); } await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday', 0, false, {name: 'Driven Distance Today', desc: 'Driven Distance Today', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'km'}); await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal', 0, false, {name: 'Driven Distance Total', desc: 'Driven Distance Total', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'km'}); await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday', 0, false, {name: 'Charging Time Today', desc: 'Charging Time Today', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'ms'}); await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday', 0, false, {name: 'Mowing Time Total', desc: 'Mowing Time Total', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'ms'}); await createStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'distanceFromChargingStation', 0, false, {name: 'Distance from charging station', desc: 'Distance from charging station', role: 'state', type: 'number', read: true, write: true, def: 0, unit: 'm'}); await createStateAsync(instanz + PfadEbene1 + PfadEbene2[2] + 'GoogleMapsLink', '', false, {name: 'Link fĂŒr Google Maps', desc: 'Link fĂŒr Google Maps', role: 'value', type: 'string', read: true, write: true, def: ''}); log('-==== Alle Ordner und State wurden erstellt ====-') drivenDistanceToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday')).val; drivenDistanceTotal = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal')).val; chargingTimeToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday')).val; mowingTimeToday = (await getStateAsync(instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday')).val; } //******************************************************* Adapter Husqvarna-Automower *******************************************************/ const sID_Mower_activity = 'husqvarna-automower.0.' + Mower_ID + '.mower.activity' const sID_Latlong = 'husqvarna-automower.0.' + Mower_ID + '.positions.latlong' const sID_PARKUNTILNEXTSCHEDULE = 'husqvarna-automower.0.' + Mower_ID + '.ACTIONS.PARKUNTILNEXTSCHEDULE' const sID_MoverLatLong = 'husqvarna-automower.0.'+Mower_ID+'.positions.latlong' //************************************************************ Script Husqvarna *************************************************************/ const sID_drivenDistanceToday = instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceToday'; const sID_drivenDistanceTotal = instanz + PfadEbene1 + PfadEbene2[0] + 'drivenDistanceTotal'; const sID_distanceFromChargingStation = instanz + PfadEbene1 + PfadEbene2[0] + 'distanceFromChargingStation'; const sID_chargingTimeToday = instanz + PfadEbene1 + PfadEbene2[0] + 'chargingTimeToday'; const sID_mowingTimeToday = instanz + PfadEbene1 + PfadEbene2[0] + 'mowingTimeToday'; const sID_GoogleLink = instanz + PfadEbene1 + PfadEbene2[2] + 'GoogleMapsLink'; const sID_StartZeit_0 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_0'; const sID_EndeZeit_0 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_0'; const sID_StartZeit_1 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_1'; const sID_EndeZeit_1 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_1'; const sID_StartZeit_2 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_2'; const sID_EndeZeit_2 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_2'; const sID_StartZeit_3 = instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_3'; const sID_EndeZeit_3 = instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_3'; const arrayID_Zeiten =[sID_StartZeit_0,sID_EndeZeit_0,sID_StartZeit_1,sID_EndeZeit_1,sID_StartZeit_2,sID_EndeZeit_2,sID_StartZeit_3,sID_EndeZeit_3]; // reset variables "Today" every midnight schedule('0 0 * * *', function () { drivenDistanceToday = 0; setState(sID_drivenDistanceToday, drivenDistanceToday, true); chargingTimeToday = 0; setState(sID_chargingTimeToday, chargingTimeToday, true); mowingTimeToday = 0; setState(sID_mowingTimeToday, mowingTimeToday, true); }); // get chargingTimeToday and chargingTimeTotal on({id: sID_Mower_activity, oldVal: 'CHARGING'}, function (obj) { chargingTime = obj.state.ts - obj.oldState.ts; log('chargingTime: ' + chargingTime/1000 + 's', 'debug'); chargingTimeToday = chargingTime + chargingTimeToday; setState(sID_chargingTimeToday, chargingTimeToday, true); }); // get mowingTimeToday and mowingTimeTotal on({id: sID_Mower_activity, oldVal: 'MOWING'}, function (obj) { mowingTime = obj.state.ts - obj.oldState.ts; log('mowingTime: ' + mowingTime/1000 + 's', 'debug'); mowingTimeToday = mowingTime + mowingTimeToday; setState(sID_mowingTimeToday, mowingTimeToday, true); }); // get distance from automower to charging station, drivenDistanceToday and drivenDistanceTotal on({id: sID_Latlong, change: 'ne'}, async function (obj) { if (getState(sID_Mower_activity).val === 'CHARGING' || getState(sID_Mower_activity).val === 'PARKED_IN_CS') { if (chargingStationLatitude !== 0 && chargingStationLongitude !== 0) { chargingStationLatitude = (Number(obj.state.val.split(';')[0]) + Number(chargingStationLatitude)) / 2; chargingStationLongitude = (Number(obj.state.val.split(';')[1]) + Number(chargingStationLongitude)) / 2; } else { chargingStationLatitude = obj.state.val.split(';')[0]; chargingStationLongitude = obj.state.val.split(';')[1]; } } distanceFromChargingStation = 1000 * 6378.388 * Math.acos(Math.sin(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.sin(chargingStationLatitude * (Math.PI / 180)) + Math.cos(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.cos(chargingStationLatitude * (Math.PI / 180)) * Math.cos(chargingStationLongitude * (Math.PI / 180) - obj.state.val.split(';')[1] * (Math.PI / 180))); // reference: https://www.kompf.de/gps/distcalc.html log('distanceFromChargingStation: ' + distanceFromChargingStation + 'm', 'debug'); await setStateAsync(sID_distanceFromChargingStation, distanceFromChargingStation, true); if (getState(sID_Mower_activity).val === 'MOWING' || getState(sID_Mower_activity).val === 'GOING_HOME' || getState(sID_Mower_activity).val === 'LEAVING') { drivenDistance = 6378.388 * Math.acos(Math.sin(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.sin(obj.oldState.val.split(';')[0] * (Math.PI / 180)) + Math.cos(obj.state.val.split(';')[0] * (Math.PI / 180)) * Math.cos(obj.oldState.val.split(';')[0] * (Math.PI / 180)) * Math.cos(obj.oldState.val.split(';')[1] * (Math.PI / 180) - obj.state.val.split(';')[1] * (Math.PI / 180))); // reference: https://www.kompf.de/gps/distcalc.html log('distanceDriven: ' + drivenDistance + 'km', 'debug'); drivenDistanceToday = drivenDistanceToday + drivenDistance; drivenDistanceTotal = drivenDistanceTotal + drivenDistance; await setStateAsync(sID_drivenDistanceToday, round(drivenDistanceToday,2), true); await setStateAsync(sID_drivenDistanceTotal, round(drivenDistanceTotal,2), true); } }); // Uhrzeiten fĂŒr StartZeit und EndZeit in Minuten umrechnen und Adapter ID's Ă€ndern on({id: arrayID_Zeiten, change: 'ne'}, async function (obj) { let arryObj_ID = obj.id.split('.') let ScheduleNr = arryObj_ID[4].substring(arryObj_ID[4].length-1,arryObj_ID[4].length) let Dauer_min =0, Start_min=0; let StartZeit=(await getStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'StartZeit_'+ScheduleNr)).val; let EndeZeit=(await getStateAsync(instanz + PfadEbene1 + PfadEbene2[1] + 'EndZeit_'+ScheduleNr)).val; // Uhrzeit wird in Stunden und Minuten geteilt let arrayStartZeit = StartZeit.split(":"); let arrayEndeZeit = EndeZeit.split(":"); let StartZeit_Stunden = arrayStartZeit[0]; let EndeZeit_Stunden = arrayEndeZeit[0]; let StartZeit_Minuten = arrayStartZeit[1]; let EndeZeit_Minuten = arrayEndeZeit[1]; // Umrechnen der Uhrzeit in Minuten seit Tagesbeginn Start_min = (StartZeit_Stunden *60)+ parseInt(StartZeit_Minuten) // Umrechnen der Uhrzeit in Minuten von Start bis Ende Zeit (Dauer) Dauer_min = ((EndeZeit_Stunden *60)+ parseInt(EndeZeit_Minuten))-Start_min if(Dauer_min <0){Dauer_min = 0;} await setStateAsync('husqvarna-automower.0.' + Mower_ID + '.ACTIONS.schedule.'+ScheduleNr+'.start',Start_min) await setStateAsync('husqvarna-automower.0.' + Mower_ID + '.ACTIONS.schedule.'+ScheduleNr+'.duration',Dauer_min) }); //Google Maps Link aktualisieren, wenn sich die Koordinaten Ă€ndern. on({id: sID_MoverLatLong, change: "ne"}, async function (obj) { let arryLatLong = getState(obj.id).val.split(';'); let GoogleLink = 'https://www.google.com/maps/place/'+arryLatLong[0]+','+arryLatLong[1]+'/@?hl=de'; await setStateAsync(sID_GoogleLink,GoogleLink); }); // Bei Regen Parken bis zum nĂ€chsten Start on({id: sID_Regensensor, change: 'ne', val: true}, async function (obj) { await setStateAsync(sID_PARKUNTILNEXTSCHEDULE,true); log('-==== Es regnet, MĂ€her wird geparkt ====-','warn') }); // Runden. Parameter float wert, int dez Anzahl der Stellen function round(wert, dez) { let umrechnungsfaktor = Math.pow(10,dez); return Math.round(wert * umrechnungsfaktor) / umrechnungsfaktor; }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden