Hallo zusammen,
geht auch alles über den MQTT Adapter ohne Node Red,
der liest euch eine JSON aus dem Drucker aus und legt die unter MQTT in einem Datenpunkt ab:
sieht dann ungefähr so aus:
{
"print": {
"ams": {
"ams": [
{
"humidity": "4",
"id": "0",
"temp": "30.9",
"tray": [
{
"bed_temp": "0",
"bed_temp_type": "2",
"cols": [
"FFC600FF"
],
"drying_temp": "55",
"drying_time": "8",
"id": "0",
"nozzle_temp_max": "240",
"nozzle_temp_min": "200",
"remain": 0,
"tag_uid": "DDDE769400000100",
"tray_color": "FFC600FF",
"tray_diameter": "1.75",
"tray_id_name": "A05-Y4",
"tray_info_idx": "GFA05",
"tray_sub_brands": "PLA Silk",
"tray_type": "PLA",
"tray_uuid": "325DA7506BCE447B9F34D1CDC94658DA",
"tray_weight": "1000",
"xcam_info": "A438803EE803E8033333333F"
}, //... weiter AMS Slots
]
}
],
"ams_exist_bits": "1",
"insert_flag": true,
"power_on_flag": false,
"tray_exist_bits": "f",
"tray_is_bbl_bits": "f",
"tray_now": "255",
"tray_pre": "255",
"tray_read_done_bits": "f",
"tray_reading_bits": "0",
"tray_tar": "255",
"version": 5
},
"ams_rfid_status": 0,
"ams_status": 0,
"aux_part_fan": true,
"bed_target_temper": 0.0,
"bed_temper": 37.0,
"big_fan1_speed": "0",
"big_fan2_speed": "0",
"chamber_temper": 35.0,
"command": "push_status",
"cooling_fan_speed": "0",
"fail_reason": "0",
"fan_gear": 0,
"filam_bak": [],
"force_upgrade": false,
"gcode_file": "Name des DruckFiles",
"gcode_file_prepare_percent": "100",
"gcode_start_time": "1687977739",
"gcode_state": "FINISH",
"heatbreak_fan_speed": "0",
"hms": [],
"home_flag": 16648,
"hw_switch_state": 0,
"ipcam": {
"ipcam_dev": "1",
"ipcam_record": "enable",
"resolution": "1080p",
"timelapse": "disable"
},
"layer_num": 360,
"lifecycle": "product",
"lights_report": [
{
"mode": "on",
"node": "chamber_light"
},
{
"mode": "flashing",
"node": "work_light"
}
],
"maintain": 3,
"mc_percent": 100,
"mc_print_error_code": "0",
"mc_print_stage": "1",
"mc_print_sub_stage": 0,
"mc_remaining_time": 0,
"mess_production_state": "active",
"nozzle_diameter": "0.4",
"nozzle_target_temper": 0.0,
"nozzle_temper": 39.0,
"online": {
"ahb": false,
"rfid": false,
"version": 9
},
"print_error": 0,
"print_gcode_action": 255,
...
}
Ich hab mir dann die Datenpunkte die ich gebrauchen kann manuell angelegt:
und dann mit einem Blockly ausgelesen und in den Datenpunkt geschrieben.
- z. B. Nozzle - Temp:
setState("0_userdata.0.X1C.Temp_Nozzle"/*Temp_Nozzle*/, parseFloat((await jsonataExpression((function () { try {return JSON.parse(getState("mqtt.0.device.00M09A340700121.report").val);} catch(e) {return {};}})(),'print.nozzle_temper'))), true);
Hier ein noch angefangenes VIS Beispiel:
Mit Bindings lassen sich auch die Farben im AMS auslesen,
die einzelnen Lüfter Geschwindigkeiten und einiges mehr...
Vielleicht interessiert das ja jemanden.
Wenn man sich z.B. im MQTT Adapter einen Datenpunkt: "Request" anlegt:
kann man auch Befehle schicken:
{
"print": {
"command": "gcode_line",
"param": "M960 S5 P1",
"sequence_id": "0"
}
}
mit diesem gCode schaltet man das ToolHead Logo ein. Funktioniert auch wärend des Drucks.