MLInsteonPLM Plugin

From Cinemar Wiki
Jump to: navigation, search


MLInsteonPLM is a plugin that supports the SmartHome Insteon / X10 PLM serial controller.

Discussion and Updates forum thread: [MLInsteon Beta Forum]

Software Requirements

Mainlobby3 Server 3.0.389 (or newer)

MainLobby3 Client 3.0.107 (or newer)

MLInsteonPLM Plugin 3.0.309 (or newer)

MDAC 2.8


If you are installing to a pre Vista PC, you will need to have MDAC Version 2.8 installed on your MLServer PC prior to installation. You can check your current MDAC version by using:

MDAC Check Utility Download

If you have an earlier version you can get MDAC Version 2.8 at the following link:

MDAC Download

General hardware setup for Insteon Lighting when using the PLM Controller

Purchase a SmartHome PLM:


Plug the serial cable from the PLM into an unused PC serial port. This serial port cannot be in use by any other software. Disable that software if it exists.

Plug the PLM into the powerline. Ideal locations are away from any other power line controller, and not in a power strip (plug into wall directly).

Highly recommended is to also use SmartHome RF Access Points to bridge your home's electric panel phases so that the Insteon signals from the PLM can "jump" (via RF) from one phase to the other. This allows the Insteon signal to control devices on both phases. Install the Access Points as per the instructions that it ships with.

If you find a particular Insteon device doesn't work, you may want to also install SmartHome powerline filters on suspect appliances that may be "sucking" the powerline communications. Examples might include microwave ovens, PC UPS's, or devices with motors like refrigerators or washing machines. To isolate, disconnect these devices until the communcations improve. Once found, plug that device into the appropriate Insteon filter.

Install the Insteon wall switches / plug in modules as per the instructions it ships with, following all safety precautions. However, do not link switches or the PLM as per the instructions that ship with the devices. The Cinemar PLM driver does this linking for you. This saves signficant installation time, and labor. This also ensures that the links are established in the way the Cinemar software requires.

Software installation

1) Shut down MLServer3

2) Download and run the MLInsteonPLM_plugin_setup.exe file on the primary MLServer3 PC that is physically connected to the lighting hardware.

3) Launch MLServer and right click on the MLInsteonPLM plugin and click Settings.

5) Configure the plugin to your com port that you are plugged into on the PC on the Connection Tab. Make sure that this comport is not being used by any other software. Click Connect and if all is plugged in, you should then see the PLM Information filled in. You can also check "Connect on Startup" so that the plugin will auto connect to the PLM when MLServer is restarted.

Note that the plugin will attempt to connect to the PLM even if in "Disconnect" mode if a command is sent to the MLInsteonPLM plugin.

6) Click on the Devices Tab and Click Add Device. Enter the devices Alias, it's Address and Location name. Address for an X10 device would look like "L10". Address for an Insteon device would look like "03.45.AE". If the X10 device is a two way device, click the 2-Way check box. This will tell the plugin to expect responses from the device on state.

7) The Keypad checkbox should be selected if the device is a KeypadLinc.

8) The FastVar checkbox allows for immediate variable updating for update speed. The drawback is that it circumvents the MLServer3 Event processor, so no Automation Events will be triggered for this device if the FastVar box is checked, and the device changes State.

The MLInsteonPLM software installation installs MLInsteonPLM.dll to the plugins directory, MLInsteon.mdb to the data directory and vbalColumnTreeView6.ocx to the system directory.

Connection Tab

Plm connection.jpg

PLM Information Section

Select the com port of the PLM and click Connect (assuming the PLM is physically connected). Within a few seconds, you should see the PLM's address and firmware level.

Clicking the Disconnect / Connect button is the same as unplugging / plugging the PLM into the wall outlet.

Start Up Settings Section

Click Connect on Startup so that the PLM connects when MLServer starts the plugin up.

Click Update Device Links on Startup if you want the PLM links to update the Links tab on MLServer startup.

Click Poll Insteon devices on startup and Poll all 2-way devices on startup.

Current PLM Mode Section

Automatic Linking:

Disables automatic linking when the user pushes and holds the SET Button (see Button Event Report49).

Monitor Mode:

Normally, the PLM will only send the host an INSTEON Standard Message Received20 or INSTEON Extended Message Received21 notification when it receives an INSTEON messages directed specifically to the PLM. There are three possibilities:

