2019年12月9日 星期一

RFID 的Node-RED 程式

 2019-10 RFID 的Node-RED 程式
https://fred.sensetecnic.com/   login 後


    UI介面
   

 

Flow JSON Source code
[
    {
        "id": "2d47eef0.900f42",
        "type": "mqtt in",
        "z": "ffc58342.9a11a",
        "name": "MQTT",
        "topic": "alex9ufo/outTopic/RFID/json",
        "qos": "2",
        "datatype": "auto",
        "broker": "2071d72e.140ab8",
        "x": 70,
        "y": 140,
        "wires": [
            [
                "b9e1ec7e.cc9cc",
                "bf67a08b.b2a68",
                "55ca9b3a.9c81d4",
                "c5afe5e9.5ad358",
                "c96e6202.92078"
            ]
        ]
    },
    {
        "id": "5462a273.a2881c",
        "type": "mqtt out",
        "z": "ffc58342.9a11a",
        "name": "",
        "topic": "alex9ufo/inTopic",
        "qos": "1",
        "retain": "false",
        "broker": "2071d72e.140ab8",
        "x": 620,
        "y": 640,
        "wires": []
    },
    {
        "id": "7210fc16.f90714",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 0,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "ON_LED",
        "color": "white",
        "bgcolor": "",
        "icon": "fa-circle",
        "payload": "#on",
        "payloadType": "str",
        "topic": "",
        "x": 120,
        "y": 640,
        "wires": [
            [
                "5462a273.a2881c",
                "c59da6c1.964988",
                "6aff5eb4.80e34",
                "a07016e7.c17288"
            ]
        ]
    },
    {
        "id": "d720fbe2.ce4c48",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 0,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "off_LED",
        "color": "black",
        "bgcolor": "",
        "icon": "fa-circle-o",
        "payload": "#off",
        "payloadType": "str",
        "topic": "",
        "x": 120,
        "y": 740,
        "wires": [
            [
                "5462a273.a2881c",
                "c59da6c1.964988",
                "a07016e7.c17288",
                "6aff5eb4.80e34"
            ]
        ]
    },
    {
        "id": "c59da6c1.964988",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 610,
        "y": 700,
        "wires": []
    },
    {
        "id": "433f36a3.c18698",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 0,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "flash_LED",
        "color": "black",
        "bgcolor": "",
        "icon": "fa-circle-o",
        "payload": "#flash",
        "payloadType": "str",
        "topic": "",
        "x": 130,
        "y": 844,
        "wires": [
            [
                "5462a273.a2881c",
                "c59da6c1.964988",
                "a07016e7.c17288",
                "6aff5eb4.80e34"
            ]
        ]
    },
    {
        "id": "b9e1ec7e.cc9cc",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "json+時分秒",
        "func": "var date = new Date();\nvar h = date.getHours();\nvar m = date.getMinutes();\nvar s = date.getSeconds();\nif(h<10){\n    h = '0'+h;\n}\nif(m<10){\n    m = '0' + m;\n}\nif(s<10){\n    s = '0' + s;\n}\nmsg.payload = 'Time:(' + h + ':' + m + ':' + s + ')'+ msg.payload ;\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "x": 290,
        "y": 80,
        "wires": [
            [
                "fa440e2f.886fe"
            ]
        ]
    },
    {
        "id": "bf67a08b.b2a68",
        "type": "switch",
        "z": "ffc58342.9a11a",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "Alex9ufo",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "RaspberryPi",
                "vt": "str"
            },
            {
                "t": "empty"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 3,
        "x": 230,
        "y": 240,
        "wires": [
            [
                "c6ace580.8ea748",
                "6993da44.cc03c4"
            ],
            [
                "c6ace580.8ea748",
                "6d930a3c.b46584"
            ],
            [
                "c6ace580.8ea748",
                "5599f1cd.7c8f1"
            ]
        ]
    },
    {
        "id": "c6ace580.8ea748",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 410,
        "y": 200,
        "wires": []
    },
    {
        "id": "af05ffad.ee06e",
        "type": "ui_audio",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "voice": "en-US",
        "always": "",
        "x": 860,
        "y": 280,
        "wires": []
    },
    {
        "id": "9c0f49eb.b0bf28",
        "type": "ui_audio",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "voice": "en-US",
        "always": "",
        "x": 600,
        "y": 860,
        "wires": []
    },
    {
        "id": "6aff5eb4.80e34",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Format timestamp",
        "func": "var date = new Date();\nvar h = date.getHours();\nvar m = date.getMinutes();\nvar s = date.getSeconds();\nif(h<10){\n    h = '0'+h;\n}\nif(m<10){\n    m = '0' + m;\n}\nif(s<10){\n    s = '0' + s;\n}\nmsg.payload = msg.payload + ' --> Time:(' + h + ':' + m + ':' + s + ')' ;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 410,
        "y": 784,
        "wires": [
            [
                "3ad5ba77.41a4b6",
                "1dc14634.65675a"
            ]
        ]
    },
    {
        "id": "725b1f09.e48b4",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 430,
        "y": 420,
        "wires": []
    },
    {
        "id": "a19b9172.de1d7",
        "type": "inject",
        "z": "ffc58342.9a11a",
        "name": "CREATE DB",
        "topic": "CREATE TABLE RFIDtable( id INT PRIMARY KEY NOT NULL, currenttime TEXT , uidname TEXT)",
        "payload": "",
        "payloadType": "date",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 520,
        "wires": [
            [
                "54029654.b8a198"
            ]
        ]
    },
    {
        "id": "a07016e7.c17288",
        "type": "ui_text_input",
        "z": "ffc58342.9a11a",
        "name": "",
        "label": "",
        "group": "54d05f53.b0203",
        "order": 9,
        "width": "12",
        "height": "2",
        "passthru": true,
        "mode": "text",
        "delay": "0",
        "topic": "",
        "x": 420,
        "y": 844,
        "wires": [
            [
                "9c0f49eb.b0bf28",
                "6390cc85.26f324"
            ]
        ]
    },
    {
        "id": "3ad5ba77.41a4b6",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 610,
        "y": 740,
        "wires": []
    },
    {
        "id": "451c29c0.2e74b8",
        "type": "ui_text_input",
        "z": "ffc58342.9a11a",
        "name": "",
        "label": "",
        "group": "54d05f53.b0203",
        "order": 9,
        "width": "12",
        "height": "2",
        "passthru": true,
        "mode": "text",
        "delay": "0",
        "topic": "",
        "x": 640,
        "y": 280,
        "wires": [
            [
                "af05ffad.ee06e",
                "cfe51360.8999a"
            ]
        ]
    },
    {
        "id": "cfe51360.8999a",
        "type": "delay",
        "z": "ffc58342.9a11a",
        "name": "",
        "pauseType": "delay",
        "timeout": "80",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 650,
        "y": 360,
        "wires": [
            [
                "ee308ec9.a5b22"
            ]
        ]
    },
    {
        "id": "ee308ec9.a5b22",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Check Text",
        "func": "text=msg.payload;\nif(text !== \"\"){\n    msg.payload = \"\";\n    return msg;\n}",
        "outputs": 1,
        "noerr": 0,
        "x": 810,
        "y": 360,
        "wires": [
            [
                "451c29c0.2e74b8"
            ]
        ]
    },
    {
        "id": "6390cc85.26f324",
        "type": "delay",
        "z": "ffc58342.9a11a",
        "name": "",
        "pauseType": "delay",
        "timeout": "80",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 350,
        "y": 924,
        "wires": [
            [
                "ea0f8ccf.7501"
            ]
        ]
    },
    {
        "id": "ea0f8ccf.7501",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Check Text",
        "func": "text=msg.payload;\nif(text !== \"\"){\n    msg.payload = \"\";\n    return msg;\n}",
        "outputs": 1,
        "noerr": 0,
        "x": 510,
        "y": 924,
        "wires": [
            [
                "a07016e7.c17288"
            ]
        ]
    },
    {
        "id": "1bd05325.82dedd",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 0,
        "width": "12",
        "height": "2",
        "passthru": false,
        "label": "Testing......",
        "color": "white",
        "bgcolor": "",
        "icon": "fa-circle",
        "payload": "Testing",
        "payloadType": "str",
        "topic": "",
        "x": 410,
        "y": 320,
        "wires": [
            [
                "451c29c0.2e74b8"
            ]
        ]
    },
    {
        "id": "f655720f.1f54a",
        "type": "ui_template",
        "z": "ffc58342.9a11a",
        "group": "54d05f53.b0203",
        "name": "",
        "order": 0,
        "width": "15",
        "height": "10",
        "format": "<table style=\"width:100%\">\n  <tr>\n    <th>Index</th> \n    <th>Date</th> \n    <th>RFID</th>\n  </tr>\n  <tr ng-repeat=\"x in msg.payload | limitTo:20\">\n    <td>{{$index}}</td>\n    <td>{{msg.payload[$index].currenttime}}</td>\n    <td>{{msg.payload[$index].uidname}}</td> \n  </tr>\n</table>",
        "storeOutMessages": true,
        "fwdInMessages": true,
        "templateScope": "local",
        "x": 620,
        "y": 460,
        "wires": [
            []
        ]
    },
    {
        "id": "fa440e2f.886fe",
        "type": "ui_text",
        "z": "ffc58342.9a11a",
        "group": "54d05f53.b0203",
        "order": 0,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "MQTT_send_Message",
        "format": "{{msg.payload}}",
        "layout": "row-center",
        "x": 500,
        "y": 80,
        "wires": []
    },
    {
        "id": "49b4b28c.01dc7c",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "INSERT",
        "func": "msg.topic = \"INSERT INTO RFIDtable (id,currenttime, uidname) VALUES (?,?,?)\";\n\n\nvar date = new Date();\n\nvar h = date.getHours();\n\nvar m = date.getMinutes();\n\nvar s = date.getSeconds();\n\nif(h<10)\n{\n    \n  h = '0'+h;\n\n}\n\nif(m<10)\n{\n    \n  m = '0' + m;\n\n}\n\nif(s<10)\n{\n    \n  s = '0' + s;\n\n}\n\nvar hms= h + ':' + m + ':' + s ;\nvar id= Date.now() ;\n\nmsg.payload = [id ,hms, msg.payload];\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "x": 220,
        "y": 420,
        "wires": [
            [
                "725b1f09.e48b4",
                "54029654.b8a198"
            ]
        ]
    },
    {
        "id": "5599f1cd.7c8f1",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "不合法卡片",
        "func": "msg.payload = 'illegal Card'\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 410,
        "y": 360,
        "wires": [
            [
                "451c29c0.2e74b8"
            ]
        ]
    },
    {
        "id": "261a3e75.48cc22",
        "type": "inject",
        "z": "ffc58342.9a11a",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 240,
        "y": 360,
        "wires": [
            [
                "5599f1cd.7c8f1"
            ]
        ]
    },
    {
        "id": "6d930a3c.b46584",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "RaspberryPi卡片",
        "func": "msg.payload = 'RaspberryPi Card'\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 430,
        "y": 280,
        "wires": [
            [
                "451c29c0.2e74b8"
            ]
        ]
    },
    {
        "id": "6993da44.cc03c4",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Alex9ufo卡片",
        "func": "msg.payload = 'Alex9ufo Card'\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 410,
        "y": 240,
        "wires": [
            [
                "451c29c0.2e74b8"
            ]
        ]
    },
    {
        "id": "1dc14634.65675a",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Set Line API ",
        "func": "msg.headers = {'content-type':'application/x-www-form-urlencoded','Authorization':'Bearer cEI4hx24xyopKGAArgZcKJNHE1V7KeeIi4Lzny3dDNO'};\nmsg.payload = {\"message\":msg.payload};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 610,
        "y": 784,
        "wires": [
            [
                "c81e0778.d12438"
            ]
        ]
    },
    {
        "id": "c81e0778.d12438",
        "type": "http request",
        "z": "ffc58342.9a11a",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "url": "https://notify-api.line.me/api/notify",
        "tls": "",
        "x": 770,
        "y": 784,
        "wires": [
            [
                "5dbbac.04c2b454"
            ]
        ]
    },
    {
        "id": "5dbbac.04c2b454",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 930,
        "y": 784,
        "wires": []
    },
    {
        "id": "c96e6202.92078",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 290,
        "y": 40,
        "wires": []
    },
    {
        "id": "55ca9b3a.9c81d4",
        "type": "json",
        "z": "ffc58342.9a11a",
        "name": "",
        "property": "payload",
        "action": "str",
        "pretty": false,
        "x": 90,
        "y": 420,
        "wires": [
            [
                "49b4b28c.01dc7c"
            ]
        ]
    },
    {
        "id": "64f527f1.3e2be8",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 10,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "View Data",
        "color": "",
        "bgcolor": "",
        "icon": "",
        "payload": "",
        "payloadType": "str",
        "topic": "SELECT * FROM RFIDtable ORDER BY  id  DESC LIMIT 100;",
        "x": 200,
        "y": 600,
        "wires": [
            [
                "54029654.b8a198"
            ]
        ]
    },
    {
        "id": "c5afe5e9.5ad358",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Format timestamp",
        "func": "var date = new Date();\nvar h = date.getHours();\nvar m = date.getMinutes();\nvar s = date.getSeconds();\nif(h<10){\n    h = '0'+h;\n}\nif(m<10){\n    m = '0' + m;\n}\nif(s<10){\n    s = '0' + s;\n}\nmsg.payload = msg.payload + ' --> Time:(' + h + ':' + m + ':' + s + ')' ;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 310,
        "y": 140,
        "wires": [
            [
                "9c65de7a.e2341"
            ]
        ]
    },
    {
        "id": "9c65de7a.e2341",
        "type": "function",
        "z": "ffc58342.9a11a",
        "name": "Set Line API ",
        "func": "msg.headers = {'content-type':'application/x-www-form-urlencoded','Authorization':'Bearer cEI4hx24xyopKGAArgZcKJNHE1V7KeeIi4Lzny3dDNO'};\nmsg.payload = {\"message\":msg.payload};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 490,
        "y": 140,
        "wires": [
            [
                "ae2c681d.d46278"
            ]
        ]
    },
    {
        "id": "ae2c681d.d46278",
        "type": "http request",
        "z": "ffc58342.9a11a",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "url": "https://notify-api.line.me/api/notify",
        "tls": "",
        "x": 650,
        "y": 140,
        "wires": [
            [
                "6e878b02.808b54"
            ]
        ]
    },
    {
        "id": "6e878b02.808b54",
        "type": "debug",
        "z": "ffc58342.9a11a",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 810,
        "y": 140,
        "wires": []
    },
    {
        "id": "99e7e8b2.feefd8",
        "type": "comment",
        "z": "ffc58342.9a11a",
        "name": "CREATE TABLE RFIDtable",
        "info": "CREATE TABLE RFIDtable( id INT PRIMARY KEY NOT NULL, currenttime TEXT , rfid TEXT)",
        "x": 150,
        "y": 560,
        "wires": []
    },
    {
        "id": "84cf8ee7.da5df",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "Alex9ufo",
        "group": "54d05f53.b0203",
        "order": 2,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "手動插入測試資料",
        "color": "",
        "bgcolor": "",
        "icon": "",
        "payload": "{\"RFIDNo\":\"Alex9ufo測試\"}",
        "payloadType": "json",
        "topic": "",
        "x": 400,
        "y": 580,
        "wires": [
            [
                "a549c2f.ef94f4"
            ]
        ]
    },
    {
        "id": "a549c2f.ef94f4",
        "type": "mqtt out",
        "z": "ffc58342.9a11a",
        "name": "",
        "topic": "alex9ufo/outTopic/RFID/json",
        "qos": "",
        "retain": "",
        "broker": "2071d72e.140ab8",
        "x": 620,
        "y": 580,
        "wires": []
    },
    {
        "id": "5a2e05aa.10724c",
        "type": "ui_button",
        "z": "ffc58342.9a11a",
        "name": "",
        "group": "54d05f53.b0203",
        "order": 11,
        "width": "6",
        "height": "3",
        "passthru": false,
        "label": "建立資料庫(只能執行一次)",
        "color": "",
        "bgcolor": "",
        "icon": "",
        "payload": "",
        "payloadType": "str",
        "topic": "CREATE TABLE RFIDtable( id INT PRIMARY KEY NOT NULL, currenttime TEXT , uidname TEXT)",
        "x": 160,
        "y": 460,
        "wires": [
            [
                "54029654.b8a198"
            ]
        ]
    },
    {
        "id": "54029654.b8a198",
        "type": "litedb",
        "z": "ffc58342.9a11a",
        "name": "RFID",
        "x": 430,
        "y": 460,
        "wires": [
            [
                "f655720f.1f54a"
            ]
        ]
    },
    {
        "id": "2071d72e.140ab8",
        "type": "mqtt-broker",
        "broker": "broker.mqtt-dashboard.com",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": 15,
        "cleansession": true,
        "birthQos": "0",
        "willQos": "0"
    },
    {
        "id": "54d05f53.b0203",
        "type": "ui_group",
        "z": "",
        "name": "Control led ESP8266 (ESP32)",
        "tab": "e6e7f124.a59e4",
        "order": 1,
        "disp": true,
        "width": "15",
        "collapse": false
    },
    {
        "id": "e6e7f124.a59e4",
        "type": "ui_tab",
        "z": "",
        "name": "RFID",
        "icon": "dashboard",
        "order": 1
    }
]

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...