NEWS
Bambu lab 3d Drucker MQTT Integration
-
@mickym Ups, das las sich schon so final
ich habe einen neuen Flow angelegt (Verbindung kann nicht hergestellt werden, da Drucker z. Zt. aus ist):
und den IN Node aus dem ersten Flow gelöscht:
Nach dem starten tauchten unter dem MQTT.0 (vorhandene Instanz) folgende Datenpunkte:
Nur halt einmal und wurden nicht aktualisiert.
-
@darkdevil Na dann hat das mit dem mqtt Adapter doch geklappt. - Das hat mit NodeRed nichts zu tun. Dann brauchst Du ggf. Node Red gar nicht. Was meinst Du erst wird nicht aktualisiert.
Ich blicke langsam nicht mehr durch - war das der mqtt Adapter, den Du heute nachmittag konfiguriert hattest?
Wie machen wir nun weiter mit dem mqtt-Adapter oder mit NodeRed?
Ich würde von dem mqtt- Adapter so erst mal abraten - da kommt dieser HomeAssistant Mist noch mit.
Bei Node-Red hättest Du die mqtt-IN Node nur kopieren sollen. Jedenfalls musst Du die nochmal konfigurieren und den Broker eintragen. Schau dass dort die Daten wieder in der Debug Node ankommen.
-
@mickym also die Werte wurden erst in der alten MQTT Instanz angelegt, als ich im NoteRed den neuen Flow gestartet habe und diesen ausgeführt habe. Also die neue MQTT Instanz, in der ich die IP Adresse eingetragen habe, hat damit nichts zu tun.
Daher denke ich, dass Node Red (vorerst) doch wichtig ist. In dem NodeRed JSON Template habe ich ja neben der IP Adresse auch die Seriennummer angeben müssen, vielleicht läuft hier rüber auch eine Authentifizierung.
Der Debug Note liefert mir auch kontinuierlich Daten.
-
@darkdevil ok - ich denke, dass dir die homeassistant mqtt Node ggf. In dein lokalen mqtt Broker geschrieben hat. Wenn du kontrolliert hast, dass in deinem neuen Flow die mqtt-in Node kontinuierlich Daten liefert, dann importierst du meine Node bzw. Den Subflow aus dem thread den ich dir verlinkt habe. Diese Node klemmst du dann hinter deine mqtt-in Node und vor die debug-node - also dazwischen. In der neuen Node vergibst Du einen Namen unter dem die Datenpunkte angelegt werden sollen. Die Datenpunkte werden immer unter 0_userdata.0 angelegt. Vorgelegt ist das mit objRoot. Da kannst dann einen anderen Namen am besten ohne Leerzeichen verwenden. Wenn das fertig ist, dann solltest du lauter Einzelnacheichten in dem debug Fenster bekommen. Das topic der Einzelnachrichten enthält dann den Pfad in dem später die einzelnen Datenpunkte geschrieben werden. Ich hab das auch alles in den Hilfetext der Node geschrieben.
Den Baum unter mqtt.0 würde ich aber löschen, da der erst mal keine Bedeutung hat.
-
@mickym ich habe das Script jetzt hinzugefügt:
und der Debug spuckt folgendes aus:
Aber unter 0_userdata.0.objRoot.XXXXXX tauchen keine Datenpunkte auf.
-
@darkdevil Nein dass kann es noch nicht. Wie gesagt öffne die Node und gib statt objRoot einen Namen an, unter dem Deine Datenpunkte erscheinen sollen und schau ob im Debugfenster einzelne Nachrichten mit dem Pfad auftauchen, wie du es wünschst.
Schaut ja schon gut aus. Nur willst du das wirklich unter 0-userdata.0.objRoot oder besser unter eine m sprechenden Nsmen?
Die Debug Node dient nur zur Kontrolle und die neue Node zerlegt nur den kompletten JSON in seine Einzelteile. Angelegt werden die Datenpunkte in dem Du hinter die eingefügte Node eine iobroker-out Node klemmst. Die musst du aufmachen und dort konfigurieren, dass die Werte als „value“ und nicht als „command“ angelegt werden, dass nicht existierende Datenpunkte erstellt werden und falls die beschreibbar sein sollen, musst du das in der Node auch noch anhaken.
Die Adaptereinstellung, die ich gepostet hatte, dass das Erstellen von Fremdobjekten erlaubt ist, hast Du hoffentlich vorgenommen.
-
@mickym jetzt kommen die Daten an. Perfekt
Großes Dankeschön an deine Hilfe und Unterstützung.
-
Moin zusammen, ich habe mich mal daran versucht die Daten aus Node-Red "aufzubereiten".
Dank @DarkDevil kamen die Daten ja schön im ioBroker an.
Allerdings scheitere ich gnadenlos daran.
Da ich das Rad nicht neu erfinden wollte, nutzte ich die Vorarbeit von Cryd (oberer Youtube Link).
Das ist aber alles für Homeassistant wo ich mich null mit auskenne.Habe so weit alles umgebaut und es kommen auch Daten in umgeandelter Form z.B. Fan Speed Translator an.
Jetzt hat allerdings Homeassistant wohl eine Möglichkeit Attribute auszulesen.
Damit kann ich ja im ioBroker nichts anfangen.Wollte beispielsweise die Nozzle Target Temperature als State haben.
Bekomme es aber leider nicht hin.Könnte mir jemand helfen ?
Vielen dank
PS.
Ein Adapter für den X1C wäre schön -
@djalexz einfach ein Debug Fenster nehmen und die payload auf den Pfad setzen, den Du isolieren willst oder Du nimmst meinen Subflow, um alles in einzelne Datenpunkte zu schreiben. https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
-
@mickym Vielen Dank für die Hilfe.
Ich hatte das mit der Debug Node schon 10 mal probiert.
Da kam nur undefined raus.
Hab dann nochmal alles gelöscht und neu angefangen. Jetzt gehts.
Hier schon mal der Anfang meiner Bemühungen.
Mit Sicherheit nicht wirklich performant und sehr delletantisch, aber funktioniert.
-
Der Subflow gleicht es wahrscheinlich aus - aber ich würde mir von der mqtt-IN Node gleich komplett immer alles analysieren lassen. Dann bekommst Du auch fertige Objekte raus:
Einzelne topics bereits über die function nodes zu modifizieren kann man machen, wenn man das so in den Datenpunkten haben will. Wenn Du die Datenpunkte beschreibbar haben willst musst Du noch in der iobroker-Out Node das setzen.
Ansonsten funktioniert es ja anscheinend.
-
@mickym Danke für den Tipp.
Ja ich weiß nicht wie ich das sonst eleganter machen kann.
Also der reine Subflow alleine reicht nicht.
Es kommen zwar schön alle Werte rein, aber ich muss ja z.B. die Werte von den Lüftern umwandeln lassen (siehe z.B. cooling_fan_speed Node).
Daher muss ich entweder mit Switch Node arbeiten oder in den Funkctions mit einer if then Abfrage arbeiten und immer auf das Topic beziehen.Lieber wäre mir mit dem msg.payload zu arbeiten z.B. msg.payload.print.cooling_fan_speed, aber das funktioniert so nicht.
Da kommt immer undefined zurück.Keine Ahnung
-
Die neueste Firmware verschlüsselt mqtt mit tls 1.2
habs noch nicht geupdatet und warte mal paar tage ab, aber die ersten wo es danach nicht geht melden sich schon
Edit: https://community.home-assistant.io/t/bambu-lab-x1-x1c-mqtt/489510/249
User: bblp
pw: den access key der neu eingeführt wurde -
@kmxak Ihr könnt ohne Weiteres updaten.
Den Zugriffcode bekommt ihr, wenn ihr auf dem Druckerdisplay:auf Einstellungen, Netzwerk geht und rechts steht der Zugriffscode.
Das zusammen mit diesen Einstellungen:
Funktioniert wunderbar.
PS. beachtet den geänderten Port auf 8883
-
Ich habe seit neustem ein Problem:
Seit ich auf einen neuen Server umgezogen bin, aktualisieren sich die Datenpunkte im iobroker nicht mehr regelmäßig, heißt: im debug Node sehe ich wie sich Permanent Werte eintragen bzw. diese geschrieben werden. Im Iobroker hingegen aktualisieren sich die entsprechenden Werte nicht. Merkwürdig ist auch, dass sich die Werte erst im iobroker aktualisieren wenn ich die Bambu App auf dem Handy öffne.
iobroker läuft in einer Proxmox Umgebung, von dem LXC Container habe ich auf dem alten System ein Backup gemacht und ein Restore auf das neue....
PS: ich besitze einen P1P mit der ersten Firmware, daher gehe ich davon aus, dass es mit dem Zugriffcode in keinen Zusammenhang steht.
-
Nabend!
ich habe jetzt soweit alles durchgelesen, aber beim Thema Nodered bin ich ausgestiegen. Das konnte ich bis jetzt immer meiden...
Nochmal für mich zum Verständnis:
Ich möchte eigentlich nur die Daten die vom Drucker kommen auslesen und nix steuern. Wenn ich das richtig verstanden, ist der Drucker ja selber ein MQTT Broker.Habe also eine weitere Instanz von "MQTT Broker/Client" installiert. Dort die IP vom Drucker, Port 1883, sowie Benutzer bblp und als Passwort den Zugriffscode eingegeben.
Beim Test der verbindung bekomme ich ein Ok.
Aber der Adapter wird nicht Grün. Im Log bekomme ich ein "Client error:Error: connect ECONNREFUSED 192.168.178.64:1883"Der "Nur LAN" Modus ist nicht aktiviert.
Vielen Dank!
-
@darkdevil Hast Du dem Node-Red Adapter erlaubt, das es Fremd-Objekte erstellen darf?
-
@sidm Hallöchen,
du must den Port auf 8883 setzen und ggfls. SSL anhaken.
Mit der MQTT Instanz vom ioBroker selber habe ich es noch nicht probiert, da nicht benötigt.Du willst das Selbe wie ich... Nur gucken und nicht steuern.
Im Standard sind aber die Werte (ohne Nachbearbeitung), die vom Drucker kommen nicht zu gebauchen.
Das fängt schon mit den Lüfterwerten an.
Daher habe ich das Ganze in Node-Red gemacht. -
@mickym ja habe ich. Es lief auch alles.
-
Danke @djalexz !
Ich hatte irgendwie den Port 1883 im Hinterkopf...
Verbindung zum Drucker steht mit dem "MQTT Broker/Client" Adapter und die Werte werden in einem Json Objekt aktualisiert.
Ich habe jetzt versucht mit einem Blockly mir ein Paar Werte in Datenpunkte zu schreiben:
Als Wert schreibt er dann aber nur ein {"ack":true} in den Datenpunkt.
Bin ich hier komplett auf den Holzweg?
Wenn ich @mickym richtig verstanden habe, benötigt man nicht unbedingt Node-Red dafür. Da ich bisher damit auch null damit zu tun hatte, würde ich es auch gerne meiden und mit Blockly lösen.
Wenn es aber nicht anders geht, muss ich mich wohl damit auseinander setzen.