1. The PLM received a Direct message with a To Address matching the PLM’s INSTEON ID,

2. The PLM received an ALL-Link Broadcast message sent to an ALL-Link Group that the PLM belongs to as a Responder (i.e. the message’s From Address and ALL-Link Group Number match a Responder entry in the PLM’s ALL-Link Database), or

3. The PLM received an ALL-Link Cleanup message with a To Address matching the PLM’s INSTEON ID and the message’s From Address and ALL-Link Group Number match a Responder entry in the PLM’s ALL-Link Database. In Monitor Mode, the PLM will also notify the host of received INSTEON messages that contain a From Address matching any INSTEON ID in the PLM’s ALL-Link Database, even if the To Address does not match the PLM’s INSTEON ID or the PLM does not belong to an ALL-Link Group associated with the message In other words, if the message originator is in the PLM’s ALL-Link Database as either a Controller or Responder, the IM will pass the message to the host even if it is not specifically directed to the IM. In this way you can monitor messages between other INSTEON devices as long as the sender is in the IM’s ALLink Database.

Please be aware that the PLM may not always detect this traffic. If the message originator and addressee are close to one another and the PLM is farther away, the message originator may not cause the message to hop enough times for the PLM to hear it. To know for sure what an INSTEON device’s status is, you can usually query it directly using an appropriate INSTEON Direct Command

Automatic LED:

Shuts off the led on the PLM

Deadman Feature:

Disable host communications Deadman feature (i.e. allow host to delay more than 240 milliseconds between sending bytes to the IM).


Reset PLM: restores PLM back to factory configuration. NOTE: all links in PLM are lost when the plugin is connected to the PLM and this button is pushed.

Get PLM Configuration:

Pulls the Current PLM Mode info from the PLM.

Set Default Mode: Sets Automatic Linking to "Enabled", Monitor Mode to "Disabled", Automatic LED to "Enabled" and Deadman feature to "Enabled".

Set Monitor Mode:

See Description above.

Devices Tab

Plm devices.jpg

Alias = Your common name for the device. Should be a unique name.

Address = The X10 address ("A1") or Insteon address ("01.60.C3")

Location = A name that helps you to remember where the device is.

Status = Last know status of the device. Can be updated when sending a command, or by the device updating the plugin (2-way devices only). You can click on this field to toggle a On / Off.

Level = Last know dim level. You can click on this field to select a new dim level.

2-Way = Check this if the device reports back it's state. Insteon devices typically will "self check" this box after you add the Insteon device address.

Keypad = Check this if the device is a KeypadLinc device. If you select the device row and click Device Type button, the Keypad checkbox will auto check if it is found to be a Keypadlinc device. To assign commands to each Keypadlinc button, double click on the Keypadlinc device line and a new window will appear where you can assign MLServeCmds to each button.

For a six button Keypadlinc:

The large top button is number 1

The next row is 3 and 4

The next is 5 and 6

The off button is 1 again

FastVar = Updates mlserver variables quickly with state change. But, doesn't update automation events if checked.


Fast On - Select a Device line, and click Fast On button to turn device to full on and disregard any ramp rates that the device may have been programmed with.

Fast Off - Select a Device line, and click Fast Off button to turn device to full off and disregard any ramp rates that the device may have been programmed with.

Bright - Select a Device line, and click Bright. The device will go bright approx. 6% per each click.

Dim- Select a Device line, and click Dim. The device will dim approx. 6% per each click.

Ramps - Used for Insteon devices to set a Ramp rate for an device. Set the max brightness and a transition rate. Click OK. You will then be instructed to reset the device at the device for the new Ramp valus to take effect.

On Level - Used for Insteon devices to set the On Level setting. Select a Device line, and click On Level. A new window will open where you can select the on level.

Status - Used to update the devices status, if the device supports status updates.

Controls - Select a Device line, and click Control button. This will open a new window where you can put an MLServeCmd that will fire whenever the plugin gets a request to process that device's command.

Device Type = select the device and click Device Type button to pull from the Insteon device the type of device that it is.

Other Info = select the device and click Other Info button to pull from the Insteon device and attempts to get ramp rate, on level and x10 info from insteon devices (highly dependent on install network).

Add Device = click to enter a new device line.

Delete Device = select the device and click Delete button to delete that device

Export / Import

