SkillAgentSearch skills...

Smartthings

SmartThings home automation services, apps and devices

Install / Use

/learn @redloro/Smartthings
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SmartThings Donate

Repository for all things related to SmartThings.

  • SmartThing Node Proxy
    • Envisalink Vista TPI Plugin
    • AlarmDecoder AD2USB Plugin
    • Russound RNET Plugin
    • Monoprice 6-Zone Amplifier Plugin
  • SmartThings SmartApps
    • Honeywell Security
    • Russound RNET
    • Monoprice MPR6Z
    • Blink Home Monitoring
    • Yamaha Network Receiver

SmartThings Node Proxy

Node JS proxy service for connecting SmartThings apps and devices via local LAN to anything. Built the service as I needed to connect to a Russound multi-zone controller/amplifier via RS-232 and this seemed the easiest. Extended the service to connect to a Honeywell Ademco alarm system via Envisalink TPI all on local LAN. The service accepts inbound HTTP calls from your SmartThings apps and devices and is setup to support HTTP NOTIFY callbacks to SmartThings. This allows you to connect apps and devices to things asynchronously and not require refresh or polling from SmartThings to obtain status. This also allows you to setup local LAN communication between devices and forego the SmartThings cloud service for callbacks using OAUTH. Plugin support is available, allowing you to extend the functionality of the service.

Config

config.json
{
  "port": 8080,                   // REQUIRED: SmartThings Node Proxy service port
  "authCode": "secret-key"        // REQUIRED: Auth code used to gain access to SmartThings Node Proxy
  "notify": {
    "address": "192.168.2.31",    // OPTIONAL (will be set automatically): See /subscribe route below
    "port": "39500"               // OPTIONAL (will be set automatically): See /subscribe route below
  }
}

Installation

  1. Install Node
  2. Download smartthings-nodeproxy to local folder
  3. Download and install all package dependencies:
cd ~/smartthings-nodeproxy
npm install
  1. Rename config.json.sample to config.json
  • Set port
  • Set authCode
  1. Create folder ~/smartthings-nodeproxy/plugins
  2. Copy desired plugins in to plugins folder
  3. Download and install plugin dependencies:
npm run install:<plugin>
  1. Start the server:
npm run start
  1. Open a browser and test access:
http://<proxy-ip>:<port>

Usage

Routes

/

Default root which can be used to test if the service is up and running.

/subscribe/<host:port>

Called by the SmartThings app/device to set the callback/notify host address and port. This will usually be set to the SmartThings Hub IP and port. The notify host address and port will be saved to the config file.

Plugins

All plugins located in the ./plugins folder will be automatically loaded by the SmartThings Node Proxy.

  • To include a plugin, place it in the ./plugins folder.
  • To exclude a plugin, remove it from the ./plugins folder.

Configuration data for the plugins is also stored in the config.json configuration file.

Callback / Notifications

A plugin can post data to the SmartThings Hub asynchronously via an HTTP NOTIFY. The notify() method is exposed to a plugin by the SmartThings Node Proxy, to be used for this purpose. The plugin can call the notify() method to post data back to the SmartThings Hub whenever an update or change of state is required. It is the responsibility of the corresponding SmartThings app/device to process the notification.

Generic Plugin

SmartThings Node Proxy sample plugin with corresponding SmartThings SmartApp and DeviceType. The Generic plugin was built to demonstrate how the system interacts with SmartThings and also provide a template for building new plugins, SmartApps and DeviceTypes that leverage the power of the SmartThings Node Proxy. The plugin itself, the SmartApp and DeviceType are considered barebones, with minimum functionality so highlight how the the pieces tie together. The plugin provides the following functionality, showing how the system integrates with SmartThings;

  1. Generic Plugin will listen at http://stnp_ip_address:port/plugins/generic/ AND echo back the message
  2. Generic SmartApp will route inbound messages to Generic Device AND route outbound messages to SmartThings Node Proxy
  3. Generic Device will submit a message to Generic SmartApp (parent app) to send to STNP AND update the tiles with any message received and flip the on/off switch

Envisalink Vista TPI Plugin / AlarmDecoder AD2USB

SmartThings Node Proxy plugin to connect over local lan to a Honeywell / Ademco Vista 20p alarm panel.

Supports the following zone types (Correct syntax to use in config.json is in quotes):

  • Door, Window Contact ("contact")
  • Motion Sensor ("motion")
  • Smoke Detector ("smoke")
  • Carbon Monoxide Detector ("carbonMonoxide") (Smart Home Monitor will only see it as a Smoke Detector)
  • Water Leak Detector ("water")

Supports the following actions:

  • Arm Away
  • Arm Stay
  • Arm Instant
  • Disarm
  • Chime
  • Zone Bypass

Config

