gabbapeople
Published

Smart Garage Model by Blynk and XOD

Making a smart garage model from the toy building using XOD and Blynk.

BeginnerFull instructions provided2 days14,416
Smart Garage Model by Blynk and XOD

Things used in this project

Hardware components

Arduino Mega 2560
Arduino Mega 2560
×1
Bluetooth Low Energy (BLE) Module (Generic)
×1

Software apps and online services

XOD
Blynk
Blynk

Story

Read more

Schematics

Scheme

Code

blynk.xodball

JSON
a xodball file
{
  "name": "blynk",
  "patches": {
    "@/1": {
      "links": {
        "rJOiShVcQ": {
          "id": "rJOiShVcQ",
          "input": {
            "nodeId": "r1msrhEcX",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "H1VcwdQqX",
            "pinKey": "B1gI0urv1W"
          }
        }
      },
      "nodes": {
        "H1VcwdQqX": {
          "boundLiterals": {
            "B143qAq1Q": "D2"
          },
          "id": "H1VcwdQqX",
          "position": {
            "x": 136,
            "y": 0
          },
          "type": "xod/gpio/digital-read"
        },
        "r1msrhEcX": {
          "id": "r1msrhEcX",
          "position": {
            "x": 136,
            "y": 102
          },
          "size": {
            "height": 51,
            "width": 374
          },
          "type": "xod/core/watch"
        }
      },
      "path": "@/1"
    },
    "@/11111": {
      "links": {
        "H1qCpUiq7": {
          "id": "H1qCpUiq7",
          "input": {
            "nodeId": "HJ8apUscQ",
            "pinKey": "H1Li3Ovtm"
          },
          "output": {
            "nodeId": "ry8AaLsqQ",
            "pinKey": "BkmeFD8OQ"
          }
        },
        "SytATUsqX": {
          "id": "SytATUsqX",
          "input": {
            "nodeId": "HJ8apUscQ",
            "pinKey": "rk65hdPYX"
          },
          "output": {
            "nodeId": "ry8AaLsqQ",
            "pinKey": "Sk450OL-X"
          }
        },
        "rke-1CIicX": {
          "id": "rke-1CIicX",
          "input": {
            "nodeId": "HkZy0Li9Q",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "HJ8apUscQ",
            "pinKey": "H1BnItotm"
          }
        }
      },
      "nodes": {
        "HJ8apUscQ": {
          "boundLiterals": {
            "BJ5kfIqY7": "Continuously",
            "H1Li3Ovtm": "On Boot",
            "Skfea_wKX": "\"820adad2351840c88e91de8cd3bfec4e\""
          },
          "id": "HJ8apUscQ",
          "position": {
            "x": 102,
            "y": 204
          },
          "type": "@/init-ble-uart"
        },
        "HkZy0Li9Q": {
          "id": "HkZy0Li9Q",
          "label": "BLNK",
          "position": {
            "x": 102,
            "y": 306
          },
          "type": "xod/patch-nodes/to-bus"
        },
        "ry8AaLsqQ": {
          "boundLiterals": {
            "BytfJKIWX": "9600"
          },
          "id": "ry8AaLsqQ",
          "position": {
            "x": 102,
            "y": 102
          },
          "type": "xod/uart/uart-1"
        }
      },
      "path": "@/11111"
    },
    "@/blynk": {
      "attachments": [
        {
          "content": "\nstruct State {\n};\n\n{{#global}}\nclass BlynkStream;\n//class BlynkTimer;\n{{/global}}\n\nstruct Type {\n    uint8_t vpin;\n    char* vpinData;\n    BlynkStream* xodBlynk;\n   // BlynkTimer* xodTimer;\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n}\n",
          "encoding": "utf-8",
          "filename": "patch.cpp"
        }
      ],
      "nodes": {
        "Byw_8FsYm": {
          "id": "Byw_8FsYm",
          "position": {
            "x": 0,
            "y": 0
          },
          "type": "xod/patch-nodes/not-implemented-in-xod"
        },
        "HyPU8YoKQ": {
          "id": "HyPU8YoKQ",
          "label": "BLNK",
          "position": {
            "x": 0,
            "y": 102
          },
          "type": "xod/patch-nodes/output-self"
        }
      },
      "path": "@/blynk"
    },
    "@/init-ble-uart": {
      "attachments": [
        {
          "content": "#pragma XOD require \"https://github.com/blynkkk/blynk-library\"\n\n// clang-format off\n{{#global}}\n#define BLYNK_MSG_LIMIT      1500\n#include <BlynkSimpleSerialBLE.h>\n\nextern \"C\" {\n    struct BlynkReq;\n    struct BlynkParam;\n    void BlynkWidgetWriteDefault(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);\n   // void BlynkWidgetReadDefault(BlynkReq __attribute__((__unused__)) &request);\n}\n\nnamespace xodBlynkBle {\n    uint8_t blynkPin;\n    char blynkPinData[24];\n}\n\nBLYNK_WRITE_DEFAULT() {\n   xodBlynkBle::blynkPin = request.pin;\n   strcpy(xodBlynkBle::blynkPinData,param.asStr());\n}\n\n\n{{/global}}\n// clang-format on\n\nstruct State {\n    char auth[33] = { 0 };\n    uint8_t mem[sizeof(BlynkStream)];\n    //uint8_t mem2[sizeof(BlynkTimer)];\n    BlynkStream* xodBlynk;\n    //BlynkTimer* xodTimer;\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n    auto state = getState(ctx);\n    auto uart = getValue<input_UART>(ctx);\n\n    if (isInputDirty<input_INIT>(ctx)){\n\n        state->xodBlynk = new (state->mem) BlynkStream(_blynkTransport);\n        //state->xodTimer = new (state->mem2) BlynkTimer;\n\n        dump(getValue<input_AUTH>(ctx),state->auth);\n        state->xodBlynk->begin(*(uart->toStream()),state->auth);\n        if (state->xodBlynk->connect()){\n            emitValue<output_DONE>(ctx, 1);\n        } else {\n            emitValue<output_ERR>(ctx, 1);\n        }\n    }\n\n    if(isInputDirty<input_RUN>(ctx) ){\n        state->xodBlynk->run();\n        //state->xodTimer->run();\n\n    }\n\n    ValueType<output_BLNK>::T obj;\n    //obj = { xodBlynkBle::blynkPin, xodBlynkBle::blynkPinData, state->xodBlynk, state->xodTimer };\n        obj = { xodBlynkBle::blynkPin, xodBlynkBle::blynkPinData, state->xodBlynk };\n    //obj.vpin = xodBlynkBle::blynkPinRead;\n    //obj.vpinData = xodBlynkBle::blynkPinReadData;\n    //obj.xodBlynk = state->xodBlynk;\n    emitValue<output_BLNK>(ctx, obj);\n}\n\n",
          "encoding": "utf-8",
          "filename": "patch.cpp"
        }
      ],
      "nodes": {
        "B16R3OwY7": {
          "id": "B16R3OwY7",
          "position": {
            "x": 442,
            "y": 204
          },
          "type": "xod/patch-nodes/not-implemented-in-xod"
        },
        "BJ5kfIqY7": {
          "id": "BJ5kfIqY7",
          "label": "RUN",
          "position": {
            "x": 510,
            "y": 102
          },
          "type": "xod/patch-nodes/input-pulse"
        },
        "H1BnItotm": {
          "id": "H1BnItotm",
          "label": "BLNK",
          "position": {
            "x": 442,
            "y": 306
          },
          "type": "@/output-blynk"
        },
        "H1Li3Ovtm": {
          "id": "H1Li3Ovtm",
          "label": "INIT",
          "position": {
            "x": 544,
            "y": 102
          },
          "type": "xod/patch-nodes/input-pulse"
        },
        "Skfea_wKX": {
          "id": "Skfea_wKX",
          "label": "AUTH",
          "position": {
            "x": 476,
            "y": 102
          },
          "type": "xod/patch-nodes/input-string"
        },
        "SkxwzLqFX": {
          "id": "SkxwzLqFX",
          "label": "DONE",
          "position": {
            "x": 510,
            "y": 306
          },
          "type": "xod/patch-nodes/output-pulse"
        },
        "rJ9IGUqF7": {
          "id": "rJ9IGUqF7",
          "label": "ERR",
          "position": {
            "x": 476,
            "y": 306
          },
          "type": "xod/patch-nodes/output-pulse"
        },
        "rk65hdPYX": {
          "id": "rk65hdPYX",
          "label": "UART",
          "position": {
            "x": 442,
            "y": 102
          },
          "type": "xod/uart/input-uart"
        }
      },
      "path": "@/init-ble-uart"
    },
    "@/led2": {
      "attachments": [
        {
          "content": "struct State {\n   // char data[24];\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n    auto state = getState(ctx);\n    auto _blynk = getValue<input_BLNK>(ctx);\n    uint8_t _vpin = getValue<input_VPIN>(ctx);\n\n    if (isInputDirty<input_INIT>(ctx)){\n        uint8_t _vpin = getValue<input_VPIN>(ctx);\n        _blynk.xodBlynk->virtualWrite(_vpin,255);\n    }\n\n\n    if (isInputDirty<input_PUSH>(ctx)){\n  //      dump(getValue<input_CLR>(ctx),state->data);\n //       state->xodBlynkLED->setColor(state->data);\n      //  _blynk.xodBlynk->setProperty(_vpin,\"color\",state->data);\n         _blynk.xodBlynk->setProperty(_vpin,\"color\",\"#23C48E\");\n    }\n}\n\n",
          "encoding": "utf-8",
          "filename": "patch.cpp"
        }
      ],
      "nodes": {
        "BJlxkTPXqm": {
          "id": "BJlxkTPXqm",
          "label": "PUSH",
          "position": {
            "x": 203,
            "y": 0
          },
          "type": "xod/patch-nodes/input-pulse"
        },
        "By-l1TDmcm": {
          "id": "By-l1TDmcm",
          "position": {
            "x": -1,
            "y": 102
          },
          "type": "xod/patch-nodes/not-implemented-in-xod"
        },
        "H1g1awX9X": {
          "id": "H1g1awX9X",
          "label": "VPIN",
          "position": {
            "x": 66,
            "y": -1
          },
          "type": "xod/patch-nodes/input-number"
        },
        "Sy4xkTvXqQ": {
          "id": "Sy4xkTvXqQ",
          "label": "BLNK",
          "position": {
            "x": -1,
            "y": 0
          },
          "type": "@/input-blynk"
        },
        "SyGeJ6wmcm": {
          "id": "SyGeJ6wmcm",
          "label": "CLR",
          "position": {
            "x": 135,
            "y": 0
          },
          "type": "xod/patch-nodes/input-string"
        },
        "rJmgypP79X": {
          "id": "rJmgypP79X",
          "label": "INIT",
          "position": {
            "x": 271,
            "y": 0
          },
          "type": "xod/patch-nodes/input-pulse"
        }
      },
      "path": "@/led2"
    },
    "@/main": {
      "comments": {
        "B1VyxvXqX": {
          "content": "First floor light",
          "id": "B1VyxvXqX",
          "position": {
            "x": 544,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 204
          }
        },
        "HJX7xvXqQ": {
          "content": "Stoplight",
          "id": "HJX7xvXqQ",
          "position": {
            "x": 782,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 204
          }
        },
        "Hk_OlPQ9Q": {
          "content": "Parktronic",
          "id": "Hk_OlPQ9Q",
          "position": {
            "x": 1734,
            "y": 1224
          },
          "size": {
            "height": 51,
            "width": 340
          }
        },
        "HkgLxDm5m": {
          "content": "Gate 3",
          "id": "HkgLxDm5m",
          "position": {
            "x": 1462,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 170
          }
        },
        "S1hRxkK75Q": {
          "content": "Security system",
          "id": "S1hRxkK75Q",
          "position": {
            "x": 2142,
            "y": 1224
          },
          "size": {
            "height": 51,
            "width": 306
          }
        },
        "S1vSeD75Q": {
          "content": "Gate 2",
          "id": "S1vSeD75Q",
          "position": {
            "x": 1258,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 170
          }
        },
        "r162kD7cm": {
          "content": "Second floor light",
          "id": "r162kD7cm",
          "position": {
            "x": 408,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 102
          }
        },
        "ry2EePQ5m": {
          "content": "Gate 1",
          "id": "ry2EePQ5m",
          "position": {
            "x": 1054,
            "y": 612
          },
          "size": {
            "height": 51,
            "width": 170
          }
        }
      },
      "links": {
        "B12Z62Ec7": {
          "id": "B12Z62Ec7",
          "input": {
            "nodeId": "rySkj3Nq7",
            "pinKey": "ByAbJsV5X"
          },
          "output": {
            "nodeId": "ryd-T3E9Q",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "B1F9GTV57": {
          "id": "B1F9GTV57",
          "input": {
            "nodeId": "By2Kz6Eqm",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "rkGrbXIG9Q",
            "pinKey": "rJFmgJehW"
          }
        },
        "B1H5faNcQ": {
          "id": "B1H5faNcQ",
          "input": {
            "nodeId": "rkp3CpiY7",
            "pinKey": "SkrgGYLxQ"
          },
          "output": {
            "nodeId": "BJDKG6457",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "B1PSXaVqQ": {
          "id": "B1PSXaVqQ",
          "input": {
            "nodeId": "rkMkojkcm",
            "pinKey": "r1sfQ_6fb"
          },
          "output": {
            "nodeId": "H1xSbXUz57",
            "pinKey": "rJFmgJehW"
          }
        },
        "B1v9MaE97": {
          "id": "B1v9MaE97",
          "input": {
            "nodeId": "BJDKG6457",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "r1VBbX8z97",
            "pinKey": "rJFmgJehW"
          }
        },
        "BJqJjnEqX": {
          "id": "BJqJjnEqX",
          "input": {
            "nodeId": "rySkj3Nq7",
            "pinKey": "ByhGFAotQ"
          },
          "output": {
            "nodeId": "S1WRgJKQqX",
            "pinKey": "__out__"
          }
        },
        "BkHWTn4cm": {
          "id": "BkHWTn4cm",
          "input": {
            "nodeId": "H1uh2sV5Q",
            "pinKey": "HJs8_hoY7"
          },
          "output": {
            "nodeId": "SylWThEcX",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "Bkuoy3kc7": {
          "id": "Bkuoy3kc7",
          "input": {
            "nodeId": "HkGEZcsFm",
            "pinKey": "rk65hdPYX"
          },
          "output": {
            "nodeId": "By8ik3Jc7",
            "pinKey": "Sk450OL-X"
          }
        },
        "By4iKqE9X": {
          "id": "By4iKqE9X",
          "input": {
            "nodeId": "rJr5rw5tm",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "B1y63Fy57",
            "pinKey": "rJFmgJehW"
          }
        },
        "ByAZ6n49m": {
          "id": "ByAZ6n49m",
          "input": {
            "nodeId": "ryd-T3E9Q",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "SyCekKX5X",
            "pinKey": "B1gI0urv1W"
          }
        },
        "ByN5DLq19m": {
          "id": "ByN5DLq19m",
          "input": {
            "nodeId": "ryZqv85yq7",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "Byg9P8qy9X",
            "pinKey": "S12ezv9tX"
          }
        },
        "ByQWCRaiK7": {
          "id": "ByQWCRaiK7",
          "input": {
            "nodeId": "Sye-CCpsYX",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "HkW00piFm",
            "pinKey": "S12ezv9tX"
          }
        },
        "H1BdWwmcX": {
          "id": "H1BdWwmcX",
          "input": {
            "nodeId": "S1Gd-DXqm",
            "pinKey": "S1yZIA_rDJZ"
          },
          "output": {
            "nodeId": "HJs8WDX9m",
            "pinKey": "HktZUCdrPkZ"
          }
        },
        "H1Eg831qX": {
          "id": "H1Eg831qX",
          "input": {
            "nodeId": "S1_J8h1c7",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "H1eupB3y5X",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "H1ScDIq1q7": {
          "id": "H1ScDIq1q7",
          "input": {
            "nodeId": "Byg9P8qy9X",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "BkM9vI9y5m",
            "pinKey": "__out__"
          }
        },
        "H1nnXLfcQ": {
          "id": "H1nnXLfcQ",
          "input": {
            "nodeId": "rkGrbXIG9Q",
            "pinKey": "HJjEe1lnb"
          },
          "output": {
            "nodeId": "ryZqv85yq7",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "H1qiJ21qm": {
          "id": "H1qiJ21qm",
          "input": {
            "nodeId": "HkGEZcsFm",
            "pinKey": "H1Li3Ovtm"
          },
          "output": {
            "nodeId": "By8ik3Jc7",
            "pinKey": "BkmeFD8OQ"
          }
        },
        "H1xoA0TsFX": {
          "id": "H1xoA0TsFX",
          "input": {
            "nodeId": "HkW00piFm",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "rJj0C6otX",
            "pinKey": "__out__"
          }
        },
        "H1zlanN5m": {
          "id": "H1zlanN5m",
          "input": {
            "nodeId": "BkN9WCg5m",
            "pinKey": "ByAbJsV5X"
          },
          "output": {
            "nodeId": "ByaJ63E9X",
            "pinKey": "HJU8CE2lW"
          }
        },
        "HJCQc3E57": {
          "id": "HJCQc3E57",
          "input": {
            "nodeId": "B1Pmqn4q7",
            "pinKey": "HkXK-dGob"
          },
          "output": {
            "nodeId": "SyCekKX5X",
            "pinKey": "B1gI0urv1W"
          }
        },
        "HJbV5-Rx5X": {
          "id": "HJbV5-Rx5X",
          "input": {
            "nodeId": "BkN9WCg5m",
            "pinKey": "ByhGFAotQ"
          },
          "output": {
            "nodeId": "BJeEcZAxcm",
            "pinKey": "__out__"
          }
        },
        "HJglo24q7": {
          "id": "HJglo24q7",
          "input": {
            "nodeId": "rySkj3Nq7",
            "pinKey": "Syn8hRoFX"
          },
          "output": {
            "nodeId": "rkxAlyYQ97",
            "pinKey": "S13xLCuHvkW"
          }
        },
        "HkCI-D7q7": {
          "id": "HkCI-D7q7",
          "input": {
            "nodeId": "HJs8WDX9m",
            "pinKey": "HJjZLRdBw1-"
          },
          "output": {
            "nodeId": "SkaIf0lqm",
            "pinKey": "BkQzLCurwJZ"
          }
        },
        "HkllLnycX": {
          "id": "HkllLnycX",
          "input": {
            "nodeId": "SJ6JU3k97",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "Bkz1I2y97",
            "pinKey": "r1if8ROSDJ-"
          }
        },
        "Hko5i3Vcm": {
          "id": "Hko5i3Vcm",
          "input": {
            "nodeId": "BkN9WCg5m",
            "pinKey": "Syn8hRoFX"
          },
          "output": {
            "nodeId": "SkaIf0lqm",
            "pinKey": "BkQzLCurwJZ"
          }
        },
        "HymZpnNcm": {
          "id": "HymZpnNcm",
          "input": {
            "nodeId": "SylWThEcX",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "HJs8WDX9m",
            "pinKey": "HktZUCdrPkZ"
          }
        },
        "S17g83J5Q": {
          "id": "S17g83J5Q",
          "input": {
            "nodeId": "Bkz1I2y97",
            "pinKey": "ry3zLA_Bv1Z"
          },
          "output": {
            "nodeId": "H1eupB3y5X",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "S1BHmpEqX": {
          "id": "S1BHmpEqX",
          "input": {
            "nodeId": "Bk7qP8qJcX",
            "pinKey": "r1sfQ_6fb"
          },
          "output": {
            "nodeId": "rkGrbXIG9Q",
            "pinKey": "rJFmgJehW"
          }
        },
        "S1E-flKy97": {
          "id": "S1E-flKy97",
          "input": {
            "nodeId": "B1MWzxYk57",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "ryWzlKJ57",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "S1HWGxYJ9X": {
          "id": "S1HWGxYJ9X",
          "input": {
            "nodeId": "rybbMlFy5m",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "rygbMlF15m",
            "pinKey": "__out__"
          }
        },
        "S1mdpB3kqX": {
          "id": "S1mdpB3kqX",
          "input": {
            "nodeId": "ByMuarhy57",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "rJWuaB21c7",
            "pinKey": "__out__"
          }
        },
        "SJIZzxFyq7": {
          "id": "SJIZzxFyq7",
          "input": {
            "nodeId": "ryWzlKJ57",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "rybbMlFy5m",
            "pinKey": "S12ezv9tX"
          }
        },
        "SJrzksjkqQ": {
          "id": "SJrzksjkqQ",
          "input": {
            "nodeId": "By-zkojk9m",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "BJgGJoiJ5Q",
            "pinKey": "__out__"
          }
        },
        "SJzp9r2iFm": {
          "id": "SJzp9r2iFm",
          "input": {
            "nodeId": "rJRdWUqK7",
            "pinKey": "HyMSbqjKm"
          },
          "output": {
            "nodeId": "ByZ6cSnsFQ",
            "pinKey": "__out__"
          }
        },
        "Sk0hQIzc7": {
          "id": "Sk0hQIzc7",
          "input": {
            "nodeId": "H1xSbXUz57",
            "pinKey": "HJjEe1lnb"
          },
          "output": {
            "nodeId": "rk7zkookq7",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "SkEGkij19Q": {
          "id": "SkEGkij19Q",
          "input": {
            "nodeId": "rk7zkookq7",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "By-zkojk9m",
            "pinKey": "S12ezv9tX"
          }
        },
        "SkV5faE5X": {
          "id": "SkV5faE5X",
          "input": {
            "nodeId": "Bk7qP8qJcX",
            "pinKey": "SkrgGYLxQ"
          },
          "output": {
            "nodeId": "By2Kz6Eqm",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "SkeT5B2itQ": {
          "id": "SkeT5B2itQ",
          "input": {
            "nodeId": "BkT9B3sKX",
            "pinKey": "__in__"
          },
          "output": {
            "nodeId": "HkGEZcsFm",
            "pinKey": "H1BnItotm"
          }
        },
        "SkmR2sNcX": {
          "id": "SkmR2sNcX",
          "input": {
            "nodeId": "H1uh2sV5Q",
            "pinKey": "rkciKniYm"
          },
          "output": {
            "nodeId": "S1Gd-DXqm",
            "pinKey": "S13xLCuHvkW"
          }
        },
        "SyN_THhycm": {
          "id": "SyN_THhycm",
          "input": {
            "nodeId": "H1eupB3y5X",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "ByMuarhy57",
            "pinKey": "S12ezv9tX"
          }
        },
        "SybZ2hEcm": {
          "id": "SybZ2hEcm",
          "input": {
            "nodeId": "rkxAlyYQ97",
            "pinKey": "S1yZIA_rDJZ"
          },
          "output": {
            "nodeId": "SyCekKX5X",
            "pinKey": "B1gI0urv1W"
          }
        },
        "r1G5GT49Q": {
          "id": "r1G5GT49Q",
          "input": {
            "nodeId": "rkMkojkcm",
            "pinKey": "SkrgGYLxQ"
          },
          "output": {
            "nodeId": "BJyczT45X",
            "pinKey": "ByAIWR_UZ"
          }
        },
        "rJ6YSvcK7": {
          "id": "rJ6YSvcK7",
          "input": {
            "nodeId": "BJ5FSw9KQ",
            "pinKey": "HJJjH2MLQ"
          },
          "output": {
            "nodeId": "rJRdWUqK7",
            "pinKey": "S12ezv9tX"
          }
        },
        "rJXp2tk9X": {
          "id": "rJXp2tk9X",
          "input": {
            "nodeId": "B1y63Fy57",
            "pinKey": "HJjEe1lnb"
          },
          "output": {
            "nodeId": "BJ5FSw9KQ",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "rJihhiNqQ": {
          "id": "rJihhiNqQ",
          "input": {
            "nodeId": "H1uh2sV5Q",
            "pinKey": "SylfrDQcQ"
          },
          "output": {
            "nodeId": "HJnfSP7q7",
            "pinKey": "__out__"
          }
        },
        "rJmS7pN5Q": {
          "id": "rJmS7pN5Q",
          "input": {
            "nodeId": "rkp3CpiY7",
            "pinKey": "r1sfQ_6fb"
          },
          "output": {
            "nodeId": "r1VBbX8z97",
            "pinKey": "rJFmgJehW"
          }
        },
        "rkBPMReq7": {
          "id": "rkBPMReq7",
          "input": {
            "nodeId": "SkaIf0lqm",
            "pinKey": "B1GfLR_SPk-"
          },
          "output": {
            "nodeId": "r1ytkRgcX",
            "pinKey": "S10ecHDUW"
          }
        },
        "rkDfX8f9X": {
          "id": "rkDfX8f9X",
          "input": {
            "nodeId": "r1VBbX8z97",
            "pinKey": "HJjEe1lnb"
          },
          "output": {
            "nodeId": "Sye-CCpsYX",
            "pinKey": "HkxkiS3f8Q"
          }
        },
        "ry95fp4q7": {
          "id": "ry95fp4q7",
          "input": {
            "nodeId": "BJyczT45X",
            "pinKey": "BkjI-COLb"
          },
          "output": {
            "nodeId": "H1xSbXUz57",
            "pinKey": "rJFmgJehW"
          }
        },
        "ryrot9VcQ": {
          "id": "ryrot9VcQ",
          "input": {
            "nodeId": "SklakFJcX",
            "pinKey": "HyYh1a3LZ"
          },
          "output": {
            "nodeId": "B1y63Fy57",
            "pinKey": "rJFmgJehW"
          }
        }
      },
      "nodes": {
        "B1MWzxYk57": {
          "boundLiterals": {
            "B1oqkTnIb": "D13"
          },
          "id": "B1MWzxYk57",
          "label": "Second floor",
          "position": {
            "x": 408,
            "y": 1020
          },
          "type": "xod/common-hardware/led"
        },
        "B1Pmqn4q7": {
          "id": "B1Pmqn4q7",
          "position": {
            "x": 2346,
            "y": 816
          },
          "size": {
            "height": 51,
            "width": 238
          },
          "type": "xod/core/watch"
        },
        "B1y63Fy57": {
          "boundLiterals": {
            "B1rSeJlnZ": "255",
            "HkFBgJehW": "1"
          },
          "id": "B1y63Fy57",
          "position": {
            "x": 544,
            "y": 1020
          },
          "type": "xod/math/map-clip"
        },
        "BJ5FSw9KQ": {
          "id": "BJ5FSw9KQ",
          "position": {
            "x": 544,
            "y": 918
          },
          "type": "gabbapeople/uart-led-control/parse-number"
        },
        "BJDKG6457": {
          "id": "BJDKG6457",
          "position": {
            "x": 1122,
            "y": 1122
          },
          "type": "xod/core/pulse-on-change"
        },
        "BJeEcZAxcm": {
          "id": "BJeEcZAxcm",
...

This file has been truncated, please download it to see its full contents.

Credits

gabbapeople

gabbapeople

1 project • 12 followers

Comments