2 panels, 2 instances of AD2USB plugins

Posted on
Wed Dec 27, 2023 10:06 am
ab39870 offline
Posts: 40
Joined: Dec 09, 2015

Re: 2 panels, 2 instances of AD2USB plugins

Thanks for the log data. From this line in your panel messages log it's clear the Alarm Decoder is working properly and sending you the Keypad Message for Zone 30. So we can rule that out as an issue.

Code: Select all
2023-12-27 08:35:01.509 | [0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "


That type of message above is a "Keypad Message" or KPM message. These are the message types the plugin reads and processes to change the state of the device, in your case Zone 30.

I'll recap that we're dealing with 5 log files: The Indigo Event Log, two different plugin.log files for each of your two instances, and two different panelMessage. log files for each of the instances. The next step in getting to the bottom of this is to see how the plugin processed the message above by looking at the plugin.log file for the appropriate instance that contains the Garage Door Zone 30.

Hopefully, you have verbose logging turned on for the plugin.log per the attached image for the instance of the plugin that has this Zone 30. If not, turn it on and fault the Garage Zone 30 again. Because you have two instances, you'll have two plugin.log files in their respective directories. Based on what you've sent me so far, I think the instance with the Zone 30 Garage is named "AD2USB Alarm Interface LH". So we want to look at that instance's plugin.log file. It will be located "/Library/Application Support/Perceptive Automation/Indigo 2023.1/Logs/YOUR_ID_OF_THE_LH_INSTANCE/plugin.log". I don't know the ID of your LH instance so hopefully that is clear and you'll know how to find it.

The relevant sections are described below and this is similiar as the post I made yesterday.

Once you find the correct plugin.log it's often easiest to make a copy the file and open the copy in TextEdit or a similar editor and simply remove the unwanted lines. To find the first line of the log that we are interested in you can look for three things. The first is the log entry string "Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes". This is the beginning of the code that starts to process a fault message on the keypad (e.g. AlarmDecoder). The second thing is the date/time. Take note of the time you opened your garage door and then look for that start time in the log and that string (approximately 2023-12-27 08:35:01 per the Panel Message log) . The third part is the keypad message string from above: 2023-12-27 08:35:01.509 | [0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30 "

The last line of the relevant log entries is easier to find. It will be the first line after the FAULT Keypad message line you just found that contains the text: "Plugin.panelMsgRead: completed". An example is below:

Code: Select all
2023-12-25 19:12:46.343 DEBUG   123145428803584 Plugin.panelMsgRead: completed


Attach or post the relevant log entries and we can see how that instance is processing that KPM message and get to the bottom of this.
Attachments
verbose_logging.png
verbose_logging.png (47.08 KiB) Viewed 894 times

Posted on
Wed Dec 27, 2023 10:25 am
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

Will do. I’m away from home at the moment but will send the log entries later this afternoon. (EST)

Posted on
Wed Dec 27, 2023 1:44 pm
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

Does this help? It is a snippet from Indigo 2023.1/Logs/com.berkinet.ad2usbLH/plugin.log

Code: Select all
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b'[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "\r\n'
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "

2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.panelMsgRead: Read ad2usb message:'[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "\r\n'
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.__init__: received message:[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.__processMessage: read KPM message type - starting parsing
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.parseMessage_KPM: keypad bitmask is:00000f10
2023-12-27 14:34:27.479   DEBUG   123145529036800 Plugin.parseMessage_KPM: KPM message parsed:{'isValidNumericCode': True, 'panelState': 'Fault', 'homeKitState': 'disarmed', 'isBypassZone': False, 'isPressForFaultMessage': False, 'isAlarmTripped': False, 'isCountdown': False, 'isFault': True, 'isCheck': False, 'doesMessageContainZoneNumber': False, 'doesMessageZoneMatchNumericCode': True, 'bitField': '[0000000100000000----]', 'numericCode': '030', 'rawData': '[f700000f1030000008020000000000]', 'alphanumericKeypadMessage': '"FAULT 30                        "', 'keypadFlags': {'READY': 0, 'ARMED_AWAY': 0, 'ARMED_HOME': 0, 'BACKLIGHT': 0, 'PGM_MODE': 0, 'BEEPS': 0, 'ZONES_BYPASSED': 0, 'AC_ON': 1, 'CHIME_MODE': 0, 'ALARM_OCCURRED': 0, 'ALARM_BELL_ON': 0, 'BATTERY_LOW': 0, 'ARMED_INSTANT': 0, 'FIRE': 0, 'CHECK_ZONE': 0, 'ARMED_STAY_NIGHT': 0, 'ERROR_REPORT': '-', 'ADEMCO_OR_DSC': '-'}, 'zoneNumberAsInt': 30, 'isSystemMessage': False, 'keypadDestinations': [16, 17, 18, 19, 28], 'zoneFromMessage': 30}
2023-12-27 14:34:27.480   DEBUG   123145529036800 Plugin.updateLastADMessageOnKeypads: called
2023-12-27 14:34:27.480   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:27.491   DEBUG   123145529036800 Plugin.updateLastADMessageOnKeypads: Updating lastADMessage on Keypad Device:LH Alarm Panel with new lastADMessage:2023-12-27 14:34:27
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.panelMsgRead: KPM message seen:<AlarmDecoder.Message object at 0x10bfc6ec0>
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.panelMsgRead: raw zone type is:[000
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.panelMsgRead: Panel Message: Before:
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.panelMsgRead: Panel Message: Current:[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "

2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.panelMsgRead: Panel message:[0000000100000000----],
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.isValidKeypadAddress: valid keypad address:18
2023-12-27 14:34:27.492   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:27.504   DEBUG   123145529036800 Plugin.getKeypadDeviceForAddress: found keypad match for address (as int):18
2023-12-27 14:34:27.505   DEBUG   123145529036800 Plugin.panelMsgRead: Found dev:LH Alarm Panel, id:1559036540
2023-12-27 14:34:27.505   DEBUG   123145529036800 Plugin.setKeypadDeviceState: called with name:LH Alarm Panel, id:1559036540, new state:Fault
2023-12-27 14:34:27.505   DEBUG   123145529036800 Plugin.panelMsgRead: msgKey is:FAULT, msgTxt is:"FAULT 30                        "
, msgBitMap:0000000100000000----, msgZoneNum:30, bMsgZoneNum:30, validBypassZone:True
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.panelMsgRead: number of zones bypassed - current:0, last:0
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.panelMsgRead: calling basic
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.panelMsgRead: Zone:30, Key:FAULT
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.panelMsgRead: ready to call basic msg handler
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.basicReadZoneMessage: called with rawData:[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "


By the way that Garage Door is showing the correct state now, along with some of the other Zones.

Screenshot 2023-12-27 at 2.43.13 PM.png
Screenshot 2023-12-27 at 2.43.13 PM.png (342.1 KiB) Viewed 863 times

Posted on
Wed Dec 27, 2023 3:34 pm
ab39870 offline
Posts: 40
Joined: Dec 09, 2015

Re: 2 panels, 2 instances of AD2USB plugins

The snippet is good. It's most of the event, but not all. Can you also send a 100-200 lines after the end of what you posted?

The snippet shows the FAULT message being read successfully, and the keypad device state being update. It will probably show the device (Zone 30) state being updated too since you're reporting it starting to work.

There is a plugin setting, under Configure : "Clear all zone devices on plugin restart". Enabling this setting, and then Disabling and (re)Enabling the plugin will force all devices to "Clear" state. It assumes there are no "Fault" states on startup. Is it possible none of these devices have Faulted since they were created?

Posted on
Wed Dec 27, 2023 3:51 pm
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

Can you also send a 100-200 lines after the end of what you posted?


Code: Select all
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.basicReadZoneMessage: called with rawData:[0000000100000000----],030,[f700000f1030000008020000000000],"FAULT 30                        "
, msgBitMap:0000000100000000----, msgZoneNum:30, msgText:"FAULT 30                        "
, msgKey:FAULT
2023-12-27 14:34:27.510   DEBUG   123145529036800 Plugin.basicReadZoneMessage: Ready:False, Fault:True
2023-12-27 14:34:27.511   DEBUG   123145529036800 Plugin.updateIndigoBasicMode: called with index:30, state:faulted, panel:address : Keypad 18
batteryLevel : None
buttonGroupCount : 0
configured : True
description : LH: A101A48Z; House: A101A523
deviceTypeId : ad2usbInterface
displayStateId : panelState
displayStateImageSel : SensorTripped
displayStateValRaw : Fault
displayStateValUi : Fault
enabled : True
energyAccumBaseTime : None
energyAccumTimeDelta : None
energyAccumTotal : None
energyCurLevel : None
errorState :
folderId : 54501610
globalProps : MetaProps : (dict)
     com.berkinet.ad2usbLH : (dict)
          address : Keypad 18 (string)
          isAdvanced : false (bool)
          numPartitions : 1 (integer)
          panelKeypadAddress : 18 (string)
          panelPartitionNumber : 1 (string)
id : 1559036540
lastChanged : 2023-12-27 14:34:27
lastSuccessfulComm : 2023-12-27 14:34:27
model : ad2usb Keypad
name : LH Alarm Panel
ownerProps : com.berkinet.ad2usbLH : (dict)
     address : Keypad 18 (string)
     isAdvanced : false (bool)
     numPartitions : 1 (integer)
     panelKeypadAddress : 18 (string)
     panelPartitionNumber : 1 (string)
pluginId : com.berkinet.ad2usbLH
pluginProps : com.berkinet.ad2usbLH : (dict)
     address : Keypad 18 (string)
     isAdvanced : false (bool)
     numPartitions : 1 (integer)
     panelKeypadAddress : 18 (string)
     panelPartitionNumber : 1 (string)
protocol : Plugin
remoteDisplay : True
sharedProps : com.indigodomo.indigoserver : (dict)
states : States : (dict)
     LCDLine1 : FAULT 30         (string)
     LCDLine2 :                  (string)
     acPower : on (on/off bool)
     alarmBellOn : 0 (one/zero bool)
     alarmOccurred : 0 (one/zero bool)
     alarmedZone : n/a (string)
     armedMode : unArmed (string)
     armedMode.armedAway : false (bool)
     armedMode.armedInstant : false (bool)
     armedMode.armedMax : false (bool)
     armedMode.armedNightStay : false (bool)
     armedMode.armedStay : false (bool)
     armedMode.unArmed : true (bool)
     batteryLow : 0 (one/zero bool)
     checkZones : 0 (one/zero bool)
     chimeMode : 0 (one/zero bool)
     fireAlarm : 0 (one/zero bool)
     homeKitState : disarmed (string)
     homeKitState.alarmOccured : false (bool)
     homeKitState.armedAway : false (bool)
     homeKitState.armedNightStay : false (bool)
     homeKitState.armedStay : false (bool)
     homeKitState.disarmed : true (bool)
     lastADMessage : 2023-12-27 14:34:27 (string)
     lastChgAt :  (string)
     lastChgBy :  (string)
     lastChgTo :  (string)
     panelArmed : 0 (one/zero bool)
     panelReady : 0 (string)
     panelState : Fault (string)
     panelState.Fault : true (bool)
     panelState.alarmOccured : false (bool)
     panelState.alarmOn : false (bool)
     panelState.armedAway : false (bool)
     panelState.armedInstant : false (bool)
     panelState.armedMax : false (bool)
     panelState.armedNightStay : false (bool)
     panelState.armedStay : false (bool)
     panelState.error : false (bool)
     panelState.ready : false (bool)
     panelState.ui : Fault (string)
     programMode : 0 (one/zero bool)
     zoneFaultList : [] (string)
     zonesBypassList :  (string)
     zonesBypassed : 0 (one/zero bool)
subModel :
subType :
supportsAllLightsOnOff : False
supportsAllOff : False
supportsOnState : False
supportsStatusRequest : False
version : None
2023-12-27 14:34:27.512   DEBUG   123145529036800 Plugin.updateIndigoBasicMode: got panel address:18
2023-12-27 14:34:27.512   DEBUG   123145529036800 Plugin.updateIndigoBasicMode: faulted... state list:{'18': [30]}
2023-12-27 14:34:27.512   DEBUG   123145529036800 Plugin.setDeviceState: called with name:Garage Door West (30), id:760537793, new state:faulted
2023-12-27 14:34:27.512   DEBUG   123145529036800 Plugin.isDeviceBypassed: called
2023-12-27 14:34:27.512   DEBUG   4540417536 Plugin.variableUpdated: Called with LHAlarmPanelReadyDatetime:2023-12-27 14:34:27
2023-12-27 14:34:27.513   DEBUG   123145529036800 Plugin.isDeviceBypassed: able to read current bypass state:False
2023-12-27 14:34:27.513   DEBUG   123145529036800 Plugin.isDeviceBypassed: current bypass state is boolean:False
2023-12-27 14:34:27.513   DEBUG   123145529036800 Plugin.updateAllZoneGroups: called
2023-12-27 14:34:27.513   DEBUG   123145529036800 Plugin.getAllZoneGroups: called
2023-12-27 14:34:27.529   DEBUG   123145529036800 Plugin.getAllZoneGroups: all zones groups are:[]
2023-12-27 14:34:27.529   DEBUG   123145529036800 Plugin.basicReadZoneMessage: Created new in the list, zone:30 at pos:0
2023-12-27 14:34:27.529   DEBUG   123145529036800 Plugin.basicReadZoneMessage: Last zone:30, pos in the list:0
2023-12-27 14:34:27.529   DEBUG   123145529036800 Plugin.basicReadZoneMessage: Ready:False, Fault:True, Zone:30
2023-12-27 14:34:27.530   DEBUG   123145529036800 Plugin.basicReadZoneMessage: The List:[30]
2023-12-27 14:34:27.530   DEBUG   123145529036800 Plugin.basicReadZoneMessage: completed
2023-12-27 14:34:27.530   DEBUG   123145529036800 Plugin.panelMsgRead: panelMsgRead End
2023-12-27 14:34:27.530   DEBUG   123145529036800 Plugin.panelMsgRead: completed
2023-12-27 14:34:28.179   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:28.179   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:28.193   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:28.193   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:28.193   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b'!RFX:0081379,24\r\n'
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):!RFX:0081379,24

2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.panelMsgRead: Read ad2usb message:'!RFX:0081379,24\r\n'
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.__init__: received message:!RFX:0081379,24
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.__processMessage: read RFX message type - starting parsing
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.parseMessage_RFX: RFX message data items are:0081379,24
2023-12-27 14:34:30.522   DEBUG   123145529036800 Plugin.parseMessage_RFX: RFX message data value is:36
2023-12-27 14:34:30.523   DEBUG   123145529036800 Plugin.parseMessage_RFX: RFX message parsed:{'serialNumber': '0081379', 'data': '24', 'bits': {'UNK1': False, 'LOWBAT': False, 'SUP': True, 'UNK4': False, 'LOOP3': False, 'LOOP2': True, 'LOOP4': False, 'LOOP1': False}}
2023-12-27 14:34:30.523   DEBUG   123145529036800 Plugin.updateLastADMessageOnKeypads: called
2023-12-27 14:34:30.523   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:30.535   DEBUG   123145529036800 Plugin.updateLastADMessageOnKeypads: Updating lastADMessage on Keypad Device:LH Alarm Panel with new lastADMessage:2023-12-27 14:34:30
2023-12-27 14:34:30.535   DEBUG   123145529036800 Plugin.panelMsgRead: RFX message seen
2023-12-27 14:34:30.535   DEBUG   123145529036800 Plugin.panelMsgRead: panelMsgRead End
2023-12-27 14:34:30.535   DEBUG   123145529036800 Plugin.panelMsgRead: completed
2023-12-27 14:34:31.172   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:31.172   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:31.185   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:31.185   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:31.185   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:36.196   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:34:36.196   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:34:36.196   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:34:36.705   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:36.705   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:36.718   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:36.718   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:36.718   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:41.799   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:34:41.799   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:34:41.799   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:34:42.438   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:42.438   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:42.450   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:42.451   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:42.451   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:47.522   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:34:47.522   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:34:47.522   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:34:48.156   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:48.156   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:48.169   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:48.169   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:48.169   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:53.247   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:34:53.247   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:34:53.247   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:34:53.876   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:53.876   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:53.890   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:53.890   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:53.890   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:34:59.018   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:34:59.018   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:34:59.018   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:34:59.606   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:34:59.606   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:34:59.619   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:34:59.619   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:34:59.619   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:35:04.704   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:35:04.704   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:35:04.704   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:35:05.224   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:35:05.224   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:35:05.236   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:35:05.236   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:35:05.236   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:35:10.368   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:35:10.368   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:35:10.368   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:35:11.008   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:35:11.008   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:35:11.023   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:35:11.023   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:35:11.023   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:35:16.159   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:35:16.159   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:35:16.159   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:35:16.739   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:35:16.740   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:35:16.752   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:35:16.752   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:35:16.752   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder
2023-12-27 14:35:21.889   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3) bytes:b''
2023-12-27 14:35:21.889   DEBUG   123145529036800 Plugin.panelReadWrapper: read from AlarmDecoder (Python 3):
2023-12-27 14:35:21.889   DEBUG   123145529036800 Plugin.panelMsgRead: read null message or timeout reached
2023-12-27 14:35:22.430   DEBUG   123145529036800 Plugin.runConcurrentThread: AlarmDecoder comm has successfully started, will attempt to read message...
2023-12-27 14:35:22.430   DEBUG   123145529036800 Plugin.getAllKeypadDevices: called
2023-12-27 14:35:22.443   DEBUG   123145529036800 Plugin.panelMsgRead: call with isAdvanced:False
2023-12-27 14:35:22.443   DEBUG   123145529036800 Plugin.panelReadWrapper: called
2023-12-27 14:35:22.443   DEBUG   123145529036800 Plugin.panelReadWrapper: attempting to read from the AlarmDecoder

Posted on
Wed Dec 27, 2023 4:03 pm
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

That seems to have done the trick!

Screenshot 2023-12-27 at 4.53.01 PM.png
Screenshot 2023-12-27 at 4.53.01 PM.png (359.92 KiB) Viewed 797 times


Should I do the same with the other instance?

Is it possible none of these devices have Faulted since they were created?

I don't think so, but I can't be sure.

Posted on
Thu Dec 28, 2023 7:39 am
ab39870 offline
Posts: 40
Joined: Dec 09, 2015

Re: 2 panels, 2 instances of AD2USB plugins

The final log snippet does indeed show the Garage Door (Zone 30) being set to faulted on this line below. So the end to end process of reading the Alarm Decoder, processing the message, and setting the Indigo device stat to Fault appears to be working for that device.

Code: Select all
2023-12-27 14:34:27.512   DEBUG   123145529036800 Plugin.setDeviceState: called with name:Garage Door West (30), id:760537793, new state:faulted


You can certainly set the "Clear all zone devices on plugin restart" on the other instance and Disable/(re)Enabled the plugin to restart it.

Enabling this is the recommended setting. When this setting is enabled, all devices are set to Clear on restart of the plugin or when enabling communication of a device that was disabled. If for any reason Indigo and your alarm panel are not reporting the same status of a zone (e.g. Zone 30 is Fault in Indigo but Ready/Clear on your alarm panel) then disabling and then re-enabling communications for that device via the Indigo Client UI will reset the device to Clear. Additionally, when you start or restart (Disable and then Enable) the plugin with this setting on all plugin Alarm Zone devices will be set to Clear.

I do still think there is some risk to multiple instance in a few areas of the code because you have more than one device with the same zone number across two instances. I've looked at the code in in nearly all cases it's safe - the code's actions are limited to only devices for the instance - but in some places they are not. I'll start a release today and should have it tested and released in a few days. That should make your scenario safer to run.

Posted on
Thu Dec 28, 2023 9:54 am
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

Thank you very much for all your efforts to track down the issue. Much appreciated.

I have one question on usage.
I have a garage door which has the following hardware:
- an Insteon I/O Line wired to the opener
- a open/close sensor which is connected to the alarm panel
What I want to accomplish is to reliably know whether the door is opened or closed so that I can create logic to issue a warning as appropriate. I'm thinking I would use the alarm panel's sensor since (modulo this latest glitch) it is a reliable indicator of the door's state. How would you recommend I set this up?

Posted on
Thu Dec 28, 2023 1:24 pm
ab39870 offline
Posts: 40
Joined: Dec 09, 2015

Re: 2 panels, 2 instances of AD2USB plugins

I think this falls into a category of more of a generic Indigo question so you can get other ideas from other forums too. There's many ways to do this in Indigo. I'll describe both the most basic way and then another way that offers a little more control. Indigo gives you so many options you can make a complex workflow if you want.

The most basic way is to create a Trigger that detects the Device State Changed, Zone State Changed to Fault, Becomes True (screen attached). The Action for this trigger is a Notification Action that sends an email.

With most mobile phone providers you can send an email to the mobile_number@some.domain and it will send an SMS Text Message.

Another way:

If you don't want to receive these alerts all the time, you can use Indigo Variables and Actions to control if the alert will be sent or not. You can use one variable "isAlertingOn" (true or false) as a flag to control if you want alerts sent or not. You can then create Actions that set or unset that variable to true or false as needed. One Action can be "Turn Altering On" and another can be "Turn Alerting Off". Having Actions allows you to control the variables value from Indigo's Mobile App via the Actions functions of the App.

You can then create a Trigger on the Device change the same as described above. Except you can now add a "Condition" to the Trigger to only execute if the variable "isAlertingOn" is true.
Attachments
new_trigger.png
new_trigger.png (138.02 KiB) Viewed 722 times

Posted on
Sun Dec 31, 2023 8:33 am
rafsel offline
Posts: 51
Joined: Feb 24, 2009

Re: 2 panels, 2 instances of AD2USB plugins

Thanks. All good now.

Posted on
Mon Jan 01, 2024 11:03 am
ab39870 offline
Posts: 40
Joined: Dec 09, 2015

Re: 2 panels, 2 instances of AD2USB plugins

I released version 3.4.2. In all the code, there was one hardcoded section referring to the plugin ID that I removed. This would likely cause some error if/when you were ever editing the "ad2usb Keypad" device types. The code may have seen both keypads from both instances and throw errors that you had a duplicate keypad number. You may want to update to that version at your leisure.

Who is online

Users browsing this forum: No registered users and 1 guest