Files
JIMRI/jython/CmriNodeMonitor.py
2026-06-17 14:00:51 +02:00

49 lines
1.5 KiB
Python

# Set sensors to indicate that C/MRI nodes are polling OK
#
# Created by Bob Jacobsen 2014
#
# Since JMRI 3.9.4
#
# only handles 1st CMRI connection: get(0) should be iterated over the full list
import jmri
import java
class CmriNodeMonitor(jmri.jmrit.automat.AbstractAutomaton) :
tc = jmri.InstanceManager.getList(jmri.jmrix.cmri.CMRISystemConnectionMemo).get(0).getTrafficController()
nodeList = []
nodeAddrList = []
maxNodeAddr = 128
delay = 2000
def init(self) :
i = 0
while i < self.maxNodeAddr :
x = (i * 1000) + 1
txt = "CT" + str(x)
node = jmri.InstanceManager.getList(jmri.jmrix.cmri.CMRISystemConnectionMemo).get(0).getNodeFromSystemName(txt, self.tc)
if (node != None) :
print "Start monitoring C/MRI node " + str(i)
self.nodeList.append(node)
self.nodeAddrList.append(i)
i = i + 1
return
# handle() will execute periodically, each time setting the sensors
def handle(self) :
i = 0
while i < len(self.nodeAddrList) :
if (self.nodeList[i].isPollingOK()) :
sensors.provideSensor("IS$CMRI_NODE$"+str(self.nodeAddrList[i])).setKnownState(ACTIVE)
else :
sensors.provideSensor("IS$CMRI_NODE$"+str(self.nodeAddrList[i])).setKnownState(INACTIVE)
i = i + 1
self.waitMsec(self.delay)
return 1
c = CmriNodeMonitor()
c.setName("CmriNodeMonitor")
c.start()