NEWS
Bambu lab 3d Drucker MQTT Integration
-
@djalexz Kommt leider nix an.
Ich hab aber solche Meldung im Protokoll von ioBroker, aber ich finde solch einen Eintrag nicht in den Adapter Einstellungen.
EDIT: Jetzt kommt was durch
-
@dadonali bitte lösche den Flow nochmal und importiere meinen Flow nochmal. Ich habe dort was geändert.
Doppelklick auf den Flow und oben auf löschen.Ansonsten Doppelklick auf die Node, die er im Protokoll anmeckert und so einstellen:
-
@dadonali ah ok. Was hast du gemacht?
-
Port auf 1883 lassen , TLS aus und keine Zugangsdaten nutzen. Da der P1P noch kein Firmware Update bekommen hat, gabs hier wohl noch keine Anpassung wie beim X1.
Sollte ich dein Flow dennoch nochmal neu rein machen? Weil ich habe aktuell noch ein paar Logs welche mich verwirren.
-
@dadonali Ah ok. Guter Hinweis mit der Firmware. Ich bin jetzt von der neuesten Firmware ausgegangen.
Du kannst auch die Datenpunkte, die er anmeckert im ioBroker manuell anlegen.
Dann kommen die Meldungen nicht mehr.Und du solltest dann auch mal jede Node durchgehen (Doppelklicken) und die Namen bzw. Datenpunkte anpassen.
Alles was X1C heißt in P1P umbenennen.Oder noch einfacher:
Mein Flow Export komplett ins Notepad ++ schmeißen und alle X1C mit P1P ersetzen.
Das geht schon beim Verteiler los, da die Datenpunkte ja wie gesagt für einen X1C angelegt werden.
-
@dadonali Die Datenpunkte werde teileweise falsch gesetzt - wieso unter node-red.0 - alles muss unter userdata. Ich würde alle Datenpunkte löschen und nochmal neu anlegen lassen. Der Datentyp wird automatisch erstellt, je nach Datentyp der drin steht. Also keine Datentyp in der iobroker-Out node festlegen- Im Prinzip macht man die Datenpunkte auch auf ReadOnly und nicht writeable - und nimmt als Type value und nicht command.
-
@mickym den bezug auf node-red.0 habe ich eigentlich nirgendwo gesetzt.
Er hat mir jetzt auch unter userdata einen Arsch voll Datenpunkte reingeknallt wie man sieht . Ich habe diese Punkte mit den Steckdose im Node mal rausgenommen, da ich die soweit nicht nutze aktuell.
Sollte ich trotzdem nochmal alles löschen und neu generieren lassen? Viele Punkte kamen auch erst dazu nachdem ich einen Print gestartet hatte.
-
@dadonali Genau einfach alles löschen - wird alles wieder angelegt, wenn die Daten neu kommen - das kannst Du beliebig oft machen. Pass aber die iobroker out Node noch an wie ich beschrieben habe. Also einfach den PIP Baum wieder löschen.
-
@dadonali Das sieht doch sehr gut aus.
Jetzt noch in den Nodes wie in https://forum.iobroker.net/post/946857 erwähnt alles von X1C in P1P ändern und dann läuft die Sache. -
-
@djalexz Ich habe mich halt auf den Screenshot hier bezogen:
-
@mickym Ach so. Ne das war für die anderen Out Nodes gemeint Steckdose und Co.
Daher auch der Name: Schalter im Dashboard -
Ja das hatte ich fälschlicherweise geändert , aber ist wieder rückgängig gemacht.
Ihr seid die geilsten! Es läuft
-
@djalexz sagte in Bambu lab 3d Drucker MQTT Integration:
@mickym Ach so. Ne das war für die anderen Out Nodes gemeint Steckdose und Co.
Daher auch der Name: Schalter im DashboardOk - ich glaub ich halt besser meinen Mund. - So verwirre ich hier nur.
-
@dadonali sagte in Bambu lab 3d Drucker MQTT Integration:
Ja das hatte ich fälschlicherweise geändert , aber ist wieder rückgängig gemacht.
Ihr seid die geilsten! Es läuft
Und ist Node-Red nun genial und warum sträubt sich jeder am Anfang immer so? - Irgendwann wirst Du deine Blocklies auch mit NodeRed machen - wenn Du mal die Genialität dieses Systems durchblickst.
-
@mickym
Ja ich hab schon soo viele Blocklies das alles umzustellen, da graut es mir vor.Aber das Thema werde ich mir wirklich mal genauer ansehen, man kann ja immer nach und nach ändern. Aber fürs Erste hab ich ja Datenpunkte die ich soweit verarbeiten kann.
-
@dadonali aktualisieren sich denn deine datenpunkte wenn du den slicer und die App geschlossen hast?
-
@dadonali sagte in Bambu lab 3d Drucker MQTT Integration:
Aber das Thema werde ich mir wirklich mal genauer ansehen, man kann ja immer nach und nach ändern. Aber fürs Erste hab ich ja Datenpunkte die ich soweit verarbeiten kann.
Na das geniale am iobroker ist ja - dass er eine Vielzahl von Systemen unter einer Haube vereint. Das heißt Du kannst ja jetzt bei den Datenpunkten von Fall zu Fall entscheiden, was einfacher ist.
-
@darkdevil leider nein nur wenn app aufm handy oder aufm pc offen ist
-
Hier nochmal meine Settings und JSON für den P1P ,vielleicht will @djalexz es ja zu seiner Anleitung von oben hinzufügen Ich hab diese Steckdose Sache unten drunter erstmal raus gelassen.
Bin ja auch ein Fan davon dann das Wissen zu teilen wenn es läuft. Natürlich unter Vorbehalt falls der P1P auch bald ein Update erhält und dann die Logins benötigt werden + Port Wechsel
[ { "id": "6e802f1553b18149", "type": "subflow", "name": "JSON or Obj to IOBroker", "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.", "category": "", "in": [ { "x": 60, "y": 160, "wires": [ { "id": "554b8c663bcb46c2" } ] } ], "out": [ { "x": 2620, "y": 280, "wires": [ { "id": "0962842ebd23e0d7", "port": 0 } ] } ], "env": [ { "name": "top", "type": "str", "value": "objRoot" }, { "name": "keepTopic", "type": "bool", "value": "false" } ], "meta": {}, "color": "#E2D96E", "icon": "node-red/batch.svg" }, { "id": "3e11e8338f694832", "type": "split", "z": "6e802f1553b18149", "name": "split object", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "key", "x": 1370, "y": 160, "wires": [ [ "0562a4249c8b856b" ] ] }, { "id": "0562a4249c8b856b", "type": "change", "z": "6e802f1553b18149", "name": "add key to topic", "rules": [ { "t": "set", "p": "stateName", "pt": "msg", "to": "key", "tot": "msg" }, { "t": "set", "p": "topic", "pt": "msg", "to": "topic & '.' & key", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1560, "y": 160, "wires": [ [ "ddc90985bef0fafa" ] ] }, { "id": "ddc90985bef0fafa", "type": "switch", "z": "6e802f1553b18149", "name": "is type?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "istype", "v": "array", "vt": "array" }, { "t": "istype", "v": "object", "vt": "object" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 1740, "y": 160, "wires": [ [ "bfce19b206660fbe" ], [ "3e11e8338f694832" ], [ "1a8c03d866b85b12" ] ] }, { "id": "bfce19b206660fbe", "type": "split", "z": "6e802f1553b18149", "name": "split array", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "", "x": 780, "y": 280, "wires": [ [ "e89927810c6d75ec" ] ] }, { "id": "e89927810c6d75ec", "type": "change", "z": "6e802f1553b18149", "name": "add index to topic", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "topic & '.' & parts.index", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 970, "y": 280, "wires": [ [ "a4d1a5d04564dc77" ] ] }, { "id": "f5d52c6a57d08904", "type": "change", "z": "6e802f1553b18149", "name": "finalize msg.topic", "rules": [ { "t": "set", "p": "top", "pt": "msg", "to": "'0_userdata.0.' & top", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "top & '.' & topic", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2170, "y": 240, "wires": [ [ "0962842ebd23e0d7" ] ] }, { "id": "1a8c03d866b85b12", "type": "switch", "z": "6e802f1553b18149", "name": "is msg.top != null", "property": "top", "propertyType": "msg", "rules": [ { "t": "nnull" }, { "t": "null" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 1950, "y": 280, "wires": [ [ "f5d52c6a57d08904" ], [ "74c895ce724750de" ] ] }, { "id": "e023fe88445ce43e", "type": "change", "z": "6e802f1553b18149", "name": "", "rules": [ { "t": "delete", "p": "topic", "pt": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 350, "y": 200, "wires": [ [ "3649300b4c233b10" ] ] }, { "id": "3649300b4c233b10", "type": "switch", "z": "6e802f1553b18149", "name": "is type?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "istype", "v": "json", "vt": "json" }, { "t": "istype", "v": "array", "vt": "array" }, { "t": "istype", "v": "object", "vt": "object" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 4, "x": 600, "y": 160, "wires": [ [ "fc7913a8524badb7" ], [ "bfce19b206660fbe" ], [ "3e11e8338f694832" ], [ "9ac3cc3681e8b6c6" ] ] }, { "id": "1b8480cd2df7ba3f", "type": "comment", "z": "6e802f1553b18149", "name": "Array", "info": "", "x": 600, "y": 280, "wires": [] }, { "id": "b3541807672be040", "type": "comment", "z": "6e802f1553b18149", "name": "object", "info": "", "x": 1340, "y": 100, "wires": [] }, { "id": "a4d1a5d04564dc77", "type": "switch", "z": "6e802f1553b18149", "name": "is type?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "istype", "v": "object", "vt": "object" }, { "t": "istype", "v": "array", "vt": "array" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 1160, "y": 280, "wires": [ [ "3e11e8338f694832" ], [ "bfce19b206660fbe" ], [ "a096a93bb82b7a93" ] ] }, { "id": "74c895ce724750de", "type": "change", "z": "6e802f1553b18149", "name": "finalize msg.topic", "rules": [ { "t": "set", "p": "top", "pt": "msg", "to": "top", "tot": "env" }, { "t": "set", "p": "top", "pt": "msg", "to": "'0_userdata.0.' & top", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "top & '.' & topic", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2170, "y": 320, "wires": [ [ "0962842ebd23e0d7" ] ] }, { "id": "554b8c663bcb46c2", "type": "switch", "z": "6e802f1553b18149", "name": "", "property": "keepTopic", "propertyType": "env", "rules": [ { "t": "true" }, { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 170, "y": 160, "wires": [ [ "e30ba9f0483285e4" ], [ "e023fe88445ce43e" ] ] }, { "id": "e30ba9f0483285e4", "type": "change", "z": "6e802f1553b18149", "name": "", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": "/", "fromt": "str", "to": ".", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 350, "y": 120, "wires": [ [ "3649300b4c233b10" ] ] }, { "id": "0962842ebd23e0d7", "type": "change", "z": "6e802f1553b18149", "name": "translate invalid chars in topic", "rules": [ { "t": "change", "p": "topic", "pt": "msg", "from": "..", "fromt": "str", "to": ".", "tot": "str" }, { "t": "change", "p": "topic", "pt": "msg", "from": "€", "fromt": "str", "to": "EUR", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2430, "y": 280, "wires": [ [] ] }, { "id": "9ac3cc3681e8b6c6", "type": "change", "z": "6e802f1553b18149", "name": "set topic, if empty", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "topic ? topic : $type(payload)\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 950, "y": 200, "wires": [ [ "a096a93bb82b7a93" ] ] }, { "id": "fc7913a8524badb7", "type": "json", "z": "6e802f1553b18149", "name": "", "property": "payload", "action": "obj", "pretty": false, "x": 750, "y": 100, "wires": [ [ "d9e7bdd4c48a8aa1" ] ] }, { "id": "d9e7bdd4c48a8aa1", "type": "switch", "z": "6e802f1553b18149", "name": "is type?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "istype", "v": "array", "vt": "array" }, { "t": "istype", "v": "object", "vt": "object" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 900, "y": 100, "wires": [ [ "1520be42bcc2145e" ], [ "1520be42bcc2145e" ], [ "9ac3cc3681e8b6c6" ] ] }, { "id": "a096a93bb82b7a93", "type": "junction", "z": "6e802f1553b18149", "x": 1380, "y": 280, "wires": [ [ "1a8c03d866b85b12" ] ] }, { "id": "1520be42bcc2145e", "type": "junction", "z": "6e802f1553b18149", "x": 480, "y": 20, "wires": [ [ "3649300b4c233b10" ] ] }, { "id": "9582121ff81174a6", "type": "tab", "label": "Flow 15", "disabled": false, "info": "", "env": [] }, { "id": "4380d7035264bead", "type": "group", "z": "9582121ff81174a6", "name": "Online/Offline Anzeige", "style": { "label": true, "color": "#000000", "fill": "#addb7b", "fill-opacity": "0.38" }, "nodes": [ "d2a5ed4e2b8c8674", "b5c862f5d50c56cb", "2e71b198fe06ccdb", "144c29803a38e2a4", "3a131237a7bdec9d" ], "x": 1294, "y": 59, "w": 412, "h": 242 }, { "id": "19ede36faf38f69b", "type": "group", "z": "9582121ff81174a6", "name": "X1C Datenpunkt Umwandlung", "style": { "fill": "#ffff00", "label": true, "fill-opacity": "0.36", "color": "#000000" }, "nodes": [ "e2852c3101736fc9", "477ecaa1b9913815", "9fadcc36a22ec38b", "44d9370861f0a79a", "33a162f31f850a9e", "f6c8fbdf638c04e8", "ce27f3362985a4d3", "89074ea56277b288", "01c35b9bb3921713", "3eb26b7322587c6b", "21081e6a23dc83a1" ], "x": 74, "y": 39, "w": 1032, "h": 322 }, { "id": "e2852c3101736fc9", "type": "subflow:6e802f1553b18149", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "", "env": [ { "name": "top", "value": "P1P", "type": "str" } ], "x": 230, "y": 160, "wires": [ [ "ce27f3362985a4d3" ] ] }, { "id": "477ecaa1b9913815", "type": "mqtt in", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "P1P", "topic": "device/01S00A2C0501216/report", "qos": "2", "datatype": "auto-detect", "broker": "84f61d394ba2ab34", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 150, "y": 100, "wires": [ [ "e2852c3101736fc9" ] ] }, { "id": "9fadcc36a22ec38b", "type": "ioBroker out", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "schreibe Datenpunkte in ioBroker", "topic": "", "ack": "true", "autoCreate": "true", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 940, "y": 200, "wires": [] }, { "id": "44d9370861f0a79a", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "heatbreak_fan_speed", "func": "var percentages = {\n \"0\": 0,\n \"1\": 10,\n \"2\": 20,\n \"4\": 30,\n \"5\": 40,\n \"7\": 50,\n \"9\": 60,\n \"10\": 70,\n \"12\": 80,\n \"13\": 90,\n \"15\": 100\n}\n\n msg.payload = percentages[msg.payload]\n\n return [msg];\n\n\n\n\n//msg.payload.print.big_fan1_speed_pct = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed_pct = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed_pct = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed_pct = percentages[msg.payload.print.cooling_fan_speed]\n\n// Overwrite\n//msg.payload.print.big_fan1_speed = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed = percentages[msg.payload.print.cooling_fan_speed]\n\n\n//node.send(msg)", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 620, "y": 120, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "33a162f31f850a9e", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "Stage Parser", "func": "\nfunction parseAction(actionId) {\n if(actionId === undefined) {\n return \"\";\n }\n switch (actionId) {\n case -2:\n return \"Offline\";\n case -1:\n return \"Idle\";\n case 0:\n return \"Printing\"; // idle or printing\n case 1:\n return \"Auto bed leveling\";\n case 2:\n return \"Heatbed preheating\";\n case 3:\n return \"Sweeping XY mech mode\";\n case 4:\n return \"Changing filament\";\n case 5:\n return \"M400 pause\";\n case 6:\n return \"Paused due to filament runout\";\n case 7:\n return \"Heating hotend\";\n case 8:\n return \"Calibrating extrusion\";\n case 9:\n return \"Scanning bed surface\";\n case 10:\n return \"Inspecting first layer\";\n case 11:\n return \"Identifying build plate type\";\n case 12:\n return \"Calibrating Micro Lidar\";\n case 13:\n return \"Homing toolhead\";\n case 14:\n return \"Cleaning nozzle tip\";\n case 15:\n return \"Checking extruder temperature\";\n case 16:\n return \"Printing was paused by the user\";\n case 17:\n return \"Pause of front cover falling\";\n case 18:\n return \"Calibrating the micro lidar\";\n case 19:\n return \"Calibrating extrusion flow\";\n case 20:\n return \"Paused due to nozzle temperature malfunction\";\n case 21:\n return \"Paused due to heat bed temperature malfunction\";\n default:\n return actionId.toString()\n }\n}\n\n\n\n \nvar current_action = parseAction(msg.payload);\n\n\n\n msg.payload = current_action;\n\n\n\n return [msg];\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 590, "y": 160, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "f6c8fbdf638c04e8", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "Translate X1C Speed Profile", "func": "function parseAction(SpeedProfile) {\n if (SpeedProfile === undefined) {\n return \"\";\n }\n switch (SpeedProfile) {\n case 1:\n return \"Silent\";\n \n case 2:\n return \"Standard\";\n \n case 3:\n return \"Sport\";\n \n case 4:\n return \"Ludicrous\";\n \n default:\n return \"Undefined\";\n \n\n \n }\n\n}\n\n\n\n var SpeedProfile = parseAction(msg.payload);\n msg.payload = SpeedProfile;\n\n\n return [msg];\n\n\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 200, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "ce27f3362985a4d3", "type": "switch", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "Verteiler", "property": "topic", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0_userdata.0.X1C.print.cooling_fan_speed", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.heatbreak_fan_speed", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.stg_cur", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.spd_lvl", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.big_fan1_speed", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.big_fan2_speed", "vt": "str" }, { "t": "eq", "v": "0_userdata.0.X1C.print.mc_remaining_time", "vt": "str" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 8, "x": 420, "y": 140, "wires": [ [ "89074ea56277b288" ], [ "44d9370861f0a79a" ], [ "33a162f31f850a9e" ], [ "f6c8fbdf638c04e8" ], [ "3eb26b7322587c6b" ], [ "01c35b9bb3921713" ], [ "21081e6a23dc83a1" ], [ "9fadcc36a22ec38b" ] ], "outputLabels": [ "Cooling Fan Speed", "Heatbreak Fan Speed", "Stage Parser", "Speed Profile", "AUX Fan Speed", "Chamber Fan Speed", "remaining_time", "" ] }, { "id": "89074ea56277b288", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "cooling_fan_speed", "func": "var percentages = {\n \"0\": 0,\n \"1\": 10,\n \"2\": 20,\n \"4\": 30,\n \"5\": 40,\n \"7\": 50,\n \"9\": 60,\n \"10\": 70,\n \"12\": 80,\n \"13\": 90,\n \"15\": 100\n}\n\n msg.payload = percentages[msg.payload]\n\n return [msg];\n\n\n\n\n//msg.payload.print.big_fan1_speed_pct = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed_pct = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed_pct = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed_pct = percentages[msg.payload.print.cooling_fan_speed]\n\n// Overwrite\n//msg.payload.print.big_fan1_speed = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed = percentages[msg.payload.print.cooling_fan_speed]\n\n\n//node.send(msg)", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 610, "y": 80, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "01c35b9bb3921713", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "big_fan2_speed (Chamber)", "func": "var percentages = {\n \"0\": 0,\n \"1\": 10,\n \"2\": 20,\n \"4\": 30,\n \"5\": 40,\n \"7\": 50,\n \"9\": 60,\n \"10\": 70,\n \"12\": 80,\n \"13\": 90,\n \"15\": 100\n}\n\n msg.payload = percentages[msg.payload]\n\n return [msg];\n\n\n\n\n//msg.payload.print.big_fan1_speed_pct = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed_pct = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed_pct = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed_pct = percentages[msg.payload.print.cooling_fan_speed]\n\n// Overwrite\n//msg.payload.print.big_fan1_speed = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed = percentages[msg.payload.print.cooling_fan_speed]\n\n\n//node.send(msg)", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 640, "y": 280, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "3eb26b7322587c6b", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "big_fan1_speed (AUX)", "func": "var percentages = {\n \"0\": 0,\n \"1\": 10,\n \"2\": 20,\n \"4\": 30,\n \"5\": 40,\n \"7\": 50,\n \"9\": 60,\n \"10\": 70,\n \"12\": 80,\n \"13\": 90,\n \"15\": 100\n}\n\n msg.payload = percentages[msg.payload]\n\n return [msg];\n\n\n\n\n//msg.payload.print.big_fan1_speed_pct = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed_pct = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed_pct = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed_pct = percentages[msg.payload.print.cooling_fan_speed]\n\n// Overwrite\n//msg.payload.print.big_fan1_speed = percentages[msg.payload.print.big_fan1_speed]\n//msg.payload.print.big_fan2_speed = percentages[msg.payload.print.big_fan2_speed]\n//msg.payload.print.heatbreak_fan_speed = percentages[msg.payload.print.heatbreak_fan_speed]\n//msg.payload.print.cooling_fan_speed = percentages[msg.payload.print.cooling_fan_speed]\n\n\n//node.send(msg)", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 620, "y": 240, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "21081e6a23dc83a1", "type": "function", "z": "9582121ff81174a6", "g": "19ede36faf38f69b", "name": "remaining_time", "func": "//var timeleft = 3727; //1h:2m:7s\n//Umrechnung in Stunden, Minuten, Sekunden\n\nvar hour = Math.floor((msg.payload % 3600) / 60);\nvar minute = Math.floor(msg.payload % 60);\n\n//Den String von Stunden, Minuten und Sekunden auf 2 Stellen ändern\nif (hour < 10) {\nhour = \"0\" + hour;\n}\n\nif (minute < 10) {\nminute = \"0\" + minute;\n}\n\n\nmsg.payload = hour + \":\" + minute;\n\n\n\n\nreturn msg;\n\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 600, "y": 320, "wires": [ [ "9fadcc36a22ec38b" ] ] }, { "id": "b5c862f5d50c56cb", "type": "switch", "z": "9582121ff81174a6", "g": "4380d7035264bead", "name": "FALSE oder nicht?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "false" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 1450, "y": 140, "wires": [ [ "144c29803a38e2a4" ], [ "2e71b198fe06ccdb" ] ] }, { "id": "2e71b198fe06ccdb", "type": "change", "z": "9582121ff81174a6", "g": "4380d7035264bead", "name": "setze msg.payload auf online", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "online", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1480, "y": 220, "wires": [ [ "3a131237a7bdec9d" ] ] }, { "id": "144c29803a38e2a4", "type": "change", "z": "9582121ff81174a6", "g": "4380d7035264bead", "name": "setze msg.payload auf offline", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "offline", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1480, "y": 180, "wires": [ [ "3a131237a7bdec9d" ] ] }, { "id": "3a131237a7bdec9d", "type": "ioBroker out", "z": "9582121ff81174a6", "g": "4380d7035264bead", "name": "Datenpunkt Verbindungsstatus des Druckers", "topic": "0_userdata.0.P1P_Status.Verbindungsstatus", "ack": "false", "autoCreate": "true", "stateName": "", "role": "", "payloadType": "string", "readonly": "false", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1510, "y": 260, "wires": [] }, { "id": "d2a5ed4e2b8c8674", "type": "ping", "z": "9582121ff81174a6", "g": "4380d7035264bead", "protocol": "IPv4", "mode": "timed", "name": "Ping IP des Druckers", "host": "192.168.178.200", "timer": "60", "inputs": 0, "x": 1420, "y": 100, "wires": [ [ "b5c862f5d50c56cb" ] ] }, { "id": "84f61d394ba2ab34", "type": "mqtt-broker", "name": "P1P", "broker": "192.168.178.200", "port": "1883", "tls": "", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "", "credentials": {} } ]