NEWS
Wert über MQTT publishen mit js
-
Hallo,
ich versuche mich an meinem ersten Javascript und frage ab, ob die Restmülltonne Heute oder Morgen rausgestellt werden muss.
Soweit funktioniert das auch. Mit Sicherheit geht das eleganter, aber ich bin ja noch am Anfang.
Das Ergebnis will ich an den mqtt-Broker senden.
ich gebe dies mit SetState an den sonst funktionierenden mqtt-client
setState('mqtt-client.0.from_io.Restmuell',RestMuell_in);
im Debug bekomme ich
20:04:00.005 warn javascript.0 (2066) at Object.Restmuell (script.js.Muelltermin:18:5)
und das Logfile wirft folgendes heraus.
javascript.0 2020-01-03 20:04:00.006 warn (2066) at Timer.processTimers (timers.js:223:10) javascript.0 2020-01-03 20:04:00.006 warn (2066) at listOnTimeout (timers.js:263:5) javascript.0 2020-01-03 20:04:00.006 warn (2066) at tryOnTimeout (timers.js:300:5) javascript.0 2020-01-03 20:04:00.006 warn (2066) at ontimeout (timers.js:436:11) javascript.0 2020-01-03 20:04:00.005 warn (2066) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) javascript.0 2020-01-03 20:04:00.005 warn (2066) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 javascript.0 2020-01-03 20:04:00.005 warn (2066) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) javascript.0 2020-01-03 20:04:00.005 warn (2066) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34) javascript.0 2020-01-03 20:04:00.005 warn (2066) at Object.Restmuell (script.js.Muelltermin:18:5) javascript.0 2020-01-03 20:04:00.003 warn (2066) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20) javascript.0 2020-01-03 20:04:00.003 warn (2066) State "mqtt-client.0.from_io.Restmuell" not found javascript.0 2020-01-03 20:04:00.003 info (2066) script.js.Muelltermin: keine Termine
ich habe auch schon den mqtt Client/Subscriber installiert, und dann versucht mit mqtt.0.from_io.Restmull zu senden
Leider immer mit der gleichen Meldung
Kann mir jemand auf die Sprünge helfen?
Vielen Dank
Hartwig
-
Hallo Hartwig,
die Lösung steht eigentlich im Log in Zeile 11:
javascript.0 2020-01-03 20:04:00.003 warn (2066) State "mqtt-client.0.from_io.Restmuell" not found
Der State existiert im mqtt-Adapter nicht. Du musst ihn also erst anlegen, dann sollte es eigentlich funktionieren.
Am besten löst du das Problem wohl über sendTo, dann kümmert sich der mqtt-Adapter um den Rest.
Beispiel:
sendTo('mqtt.0', 'sendMessage2Client', {topic: 'from_io/Restmuell', message: RestMuell_in});
Probier mal, ob es so funktioniert, ich kann es selber leider gerade nicht testen.
VG
Tobias -
Hallo Tobias,
danke Dir für den Hinweise, hat aber leider nicht funktioniert.
Ich habe das mal so probiert, der MQTT-fx sieht aber keine Meldung.
Da ich den mqtt-client nutze habe ich mqtt.0 auch mal mit mqtt-client.0 ersetzt, aber auch hier keine Fahlermeldung im Log und auch keine Meldung zum Broker.
Wenn ich in eine Variable schreibe, das mit dem mqtt-Client verbunden ist geht es (meistens) allerdings, ist das etwas kontraproduktiv, da ich viele Topics dynamisch generiere und ich da nicht jedes Objekt anlegen will.