Posts: 720
Threads: 124
Joined: May 2019
07-14-2019, 10:18 AM
(This post was last modified: 07-14-2019, 10:33 AM by gReatAutomation.)
I'm currently tinkering with a GC-100-06 and hope to replace my Harmony Hubs that I currently have in use. If I am understanding this correctly, I can use practically any remote I want with the GC-100-06 (using RS232 into my TV) in conjunction with CQC to control what I am doing with the Harmony Hub?
For example, I have the following
Watch TV
- Turn on TV
- Switch input to TV
- Starting Channel is Channel 2
Watch Apple TV
- Turn on TV
- Switch input to HDMI1
Watch Security Camera
- Turn on TV
- Switch input to HDMI2
My assumption is that I can store the IR commands from my TV and from my Apple TV in CQC and then have the programming in CQC. While the Harmony Hub does the job, it is very flaky and is cloud based. Also, the programming interface is really terrible.
Another assumption is that I can use a standard universal remote to execute the program stored in CQC? This one, for example.
One thing I would like to do that is similar to what a buddy with Control4 has set up:
- Door bell ring or NVR polygon detection at front door. If TV is on, switch to picture in picture with security camera HDMI in PIP, then send IR code to NVR to display only front door camera. Or just switch to the HDMI input that shows all cameras. Could come up with a variety of these scenarios with alarm sensors as well (eg, fence gate, driveway sensor, etc.). Could also just have it display this for like 10 - 30 seconds, then go back to whatever was showing (e.g., live tv).
Posts: 720
Threads: 124
Joined: May 2019
07-14-2019, 10:51 AM
(This post was last modified: 07-14-2019, 10:54 AM by gReatAutomation.)
I found an example from someone using OpenHAB of PIP'ing the security camera feed which illustrates the above. The blog post is here, and while using OpenHAB, I think I could do the same with CQC and GC-100-6.
Posts: 720
Threads: 124
Joined: May 2019
I found another one. Blog here.
Posts: 40,483
Threads: 491
Joined: Aug 2002
You can send sequences of IR commands as required. If it takes more than a single command, then likely you'd want to create a global action that combines the commands, and possibly takes a parameter that the action will use to drive what it does. This will greatly reduce redundant grunt work.
So, for instance, a global action that sets a channel. It takes a channel number, and then looks at the first character and builds up the name of the IR command to send. Then looks at the next character and sends that one. And so forth. It's a little clunking doing that sort of logic in an action (variable length value) but it's doable. Then you can just invoke the action with a channel number and it will issue the appropriate commands, instead of doing that all over the place.
You will have to train in the commands to create 'device models' for the devices you want to control. That will require a GC-100 compatible IR learner, which is the GC IRL. When you create device models with that guy, and save them, they show up as loadable in the GC-100 driver for blasting.
Dean Roddey
Explorans limites defectum
Posts: 4,225
Threads: 365
Joined: May 2005
I did exactly this with my TV that used to have PIP. Albeit with serial and not IR, but that has no bearing on this. Camera would detect motion (no NVR in this scenario) and send a http get command to CQC. CQC would then check if the TV was on, and then turn on PIP so the image would be visible. 1m later, CQC would turn of PIP.
I did a similar thing with phone calls and Kodi. If we were watching a movie and the phone rang CQC would take the CID and put a message up on the screen (kodi message feature) and we would know who was calling and decide if we wanted to interrupt the movie or not.
Once you have the IR commands, CQC does not care what the command is (IR, Serial etc) it will just send them out as you command.
Mykel Koblenz
Illawarra Smart Home
Posts: 1,498
Threads: 142
Joined: May 2007
I have 4 different TV's and my Sony receiver controlled by 4 different GC-100's using IR.  Actually I went with an GC Itach (IP2IR) on the last one, and it works fine as well.
I found that  http://files.remotecentral.com/ is a great resource for the Pronto codes, which CQC allows you to insert for the various commands you want to use in the Client Interface.
I probably should of done what Dean suggested and did a global action, but did mine like the triggered event below: (which turns on the Cameras if motion is detected using the GC-100 - It first checks to see if DirecTV is on, if so, it pauses the programming, then switches input to the turner, changes the channel, and then after a period of time, either switches back or turns off.  As you can see, I put alot of pauses between the commands in order to make it work properly (a lot of trial and error).
Code: If
System::Equals
   P1=$(CQCVar.FrontMotion)
   P2=True
   P3=Case
If
System::Equals
   P1=$(DTV1.Game_Power)
   P2=True
   P3=Case
Devices::FieldWrite
   P1=DTV1.Game_UserCommand
   P2=Pause
   P3=True
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Antenna:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D6:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D5:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Enter:1
   P3=False
Else
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.PowerOn:1
   P3=False
System::Pause
   P1=20000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Antenna:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D6:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D5:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Enter:1
   P3=False
End
Else
If
System::Equals
   P1=$(DTV1.Game_Power)
   P2=True
   P3=Case
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Component:1
   P3=False
Else
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Component:1
   P3=False
System::Pause
   P1=2500
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.PowerOff:1
   P3=False
End
End
Posts: 720
Threads: 124
Joined: May 2019
(07-14-2019, 11:52 AM)Dean Roddey Wrote: You can send sequences of IR commands as required. If it takes more than a single command, then likely you'd want to create a global action that combines the commands, and possibly takes a parameter that the action will use to drive what it does. This will greatly reduce redundant grunt work.
So, for instance, a global action that sets a channel. It takes a channel number, and then looks at the first character and builds up the name of the IR command to send. Then looks at the next character and sends that one. And so forth. It's a little clunking doing that sort of logic in an action (variable length value) but it's doable. Then you can just invoke the action with a channel number and it will issue the appropriate commands, instead of doing that all over the place.
You will have to train in the commands to create 'device models' for the devices you want to control. That will require a GC-100 compatible IR learner, which is the GC IRL. When you create device models with that guy, and save them, they show up as loadable in the GC-100 driver for blasting.
Thanks. I'm waiting for my GC-IRL to arrive.
Posts: 720
Threads: 124
Joined: May 2019
(07-14-2019, 05:38 PM)znelbok Wrote: I did exactly this with my TV that used to have PIP.  Albeit with serial and not IR, but that has no bearing on this.  Camera would detect motion (no NVR in this scenario) and send a http get command to CQC.  CQC would then check if the TV was on, and then turn on PIP so the image would be visible.  1m later, CQC would turn of PIP.
I did a similar thing with phone calls and Kodi.  If we were watching a movie and the phone rang CQC would take the CID and put a message up on the screen (kodi message feature) and we would know who was calling and decide if we wanted to interrupt the movie or not.
Once you have the IR commands, CQC does not care what the command is (IR, Serial etc) it will just send them out as you command.
Thanks
Posts: 720
Threads: 124
Joined: May 2019
(07-14-2019, 09:53 PM)kblagron Wrote: I have 4 different TV's and my Sony receiver controlled by 4 different GC-100's using IR.  Actually I went with an GC Itach (IP2IR) on the last one, and it works fine as well.
I found that http://files.remotecentral.com/ is a great resource for the Pronto codes, which CQC allows you to insert for the various commands you want to use in the Client Interface.
I probably should of done what Dean suggested and did a global action, but did mine like the triggered event below: (which turns on the Cameras if motion is detected using the GC-100 - It first checks to see if DirecTV is on, if so, it pauses the programming, then switches input to the turner, changes the channel, and then after a period of time, either switches back or turns off.  As you can see, I put alot of pauses between the commands in order to make it work properly (a lot of trial and error).
Code: If
System::Equals
   P1=$(CQCVar.FrontMotion)
   P2=True
   P3=Case
If
System::Equals
   P1=$(DTV1.Game_Power)
   P2=True
   P3=Case
Devices::FieldWrite
   P1=DTV1.Game_UserCommand
   P2=Pause
   P3=True
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Antenna:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D6:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D5:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Enter:1
   P3=False
Else
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.PowerOn:1
   P3=False
System::Pause
   P1=20000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Antenna:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D6:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.D5:1
   P3=False
System::Pause
   P1=1000
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Enter:1
   P3=False
End
Else
If
System::Equals
   P1=$(DTV1.Game_Power)
   P2=True
   P3=Case
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Component:1
   P3=False
Else
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.Component:1
   P3=False
System::Pause
   P1=2500
Devices::FieldWrite
   P1=GC4.Invoke
   P2=E472VLE.PowerOff:1
   P3=False
End
End
Thanks!
|