2022-10-04T10:04:30+0200 <warn> scene.executeActions.js:37 (executeAction) Error: Parsefehler in Zeile 2:
...": {{1.0.data.result}}}
-----------------------^
Erwartet wurde 'CLOSE', 'OPEN_SEXPR', 'ID', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', gefunden wurde 'CLOSE_UNESCAPED'
at Parser.parseError (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:267:19)
at Parser.parse (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:336:30)
at parseWithoutProcessing (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js:46:33)
at HandlebarsEnvironment.parse (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js:52:13)
at compileInput (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:508:19)
at ret (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:517:18)
at Object.http.request (/src/server/lib/scene/scene.actions.js:250:76)
at executeAction (/src/server/lib/scene/scene.executeActions.js:32:35)
at /src/server/lib/scene/scene.executeActions.js:66:13
at tryCatcher (/src/server/node_modules/bluebird/js/release/util.js:16:23)
at MappingPromiseArray._promiseFulfilled (/src/server/node_modules/bluebird/js/release/map.js:68:38)
at MappingPromiseArray.PromiseArray._iterate (/src/server/node_modules/bluebird/js/release/promise_array.js:115:31)
at MappingPromiseArray.init (/src/server/node_modules/bluebird/js/release/promise_array.js:79:10)
at MappingPromiseArray._asyncInit (/src/server/node_modules/bluebird/js/release/map.js:37:10)
at _drainQueueStep (/src/server/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/src/server/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/src/server/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues (/src/server/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (internal/timers.js:464:21)
Kannst du mir bestätigen, dass du die Szene ausführst, indem du sie startest? Nicht, indem du auf „Ausprobieren“ klickst? (Das wird nicht wie in der Beschreibung funktionieren)
Wenn du in deinem Ausdruck Leerzeichen hast, gibt mathjs einen Fehler zurück.
Wenn du auf einem Mobilgerät eine Variable in einen gladys-Block hinzufügst, habe ich festgestellt, dass dieser dir immer ein Leerzeichen danach hinzufügt.
Versuche, die Leerzeichen zu entfernen, falls das der Grund ist.
Allerdings enthält die gesendete Anfrage nicht den Wert der Variable, sondern nur einen Ausdruck der Form {{0.0.last_value}}, wodurch der mathjs-Fehler zurückgegeben wird.
vielleicht weil deine Variable nicht den richtigen Wert enthält? Ich nehme an, du hast sie über eine API abgerufen?
Kannst du zeigen, wie du sie gesetzt hast?
Alles klar, tatsächlich habe ich meine Tests mit dem „Ausprobieren“-Button durchgeführt. Ich bestätige auch, dass man die Leerzeichen löschen muss, sonst gibt es kein Berechnungsergebnis.
Danke für die Infos und für Ihre Schnelligkeit.
Hallo, wie hier beschrieben, habe ich damit begonnen, Berechnungen direkt in den Szenen durchzuführen. Ich mache das in den Blöcken „Bedingung“ und „Gerät steuern“. Hier ist, was es bisher gibt
Jetzt brauche ich eure Hilfe. Kleine Erklärung: Sobald die Variablen durch die Werte ersetzt wurden, wird die Bibliothek mathjs verwendet, um die Berechnung auszuführen. Das Problem ist, dass die verwendete Methode evaluate() möglicherweise unerwünschten JS-Code in Gladys injizieren könnte. Daher müssen wir diese Methode auf die mathematischen Funktionen beschränken, die wir wirklich in Gladys verwenden wollen. Grundsätzlich werden wir mindestens die klassischen Operatoren +, -, *, / haben. Welche anderen mathematischen Funktionen würdet ihr gerne verwenden (oder verwendet ihr bereits mit der mathjs-API)?
Eine Liste ist hier verfügbar: math.js | an extensive math library for JavaScript and Node.js
Genial, danke für deine Hilfe, um das Thema voranzubringen
Ich würde mit den grundlegenden Operationen gehen, die du erwähnt hast. Persönlich konnte ich bisher nichts anderes verwenden.
Nicht die Klammern vergessen, natürlich!