Jump to content

Using KeypadLinc to trigger events


Recommended Posts

I'm trying to create a power on/off sequencer for my church sound system.  I'm using the Insteon 8-button KeyPadLinc (2334-224 Rev 7.7) to initiate events in my ISY-944i controller (firmware version 4.3.26). Using the keypad as factory configured, only buttons A, B, and C will generate an event.  Buttons D-H will show a change in current state when pressed but do not create an event. I've confirmed this behavior with the Administrative Console event viewer (Tools | Diagnostics | Event Viewer).  My event handler looks like:

 

if
   Control 'PowerAmpKeys - E' is switched On
then
   . . .

 

I've read the user manual on the keypad and scoured the forums but could not find any mention of differences in buttons A-C versus D-H.  Can anyone explain this behavior and provide a remedy?  Thanks in advance.

Link to comment

Thank you all for your recommendations.  I performed another factory reset on the keypad device.  I had done it before but incorrectly. This time, after the reset, all buttons performed consistently but I had a communication problem with the device.  I deleted the keypad device from the ISY device list and then re-added it.  Now all the buttons are creating ON events.

 

I believe that my problem was a device naming conflict between the keypad device and my programs. I had renamed the device several times to get the correct logical connotation but might have screwed up somehow (the joy of newbie-hood).  I observed after the reset/reinstall described above the name mismatch as follows:

 

'PowerAmpKeys - E'    the name of the device
'PowerAmpKeys- E'     the element in my conditional statement

 

Notice the difference with the missing space character.  When I updated my statements to the correct names things started working. I can't explain how I got the name mismatch since programming is menu driven but there might have been some thrashing about as I got started.

 

My end goal is to automate the power on/off sequence of my church's audio systems.  The equipment stack has four stable states:

0 - AllOff (all equipment is powered off)
1 - Console (the audio mixing console and related equipment rack are powered on)
2 - Monitor (the console, preamps, and musician's monitor power amps are powered on)
3 - Sanctuary (the console, preamps, monitor amps, and sanctuary main amps are powered on)

 

The equipment must power on in ascending state order and power down in descending order.  There are various time delays needed to allow equipment to stabilize before energizing down-stream equipment.  To accomplish this I intend to have a pushbutton to request each of these stable states.  A state machine will implement the logic to automate the sequencing and to interlock against wrong sequencing.  The user should be able to push any button in any order without violating the proper sequence. 

 

I'm using four of the KeyPadLinc buttons to set the variable 'i.audioRequestedState' to a value of 0 to 3 corresponding to the above stable states.  For example:

 

RequestConsole - [iD 000F][Parent 0006]

If
        Control 'AudioKeypad - E' is switched On
 
Then
        $i.ccacAudioRequestedState  = $i.CCAC_AUDIO_STATE_CONSOLE
        Run Program 'AudioUpdateState' (Then Path)
 
Else
   - No Actions - (To add one, press 'Action')
 

The state machine will compare the audioRequestedState and audioCurrentState variables and trigger the proper actions to move to the requested state by activating controlled on/off outlets.  I believe the complexity of the state logic is best implemented in programs as compared to scenes. 

 

Again, thank you all for your quick and thoughtful responses.

Link to comment

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...