[RELEASE] Russound Multi-Zone Controller Integration

@tcjennings right on the AllOff command… it was just a convenience thing.

Yep - already saw your pull request come through and like the changes… i had originally loaded the repo from the machine that’s actually hooked up so just left the directory structure, but have since realized that it’s probably better to force a manual step.

On the serialport req… I’ll need to check that cause the latest version when I built this was 2.0.1 (maybe ?) and it was failing on OSX… which is why I forced the 1.7.4… but no biggie.

Thanks!!

@tcjennings the Monoprice plugin and changes have been merged. Hope others with this multi-zone controller can benefit from your work! Thanks again!

Hi, I’m extremely new to smartapps and not a developer, so please be patient with my questions. I have a CAA66 multi-zone controller and a smartthings hub and I would absolutely love to get this up and running. I downloaded from github the .zip file and extracted the files. I edited the config.json file per the instructions on this page and I’m attempting to start the server.js process. When I do, the following error occurs:


Script:
c:…\smartthings-nodeproxy\server.js
Line: 19
Char: 1
Error: Object expected
Code: 800A138F
Source: Microsoft JScript runtime error


I’m not sure what this means, but line 19 is the first line in actual file that attempts to execute:

var express = require(‘express’);

Any ideas what I’m missing and why I’m having a problem getting this running on my Windows machine?

Thanks so much

After lots of reading and getting my self acquainted I think I’ve gotten myself closer, but I’m not home yet. First I realized that I did not have node.js installed on the machine, so I did that, and once I was there I was actually much closer. I’ve edited my config.json file, but I’m still getting errors when I run the “node server.js” command.

The first few lines say “throw new Error (“Error parsing your configuration file: [” + this.file = ']:” +^ex.message);
Error: Error parsing your configuration file: [./config.json]: Unexpected token] at file.loadsync c:…\nconf\lib\nconf\stores\file.js:160:11

then it gives an error on provider.js:63:15
and a couple of others. Any ideas what could be the problem? … missing closer

Hey @thotten - yep… step 1 is to install node.js and then install all dependent packages. If you’re getting an error with the config file, it’s probably because you haven’t removed the comments or have some invalid character… you’re config.json should look something like this:

{
  "port": 8080,
  "authCode": "secret-key",
  "rnet": {
    "serialPort": "/dev/cu.usbserial-A102MMGZ",
    "sources": [
      "Sonos",
      "Airplay",
      "Family Room",
      "Source 4",
      "Source 5",
      "Source 6"
    ],
    "controllerConfig": {
      "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"
        }
      ]
    }
  }
}

Can you share your confg file??

I figured that was it, but as best I can tell my config file matches basically what you have above. Here is what I have that I’m trying to use:

{
“port”: 8080,
“authCode”: 1228,
“rnet”: {
“serialPort”: “COM3”,
“sources”: [
“Sonos”,
“TV”,
“Source 3”,
“Source 4”,
“Source 5”,
“Source 6”,
],
“controllerConfig”: {
“type”: “discover”,
“zones”: [
{“zone”: 0, “name”: “Breakfast Room”},
{“zone”: 1, “name”: “Kitchen”},
{“zone”: 2, “name”: “Patio”},
{“zone”: 3, “name”: “Dining Room”},
{“zone”: 4, “name”: “Master Bedroom”},
{“zone”: 5, “name”: “Back Yard”},
]
}
}
}

Figured it out… I had commas at the end of the arrays which was invalid json (jsonlint to the rescue!). Getting a different error now. After it starts up it says "SmartTHings Node Proxy listening at http://0.0.0.0:8080, then it throws an error saying:

TypeError: Cannot read property ‘filter’ of undefined c:~\smartthings-nodeproxy\server.js:80:5 as FSReqWrap.oncomplete (fs.js:82:15)

Trying to chase that down now…

@thotten do you have a plugins folder in c:~\smartthings-nodeproxy\? And you did run npm install right?

I do have the plugins folder and I ran that command from the nodeproxy folder (not the plugins folder). Should I run it again from a different spot?

