Controlling a Monoprice 6 Zone Controller with Itach Flex (or IP2SL or WF2SL)

I was able to create scenes to control my Monoprice 6 Zone Controller from Vera using an Itach Flex with Serial cable and a little bit of LUA code.

I have found it to be very reliable and relatively easy to manage, I may eventually create some Multiswitch or a plug in to be more interactive but for now, atleast being able to turn on and off zone, change the input channel, with no feedback has been more than sufficient for my needs.

Here is my setup:
I have two Monoprice 6 Zone Controllers (one is a slave to the other). I have 10 zones in my house, my house is old school whole house audio, so only has only speaker wire and manual volumn dials pre-wired, there was no CAT 5 to the zones, so I don’t use the keypads (except for one that is in the room that houses the Zone Controller and is a zone room). I have velco command strips and attached a minimote next to the manual volume dial in most of the rooms so that you can turn on the speakers and change the input easily.

Next I have a Itach Flex and Serial cable and configured the Itach Flex as follows (you can also use a IP2SL or WF2SL if you have one):
Make sure to set the baud rate to 9600 on the Itach, leave all other setting to their default.

They I setup a bunch of scenes to turn on and off various speakers and set different inputs using some LUA code. Note that you do not need the ITACH plug in to do any of this, I don’t think it even works with RS232 commands so don’t worry about it. Also, make sure to reserve the IP address of your ITach on your router so that it always has the same IP address.

Here are some samples of the LUA code you will need to send commands to your Monoprice via the Itach:
Note! It is very important to call the receive command after each send command or the Itach gets jammed up waiting for you to read the response from controller, even if you do nothing with the response (I don’t do anything with the responses in my samples).
You need to replace the IP address with the address of your Itach.

Turn on a zone 1 and 2 of Controller 1 (or Master):

local socket = require("socket")
host = "192.168.1.116"
c = assert(socket.connect(host, 4999))
c:settimeout(5)
 
local sres, serr = c:send("<11PR01\r")
local data, rerr = c:receive(8)

local sres, serr = c:send("<12PR01\r")
local data, rerr = c:receive(8)
 
c:close()

Turn off all zones of Controller 1 (or Master):

local socket = require("socket")
host = "192.168.1.116"
c = assert(socket.connect(host, 4999))
c:settimeout(5)
 
local sres, serr = c:send("<10PR00\r")
local data, rerr = c:receive(8)
 
c:close()

Turn on all zones 3 and 4 Controller 2 (Slave) and set to Input 3 :
Note: the zone must be On to change the Input, Change the Volumn etc

local socket = require("socket")
host = "192.168.1.116"
c = assert(socket.connect(host, 4999))
c:settimeout(5)
 
local sres, serr = c:send("<23PR01\r")
local data, rerr = c:receive(8)

local sres, serr = c:send("<24PR01\r")
local data, rerr = c:receive(8)

local sres, serr = c:send("<23CH03\r")
local data, rerr = c:receive(8)

local sres, serr = c:send("<24CH03\r")
local data, rerr = c:receive(8)
 
c:close()

More commands for changing the volumn etc, can be found in the last few pages of the Monoprice manual.

I plugged in and configured a few keypads at the control unit to help debug that I was doing everything right, as you can only tell that a zone is on or off by looking at the lights, the keypad will tell you volume, input channel, etc. There is also a very basic app from Tiny Starship that you can use to control the zones on your Iphone if you have a Itach installed. Note the app currently only support 6 zones but the author said he is adding support for additional slaves later.

Here are some additional hacks that I use with my Monoprice 6 Zone for those that have them.

Using the PA Mode… using the PA Mode on the Monoprice can be powerful for house wide announcements. Since we don’t have a plug in, remembering the state a zone was in to reset it is difficult. Using the PA Mode, allows you to temporarily override the settings of all Zones on the contorller to Input 1. Unfortunately it is only triggerable by a 12v input on the back of the unity.

Two things you need to know about PA mode…
It is per controller (so triggering PA mode on the Master, does not trigger PA mode on the Slave you have to trigger both independently). You can configure a zone to ignore the PA. Use this sample code snippet below to set Do Not Disburb on a Controller 1 zone 2:

local socket = require("socket")
host = "192.168.1.116"
c = assert(socket.connect(host, 4999))
c:settimeout(5)
 
local sres, serr = c:send("<12DT01\r")
local data, rerr = c:receive(8)

 
c:close()

Note that zones in Do Not Disburb mode cannot be changed via RS232 commands (on/off, volumn, etc) once PA mode is triggered so they will not be interrupted by the PA mode but are locked on there current settings until PA mode is over. They do still respond to Keypad commands during PA so seems to be a limitation of the RS232 interface.

So how do you trigger PA mode? I use two tricks. The first is that I used an un-used zone on my slave controller (zone 6) and wired a mono-cable from Zone 6 out to PA in on the Master. This makes it so that I can trigger PA mode on Controller 1 (which has all my major in house speakers) by turning on Zone 6 on and off on my slave. (note that you can’t do this on the same Controller… as once you turn on the un-used zone, PA mode will prevent you from turning the Zone off and there by turning off PA mode). If you only have 1 Controller, don’t have an open zone, then you can use my other trick.
I had an un-used z-wave plug in module, and I purchased this https://www.amazon.com/gp/product/B00068U44I/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 it has the right size tip and can be set to 12v. So I toggle the z-wave to turn on and off PA on my slave. Down side… this particular wall wart has a capacitor in it, so when you turn it off, it takes a few seconds for it to actually stop powering the PA port, so there is a delay in returning to original programming.

So for my config I use the Wall wart to power the PA on the Slave Controller, that will trigger Zone 6 on the Slave, which then triggers the PA on the Master. I do this if I need all speakers to be powered on. If I only need my main speakers to be on, then I just power on Zone 6 on the slave, to PA only the Master.

If you are not using the keypads, would you sell one to me? I have a broken one, and need a replacement, but Monoprice doesn’t sell replacement keypads.