NEWS
MQTT client: sendto erzeugt keine neuen Objekte
-
Hallo, bitte um Hilfe:
Habe MQTT client mit TTN Server verbunden und möchte Objekte automatisch über sendto erzeugen. Das funktioiniert aber nicht. Auch werden keine Daten in bestehende Objekte eingetragen. Retain Flag ist gesetzt.
Im Debug wird aber das Senden protokolliert.Wie muss der client konfiguriert sein und wie muss sendto aussehen, damit das funktioniert?
-
So sieht einer meiner sendTo Befehl aus:
sendTo('mqtt.0', 'sendMessage2Client', {topic: topic, message: '{"id":3, "src":"'+to+'", "method":"Shelly.GetStatus", "params":{"id":0}}'},{timeout: 1000}); })
Wobei der timeout weg kann, MQTT hat letzten nicht richtig mit sendToAsync() gearbeitet, da hab ichs wieder geändert.
-
@ticaki Wie hast Du den MQTT Client konfiguriert?
-
-
@kraftcom sagte in MQTT client: sendto erzeugt keine neuen Objekte:
Habe MQTT client mit TTN Server verbunden und möchte Objekte automatisch über sendto erzeugen
Was ist mit TTN Server gemeint?
-
@marc-berg TheThings Network Server für LoraWAN IOT Geräte
-
@kraftcom sagte in MQTT client: sendto erzeugt keine neuen Objekte:
TheThings Network Server für LoraWAN IOT Geräte
Ist dir schon klar, wie die Topics und Payloads aussehen müssen?
-
@marc-berg
Ich wollte nur grundsätzlich tstetn und habe sendto wie folgt gesendet:
sendTo('mqtt.1', 'sendMessage2Client', { topic: 'newtest/1', message: 'your message', retain: true });
Damit sollte doch unter MQTT.1 ein Objekt newtest/1 mit Inhalt "your message" erscheinen, oder sehe ich daas falsch? -
hier stand quark
hab das hier nochmal getestet und die States werden erstellt:
sendTo('mqtt.0', 'sendMessage2Client', {topic: 'test/test', message: '{"id":3, "src":"", "method":"Shelly.GetStatus", "params":{"id":0}}'});
-
gelöscht, nicht notwendig.
-
@ticaki
Bei mir rührt sich da garnichts, wenn ich deinen Aufruf für MQTT.1 verwende. -
Installiere mal den mqtt explorer und schaue damit rein, wenn du was sendest. Sicher das du verbunden bist?
-
@marc-berg
Ja, das funktioniert manuell schon.
Allerdings möchte ich mit sehr vielen IOT-Geräten arbeiten und muss das per Programm realisieren.
Da über Javascript und Blockly nicht in die MQTT-Struktur geschrieben werden kann, bleibt nur der Weg übe sendto - und genau das klappt bei mir nicht -
Du kannst überall hin schreiben, nur sind dann alle sicherheitsfunktionen weg und bei einem Fehler zerschiesst du dir die Datenstrukur
bzw. der Admin kann den Müll dann nicht mehr anzeigen.
-
@ticaki
Ja, ich bin verbunden und arbeite seit ein paar Tagen darüber auch mit ein paar Heizreglern -
@ticaki
wie geht das?
Habe gerade mit createState probiert in die Datenstruktur von MQTT zu schreiben - passiert aber nichts. -
setObject
muss in der Konfig vom Javascript-Adapter erlaubt werden.Verwendung auf eigene Gefahr. Die beiden
type
sorgfältig anpassen und da nix ausprobieren.const dp = 'mqtt.1.test.test' const obj: any = { _id: '', type: 'state', common: { name: 'Payload', type: 'string', role: 'text', read: true, write: true, }, native:{} } extendObject(dp, obj);
für javascript das
:any
entfernenEDIT: so jetzt fertig, war noch ein flüchtigkeitsfehler drin.
-
@ticaki
Danke.
Werde ich morgen bei "Tageslicht" ausprobieren -
Weiterführende Information zu dem
obj
https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#objects
-
Man kann nicht fremde Adapterinstanzen ohne ein Präfix publizieren. Das habe ich alles schon x-mal geschrieben: https://forum.iobroker.net/post/847655 - ohne das jetzt alles wieder zu wiederholen.