NEWS
Adapter: Worx Landroid v2.x.x
-
@semmy sagte in Adapter: Worx Landroid:
'use strict'; const startSequenceKey = "worx.0.999...999.areas.startSequence"; var Arr = JSON.parse(getState(startSequenceKey).val); Arr.unshift(Arr.pop()); setState(startSequenceKey, JSON.stringify(Arr));
Hallo
Ich habe Firmware 3.25 installiert und jetzt funktioniert das Script nicht mehr, kommt immer folgende Fehlermeldung:javascript.0 (9961) script.js.Mähroboter.Sequenz_verschieben: SyntaxError: Unexpected token , in JSON at position 1
Was kann das jetzt wieder sein?
Viele Grüße
Semmy -
@hsteinme sagte in Adapter: Worx Landroid:
@hsteinme sagte in Adapter: Worx Landroid:
Diese Logik kannst Du in einem kleinen Skript realisieren
So zum Beispiel:
'use strict'; const startSequenceKey = "worx.0.999...999.areas.startSequence"; var Arr = JSON.parse(getState(startSequenceKey).val); Arr.unshift(Arr.pop()); setState(startSequenceKey, JSON.stringify(Arr));
- In Zeile 3 wird der startSequence-String ausgelesen und in eine eindimensionale Tabelle konvertiert.
- Zeile 4: Arr.pop() liefert den rechten Wert der Tabelle und entfernt ihn dort, unshift stellt ihn an den Anfang der Tabelle.
- Zeile 5 konvertiert die Tabelle zurück in einen String der Art [x, ...,x] und stellt diesen wieder in startSequence ab.
Hallo
Ich habe Firmware 3.25 installiert und jetzt funktioniert das Script nicht mehr, kommt immer folgende Fehlermeldung:javascript.0 (9961) script.js.Mähroboter.Sequenz_verschieben: SyntaxError: Unexpected token , in JSON at position 1
Was kann das jetzt wieder sein?
Viele Grüße
Semmy -
@semmy : Welcher Wert steht denn vor dem Skriptlauf bei Dir in worx.0.999...999.areas.startSequence?
-
@hsteinme sagte in Adapter: Worx Landroid:
@semmy : Welcher Wert steht denn vor dem Skriptlauf bei Dir in worx.0.999...999.areas.startSequence?
Das steht davor:
const startSequenceKey = "worx.0. -
@semmy Missverständnis, 2. Versuch: Bevor Du das Skript startest, gehe bitte in den Objekte-Reiter zu dem Objekt worx.0.999...999.areas.startSequence und gib hier dessen Wert an.
-
@hsteinme Hier steht das: [0,1,2,0,1,2,0,0,1,2]
Hast du das gemeint? -
@semmy Ja. Das sieht aber sauber aus.
Du hast oben nur meine Version des Skriptes zitiert. Für die Fehlersuche wäre es aber nötig, Dein Skript hier vollständig zu posten (nach Maskierung der Seriennummer).
-
@hsteinme So sieht es aus:
'use strict';
const startSequenceKey = "worx.0.99999.areas.startSequence";
var Arr = JSON.parse(getState(startSequenceKey).val);
Arr.unshift(Arr.pop());
setState(startSequenceKey, JSON.stringify(Arr)); -
@hsteinme Hallo
Hast du schon einen Fehler entdeckt?Viele Grüße
Semmy -
Das sind doch die Start Zonen oder ?
Ich kämpfe auch gerade damit rum ... da ich diese zur Zeit Steuerung verwenden will.
.areas.actualAreaIndicator sagt dir wo er beim zählen ist und .areas.startSequence zeigt an wo er wann starten soll.
Ich würde gerne die Sequence auslesen abhängig vom Indicator auslesen und dann sagen wenn er in Zone 0 startet dann bitte die Arbeitszeit auf 30 min legen. Da die fläche so klein ist.
Kann mir einer sagen wie ich die sequenz [0,2,0,2,2,2,2,2,2,2] in blockly abhängig von Indicator 6 auslese damit ich eine Gleichung erstellen kann ?
-
@semmy sagte in Adapter: Worx Landroid:
So sieht es aus:
Das ist zu 100% mein Skript. Einen Übertragungsfehler können wir also ausschließen. Bitte lass mal testweise folgendes Skript laufen:
'use strict'; const startSequenceKey = "worx.999...999.areas.startSequence"; console.log('startSequence vorher: ' + getState(startSequenceKey).val); var Arr = JSON.parse(getState(startSequenceKey).val); console.log('Arr[0] vorher: ' + Arr[0]); Arr.unshift(Arr.pop()); console.log('Arr[0] nachher: ' + Arr[0]); console.log('startSequence nachher: ' + JSON.stringify(Arr)); setState(startSequenceKey, JSON.stringify(Arr));
Dann stell bitte alle zu diesem Zeitpunkt auftretenden Logdatei-Einträge zu Worx und Javascript vollständig hier rein.
-
@hsteinme ```Hallo, dieses steht jetzt im log.
2021-08-26 16:37:05.541 - info: javascript.0 (16111) Stop script script.js.Mähroboter.Test
2021-08-26 16:37:05.553 - info: javascript.0 (16111) Start javascript script.js.Mähroboter.Test
2021-08-26 16:37:05.562 - info: javascript.0 (16111) script.js.Mähroboter.Test: startSequence vorher: 0,1,2,0,1,2,0,0,1,2
2021-08-26 16:37:05.563 - info: javascript.0 (16111) script.js.Mähroboter.Test: registered 0 subscriptions and 0 schedules
2021-08-26 16:37:05.565 - error: javascript.0 (16111) script.js.Mähroboter.Test: SyntaxError: Unexpected token , in JSON at position 1
2021-08-26 16:37:05.566 - error: javascript.0 (16111) at JSON.parse ()
2021-08-26 16:37:05.567 - error: javascript.0 (16111) at script.js.Mähroboter.Test:4:16
2021-08-26 16:37:05.567 - error: javascript.0 (16111) at script.js.Mähroboter.Test:10:3
2021-08-26 16:37:05.568 - error: javascript.0 (16111) at Script.runInContext (vm.js:130:18) -
@semmy sagte in Adapter: Worx Landroid:
startSequence vorher: 0,1,2,0,1,2,0,0,1,2
Hoppala! Da fehlen ja die eckigen Klammern! Wer hat die denn geklaut? Laut Deiner Nachricht vom 24. Aug. 2021, 22:10 sind sie im Objekt-Reiter zu sehen, aber nun nicht mehr im Javaskript. In meiner ioBroker-Umgebung sind die Klammern im Skript vorhanden.
Da hat sich aber in Deiner Umgebung etwas schrecklich Grundlegendes geändert. Setzt Du die Javascript Version 5.2 ein? Dann ist hier der "Schuldige" geständig:
Ich habe jetzt einige Jahrzehnte beruflich in der Programmierwelt verbracht, aber dass es jemand wagt, einen derart dreisten Bruch in eine Programmierschnittstelle einzubauen, hätte ich mir in meinen kühnsten Träumen nicht vorstellen können
Also merke: Nicht alles, was auf einmal nicht mehr läuft, sollte man der Firmware des Mähers in die Schuhe schieben
Ich kann's in meiner Umgebung nicht testen. Probier bitte bei Dir aus, welche der beiden folgenden Skript-Variationen funktioniert:
'use strict'; const startSequenceKey = "worx.0.999...999.areas.startSequence"; var Arr = getState(startSequenceKey).val; Arr.unshift(Arr.pop()); setState(startSequenceKey, Arr);
'use strict'; const startSequenceKey = "worx.0.999...999.areas.startSequence"; var Arr = getState(startSequenceKey).val.split(','); Arr.unshift(Arr.pop()); setState(startSequenceKey, Arr.join(','));
-
@hsteinme Hallo, das erste hat funktioniert. Ich habe das zweite dann gar nicht mehr probiert.
Vielen Dank für die geniale Hilfe.Viele Grüße
Semmy -
@hsteinme
hallo, wo finde ich den Dein Script für den Worx.. habe schon paar Seiten zurück geblättert -
@jens-meyer sagte in Adapter: Worx Landroid:
@hsteinme
hallo, wo finde ich den Dein Script für den Worx.. habe schon paar Seiten zurück geblättertIst auf Seite 20 zu finden.
-
@semmy
vielen Dank,
du meinst post 20?
die GIthub seite geht da aber nicht mehr -
@jens-meyer Seite 20 vom 21.06.2021
-
Guten Tag erstmal,
Ich bin relative neu hier und befasse mich eigentlich mit Automatisierungstechnik im Industriebereich. Nun möchte ich für Zuhause viele IObroker Sachen umsetzten unter anderem der Worx Rasenmäher.
Ich habe schon ein laufendes Programm dieses möchte ich aber noch um einige Sachen ergänzen. unter anderem, möchte ich die nächste Startzone auslesen und abhängig von dieser dann die Arbeitszeit verkürzen.
Umgesetzt habe ich das alles so wie hier beschrieben https://www.smarthome-tricks.de/software-iobroker/blockly-zeichenfolge-parsen/
Nur leider kommt immer eine Fehler Meldung :
javascript.0 (19499) script.js.Rasenmäher: TypeError: (intermediate value)(intermediate value)(intermediate value).split is not a function
error javascript.0 (19499) at Object.<anonymous> (script.js.Rasenmäher:425:50)Ich kann damit noch nicht viel anfangen aber evtl.. hättet ihr die Güte mir weiterzuhelfen.
Vielen dank
-
Hallo,
ist es eigentlich normal das sich die "Klingen-Arbeitszeit" nicht mit der App abgleicht?
Wenn ich diese in der App zurücksetze, steht im Iobroker immer noch bei "totalBladeTime" die komplette Zeit seit Inbetriebnahme.
Obwohl ich jetzt schon zweimal in der App die Zeit auf 0 gesetzt habe?