PDA

View Full Version : New Plugin: SLinkEx - IR TX/RX



SteveV
March 14th, 2007, 05:52 PM
Hi guys,

I've just finished up a new Tx/Rx Slink-e plugin for G4/G5.

Features:

IR send and receive support
support for appended data commands (input[101100])
Slink-e lowlevel command support (see Nirvis help for more info).
X10 CM11A Support

Forgot to mention that the plugin generates events that should be identical to the way the G3 slink-e plugin did. This should make for an easy G3-->G4/G5 upgrade path for Slink-e users.



Installation:

The zip archive consists of 2 files:

SLinkEx.dll
SLinkEx.xml

Download the zip file and extract the contents to your "\Program Files\Promixis\Girder\plugins" folder. Ensure that the "\Program Files\Promixis\Girder\plugins\UI" folder contains the SLinkEx.xml dui file.

Restart Girder and enable the SlinkEx plugin.

Select the "SLinkEx Devices" plugin tab and add device files for the equipment you want to control.

If you want the plugin to generate an event when you send a Slink-e IR out command, tick the "Generate Event on Slink-e send" checkbox. Likewise, tick the "Generate Event on on No IR Match" checkbox if you want the plugin to generate an event when it receives a command that isn't included in any of the loaded device files.

To use the Slink-e's lowlevel interface you'll need to add a device that points to the lowlevel.cde file (typically located in the "\Program Files\Nirvis\Device Files\Misc\ folder).

The rest should be self explanatory—if not, don’t hesitate to ask.

Please post bug reports here. I’ll upload to plugin to Promixis once a number of users report it’s working as it should.

SLinkEx 1.1 (http://vibert.us/slinkex%201.1.zip)

Enjoy!

Steve

dsmes
March 15th, 2007, 08:13 PM
So far so good. Thanks Steve for the wonderful contribution! The IR receive capability is very welcome and useful. I'll let you know if I run into any problems.

jwilson56
March 15th, 2007, 08:35 PM
Thank!!!!

I plan on testing this soon... much needed for my Now Playing port to G5.

John

SteveV
March 16th, 2007, 10:37 AM
dsmes,

Glad its working and usefull :)

John,

Let me know how you make out.


Steve

dsmes
March 18th, 2007, 09:12 AM
Steve, Perhaps you could elaborate on the IR receive functionality. When an IR signal is received by the Slinke, I see a SLinkEx message in the log display with details like: lowlevel:ir0[9000.0 -4800.0 500.0 -1700.0 500.0 -700.0 400.0 ... and so on. If I attach this event to a script, the script gets triggered on any and every received IR signal. i.e. it matches everything. Is this intended functionality?

The above experiment was with a IR signal not defined in any cde files associated with SLinkEx. If a IR signal is received that IS in the cde files, I see the same behavior. To be fair, I see subtle variations in the IR signal timing (+/- 100uS or so). I do have the "Generate Event on No IR Match" box checked for all the Slink-e devices. Is this what I'm receiving in the log (I thought they would say "No Match" or something)?

Lastly, a setup question. Do I need Girder's supplied SlinkE plugin enabled or just your SlinkEx?

SteveV
March 18th, 2007, 10:00 AM
Steve, Perhaps you could elaborate on the IR receive functionality. When an IR signal is received by the Slinke, I see a SLinkEx message in the log display with details like: lowlevel:ir0[9000.0 -4800.0 500.0 -1700.0 500.0 -700.0 400.0 ... and so on. If I attach this event to a script, the script gets triggered on any and every received IR signal. i.e. it matches everything. Is this intended functionality?

The above experiment was with a IR signal not defined in any cde files associated with SLinkEx. If a IR signal is received that IS in the cde files, I see the same behavior. To be fair, I see subtle variations in the IR signal timing (+/- 100uS or so).


Nope ;). Try removing your lowlevel device as it sounds like it may be preventing events from other devices from being generated.

Try this:

delete all devices except one, making sure that the one remaining device *does not* point to \misc\lowlevel.cde

Press a button on your remote that corresponds to a command contained in the remaining device.

You should see a girder event in the form of "devicename:command" such as "tv:mute"

Press a remote button for a command *not* contained in the device file.

If you have the "Generate Event on No IR Match" box checked, you should see irnomatch:[xxxxxxxxxx]. If the option is disabled no event will be generated.



I do have the "Generate Event on No IR Match" box checked for all the Slink-e devices. Is this what I'm receiving in the log (I thought they would say "No Match" or something)?


This is a side effect of the lowlevel device; it's reporting the ir signal it has received. Since a command *was* received, you're not seeing the "irnomatch" event. I'll take a look at this and see what I can do.



Lastly, a setup question. Do I need Girder's supplied SlinkE plugin enabled or just your SlinkEx?

You only need the SlinkEx plugin enabled.

let me know how you make out.

Steve

SteveV
March 18th, 2007, 10:34 AM
A little more info...

With most devices, I'm trimming the received eventstring at the "[" character. There main reason for this is that the slink-e often includes additional info after the device command and trimming the string results in more accurate matching.

As you might guess, however, this is a problem with lowlevel devices that generate events in the form of: "lowlevel:ir0[9000.0 -4800.0 500.0 -1700.0 500.0 -700.0 400.0 ... "

In this case any eventstring that begins with "lowlevel:ir0" is considered a match. I'll fix this in the next release.

Steve

dsmes
March 18th, 2007, 11:35 AM
With the lowlevel device deleted, I no longer receive anything. Nothing in the log and no errors. I even restarted Girder. I can still send, just not receive. When I send, I get three log entries:
13:19:49:060 3/18/2007 SLinkEx onkyo receiver:vol+
13:19:48:841 3/18/2007 SLinkEx SlinkeSend Onkyo Receiver:vol+
13:19:48:841 3/18/2007 Vol+ Slink-e ready.Doug2.gml:\AV Equipment\Onkyo\Vol+
Before I deleted the lowlevel device, I would see the lowlevel:ir0[9000.0 -4800.0 50... message as the last log entry (top of list) instead of the "onkyo receiver:vol+" shown above.

I could have swore I received the lowlevel messages before I actually added the lowlevel device to the Slink-e Device list in the plugin setup but I may have had Girder's Slinke plugin enabled at the time. ===== Edit ===== Yes, that's what it was. This is what I see with Girder's Slinke plugin enabled:
14:00:13:500 3/18/2007 SLinkEx onkyo receiver:vol+
14:00:13:500 3/18/2007 SLinkEx lowlevel:ir1[8800.0 -4400.0 600.0 -500.0 600.0 -1600.0 600.0 -500... bla bla bla
14:00:13:281 3/18/2007 SLinkEx SlinkeSend Onkyo Receiver:vol+
14:00:13:281 3/18/2007 Vol+ Slink-e ready.Doug2.gml:\AV Equipment\Onkyo\Vol+
Hope this helps.

SteveV
March 18th, 2007, 12:50 PM
I'm a liitle confused :(

From the first group of log entries It appears you're using the "Girder Slink-e" plugin to send command. If this is the case then the the log entries look fine.

Entry 1: 13:19:48:841 3/18/2007 Vol+ Slink-e ready.Doug2.gml:\AV Equipment\Onkyo\Vol+

Shows the "Girder Slink-e" send command

Entry 2: 13:19:48:841 3/18/2007 SLinkEx SlinkeSend Onkyo Receiver:vol+

Shows the event triggered by the "SLinkEx" plugin as a result of the command initiated by the "Girder Slink-e" send command

Entry 3: 13:19:49:060 3/18/2007 SLinkEx onkyo receiver:vol+

Shows a receive event triggered by the "SLinkEx" plugin.

Let's make this a little easier. Disable all slink-e plugins except the SLinkEx plugin.


Clear the log
Press a button on your remote
What log entries do you see.
Thanks,
Steve

dsmes
March 18th, 2007, 07:24 PM
When I disabled the Girder Slinke before I posted above, none of my previous devices worked- their actions were blank (because I disabled the plugin). I then created a new action by dragging the "Slink-e Send" script from the SlinkEx Actions window (on the left). On the Slink-e Send tab of that script action, I had drop-down menus from which to select the device and the commands associated with that device. The resulting script action is what I triggered (F5 Test) to generate the log events above in the first box. The second set of log events was after I re-enabled Girder's Slinke plugin.

Maybe this is how I screwed this up- I now remember installing a 3rd party Slinke plugin that adds functionality to Girders. I think it was by Hoox. So what I'll do now is disable all the Slinke plugin files I can find, except yours, and see if it works differently. Stay tuned...
---------
OK, did what I said above and this is what I get in the log when I manually send a command:
21:29:44:171 3/18/2007 SLinkEx onkyo receiver:vol+
21:29:43:953 3/18/2007 SLinkEx SlinkeSend Onkyo Receiver:vol+
21:29:43:953 3/18/2007 Vol+ Slink-e ready.Doug2.gml:\AV Equipment\Onkyo\Vol+
Still not able to receive anything. Here are the Slink-e log messages when I start Girder. Look normal?
21:36:26:843 3/18/2007 Girder FileLoaded
21:36:26:890 3/18/2007 SLinkEx Loading Device 'Sony Preamp'
21:36:26:890 3/18/2007 SLinkEx Loading Device 'Sony 400'
21:36:26:890 3/18/2007 SLinkEx Loading Device 'Sony 200'
21:36:26:890 3/18/2007 SLinkEx Loading Device 'Onkyo Receiver'
21:36:26:890 3/18/2007 SLinkEx Starting Slink-e...
....... other messages here...
21:36:24:671 3/18/2007 SLinkEx Loaded, 0.1.0
21:36:24:671 3/18/2007 SLinkEx Settings loaded. 4 devices found.
21:36:24:093 3/18/2007 SLinkEx Creating Slinkx Control

SteveV
March 19th, 2007, 03:19 AM
dsmes,

Log entries at startup look fine. You still haven't answered my original question ;)


Let's make this a little easier. Disable all slink-e plugins except the SLinkEx plugin.

Clear the log
Press a button on your remote
What log entries do you see?

Thanks,

Steve

dsmes
March 19th, 2007, 03:59 AM
Sorry I wasn't clear- I don't see anything when I press a button on a remote. Nothing in the log, Lua console, or DebugView. The Slinke Server app shows no IR being received (the counters at the top don't increment), even though the light on the Slinke itself flashes in response to the IR remote button being pressed. I tried a remote that does have a cde device set up and one that doesn't.

SteveV
March 19th, 2007, 05:16 AM
How are your IR ports configured in SLinkEx setup? If you're using the Slink-e's built-in IR receiver make sure port 0 is enabled. Here's how mine looks:

http://vibert.us/slinkex%20setup.jpg

Steve

dsmes
March 19th, 2007, 07:24 AM
Ahhhh... I'll bet you that's the problem! I normally send & receive on port 1. For testing, I'm using the built-in receiver and I bet you I don't have its box checked. I'll repeat the experiment tonight and report. Thanks for all your support, Steve.

SteveV
March 19th, 2007, 07:47 AM
Yup, that should take care of it. Keep me posted.

Thanks,

Steve

dsmes
March 19th, 2007, 05:28 PM
Great call, Steve! That was the problem! Below is a IR signal that doesn't match and two that do.
19:16:13:843 3/19/2007 SLinkEx onkyo receiver:vol+
19:16:06:609 3/19/2007 SLinkEx onkyo receiver:vol-
19:16:05:765 3/19/2007 SLinkEx nomatch:ir0(common1.cde)[10000011001000101000000101111110]
Thanks again for all your help... and the great plugin!

SteveV
March 19th, 2007, 06:24 PM
Great to hear it worked--thanks for the update.

Steve

SteveV
March 20th, 2007, 07:44 PM
A dozen people have downloaded the plugin but I've only gotten feedback from one person (thanks, dsmes). Is it safe for me to assume that it's working properly?

Steve

jwilson56
March 20th, 2007, 08:14 PM
Well I will be testing it within the next week... for transmit... have had to catch up on all this new stuff...

John

SteveV
March 28th, 2007, 10:58 AM
Version 1.0 has been released. See first post for download link.

Bug Fixes:

Fix eventstring matching for lowlevel devices. Prior to this fix, the string was purposely being trimmed at first "[" character. This was resulting in all lovlevel event strings to incorrectly return a match. Plugin now uses the entire eventstring.Steve

dsmes
March 28th, 2007, 08:06 PM
Hi Steve, Just loaded v1.0 and am probably misinterpreting how the lowlevel match should work. If I grab a logger response like "low level:ir0[9000.0 -4800.0 500.0 -1800.0 4.......] " from the logger and drag it onto a script action, I see the script get executed whenever that IR key is pressed. But the script also triggers for any other key press even though the numbers in the bracket sequence are slightly different. Shouldn't the matching pick up these differences?

Another lowlevel question- When I issue a lowlevel parread[] command to Slinke to read the parallel port, it returns:
21:56:14:164 3/28/2007 SLinkEx low level:par[0A]
where 0A is the byte value of the port. Would it be possible for your plugin to place returned values into the event string payload so I could suck it into Lua for decoding? Or is there another way to get this into Lua?

SteveV
March 29th, 2007, 08:11 AM
Hi Steve, Just loaded v1.0 and am probably misinterpreting how the lowlevel match should work. If I grab a logger response like "low level:ir0[9000.0 -4800.0 500.0 -1800.0 4.......] " from the logger and drag it onto a script action, I see the script get executed whenever that IR key is pressed. But the script also triggers for any other key press even though the numbers in the bracket sequence are slightly different. Shouldn't the matching pick up these differences?


Nope, no misinterpretation on your part. It should only trigger script/command/macro if the event string matches identically. I'll need to have another look at it.



Another lowlevel question- When I issue a lowlevel parread[] command to Slinke to read the parallel port, it returns:
21:56:14:164 3/28/2007 SLinkEx low level:par[0A]
where 0A is the byte value of the port. Would it be possible for your plugin to place returned values into the event string payload so I could suck it into Lua for decoding? Or is there another way to get this into Lua?

I'll include payload support in the next release.

Steve

SteveV
March 31st, 2007, 09:01 AM
Version 1.1 has been released. See first post for download link.

Bug Fixes:

Fix eventstring matching for lowlevel devices (again).
Fix problem with device renaming. Old device name was not unloaded from Slink-e.Add:

Low level device receive event strings now contain payloads. pld1 contains device name. pld2 contains device command or ir port depending on the type of low level event being received. pld3 contains the data.
Wildcard * event string matching for low level receive events.

Usage: Drag and drop an event string for the command/macro/script you want triggered. Edit the event string, adding a wildcard "*" for the portion of the event string you wish to ignore. The wildcard character must be located *after* the opening bracket ([).
Example 1: Event String: "low level 1:ir1[100.0 -900.0 *]" matches all low level receive event strings with the following characteristics:
Device Name (not case sensitive): low level 1
Command: ir1
Data: Any data beginning with "100.0 -900.0 "
Example 2: Event String: "MyLowLevelDevice:ir0
" matches all low level receive event strings with the following characteristics:
Device Name (not case sensitive): MyLowLevelDevice
Command: ir0
Data: Any data
Example 3: Event String: "lowlevel: par
" matches all low level receive event strings with the following characteristics:
Device Name (not case sensitive): lowlevel
Command: par
Data: Any dataSteve

dsmes
March 31st, 2007, 06:00 PM
Great job Steve! Everything working great!!!

Good idea on the wildcard matching. I've noticed a few of my IR remotes have timing that varies by +/- 100uS or so. This makes exact event string matches almost impossible w/o them. And thanks for the payloads. Now, time to play!

SteveV
April 1st, 2007, 06:54 PM
Great job Steve! Everything working great!!!

Good idea on the wildcard matching. I've noticed a few of my IR remotes have timing that varies by +/- 100uS or so. This makes exact event string matches almost impossible w/o them. And thanks for the payloads. Now, time to play!

Glad it's working well. The wildcard matching may not help with the timing variances. At present, only one wildcard instance is used and everything after the wildcard is ignored.

Steve

jwilson56
April 29th, 2007, 04:32 PM
Well Steve everything is working good so far. I have all my CDE files entered and can operate my amps fine. I do however need some help.

What is the syntax to send a command out via a LUA script? For instance if I want to send 'volup' to device 'technics' how would that look? I am a total LUA newbie.

John

SteveV
April 30th, 2007, 01:37 PM
Well Steve everything is working good so far. I have all my CDE files entered and can operate my amps fine. I do however need some help.

What is the syntax to send a command out via a LUA script? For instance if I want to send 'volup' to device 'technics' how would that look? I am a total LUA newbie.

John

Hi John,

I'm afraid the plugin dosen't have that functionality. However, you should easily be able to trigger a SlinkEx send command by doing the following:


Create a SlinkEx send command and select the device and command for the component you wnat to control
Test the command to ensure it works properly
Create a script command and enter the following in the script editor:

gir.TriggerEvent("SlinkEx.Send.Technics.VolUp", 18, 0)

--Note that the event name ("SlinkEx.Send.Technics.VolUp") can be anything you want as long as it's unique



Execute the script command (F5) and drag and drop the resulting event form the logger to the SlinkEx command you created earlier.Hope this helps,

Steve

jwilson56
April 30th, 2007, 03:35 PM
Harleydude suggested that this morning....so thats what I did and everything is working fine. I shutdown Homeseer today.... Now Playing is running via NR2 and G5.

John

jwilson56
May 8th, 2007, 06:57 AM
Well 7 days uptime for G5 with Slink-ex plugin... and all is well... nice job Steve!!

Thanks

John

SteveV
May 8th, 2007, 09:03 AM
John,

Great to hear. Thanks for the update.

Steve

m1duckett
June 28th, 2007, 09:49 PM
Thanks for the plugin!

I have not had the opportunity to try it yet... still on G3.

What kind of support does the plugin have for support of multiple zones? I plan to buy the Xantech matrix video switcher... it allows for routing of inputs to outputs. I would like to use IR zones (instead of distinct IR commands), to distinguish between the family room, basement, and master bedroom.

-Mike

SnyperBob
December 19th, 2007, 03:11 AM
Hi,
I'm having some troubles getting this plugin to work. I'll try it again and report back, but I"m having the same problem as DSMES had. When I enable the plugin and press a button on the remote, nothing happens.

When I try the built in Slink-e plugin, it works fine.

I'm using the built in IR port (IR Port 0) and have it enabled.

Anyway, I'll try it out again and report back my findings. Thanks for your work on this!

SnyperBob
December 19th, 2007, 02:06 PM
Well, after spending some more time on it, I think it might be working.

I disabled the built in Slink-e plugin and enabled Slink-ex. I am using the built in IR ports on the Slink-e so I enabled IR Port 0.

I loaded my cde file for a junk TV that I test with. I selected both of the global settings (generate no match, gen slinke read). I clicked apply and here's my results..

I clear the log, press a button and nothing shows in the log. Also, in the Slink-e Server app, the receive counter doesn't increment.

If I create an action using the Send IR, that does work with the Slink-e. ie, the Slink-e sends the IR command via girder. Also, the Send counter increments in Slink-e server. So I guess the plugin is working.

I just don't understand what the problem is. When I use the built-in Slink-e plugin, at least the receive counter increments in Slink-e Server when I shoot IR at it....

Do you guys have any ideas? This is in Girder 4

SnyperBob
December 19th, 2007, 02:22 PM
The only thing I can think is that I don't have the Slink-e software for the device itself configured correctly.

All I did was install it, ran EZ-Learn and created the cde file for my TV. I then loaded this file into the Slink-ex plugin.

I just don't understand how I can send IR via this plugin but it won't receive? Very odd, it has to be some sort of config problem, or something that I'm doing wrong.

If I enable the plugin and clear the 'Log Display', I should see entries when I point my remote at the Slink-e and hit a button, right?

tcster
February 19th, 2008, 03:40 PM
Steve? Are you still offering assistance with this plugin? I've having similar issues as SnyperBob. I don't see anything in the log. I do get an error message when Girder starts: "Error creating Slinke events dialog." Any thoughts?

Thanks!

JCTerrier
April 28th, 2009, 08:43 AM
Hi!

I am trying to download this new slink-e plugin as the one that comes with Girder does not work but when I click on the file name, I get a page that reads like this:

Application Firewall Alert


Your request triggered an alert! If you feel that you have received this page in error, please contact the administrator of this web site.


To immediately resolve this problem. You can login to your hosting control panel->security->Security guard and set the security guard to Medium Level for your domain name.

What gives?

How can I get the file?

Regards
JCT

SteveV
April 28th, 2009, 11:03 AM
Should be fixed now - give it another try.

Steve