The Export button saves your device setup to Lighting_Devices.xml/data and commands.xml in the MLServer\data directory. The Import button will update your blank database with settings previously exported. Note that Import replaces your existing devices. It does not append to your existing device list.

Links Tab

Plm links.jpg

Manual Link

Link type dropdown

Select Slave / Master / Auto / Delete choices. Use Slave to link devices to the PLM during initial installation. The PLM needs to be the slave device and the switch, the Master.

To Link a new Insteon switch: Click the switches top button and hold for 10 seconds (until it starts blinking). Then, go to the MLInsteonPLM Plugin and push the Start Linking button while Link Type = Slave and you have selected a Group that that switch should belong to. Click Stop Linking. You should now have a linked switch to the PLM. For the second switch, repeat starting with the top button held for 10 seconds...

Group dropdown

Select a Group that you want to associate the device to post linking.

Start Linking

Click this button to have the PLM start linking mode.

End Linking

Click this button to have the PLM end linking mode.

Manage Links

Delete Link

Click a Link ID and then click the Delete Link button to delete that link.

Refresh Link Database

Click this button to extract the current link database from the PLM. If you have already setup links in the PLM using MLInsteonPLM plugin or other Insteon link management software, just double click on the ID and the device will be added to the MLInsteonPLM Devices table (much faster than redoing all links).

You may find that if you manually added a device via keypunching the Insteon address into the address field as well as the Alias, that if you then Link the device to the PLM that the Alias doesn't show up. Just Refresh Link Database and the Alias name will appear.

Automatic Link

Reserved for future purposes. Hopefully to force a link into a switch, if the hardware supports this function.

X10 Devices Tab

Plm x10.jpg

When an X10 message is received on the powerline, it's address is checked in the table to let you monitor which devices addresses have been received.

Response Tab

Plm response.jpg

Devices that has not responded Address Retries

Devices that have timed out

Clear Timed Out Devices Button

Events Tab

Plm events.jpg

Here you can see the detailed traffic of what is being sent from the Plugin, and what is received by it. Helps in debugging issues. You can Clear the log, Start / Stop logging or copy the complete log into the Windows clipboard for pasting into a new document.

Managing Links - two methods

1) Set at the keyboard and link

2) Start linking and then walk to devices and press on paddle for 10 secs

Either will assign group

Special Hardware Support

Version 3.0.225 adds support for ControLinc tabletop controller. Not full support as hardware does not comply competely with Insteon protocol, but you can now send an MLServeCmd when a ControLinc button is pushed. CL button must be Linked to PLM for the PLM to see these responses and be manually configured as a "Keypad".

Once CL is declared a Keypad, double click on that line entry in Devices Tab and a configuration window will open where you can associate the first 5 CL channel buttons to MLServeCmds.

Linking Insteon devices to MLInsteonPLM

For ease, start linking with KEYPADLINCS and REMOTELINCS. The idea is that various keypadlincs and remotelincs buttons often share the same MASTER so you clear these up in the beginning which also helps to define groups later on.

- Open the plugin and ensure the PLM is connected.
- Select LINKS tab – the table should be empty confirming the system is fresh
- Select MASTER under MANUAL LINK and choose GROUP 1
- Press the paddle, button or toggle of the Insteon device until confirmation is made either by the Insteon device or the plugin.
- Continue to every device and the devices buttons (all 6-buttons on a remotelinc or a keypadlinc configured as 6-button or all 8-buttons on a keypadlinc configured as a 8-button)

Caution. It might be a good idea to take things slow. Tackle one group at a time. As an example: 1-light controlled by a master togglelinc (SW1) and a keypadlinc button 3 (SW2-3) and a remotelinc button 6 (SW3-6).

- When all devices have been added, press END LINKING.
- Now change from MASTER to SLAVE – leave on GROUP 1
- Press the paddle, button or toggle on one device for 10-seconds.
- Once confirmation that the device is in linking mode – usually the LED flashes – select START LINKING and wait a few seconds until you see a device added in the table then click END LINKING.
- Repeat for each device.
- Now re-select MASTER and choose a GROUP for this link. You will need to repeat the same steps above except with a unique group number selected – think of it as a link to all devices that will respond to a GroupON command. As in the “Caution” example above, SW1, SW2-3 and SW3-6 all need to be in the same group.
- Once you have all devices as “master” in group 1 and your unique group AND the PLM as “master” in group 1 and your unique group…you are almost done.

