Internal Tulip Hackathon Submissions (3/23)

We had an Internal Tulip Hackathon where all of engineering had a day to play around with Node-red on EMC.

Here is a forum for submission of projects (everything does not need to be working for you to submit something!)

4 Likes

project concept: Control a Roomba using Node RED and Tulip
team members: Sasha, Marysia
video demo: https://www.loom.com/share/241ce14c91d44288900ae4409a87da88 (demo starts at 1:37)
flow:

[
    {
        "id": "9a7c661a.0dec08",
        "type": "tab",
        "label": "Flow 2",
        "disabled": false,
        "info": ""
    },
    {
        "id": "fd4cd21f.4fdb2",
        "type": "http in",
        "z": "9a7c661a.0dec08",
        "name": "http in",
        "url": "/roomba",
        "method": "post",
        "upload": false,
        "swaggerDoc": "",
        "x": 130,
        "y": 220,
        "wires": [
            [
                "a5d0a1ec.55a43"
            ]
        ]
    },
    {
        "id": "b1f9f81c.2ce028",
        "type": "basic",
        "z": "9a7c661a.0dec08",
        "connection": "a66c329b.3291d",
        "name": "",
        "x": 550,
        "y": 220,
        "wires": [
            [
                "f4a2e119.b596c"
            ]
        ]
    },
    {
        "id": "a5d0a1ec.55a43",
        "type": "function",
        "z": "9a7c661a.0dec08",
        "name": "",
        "func": "msg.payload = msg.payload.command\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 360,
        "y": 220,
        "wires": [
            [
                "b1f9f81c.2ce028"
            ]
        ]
    },
    {
        "id": "f4a2e119.b596c",
        "type": "http response",
        "z": "9a7c661a.0dec08",
        "name": "http reponse",
        "statusCode": "200",
        "headers": {},
        "x": 760,
        "y": 220,
        "wires": []
    },
    {
        "id": "a66c329b.3291d",
        "type": "dorita980Config",
        "ip": "192.168.0.105",
        "username": "3175C62422124590",
        "password": *****,
        "name": "Roomba"
    }
]
5 Likes

project concept: Use Tulip as a TV remote
team members: Clark
video demo: https://drive.google.com/file/d/1dmGZiGZJdB02PhqvL9v2rA66wmRg3W70/view?usp=sharing
flow: (requires TV-specific config node)