I’m sorry for my lack of skills here… I’m quite proficient in code design, but I’m not a syntax or nuts-and-bolts guy so I get lost quickly in the details here. Thanks for your help.

I think overall I’m reading the instructions incorrectly and I have an incomplete config.json file. The instructions state to get the service up and running you have a config.json file that looks like this:
config.json
{
“port”: 8080, // REQUIRED: SmartThings Node Porxy 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
}
}

Which clearly I don’t have per my paste before. So I guess my question here is as follows: Are there multiple config.json files in multiple folders (such as the plugins folder for the rnet settings) or is this one large config.json file and I’m simply not specifying enough details in it (such as the above in this post)? Perhaps both?

Thanks!

Your config should be fine now; there is only one config for the ST Node Proxy service and all plugin params go into this one config file… and you can leave the “notify” stuff out as it’ll get automatically detected and saved once it’s running.

Shoot me an IM so that we can send you a script to help troubleshoot the issue.

PM sent. Thanks!

All, shout out to redloro here for really helping me and for building an awesome app! Much appreciated sir!

You’re welcome!! Glad that it’s finally working.

How difficult would it be to tie this into other ST events to act as a PA system? I’m mostly curious if there is a way of using the machine connected via rs232 itself as an audio source for things like door chime noises, intruder alert, or things of that nature. Both the Russound and Monoprice seem to have 12v triggers to do a PA override of all zones to play source from the source1 audio. I think the piece missing would be instructions being sent to the source audio to play a certain mp3 or wave depending on the event trigger, but otherwise the integration seems to mostly be there to do this?

Any thoughts on if this would be possible?

Edit: I should mention I have zero coding skills or knowledge, so apologies if this came off as a flippant question that’s actually quite involved.

I’m going to have a go at getting my Monoprice zone amp hooked up to my PI with this stuff installed - I have the 6 x 4 version of the amp, but the rs232 codes are mostly the same, so hopefully @tcjennings updates will work anyway. I’ve never really used Linux before so this should be fun!

Do I need my own github account, or will I just be downloading a zip, extracting, and then going from there?

Correct - would be relatively easy to write other Smartthings mods or update the existing app/device to support triggers based on what you want it to do. The plugin I wrote for the Honeywell/Ademco alarm system ([RELEASE] Honeywell / Ademco Vista 20P Integration) integrates with the SmartThings Home Monitor, allowing you to control the alarm system from the SmartThings main dashboard.

If you want it to act as a PA, I think the biggest task will be around controlling the input source. Ie. what source do you want to use and what do you want to do with it?

You can just download the zip, extract, configure and run it!

The biggest gap in my home right now (vs having an alarm installed like ADT or Vivent or whatever) is that my wife misses the door chime noise when the door or windows open/close sensors are triggered. As do I tbh! It was a nice audio cue, and as I have my phone on silent 99% of the time, using it as my alert source isn’t ideal. Since I have speakers throughout the house, I sort of thought perhaps this would be a solution (there doesn’t appear to be a good zwave or zigbee “chime” for this purpose). It might also be nice to just use it for alerts like “as a reminder, the door has been open for 5 minutes” or something. I guess possibilities are endless, but it’s a great central place to have sound come from. My idea would be using my raspberry pi as the source, and have a script trigger various audio files sitting in a folder on the pi (.wav files 1-100, if event x, play wav file 3.wav, etc). With the PA override function, this would also need some sort of 12v trigger I think.

Perhaps this is all ultimately overcomplicated for a simple door chime.

Also, apologies for all the dumb questions, but https://github.com/redloro/smartthings/blob/master/smartapps/russound-rnet.groovy gives me a 404 - any idea why?

Edit: duh. Just had to go to https://github.com/redloro/smartthings/tree/master/smartapps/redloro-smartthings first

It looks like your readme also contains instructions on installing node - would it be safe to say that I could read the readme, and starting from a very base raspbian install, it will walk me through installing all I need to install to get this running?

@morgin that’s correct… the readme is on Github and you should be able to follow it, step by step to get things setup.