Author Topic: Qmotion Blinds  (Read 29311 times)

Offline vas5150

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +2/-0
Re: Qmotion Blinds
« Reply #15 on: September 13, 2014, 08:36:23 am »
Cheers for the update. Very interested in how you go with rs232. Do you have a list of the commands?

Offline sameri

  • Jr. Member
  • **
  • Posts: 54
  • Karma: +1/-0
Re: Qmotion Blinds
« Reply #16 on: September 13, 2014, 09:27:27 am »
Good work mate. If you have the time and patience I know I and others would massively appreciate some kind of 'How To' guide when you're done.
SA Home Automation | Affordable Home Automation in South Australia | www.sahomeautomation.com.au

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #17 on: September 15, 2014, 02:50:43 pm »
Cheers for the update. Very interested in how you go with rs232. Do you have a list of the commands?

http://www.qmotionshades.com/support-center/tabs/manuals and pull up "Qconnect Manual"...

I attached here.  Note in the document is a link to software you can use to generate the commands (so you don't have to manually calculate length or checksum)...
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #18 on: September 15, 2014, 03:36:53 pm »
Got a shade to move via Vera on the very first try.  I installed the GC-100 plug-in, and set the port, but I really don't think I needed to do that at all.  The below code will move the shade paired to channel #1 down...

Code: [Select]
local socket = require("socket")
host = "192.168.0.123"
c = assert(socket.connect(host, 4999))
c:settimeout(5)
local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x02,0x00,0xFF))
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)
c:close()
« Last Edit: September 15, 2014, 04:05:52 pm by wilme2 »
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #19 on: September 15, 2014, 03:44:01 pm »
I uninstalled the Global Cache plug-in, and can control shades without it via the code I posted above...  To be clear, the IP is the IP of my IP2SL, so I am still using a Global Cache iTach, I just don't see the point in using the plug-in right now...

(BTW, that code was borrowed from a @RexBeckett post...)
« Last Edit: September 15, 2014, 04:05:00 pm by wilme2 »
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline Javelin

  • Full Member
  • ***
  • Posts: 146
  • Karma: +1/-0
Re: Qmotion Blinds
« Reply #20 on: September 17, 2014, 07:32:37 am »
To clarify what components are needed?

Global Cache? which one
Qconnect box? the rs232 one?

Trying to get a idea of cost involved as always with home-automation.

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #21 on: September 18, 2014, 03:54:44 pm »
What I bought:

1) Qconnect.  (List $488, I paid $415) There is only one model, but it can be connected to via RS232, RS485, or dry contact closure.
2) Global Cache IP2SL - ($91 on Amazon or slighly more for the PoE model)
3) DB9 to RJ45 (still for RS232, but the Qconnect only accepts RS232 via RJ45) cable to connect the two devices above- you have to make one - the instructions are in the Qconnect manual.  I used this $3.50 adapter to make it easy.  http://www.altex.com/Modular-Adapter-Kit-DB9-Female-RJ-45-8P8C-MA9F-8-P140560.aspx
4) two cat 5 patch cables, one to connect the RJ45 on the adapter above to the RJ45 on the Qconnect (carrying RS232) and one to connect the IP2SL to my ethernet switch.

So outside of the blinds themselves, I have about $520 plus tax into the integration...
« Last Edit: September 18, 2014, 03:57:38 pm by wilme2 »
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #22 on: September 18, 2014, 04:05:19 pm »
As I previously mentioned I am using iRule for manual shade control.  That is part of why I like using an IP2SL instead of directly connecting the Qconnect to Vera (which is theoretically possible via a USB to DB9 adapter that is then connected to the DB9 to RJ45 adapater) - I can control the blinds from multiple systems.

For automation, of course, Vera moves the blinds.  Here is my current PLEG logic to open them at first light (20 minutes before sunrise), and close a little after sundown (15 minutes after sunset):

Schedules:
Name   On Type   On Time   On Days   Random On Delay   Off After Type   Off Time   Off Days   Random Off Delay
MorningBlindsOpen   Weekly   -00:20:00r   1,2,3,4,5,6,7   None   Weekly   -00:19:00r   1,2,3,4,5,6,7   None
NightBlindsClose   Weekly   +00:15:00t   1,2,3,4,5,6,7   None   Weekly   +00:16:00t   1,2,3,4,5,6,7   None

