[
    {
        "id": "mobilesam_pro_tab",
        "type": "tab",
        "label": "MobileSAM 分割一切",
        "disabled": false,
        "info": ""
    },
    {
        "id": "group_sam_stream",
        "type": "group",
        "z": "mobilesam_pro_tab",
        "name": "实时视频流分割",
        "style": {
            "fill": "#e3f3d3",
            "fill-opacity": "0.6",
            "label": true
        },
        "nodes": [
            "inject_usb_sam",
            "inject_mipi_sam",
            "change_sam_config",
            "node_execute_sam",
            "inject_stop_sam",
            "debug_sam_log",
            "exec_init_sam"
        ],
        "x": 114,
        "y": 151.5,
        "w": 992,
        "h": 189.5
    },
    {
        "id": "exec_init_sam",
        "type": "exec",
        "z": "tab1",
        "g": "group_sam_stream",
        "command": "cp -r /opt/tros/humble/lib/mono_mobilesam/config/ . || true",
        "addpay": false,
        "append": "",
        "useSpawn": false,
        "timer": "",
        "oldrc": false,
        "name": "初始化配置 (CP)",
        "x": 640,
        "y": 200,
        "wires": [
            [],
            [],
            []
        ]
    },
    {
        "id": "group_sam_photo",
        "type": "group",
        "z": "mobilesam_pro_tab",
        "name": "📷 单帧拍照分割",
        "style": {
            "fill": "#fff9c4",
            "fill-opacity": "0.6",
            "label": true
        },
        "nodes": [
            "inject_take_sam",
            "cam_take_sam",
            "exec_process_sam",
            "file_read_sam",
            "image_view_sam",
            "debug_sam_status"
        ],
        "x": 114,
        "y": 391.5,
        "w": 872,
        "h": 129.5
    },
    {
        "id": "group_viz_sam",
        "type": "group",
        "z": "mobilesam_pro_tab",
        "name": "结果可视化",
        "style": {
            "fill": "#d1e7f5",
            "fill-opacity": "0.6",
            "label": true
        },
        "nodes": [
            "inject_browser_sam",
            "open_browser_sam",
            "delay_preview_sam",
            "set_ws_url_sam",
            "video_preview_sam"
        ],
        "x": 114,
        "y": 579,
        "w": 412,
        "h": 169.5
    },
    {
        "id": "group_env_sam",
        "type": "group",
        "z": "mobilesam_pro_tab",
        "name": "环境准备",
        "style": {
            "fill": "#f3e5f5",
            "fill-opacity": "0.6",
            "label": true
        },
        "nodes": [
            "inject_update_sam",
            "smart_update_sam",
            "change_notify_sam",
            "audio_notify_sam"
        ],
        "x": 114,
        "y": 19,
        "w": 832,
        "h": 102
    },
    {
        "id": "audio_notify_sam",
        "type": "rdk-tools texttoaudio",
        "z": "tab1",
        "g": "group_env_sam",
        "name": "",
        "x": 850,
        "y": 60,
        "wires": []
    },
    {
        "id": "inject_usb_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "启动 (USB视频流)",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "camera",
                "v": "usb",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 250,
        "y": 200,
        "wires": [
            []
        ]
    },
    {
        "id": "inject_mipi_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "启动 (MIPI视频流)",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "camera",
                "v": "mipi",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 250,
        "y": 240,
        "wires": [
            []
        ]
    },
    {
        "id": "change_sam_config",
        "type": "change",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "配置流参数",
        "rules": [
            {
                "t": "set",
                "p": "launch",
                "pt": "msg",
                "to": "mono_mobilesam sam.launch.py",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "insert",
                "pt": "msg",
                "to": "$join(['export CAM_TYPE=', msg.camera])",
                "tot": "jsonata"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 670,
        "y": 220,
        "wires": [
            [
                "node_execute_sam"
            ]
        ]
    },
    {
        "id": "node_execute_sam",
        "type": "rdk-tools checkexecute",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "执行分割",
        "x": 840,
        "y": 260,
        "wires": [
            [
                "debug_sam_log"
            ],
            [
                "debug_sam_log"
            ]
        ]
    },
    {
        "id": "inject_stop_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "关闭服务",
        "props": [
            {
                "p": "kill",
                "v": "",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 220,
        "y": 300,
        "wires": [
            [
                "node_execute_sam"
            ]
        ]
    },
    {
        "id": "debug_sam_log",
        "type": "debug",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_stream",
        "name": "系统日志",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1000,
        "y": 260,
        "wires": []
    },
    {
        "id": "inject_take_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "name": "点击拍照",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 220,
        "y": 440,
        "wires": [
            [
                "cam_take_sam"
            ]
        ]
    },
    {
        "id": "cam_take_sam",
        "type": "rdk-camera takephoto",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "cameratype": "1",
        "filemode": "2",
        "filename": "input.jpg",
        "filedefpath": "1",
        "filepath": "/root",
        "fileformat": "jpeg",
        "resolution": "2",
        "rotation": "0",
        "fliph": "0",
        "flipv": "0",
        "brightness": "50",
        "contrast": "0",
        "sharpness": "0",
        "quality": "80",
        "imageeffect": "none",
        "exposuremode": "auto",
        "iso": "0",
        "agcwait": "1.0",
        "led": "0",
        "awb": "auto",
        "name": "拍摄照片",
        "x": 360,
        "y": 440,
        "wires": [
            [
                "exec_process_sam"
            ]
        ]
    },
    {
        "id": "exec_process_sam",
        "type": "exec",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "command": "cp -r /opt/tros/humble/lib/mono_mobilesam/config/ . 2>/dev/null; source /opt/tros/humble/setup.bash && ros2 launch mono_mobilesam sam_feedback.launch.py dnn_example_image:=input.jpg dnn_example_dump_render_img:=1 > /dev/null 2>&1 && mv render_*.jpg result_sam.jpg",
        "addpay": false,
        "append": "",
        "useSpawn": false,
        "timer": "",
        "oldrc": false,
        "name": "处理: 分割+重命名",
        "x": 550,
        "y": 440,
        "wires": [
            [
                "file_read_sam",
                "debug_sam_status"
            ],
            [],
            []
        ]
    },
    {
        "id": "file_read_sam",
        "type": "file in",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "name": "读取结果",
        "filename": "result_sam.jpg",
        "format": "buffer",
        "chunk": false,
        "sendError": false,
        "encoding": "none",
        "allProps": false,
        "x": 740,
        "y": 440,
        "wires": [
            [
                "image_view_sam"
            ]
        ]
    },
    {
        "id": "image_view_sam",
        "type": "image viewer",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "name": "显示结果",
        "width": "480",
        "data": "payload",
        "dataType": "msg",
        "active": true,
        "x": 880,
        "y": 440,
        "wires": [
            []
        ]
    },
    {
        "id": "debug_sam_status",
        "type": "debug",
        "z": "mobilesam_pro_tab",
        "g": "group_sam_photo",
        "name": "处理完成",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 740,
        "y": 480,
        "wires": []
    },
    {
        "id": "inject_browser_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_viz_sam",
        "name": "打开浏览器",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "http://{host}:8000",
        "payloadType": "str",
        "x": 220,
        "y": 620,
        "wires": [
            [
                "open_browser_sam"
            ]
        ]
    },
    {
        "id": "open_browser_sam",
        "type": "rdk-tools openurl",
        "z": "mobilesam_pro_tab",
        "g": "group_viz_sam",
        "name": "",
        "x": 400,
        "y": 620,
        "wires": []
    },
    {
        "id": "delay_preview_sam",
        "type": "delay",
        "z": "mobilesam_pro_tab",
        "g": "group_viz_sam",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 240,
        "y": 660,
        "wires": [
            [
                "set_ws_url_sam"
            ]
        ]
    },
    {
        "id": "set_ws_url_sam",
        "type": "change",
        "z": "mobilesam_pro_tab",
        "g": "group_viz_sam",
        "name": "设定视频流",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "ws://{host}:8000",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 390,
        "y": 660,
        "wires": [
            [
                "video_preview_sam"
            ]
        ]
    },
    {
        "id": "video_preview_sam",
        "type": "rdk-tools videows",
        "z": "mobilesam_pro_tab",
        "g": "group_viz_sam",
        "name": "Web预览",
        "fps": "2",
        "width": "640",
        "active": true,
        "x": 420,
        "y": 700,
        "wires": [
            [],
            [],
            []
        ]
    },
    {
        "id": "inject_update_sam",
        "type": "inject",
        "z": "mobilesam_pro_tab",
        "g": "group_env_sam",
        "name": "检查更新",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 220,
        "y": 80,
        "wires": [
            [
                "smart_update_sam"
            ]
        ]
    },
    {
        "id": "smart_update_sam",
        "type": "rdk-tools smartupdate",
        "z": "mobilesam_pro_tab",
        "g": "group_env_sam",
        "name": "",
        "x": 380,
        "y": 80,
        "wires": [
            [
                "change_notify_sam"
            ],
            []
        ]
    },
    {
        "id": "change_notify_sam",
        "type": "change",
        "z": "mobilesam_pro_tab",
        "g": "group_env_sam",
        "name": "提示内容",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "环境检查完成",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 540,
        "y": 80,
        "wires": [
            []
        ]
    },
    {
        "id": "cf134a8e6c4ef76d",
        "type": "global-config",
        "env": [],
        "modules": {
            "node-red-node-rdk-tools": "0.0.27",
            "node-red-node-rdk-camera": "0.0.17",
            "node-red-contrib-image-tools": "2.1.1"
        }
    }
]