Note: Outletlinc’s, Appliancelinc’s and Lamplincs do not need to be linked as a master since they cannot issue a command to the network.


Now the MLInsteonPLM plugin should be working and by sending a GroupOn or GroupOff to the unique group you created, will cycle the load and update all LED’s. But there is one more hurdle and that is to update the devices when one non-master device is physically operated. To do this, you need to use RULES.

Below section may not be needed for MLInsteonPLM version 3.0.335.0 and newer. Possibly still needed for Keypadlincs and Remotelincs.

You need to make a rule to monitor any slaved device. This includes keypadlincs/remotelincs and all 6 or 8 buttons. I would suggest this variable:


If the device is a keypadlinc or remotelinc, then the variable will be:


But watch for button 1 – that button on a keypadlinc or remotelinc will not be created and instead will be as any device without the “button_#”.

Anytime a button is physically pressed, MLInsteonPLM will update that button only. With a rule set to fire on “changes value”, you would then issue a status update. I also added a PAUSE in my rules to ensure the Insteon network is updated via its own LINKS. Back to the example above, here is a typical rule:

Whenever mllighting_device_SW2-3_numeric_value changes value Macro|MLPause~1!Lighting.SW1|LoadLevel_Status


Whenever mllighting_device_SW3-6_numeric_value changes value Macro|MLPause~1!Lighting.SW1|LoadLevel_Status

Now sending a GroupON or GroupOff will turn the light on and update the Insteon LED’s. Also, the variables for the devices will be undated in MLS. Physically operating any of the devices will control the master and thereby the load (or light) because of the INSTEON links. Also, LEDS will be matched..and the RULES will force MLInsteonPLM to refresh the status of the devices that changed.

Supported MainLobby3 Server Commands

Follows the MLServer3 Family Command Syntax:



ID/Alias = The Alias or ID# of the device you wish to turn on. You can use both the ID# (see the MLInsteonPLM plugins Settings Device Tab - the leftmost column has the ID#). The Alias is a unique (to Lighting plugins) name for the Insteon / X10 device (example: MasterBedroomRecessedLights). The default scenes provided use ID# so that the scenes can be used with minimal adjustment. You can later change this to Alias name, so that the device is easier to remember and specific to your setup.


Turns the specified light on. If the level is included in the command the switch will go on to that level. If the level is not included the switch will go to its full on level. (Level is optional) defaults to 100% if no Level entry


Turns the specified light off.


Toggles the light on or off based on its current status.

ex: Lighting.0002|SwitchPower_Toggle


Brightens the specified light by approximately 3%.


Dims the specified light by approximately 3%.


Turns the specified light on to the lights preset dim level. By default this is full on.


Turns the specified light off ignoring the ramp rate.


Returns the status of the requested light to an MLServer variable.


SendX10 is only functional when using an Insteon PLC?.

Allows user to send X10 commands to devices whether they are in the MLLighting Database or not.

Group Commands|GroupOn

Turns the specified light group on (as defined in the Alias).|GroupOff

Turns the specified light group off (as defined in the Alias).|GroupFastOff|GroupFastOn|GroupDim|GroupBright

Variables Created

mllighting_boat house lights_address=00.1E.AA

mllighting_boat house lights_alias=Boat House Lights

mllighting_boat house lights_device_type=SwitchLinc V2 Dimmer 600w

mllighting_boat house lights_id=0032

mllighting_boat house lights_last_status_change=3/6/2008 7:58:52 AM

mllighting_boat house lights_numeric_value=0

mllighting_boat house lights_room=Boat House

mllighting_boat house lights_status=OFF

mllighting_boat house lights_value=0%

Another Example:

Once the status is known (I locally dimmed the switch) these variables are created:

mllighting_device_0008_device_type=SwitchLinc V2 Dimmer 1000w



mllighting_device_0008_last_status_change=9/7/2008 2:32:45 PM





mllighting_recessedstudy_device_type=SwitchLinc V2 Dimmer 1000w


mllighting_recessedstudy_last_status_change=9/7/2008 2:32:45 PM









New Feature Requests

Release Notes

07/22/2008 v 3.0.335.0

Added Update Status on detection of a local DIM command so that the plugin updates MLServer variable without having to have MLServer Rules to essentially do same.