Conditions:
Name   Repeat   Expression
BlindsNeedClosing   No   NightBlindsClose
BlindsNeedOpening   No   MorningBlindsOpen


Actions:
Actions for Condition: BlindsNeedClosing

LUA:
Code: [Select]
local socket = require("socket")
host = "192.168.0.123"
c = assert(socket.connect(host, 4999))
c:settimeout(5)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x02,0x00,0xFF))-- Channel 1 down
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x02,0x00,0xFC))-- Channel 2 down
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x02,0x00,0xFD))-- Channel 3 down
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x02,0x00,0xFA))-- Channel 4 down
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

c:close()

Actions for Condition: BlindsNeedOpening

LUA:
Code: [Select]
local socket = require("socket")
host = "192.168.0.123"
c = assert(socket.connect(host, 4999))
c:settimeout(5)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x01,0x00,0xFC))-- Channel 1 up
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x01,0x00,0xFF))-- Channel 2 up
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x01,0x00,0xFE))-- Channel 3 up
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

local sres, serr = c:send(string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x01,0x00,0xF9))-- Channel 4 up
print("Send:", sres, serr)
local data, rerr = c:receive(300)
luup.log (data)
print ("Receive:", data, rerr)

c:close()
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline Javelin

  • Full Member
  • ***
  • Posts: 146
  • Karma: +1/-0
Re: Qmotion Blinds
« Reply #23 on: September 29, 2014, 05:36:13 pm »
Thanks for the clear answers wilme2 cant wait to do this once I finish painting my arcs!

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #24 on: October 01, 2014, 05:35:03 pm »
I have been a little disappointed with the range of the QMotion remote controls/receivers.  All of my shades so far are on one floor, and there is a wall-mounted 7 channel remote right in the middle, so no more than 20-25 feet away from any of the shades - and sometimes one of the shades will refuse to respond to the command.  You have to pull the remote out of its holder and get close to the shade to make it go.  This happens maybe 25% of the time when manually moving shades.

The QConnect does a lot better, it has more power than the hand-held remotes.  But still, sometimes I will come downstairs in the morning and one of the shades is still closed.  Sadly enough the suggestion is to try again - I pulled this quote out of the Qrelay manual.

Quote
4. If the shade responds unreliably to one command, send another command
5 seconds later.
? If the transmitter is a Qconnect, this may be able to be programmed into the
system that controls it.

So I call the scene twice after a few seconds of delay... 

Still, I am happy with the investment and especially the lack of wires on automated shades, but I may have some tweaking to do to get the RF just right...
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #25 on: October 20, 2014, 02:08:43 pm »
I wanted to clean up the lua a little - didn't make sense to have to copy and paste the whole code each time I wanted to adjust the shades via PLEG, so I wrote it into a function below.  This can be used in the main Startup LUA for traditional scenes and/or in PLEGs Statup LUA for use in PLEG.

So in Startup LUA I have:

Code: [Select]
function MoveQMotionShades(shadeNum, openAmtNum)
local CommandtoSend

if shadeNum == 1 then
if openAmtNum == 100 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x01,0x00,0xFC) -- Channel 1 Up
elseif openAmtNum == 75 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x04,0x00,0xF9) -- Channel 1 75% Up
elseif openAmtNum == 50 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x08,0x00,0xF5) -- Channel 1 50% Up
elseif openAmtNum == 25 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x0C,0x00,0xF1) -- Channel 1 25% Up
elseif openAmtNum == 0 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x01,0x02,0x00,0xFF) -- Channel 1 Down
end
elseif shadeNum == 2 then
if openAmtNum == 100 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x01,0x00,0xFF) -- Channel 1 Up
elseif openAmtNum == 75 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x04,0x00,0xFA) -- Channel 1 75% Up
elseif openAmtNum == 50 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x08,0x00,0xF6) -- Channel 1 50% Up
elseif openAmtNum == 25 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x0C,0x00,0xF2) -- Channel 1 25% Up
elseif openAmtNum == 0 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x02,0x02,0x00,0xFC) -- Channel 1 Down
end
elseif shadeNum == 3 then
if openAmtNum == 100 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x01,0x00,0xFE) -- Channel 1 Up
elseif openAmtNum == 75 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x04,0x00,0xFB) -- Channel 1 75% Up
elseif openAmtNum == 50 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x08,0x00,0xF7) -- Channel 1 50% Up
elseif openAmtNum == 25 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x0C,0x00,0xF3) -- Channel 1 25% Up
elseif openAmtNum == 0 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x03,0x02,0x00,0xFD) -- Channel 1 Down
end
elseif shadeNum == 4 then
if openAmtNum == 100 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x01,0x00,0xF9) -- Channel 1 Up
elseif openAmtNum == 75 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x04,0x00,0xFC) -- Channel 1 75% Up
elseif openAmtNum == 50 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x08,0x00,0xF0) -- Channel 1 50% Up
elseif openAmtNum == 25 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x0C,0x00,0xF4) -- Channel 1 25% Up
elseif openAmtNum == 0 then CommandtoSend= string.char(0x01,0x07,0x00,0x05,0x01,0x04,0x02,0x00,0xFA) -- Channel 1 Down
end
end