[
  {
    "id": "3ede4a54.ad67e6",
    "type": "tab",
    "label": "Bravia X900H control",
    "disabled": false,
    "info": ""
  },
  {
    "id": "93d86f4e.e7f03",
    "type": "bravia-api",
    "z": "3ede4a54.ad67e6",
    "tv": "",
    "method": "appControl:1.0:getApplicationList",
    "payload": "",
    "name": "",
    "x": 440,
    "y": 320,
    "wires": [["48c3cff3.8e4f4", "4b515d5f.f524b4"]]
  },
  {
    "id": "cb16273a.8fbaa8",
    "type": "inject",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "props": [],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "x": 250,
    "y": 280,
    "wires": [["93d86f4e.e7f03"]]
  },
  {
    "id": "48c3cff3.8e4f4",
    "type": "debug",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "true",
    "targetType": "full",
    "statusVal": "",
    "statusType": "auto",
    "x": 630,
    "y": 280,
    "wires": []
  },
  {
    "id": "7f0d6410.6f662c",
    "type": "http in",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "url": "/tv/apps",
    "method": "get",
    "upload": false,
    "swaggerDoc": "",
    "x": 230,
    "y": 320,
    "wires": [["93d86f4e.e7f03"]]
  },
  {
    "id": "4b515d5f.f524b4",
    "type": "http response",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "statusCode": "",
    "headers": {},
    "x": 630,
    "y": 320,
    "wires": []
  },
  {
    "id": "b52bdf15.59dc8",
    "type": "bravia-api",
    "z": "3ede4a54.ad67e6",
    "tv": "",
    "method": "appControl:1.0:setActiveApp",
    "payload": "",
    "name": "",
    "x": 440,
    "y": 400,
    "wires": [["663c47f.ef12db8", "d25ffdac.6959e"]]
  },
  {
    "id": "1b984bcc.3a6414",
    "type": "inject",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "props": [{ "p": "payload" }],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "payload": "{\"uri\":\"com.sony.dtv.com.google.android.youtube.tv.com.google.android.apps.youtube.tv.activity.ShellActivity\"}",
    "payloadType": "json",
    "x": 250,
    "y": 360,
    "wires": [["b52bdf15.59dc8"]]
  },
  {
    "id": "ef04bd7f.1c916",
    "type": "http in",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "url": "/tv/apps/run",
    "method": "post",
    "upload": false,
    "swaggerDoc": "",
    "x": 210,
    "y": 400,
    "wires": [["b52bdf15.59dc8"]]
  },
  {
    "id": "d25ffdac.6959e",
    "type": "debug",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "true",
    "targetType": "full",
    "statusVal": "",
    "statusType": "auto",
    "x": 630,
    "y": 360,
    "wires": []
  },
  {
    "id": "663c47f.ef12db8",
    "type": "http response",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "statusCode": "",
    "headers": {},
    "x": 630,
    "y": 400,
    "wires": []
  },
  {
    "id": "fa8de3d9.56294",
    "type": "bravia-api",
    "z": "3ede4a54.ad67e6",
    "tv": "",
    "method": "avContent:1.1:getCurrentExternalInputsStatus",
    "payload": "",
    "name": "",
    "x": 440,
    "y": 480,
    "wires": [["948f8d92.aa24c", "4bd8250f.5b5bbc"]]
  },
  {
    "id": "dac306d0.c5e558",
    "type": "inject",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "props": [],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "x": 250,
    "y": 440,
    "wires": [["fa8de3d9.56294"]]
  },
  {
    "id": "1648dc6c.f60a04",
    "type": "http in",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "url": "/tv/inputs",
    "method": "get",
    "upload": false,
    "swaggerDoc": "",
    "x": 230,
    "y": 480,
    "wires": [["fa8de3d9.56294"]]
  },
  {
    "id": "4bd8250f.5b5bbc",
    "type": "debug",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "true",
    "targetType": "full",
    "statusVal": "",
    "statusType": "auto",
    "x": 630,
    "y": 440,
    "wires": []
  },
  {
    "id": "948f8d92.aa24c",
    "type": "http response",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "statusCode": "",
    "headers": {},
    "x": 630,
    "y": 480,
    "wires": []
  },
  {
    "id": "1dd175c1.447b2a",
    "type": "bravia-api",
    "z": "3ede4a54.ad67e6",
    "tv": "",
    "method": "avContent:1.0:setPlayContent",
    "payload": "",
    "name": "",
    "x": 440,
    "y": 560,
    "wires": [["9b1c9ef0.07d74", "b71fd2f7.c0e8b"]]
  },
  {
    "id": "9771f356.d7cf3",
    "type": "inject",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "props": [{ "p": "payload" }],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "payload": "{\"uri\":\"extInput:hdmi?port=1\"}",
    "payloadType": "json",
    "x": 250,
    "y": 520,
    "wires": [["1dd175c1.447b2a"]]
  },
  {
    "id": "5bd243a3.892e3c",
    "type": "http in",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "url": "/tv/inputs/open",
    "method": "post",
    "upload": false,
    "swaggerDoc": "",
    "x": 210,
    "y": 560,
    "wires": [["1dd175c1.447b2a"]]
  },
  {
    "id": "b71fd2f7.c0e8b",
    "type": "debug",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "true",
    "targetType": "full",
    "statusVal": "",
    "statusType": "auto",
    "x": 630,
    "y": 520,
    "wires": []
  },
  {
    "id": "9b1c9ef0.07d74",
    "type": "http response",
    "z": "3ede4a54.ad67e6",
    "name": "",
    "statusCode": "",
    "headers": {},
    "x": 630,
    "y": 560,
    "wires": []
  }
]

4 Likes

project concept: Use Node-RED running on Edge MC to pull Nest data and push it to the Tulip Machine API.
team members: Mason & Tory
video demo: https://drive.google.com/file/d/10sH2-iDakmPwRKwJ7udh-D-MxsGZIpoX/view
flow: (requires custom Google API node)