config.json
{
  "envisalink": {
    "address": "192.168.1.11",    // OPTIONAL (can be set via SmartApp): Address of Envisalink Vista TPI module
    "port": "4025",               // OPTIONAL (can be set via SmartApp): Envisalink port - default is 4025
    "password": "user",           // OPTIONAL (can be set via SmartApp): Envisalink password - default is user
    "securityCode": "1234",       // OPTIONAL (can be set via SmartApp): Security code to arm/disarm the panel

    "panelConfig": {              // REQUIRED: Set this to define partitions and zones
      "type": "discover",
      "partitions": [
        {"partition": 1, "name": "Security Panel"}
      ],
      "zones": [
        {"zone": 1, "type": "smoke", "name": "Smoke Detector"},
        {"zone": 2, "type": "contact", "name": "Front Door"},
        {"zone": 3, "type": "contact", "name": "Back Door"},
        {"zone": 4, "type": "contact", "name": "Kitchen Door"},
        {"zone": 5, "type": "contact", "name": "Kitchen Window"}
      ]
    }
  }

  "ad2usb": {
    "serialPort": "COM2",         // RS-232 port connected to AD2USB
    "securityCode": "1234",       // OPTIONAL (can be set via SmartApp): Security code to arm/disarm the panel

    "panelConfig": {              // REQUIRED: Set this to define partitions and zones
      "type": "discover",
      "partitions": [
        {"partition": 1, "name": "Security Panel"}
      ],
      "zones": [
        {"zone": 1, "type": "smoke", "name": "Smoke Detector"},
        {"zone": 2, "type": "contact", "name": "Front Door"},
        {"zone": 3, "type": "contact", "name": "Back Door"},
        {"zone": 4, "type": "contact", "name": "Kitchen Door"},
        {"zone": 5, "type": "contact", "name": "Kitchen Window"}
      ]
    }
  }
}

Installation

  1. Verify that Envisalink EVL is correctly configured and functional with EyezOn.
  2. Verify envisalink.js plugin is in ./plugins folder
  3. Edit config.json
  • Remove all comments
  • Set envisalink configuration settings
  1. Restart the SmartThings Node Proxy service using the included script:
./restart.me
  1. Check log files to verify startup and connectivity to the Envisalink Vista TPI module

Russound RNET Plugin

SmartThings Node Proxy plugin to connect over RS-232 to Russound multi-zone controller such as CAA66, CAM66, CAV66, etc.

Supports by default 6 zones and 6 sources. The Russound multi-zone controller must support RNET over RS-232.

Supports the following actions:

  • Zone ON/OFF
  • Source assignment
  • Volume level
  • Bass level
  • Treble level
  • Loudness
  • Balance

Config

config.json
{
  "rnet": {
    "serialPort": "/dev/usbser",  // REQUIRED: RS-232 port connected to Russound controller
    "sources": [                  // REQUIRED: Set this to define sources
      "Sonos",
      "Airplay",
      "Apple TV",
      "Source 4",
      "Source 5",
      "Source 6"
    ],
    "controllerConfig": {         // REQUIRED: Set this to define zones
      "type": "discover",
      "zones": [
        {"zone": 0, "name": "Family Room"},
        {"zone": 1, "name": "Kitchen"},
        {"zone": 2, "name": "Living Room"},
        {"zone": 3, "name": "Patio"},
        {"zone": 4, "name": "Dining Room"},
        {"zone": 5, "name": "Office"}
      ]
    }
  }
}

Installation

  1. Verify rnet.js plugin is in ./plugins folder
  2. Edit config.json
  • Remove all comments
  • Set rnet configuration settings
  1. Restart the SmartThings Node Proxy service using the included script:
./restart.me
  1. Check log files to verify startup and connectivity to the Russound controller. NOTE: if you do not know the name of the USB serial device, check the logs after service startup as the plugin will dump a list of known/detected USB serial devices for you to identify.

Monoprice 6-Zone Amplifier Plugin

SmartThings Node Proxy plugin to connect over RS-232 to Monoprice multi-zone controller such as MPR-SG6Z (10761).

Supports by default 6 zones and 6 sources. Zones are numbered with the controller ID (1) in the 10s position. Might work on stacks with controllers 2 and 3 for up to 18 zones.

Supports the following actions:

  • Zone ON/OFF
  • Source assignment
  • Volume level
  • Bass level
  • Treble level
  • Mute
  • Balance
  • Do Not Disturb

Config

config.json
{
  "mpr6z": {
    "serialPort": "/dev/usbser",  // REQUIRED: RS-232 port connected to Monoprice controller
    "baudRate": 9600,             // REQUIRED: Baud rate supported by controller
    "sources": [                  // REQUIRED: Set this to define sources
      "Sonos",
      "Airplay",
      "Apple TV",
      "Source 4",
      "Source 5",
      "Source 6"
    ],
    "controllerConfig": {         // REQUIRED: Set this to define zones
      "type": "discover",
      "zones": [
        {"zone": 11, "name": "Family Room"},
        {"zone": 12, "name": "Kitchen"},
        {"zone": 13, "name": "Living Room"},
        {"

Related Skills

View on GitHub
GitHub Stars115
CategoryDevelopment
Updated21d ago
Forks191

Languages

Groovy

Security Score

95/100

Audited on Mar 9, 2026

No findings