print (commandtoSend)

-- Connect and Send Command

local socket = require("socket")
host = "192.168.0.123"
c = assert(socket.connect(host, 4999))
c:settimeout(5)

local sres, serr = c:send(CommandtoSend)
print("Send:", sres, serr)
local data, rerr = c:receive(5)
luup.log (data)
print ("Receive:", data, rerr)

c:close()

end

which means the call to close shade on channel 1 is as simple as:

Code: [Select]
MoveQMotionShades(1,0)
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline bcr83

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
Re: Qmotion Blinds
« Reply #26 on: October 21, 2014, 06:48:55 am »
Hi,

I am in Australia and also about to install 8 Qmotion blinds and was a little disappointed they have no Zwave solution.

The dealer did advise that there were developments coming potentially involving voice commands??

I am trying to work out if I go the Irule road with the Vera plug in and control all future Zwave devices and IR device (Split system and Qmotion)

Or - use the method included here with the DB9 to RJ45 and IP2Sl. I think I would also need the remotec device for my Split system..?

Can anyone here with experience advise what is the best route to go down??

Thanks in advance

Offline wilme2

  • Hero Member
  • *****
  • Posts: 1226
  • Karma: +29/-13
Re: Qmotion Blinds
« Reply #27 on: October 21, 2014, 02:14:19 pm »
Hi,

I am in Australia and also about to install 8 Qmotion blinds and was a little disappointed they have no Zwave solution.

The dealer did advise that there were developments coming potentially involving voice commands??

I am trying to work out if I go the Irule road with the Vera plug in and control all future Zwave devices and IR device (Split system and Qmotion)

Or - use the method included here with the DB9 to RJ45 and IP2Sl. I think I would also need the remotec device for my Split system..?

Can anyone here with experience advise what is the best route to go down??

Thanks in advance

Which plug-in are you referencing?
Long Live UI5!  (OK finally made the switch to UI7 in January 2018, and am pretty happy....)

Offline bcr83

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
Re: Qmotion Blinds
« Reply #28 on: October 21, 2014, 03:22:40 pm »
Hi,

I am in Australia and also about to install 8 Qmotion blinds and was a little disappointed they have no Zwave solution.

The dealer did advise that there were developments coming potentially involving voice commands??

I am trying to work out if I go the Irule road with the Vera plug in and control all future Zwave devices and IR device (Split system and Qmotion)

Or - use the method included here with the DB9 to RJ45 and IP2Sl. I think I would also need the remotec device for my Split system..?

Can anyone here with experience advise what is the best route to go down??

Thanks in advance

Which plug-in are you referencing?

Hi, There is a plug in available through Irule for $25 that links iIrule to an existing Vera controller allowing you to take control of z wave devices through the iIrule app as well as blinds (I am not sure on this?)

I've actually read an outside forum page where a lot of members have said the supporting modules for irule particularly Vera do not work well together, sonos etc are fine however scene creation and more detailed levels of control are not available though the plugin.
Apologies typing this on the phone!

« Last Edit: October 21, 2014, 03:30:28 pm by bcr83 »

Offline BoffinGus

  • Newbie
  • *
  • Posts: 10
  • Karma: +1/-0
Re: Qmotion Blinds
« Reply #29 on: October 22, 2014, 10:04:19 am »
I've started some work on adapting the Somfy plugin to be used with QMotion, I'm still getting my head around Luup but can't quite follow the walk through for Somfy for where the Serial Hex code goes for actions. The Somfy commands are mentioned at the beginning but don't appear anywhere later  ???

Any pointers to a basic Luup/plugin that sends serial hex commands would be appreciated.

Gus..