[
    {
        "id": "27ee7625.f47bea",
        "type": "tab",
        "label": "Flow 2",
        "disabled": false,
        "info": ""
    },
    {
        "id": "270a3ef2.f09912",
        "type": "nest",
        "z": "27ee7625.f47bea",
        "name": "",
        "x": 270,
        "y": 220,
        "wires": [
            [
                "5e90d8f1.6809d8"
            ],
            [
                "c00c2e07.7206b"
            ],
            [
                "eb054c55.375cf8"
            ]
        ]
    },
    {
        "id": "5e90d8f1.6809d8",
        "type": "tulip-machine-attribute",
        "z": "27ee7625.f47bea",
        "name": "Temperature",
        "apiAuth": "cb27e848.4a8388",
        "deviceInfo": "{\"attributeId\":\"tFk8XrNoEtYSoHh6G\", \"machineId\":\"6LZmt6k7HPsKoB92y\"}",
        "payloadSource": "payload",
        "payloadType": "msg",
        "x": 450,
        "y": 180,
        "wires": [
            []
        ]
    },
    {
        "id": "c00c2e07.7206b",
        "type": "tulip-machine-attribute",
        "z": "27ee7625.f47bea",
        "name": "Relative Humidity",
        "apiAuth": "cb27e848.4a8388",
        "deviceInfo": "{\"attributeId\":\"wAMmuoBJnAjfsJSeC\", \"machineId\":\"6LZmt6k7HPsKoB92y\"}",
        "payloadSource": "payload",
        "payloadType": "msg",
        "x": 470,
        "y": 220,
        "wires": [
            []
        ]
    },
    {
        "id": "eb054c55.375cf8",
        "type": "tulip-machine-attribute",
        "z": "27ee7625.f47bea",
        "name": "State",
        "apiAuth": "cb27e848.4a8388",
        "deviceInfo": "{\"attributeId\":\"edjpv6JvdgAK9NRES\", \"machineId\":\"6LZmt6k7HPsKoB92y\"}",
        "payloadSource": "payload",
        "payloadType": "msg",
        "x": 430,
        "y": 260,
        "wires": [
            []
        ]
    },
    {
        "id": "e56f02f8.67141",
        "type": "inject",
        "z": "27ee7625.f47bea",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 130,
        "y": 220,
        "wires": [
            [
                "270a3ef2.f09912"
            ]
        ]
    },
    {
        "id": "cb27e848.4a8388",
        "type": "tulip-api-auth",
        "name": "tulip-api-auth",
        "protocol": "https",
        "hostname": "tory.bulb.cloud",
        "port": ""
    }
]
4 Likes

project concept: take a photo using Node RED + USB webcam + EdgeMC and upload it to player
team: Sean and Nan
video demo: nodered_hackathon_webcam_demo.mp4 - Google Drive
flow: (requires an AWS S3 bucket to store the photo)

[
   {
      "id":"b640d09d.91a1c",
      "type":"tab",
      "label":"Flow 1",
      "disabled":false,
      "info":""
   },
   {
      "id":"cdfff9ec.d26d18",
      "type":"exec",
      "z":"b640d09d.91a1c",
      "command":"fswebcam -d /dev/video0 -r 160x120 --no-banner --save '-'",
      "addpay":false,
      "append":"",
      "useSpawn":"false",
      "timer":"",
      "oldrc":false,
      "name":"Camera",
      "x":280,
      "y":260,
      "wires":[
         [
            "88eee0f4.ae3b3",
            "f5f927a7.dfd418"
         ],
         [
            
         ],
         [
            
         ]
      ]
   },
   {
      "id":"8998a10b.4ba7",
      "type":"inject",
      "z":"b640d09d.91a1c",
      "name":"Take Picture",
      "props":[
         {
            "p":"payload"
         },
         {
            "p":"topic",
            "vt":"str"
         }
      ],
      "repeat":"",
      "crontab":"",
      "once":false,
      "onceDelay":0.1,
      "topic":"",
      "payload":"",
      "payloadType":"date",
      "x":110,
      "y":260,
      "wires":[
         [
            "cdfff9ec.d26d18"
         ]
      ]
   },
   {
      "id":"f5f927a7.dfd418",
      "type":"amazon s3 out",
      "z":"b640d09d.91a1c",
      "aws":"",
      "bucket":"",
      "filename":"pic.jpg",
      "localFilename":"",
      "region":"us-east-1",
      "name":"S3",
      "x":490,
      "y":200,
      "wires":[
         
      ]
   },
   {
      "id":"88eee0f4.ae3b3",
      "type":"jimp-image",
      "z":"b640d09d.91a1c",
      "name":"Encoder",
      "data":"payload",
      "dataType":"msg",
      "ret":"img",
      "parameter1":"",
      "parameter1Type":"msg",
      "parameter2":"",
      "parameter2Type":"msg",
      "parameter3":"",
      "parameter3Type":"msg",
      "parameter4":"",
      "parameter4Type":"msg",
      "parameter5":"",
      "parameter5Type":"msg",
      "parameter6":"",
      "parameter6Type":"msg",
      "parameter7":"",
      "parameter7Type":"msg",
      "parameter8":"",
      "parameter8Type":"msg",
      "sendProperty":"payload",
      "sendPropertyType":"msg",
      "parameterCount":0,
      "jimpFunction":"none",
      "selectedJimpFunction":{
         "name":"none",
         "fn":"none",
         "description":"Just loads the image.",
         "parameters":[
            
         ]
      },
      "x":460,
      "y":300,
      "wires":[
         [
            "d0935f58.8b078"
         ]
      ]
   },
   {
      "id":"d0935f58.8b078",
      "type":"image viewer",
      "z":"b640d09d.91a1c",
      "name":"",
      "width":160,
      "data":"payload",
      "dataType":"msg",
      "x":610,
      "y":300,
      "wires":[
         [
            
         ]
      ]
   }
]
3 Likes

Hey @sasha.badov - What is Roomba by the way?

Need to get myself an edge MC to connect to my nest!

@EddyA Roomba® Robot Vacuum Cleaners | iRobot®