Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sonderbehandlung für String-Datenpunkte #6

Closed
raschy opened this issue Dec 7, 2020 · 11 comments
Closed

Sonderbehandlung für String-Datenpunkte #6

raschy opened this issue Dec 7, 2020 · 11 comments
Assignees
Labels
bug Something isn't working enhancement New feature or request

Comments

@raschy
Copy link

raschy commented Dec 7, 2020

Angelehnt an die Diskussion im Forum gibt es eine Warnung bei Datenpunkten, die einen String als Schaltbefehl erwarten. So z.B. die Datenpunkte, die vom MQTT-Adapter von Devices angelegt werden.
Der Datenpunkt nimmt die boolschen Werte true und false zwar an, schreibt aber eine Warnung ins Log, das bei zukünftigen Veränderungen hier ein Fehler entstehen könnte.
Es wäre evtl. eine sinnvolle Erweiterung des Scripts, wenn hier z.B. die Werte "On" und "Off" übertragen werden könnten.

@Pittini
Copy link
Owner

Pittini commented Dec 7, 2020

"On" und "Off" übertragen geht doch jetzt schon (statt anschalten oder ausschalten wählst Du "Wert senden" und gibst den Wert im dann erscheinenden Feld ein), das is ja nicht das Problem. Das Problem war doch dass true oder false als string erwartet wurden oder irre ich da?

@Pittini Pittini self-assigned this Dec 7, 2020
@raschy
Copy link
Author

raschy commented Dec 7, 2020

Das habe ich versucht, funktioniert aber nicht. Wenn ich als Wert senden "On" eintrage, wird im Admin der Datenpunkt auf 'none' geändert und in der Folge schaltet das Gerät nicht. Liegt das evtl. an der Funktion "ConvertSendValue"?

@Pittini Pittini added bug Something isn't working enhancement New feature or request labels Dec 8, 2020
@Pittini
Copy link
Owner

Pittini commented Dec 8, 2020

Hab eben 2.1.9 hochgeladen, Problem sollte jetzt weg sein, bitte mal testen.

@raschy
Copy link
Author

raschy commented Dec 8, 2020

Hab die 2.1.9 eingebaut und getestet. javascript.0 2020-12-08 18:56:30.058 info (8821) script.js.background.TimerScript_219: Reaching MakeTable javascript.0 2020-12-08 18:56:30.057 info (8821) script.js.background.TimerScript_219: Reaching SetLockStates() TriggerIndex=-1 SwitchingTimerIndex=18 javascript.0 2020-12-08 18:56:30.054 info (8821) script.js.background.TimerScript_219: Reaching Meldung, msg= Timer 19, Gosund_4, hat eingeschaltet javascript.0 2020-12-08 18:56:30.052 info (8821) script.js.background.TimerScript_219: Timer 19, Gosund_4, switched on javascript.0 2020-12-08 18:56:30.050 warn (8821) at processTimers (internal/timers.js:492:7) javascript.0 2020-12-08 18:56:30.049 warn (8821) at listOnTimeout (internal/timers.js:549:17) javascript.0 2020-12-08 18:56:30.048 warn (8821) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:510:7) javascript.0 2020-12-08 18:56:30.047 warn (8821) at /opt/iobroker/node_modules/node-schedule/lib/schedule.js:552:11 javascript.0 2020-12-08 18:56:30.046 warn (8821) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:173:10) javascript.0 2020-12-08 18:56:30.045 warn (8821) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1273:34) javascript.0 2020-12-08 18:56:30.044 warn (8821) at Object.<anonymous> (script.js.background.TimerScript_219:610:13) javascript.0 2020-12-08 18:56:30.043 warn (8821) at DoAction (script.js.background.TimerScript_219:692:21) javascript.0 2020-12-08 18:56:30.042 warn (8821) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20) javascript.0 2020-12-08 18:56:30.038 warn (8821) You are assigning a boolean to the state "mqtt.0.SmartHome.Gosund4.cmnd.POWER" which expects a string. Please fix your code to use a string or change the state type to boolean. This warning mi javascript.0 2020-12-08 18:56:30.036 warn (8821) at processTimers (internal/timers.js:492:7) javascript.0 2020-12-08 18:56:30.035 warn (8821) at listOnTimeout (internal/timers.js:549:17) javascript.0 2020-12-08 18:56:30.034 warn (8821) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:510:7) javascript.0 2020-12-08 18:56:30.033 warn (8821) at /opt/iobroker/node_modules/node-schedule/lib/schedule.js:552:11 javascript.0 2020-12-08 18:56:30.032 warn (8821) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/schedule.js:173:10) javascript.0 2020-12-08 18:56:30.032 warn (8821) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1273:34) javascript.0 2020-12-08 18:56:30.031 warn (8821) at Object.<anonymous> (script.js.background.TimerScript_219:610:13) javascript.0 2020-12-08 18:56:30.030 warn (8821) at DoAction (script.js.background.TimerScript_219:690:25) javascript.0 2020-12-08 18:56:30.028 warn (8821) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20) javascript.0 2020-12-08 18:56:30.017 warn (8821) You are assigning a boolean to the state "mqtt.0.SmartHome.Gosund4.cmnd.POWER" which expects a string. Please fix your code to use a string or change the state type to boolean. This warning mi javascript.0 2020-12-08 18:56:30.015 info (8821) script.js.background.TimerScript_219: Reaching DoAction(), aktiv=true Rolle=1 whichone=18 Presence=true MyTimer[whichone][13]=mqtt.0.SmartHome.Gosund4.cmnd.POWER MyTimer[whichone][14]=true .
Kann ich noch was testen?

