Start and Stop logging by switch

Hi!!
I am currently building a datalogger for my gps.
I would like to have a switch that u press to start logging and also stop logging.
Every time I stop logging and start over logging I would like a new file to be generated and saved to my folder.
I am tinking about using node-red-contrib-simple-gate...

I am not really sure how to do it since I am new to NR.
Thanks in advance!

[
    {
        "id": "2cd82789b65e21b3",
        "type": "tab",
        "label": "Flow 3",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "18e64fc4f03f85e0",
        "type": "gate",
        "z": "2cd82789b65e21b3",
        "name": "",
        "controlTopic": "control",
        "defaultState": "closed",
        "openCmd": "open",
        "closeCmd": "close",
        "toggleCmd": "toggle",
        "defaultCmd": "default",
        "statusCmd": "status",
        "persist": false,
        "storeName": "memory",
        "x": 470,
        "y": 660,
        "wires": [
            [
                "46c5e78853f545fa"
            ]
        ]
    },
    {
        "id": "939995ccfbeb6faa",
        "type": "gpsd",
        "z": "2cd82789b65e21b3",
        "name": "",
        "hostname": "localhost",
        "port": "2947",
        "tpv": true,
        "sky": false,
        "info": false,
        "device": false,
        "gst": false,
        "att": false,
        "x": 170,
        "y": 660,
        "wires": [
            [
                "b9f3d901b1d8eeaa"
            ]
        ]
    },
    {
        "id": "3160293e9028d697",
        "type": "function",
        "z": "2cd82789b65e21b3",
        "name": "Filename",
        "func": "var now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd  = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm  = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss  = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\n\n// Generate out file name pattern\nmsg.fname = \"Log_\"+ yyyy +\"-\" + mm +\"-\"+ dd +\"_\"+hh+\"_\"+mm+ \".txt\";\n// Full filename with path for the file node later\nmsg.filename = \"/home/pi/gps_log_self/\"+ msg.fname;\nmsg.filecontent = msg.payload;\nmsg.payload = {\"pattern\":msg.fname};\n\nnode.status({fill:\"blue\",shape:\"ring\",text:msg.fname});\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 720,
        "y": 800,
        "wires": [
            [
                "1515c3ab7cf5b0ee"
            ]
        ]
    },
    {
        "id": "1515c3ab7cf5b0ee",
        "type": "fs-file-lister",
        "z": "2cd82789b65e21b3",
        "name": "",
        "start": "/home/pi/gps_log",
        "pattern": "",
        "folders": "*",
        "hidden": true,
        "lstype": "files",
        "path": true,
        "single": true,
        "depth": 0,
        "stat": true,
        "showWarnings": false,
        "x": 840,
        "y": 720,
        "wires": [
            [
                "0fa537dca4636800"
            ]
        ]
    },
    {
        "id": "0fa537dca4636800",
        "type": "change",
        "z": "2cd82789b65e21b3",
        "name": "Get file content",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "filecontent",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 980,
        "y": 780,
        "wires": [
            [
                "3fcbbee264fa11c4"
            ]
        ]
    },
    {
        "id": "3fcbbee264fa11c4",
        "type": "file",
        "z": "2cd82789b65e21b3",
        "name": "",
        "filename": "",
        "appendNewline": true,
        "createDir": true,
        "overwriteFile": "false",
        "encoding": "none",
        "x": 1100,
        "y": 720,
        "wires": [
            []
        ]
    },
    {
        "id": "46c5e78853f545fa",
        "type": "function",
        "z": "2cd82789b65e21b3",
        "name": "",
        "func": "\nfunction getRandomString(length) {\n    var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    var result = '';\n    for ( var i = 0; i < length; i++ ) {\n        result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\n    }\n    return result;\n}\n\n\nmsg.payload = {\n    \"name\" : getRandomString(5),\n    \"lat\" : msg.payload.lat,\n    \"lon\" : msg.payload.lon,\n    \"time\" :  msg.payload.time.substr(11,8),\n\n    \n}\nreturn msg;\n\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 520,
        "y": 760,
        "wires": [
            [
                "3160293e9028d697"
            ]
        ]
    },
    {
        "id": "b9f3d901b1d8eeaa",
        "type": "ui_switch",
        "z": "2cd82789b65e21b3",
        "name": "",
        "label": "switch",
        "tooltip": "",
        "group": "6ce64df2b03eece2",
        "order": 6,
        "width": 0,
        "height": 0,
        "passthru": true,
        "decouple": "false",
        "topic": "control",
        "topicType": "str",
        "style": "",
        "onvalue": "open",
        "onvalueType": "str",
        "onicon": "",
        "oncolor": "",
        "offvalue": "close",
        "offvalueType": "str",
        "officon": "",
        "offcolor": "",
        "animate": false,
        "className": "",
        "x": 320,
        "y": 680,
        "wires": [
            [
                "18e64fc4f03f85e0"
            ]
        ]
    },
    {
        "id": "6ce64df2b03eece2",
        "type": "ui_group",
        "name": "GNSS Tracker",
        "tab": "42f2e0a585dcba03",
        "order": 1,
        "disp": false,
        "width": "20",
        "collapse": false,
        "className": ""
    },
    {
        "id": "42f2e0a585dcba03",
        "type": "ui_tab",
        "name": "GNSS Tracker",
        "icon": "fa-map-o",
        "order": 1,
        "disabled": false,
        "hidden": false
    }
]

Move the switch node to it's own wire that feeds into the gate, then all should be well.

Gosh so easy .... thanks for helping!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.