NEWS
Wert in einen Datenunkt schreiben
-
Hallo ich möchte den State einer LED in einen Datenpunkt schreiben. Es handelt sich um switch_led des Typs Boolean. Diesen Punkt habe ich auch so angelegt Mit folgendem Script schreibe ich ihn::
on({ id: 'mihome.0.devices.switch_158d00023e651b.click' /* Simple click */, val: true }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; setState('0_userdata.0.Licht.Fenster3.switch_led' /* Licht.Fenster3.switch_led */, Object.keys(getObject('tuya.0.bff11e43a9cf6c6fd92nlc.20'))); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIyJTNCWlVuJTdDaGdtRyUyM2slMjRCYy0lN0JyZSUyNHglMjIlMjB4JTNEJTIyMTM4JTIyJTIweSUzRCUyMi0xNjIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VtaWhvbWUuMC5kZXZpY2VzLnN3aXRjaF8xNThkMDAwMjNlNjUxYi5jbGljayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFdHJ1ZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMml3aiUyQ3AtbkZDbiUzRGY4ajVKZXFCJTVEJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkxpY2h0LkZlbnN0ZXIzLnN3aXRjaF9sZWQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvYmplY3Rfa2V5cyUyMiUyMGlkJTNEJTIyWDYyJTQwcWolNURMajFFUkIlM0I3WU0qTF8lMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPQkpFQ1QlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZ2V0X29iamVjdCUyMiUyMGlkJTNEJTIyOUdwJTYwOC5ZJTQwJTNCMyU0MHRXJTNCcXkxYWIxJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFdHV5YS4wLmJmZjExZTQzYTljZjZjNmZkOTJubGMuMjAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=
Wenn ich es nun ausführe, bekomme ich folgenden Fehler:
javascript.0 2025-01-27 15:31:42.346 warn at process.processImmediate (node:internal/timers:483:21) javascript.0 2025-01-27 15:31:42.345 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29) javascript.0 2025-01-27 15:31:42.345 warn at Object.<anonymous> (script.js.Licht.Küche.Test_Variable:5:3) javascript.0 2025-01-27 15:31:42.345 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20) javascript.0 2025-01-27 15:31:42.345 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1452:38) javascript.0 2025-01-27 15:31:42.345 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7336:48) javascript.0 2025-01-27 15:31:42.344 warn You are assigning a array to the state "0_userdata.0.Licht.Fenster3.switch_led" which expects a boolean. Please fix your code to use a boolean or change the state type to array. This warning might become an error in future versions.
Wo liegt mein Fehler?
Ideal wäre ein Script, das alle Leuchten im Tuya Adapter mit den Werten switch::led, work_mode, bright_value und colour_data RGB ausließt.VG
Krodon
-
@krodon sagte in Wert in einen Datenunkt schreiben:
Wo liegt mein Fehler?
wenn das ein Blockly ist, wie die Kategorie erahnen lässt, bitte auch das Blockly zeigen
-
@homoran ich habe es eingefügt, leider habe ich den rechten Teil nicht komplett drauf bekommen
-
@krodon sagte: You are assigning a array to the state "0_userdata.0.Licht.Fenster3.switch_led" which expects a boolean
Was willst du mit der Liste der Objekt-Attribute?
Für eigene Datenpunkte verwendet man Block "aktualisiere" anstelle von "steuere".
-
@krodon sagte in Wert in einen Datenunkt schreiben:
ich möchte den State einer LED in einen Datenpunkt schreiben.
Ja, die erwartet einen Boolschen Wert. Also true oder false. Du schreibst alle Attribute eines Objektes (was ein Array ist) in den Datenpunkt. Das ist natürlich Quatsch. Was möchtest Du damit bezwecken?
Suchst Du eventuell einfach nur den "umschalten"-Baustein, wenn Du auf den Button drückst?
Grundlagen anschauen (wobei Du ja seit 2018 dabei bist und das eigentlich können müsstest).
-
@haus-automatisierung ich möchte nur einzelne Datenpunkte aus einem Array schreiben, nicht eine Kopie des Arrays. Der Hintergedanken ist nachdem ein Bewegungsmelder die Beleuchtung verändert hat, den alten Zustand wieder zu erzeugen.
VG
Krodon
-
@krodon sagte: Beleuchtung verändert hat, den alten Zustand wieder zu erzeugen.
Dann verwende eine ID-Liste mit allen betreffenden Datenpunkten und eine korrespondierende Werte-Liste, in der die Werte in einer Schleife gemerkt werden.
Prinzip:
-
@haus-automatisierung said in Wert in einen Datenunkt schreiben:
(wobei Du ja seit 2018 dabei bist und das eigentlich können müsstest).Leider hatte ich mich die letzten Jahre nicht mehr damit beschftigt
-
@paul53 danke für das script. In meinen Augen ist es komplex, verstehe aber im Prinzip was Du damit bezweckst. Zu Blockly habe ich immer nur sehr einfache Anleitungen gefunden. Hast Du eine Quelle die besser ist?
VG
Edi
-
@krodon sagte in Wert in einen Datenunkt schreiben:
In meinen Augen ist es komplex,
Möglicherweise liegt das an deinen Anforderungen.
eine einfache Lampe, bei der nur an/aus geschaltet würde wäte nur ein Parameter
selbst bei einer gedimmten Lsmpe wäte es nur Brightness, die zwischengespeichert werden müsste