@raschy
Copy link
Author

raschy commented Dec 8, 2020

Nachtrag: Ich vermute, dass das Script nicht erkennt, dass der Datenpunkt vom Typ String ist. Sorry für die Mühe.

Erkenntnis: Wenn im Zieldatenpunkt 'true' steht, erkennt das Script den Typ boolean und verhält sich dann auch so. Arbeitet die Funktion "typeof" so?
Darüber hinaus habe ich die Zeile 688 auskommentiert (ist nach m.Mn. zuviel)

@Pittini
Copy link
Owner

Pittini commented Dec 9, 2020

Ich hab nochmal was geändert, bitte hol dir nochmals die 2.1.9 (hab die Version nicht geändert) und gugg mal was jetzt passiert. Wenns nicht klappt, bitte nochmals das Log, hab da jetzt mal ne Extrazeile rein. typeof dient dazu, festzustellen von welchem Datentyp der Inhalt einer Variable ist, so dass man drauf reagieren kann. Mit der Zeile 688 haste völlig recht, sowas kommt von schnell schnell.

@raschy
Copy link
Author

raschy commented Dec 9, 2020

Also Script läuft. Wenn im Datenpunkt ein Text (z.B. 'hallo') drinsteht, gehts ohne meckern. Schreibt das Script einmal 'true' rein, kommt beim nächsten Schaltvorgang die berühmte Meldung. Also noch keine Lösung. Wenn du statt "true"' "On" (Zeile 685) rausschreibst, wirds wohl funktionieren.

@Pittini
Copy link
Owner

Pittini commented Dec 10, 2020

Wenn du statt "true"' "On" (Zeile 685) rausschreibst, wirds wohl funktionieren.

Ähm, wenn dem so ist, dann kannste doch das on auch als "Wert setzen" reinschreiben. Ich hab mir hier jetzt extra nen String dp zum testen erstellt und hier klappt das alles ohne Probleme und mehr als nen dedizierten String zu schreiben geht halt nich. Was ich auch komisch finde, ist, dasses wohl einmal geht und erst beim 2ten mal nicht.

@raschy
Copy link
Author

raschy commented Dec 10, 2020

Das mit Wert setzen klappt mit dem 2.1.9 jetzt auch - beim 2.1.8 aber nicht. Nach der Mitteilung, die mir Telegram beim schalten sendet heist es beim 218er "Timer 19, Gosund_4 send value On as number" und setzt den Datenpunkt auf 'none'. Beim 219er bekomme ich "Timer 19, Gosund_4 send value On as string", trägt brav 'On' ein und schaltet.

@Pittini
Copy link
Owner

Pittini commented Dec 12, 2020

Ok, also klappt es jetzt mit "wert setzen" wie es soll, dann nehm ich die Sonderbehandlung für true/false wieder raus und seh das als gelöst an und mach hier dicht.

@Pittini Pittini closed this as completed Dec 12, 2020
@raschy
Copy link
Author

raschy commented Dec 12, 2020

@Pittini
Ja, ich komm mit der 2.1.9 zurecht. Danke für die Unterstützung und Hilfe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants