# -------------------------------------------------------------------------------- # File : Transits_SPV23.py # : Setup translits list for each train running with Dispatcher # : Start this file always # Control : IS_Start_xxxx --> Starts the train xxxx via file keten_xxxx.py with corresponding translits_xxxx # Date : 2023-08 # Author : Willem.J. Mak # Basic exmp : transit_chaining.py # -------------------------------------------------------------------------------- import java import java.beans import jmri import jarray # For each train running by Dispatcher: # Transitlist_[train].append(('[transit name]','[traininfo file]',[pause in seconds])) # note: transitlist[train] may have different transits for the same train. # Last section of a transit is the starting section of the next transit # --------------------------------------------------------------------------- transitList_ET = [] transitList_ET.append(('NSP03_HSP02_West','ESSTRB_NSP03_HSP02_West.xml',15)) transitList_ET.append(('HSP02_HSP05_Oost','ESSTRB_HSP02_HSP05_Oost.xml',25)) transitList_ET.append(('HSP05_NSP03_Oost','ESSTRB_HSP05_NSP03_Oost.xml',25)) transitList_ET.append(('NSP03_HSP05_Oost','ESSTRB_NSP03_HSP05_Oost.xml',25)) transitList_ET.append(('HSP05_HSP03_Oost','ESSTRB_HSP05_HSP03_Oost.xml',15)) transitList_ET.append(('HSP03_NSP03_West','ESSTRB_HSP03_NSP03_West.xml',15)) transitList_bvt28 = [] transitList_bvt28.append(('NSP02_HSP01','BVT28_NSP02_HSP01.xml',20)) transitList_bvt28.append(('HSP01_NSP02','BVT28_HSP01_NSP02.xml',20)) transitList_bvt28.append(('NSP02_HSP01','BVT28_NSP02_HSP01.xml',20)) transitList_bvt28.append(('HSP01_NSP02','BVT28_HSP01_NSP02.xml',20)) transitList_VT209 = [] transitList_VT209.append(('NSP02_HSP01','VT209_NSP02_HSP01.xml',20)) transitList_VT209.append(('HSP01_NSP02','VT209_HSP01_NSP02.xml',20)) transitList_VT209.append(('NSP02_HSP01','VT209_NSP02_HSP01.xml',20)) transitList_VT209.append(('HSP01_NSP02','VT209_HSP01_NSP02.xml',20)) transitList_515m1 = [] transitList_515m1.append(('OZ02_HSP01','BR515_OZ02_HSP01.xml',15)) transitList_515m1.append(('HSP01_OZ02','BR515_HSP01_OZ02.xml',15)) transitList_515m1.append(('OZ02_HSP01','BR515_OZ02_HSP01.xml',15)) transitList_515m1.append(('HSP01_OZ02','BR515_HSP01_OZ02.xml',15)) transitList_VT137 = [] transitList_VT137.append(('OZ03_HSP03','VT137_OZ03_HSP03.xml',15)) transitList_VT137.append(('HSP03_OZ03','VT137_HSP03_OZ03.xml',15)) transitList_VT137.append(('OZ03_HSP03','VT137_OZ03_HSP03.xml',15)) transitList_VT137.append(('HSP03_OZ03','VT137_HSP03_OZ03.xml',15)) transitList_br31 = [] transitList_br31.append(('OZ06_HSP06_Oost','BR31_OZ06_HSP06_Oost.xml',15)) transitList_br31.append(('OZ06_HSP06_Oost','BR31_OZ06_HSP06_Oost.xml',15)) transitList_br216_1 = [] transitList_br216_1.append(('ON06_HSP02','BR216_1_ON06_HSP02.xml',15)) transitList_br216_1.append(('HSP02_ON06','BR216_1_HSP02_ON06.xml',15)) transitList_br216_1.append(('ON06_HSP04','BR216_1_ON06_HSP04.xml',15)) transitList_br216_1.append(('HSP04_ON06','BR216_1_HSP04_ON06.xml',15)) transitList_br216_2 = [] transitList_br216_2.append(('OZ05_HSP03','BR216_2_OZ05_HSP03.xml',15)) transitList_br216_2.append(('HSP03_OZ05','BR216_2_HSP03_OZ05.xml',15)) transitList_br216_2.append(('OZ05_HSP02','BR216_2_OZ05_HSP02.xml',15)) transitList_br216_2.append(('HSP02_OZ05','BR216_2_HSP02_OZ05.xml',15)) transitList_V140 = [] transitList_V140.append(('ON05_HSP04','V140_ON05_HSP04.xml',20)) transitList_V140.append(('HSP04_ON05','V140_HSP04_ON05.xml',20)) transitList_V220 = [] transitList_V220.append(('ON04_HSP06_West','V220_ON04_HSP06_West.xml',20)) transitList_V220.append(('ON04_HSP06_West','V220_ON04_HSP06_West.xml',20)) transitList_T12 = [] transitList_T12.append(('NSP01_HSP04_Oost', 'T12_NSP01_HSP04_Oost.xml',20)) transitList_T12.append(('HSP04_NSP01_West', 'T12_HSP04_NSP01_West.xml',20)) transitList_VT75 = [] transitList_VT75.append(('NSP01_HSP04_Oost', 'VT75_NSP01_HSP04_Oost.xml',20)) transitList_VT75.append(('HSP04_NSP01_West', 'VT75_HSP04_NSP01_West.xml',20)) transitList_MAK = [] transitList_MAK.append(('ON03_HSP06_Oost', 'MAK_ON03_HSP06_Oost.xml',30)) transitList_MAK.append(('ON03_HSP06_West', 'MAK_ON03_HSP06_West.xml',30)) transitList_ACTS = [] transitList_ACTS.append(('ON01_HSP06_Oost', 'ACTS_ON01_HSP06_Oost.xml',30)) transitList_ACTS.append(('ON01_HSP06_West', 'ACTS_ON01_HSP06_West.xml',30)) transitList_WB = [] transitList_WB.append(('OZ04_HSP06_West', 'BR320_Wiebe_OZ04_HSP06_West.xml',20)) # Get the Transit manager and Dispatcher # -------------------------------------- tm = jmri.InstanceManager.getDefault(jmri.TransitManager) df = jmri.InstanceManager.getDefault(jmri.jmrit.dispatcher.DispatcherFrame) class T_runtransits(jmri.jmrit.automat.AbstractAutomaton): def init(t): # set up sensors Starting Trains # ------------------------------ t.IS515_m1 = sensors.provideSensor("IS_Start_515_m1") t.ISvt137 = sensors.provideSensor("IS_Start_VT137") t.ISbvt28 = sensors.provideSensor("IS_Start_bvt28") t.ISVT209 = sensors.provideSensor("IS_Start_VT209") t.ISbr31 = sensors.provideSensor("IS_Start_BR31") t.ISBR216_2 = sensors.provideSensor("IS_Start_BR216_2") t.ISBR216_1 = sensors.provideSensor("IS_Start_BR216_1") t.ISv221 = sensors.provideSensor("IS_Start_V221") t.IS_T12 = sensors.provideSensor("IS_Start_T12") t.IS_VT75 = sensors.provideSensor("IS_Start_VT75.1") t.IS_et = sensors.provideSensor("IS_Start_ET") t.ISmak = sensors.provideSensor("IS_Start_MAK") t.ISACTS = sensors.provideSensor("IS_Start_ACTS") t.ISwiebe = sensors.provideSensor("IS_Start_WIEBE") t.ISv220 = sensors.provideSensor("IS_Start_V220") t.ISv140 = sensors.provideSensor("IS_Start_V140") t.ISbr03 = sensors.provideSensor("IS_Start_BR03") t.ISkreissb = sensors.provideSensor("IS_Start_KreissB") # INIT de sensors to INACTIVE # --------------------------- t.IS515_m1.setState(INACTIVE) t.ISvt137.setState(INACTIVE) t.ISbvt28.setState(INACTIVE) t.ISVT209.setState(INACTIVE) t.ISbr31.setState(INACTIVE) t.ISBR216_1.setState(INACTIVE) t.ISBR216_2.setState(INACTIVE) t.ISv221.setState(INACTIVE) t.IS_T12.setState(INACTIVE) t.IS_VT75.setState(INACTIVE) t.IS_et.setState(INACTIVE) t.ISmak.setState(INACTIVE) t.ISACTS.setState(INACTIVE) t.ISwiebe.setState(INACTIVE) t.ISacts.setState(INACTIVE) t.ISv220.setState(INACTIVE) t.ISv140.setState(INACTIVE) t.ISbr03.setState(INACTIVE) t.ISkreissb.setState(INACTIVE) t.OLD515_m1 = t.IS515_m1.getState() t.OLDvt137 = t.ISvt137.getState() t.OLDbvt28 = t.ISbvt28.getState() t.OLDVT209 = t.ISVT209.getState() t.OLDbr31 = t.ISbr31.getState() t.OLDbr216_1 = t.ISBR216_1.getState() t.OLDbr216_2 = t.ISBR216_2.getState() t.OLDv221 = t.ISv221.getState() t.OLDIS_T12 = t.IS_T12.getState() t.OLDIS_VT75 = t.IS_VT75.getState() t.OLD_et = t.IS_et.getState() t.OLDmak = t.ISmak.getState() t.OLDACTS = t.ISACTS.getState() t.OLDwiebe = t.ISwiebe.getState() t.OLDacts = t.ISacts.getState() t.OLDv220 = t.ISv220.getState() t.OLDv140 = t.ISv140.getState() t.OLDbr03 = t.ISbr03.getState() t.OLDkreissb = t.ISkreissb.getState() return # handle() is called repeatedly until it returns false # ---------------------------------------------------- # When start_sensor[train] becomes ACTIVE --> start the connecting keten_[train].py (chain=keten) # The chain will stop at the end of the last Transit or when the start-Sensor becomes inactive. def handle(t): if( (t.IS515_m1.getState() == ACTIVE) and (t.OLD515_m1 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_515_m1.py"); if( (t.ISvt137.getState() == ACTIVE) and (t.OLDvt137 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_VT137.py"); if( (t.ISbvt28.getState() == ACTIVE) and (t.OLDbvt28 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_bvt28.py"); if( (t.ISVT209.getState() == ACTIVE) and (t.OLDVT209 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_VT209.py"); if( (t.ISbr31.getState() == ACTIVE) and (t.OLDbr31 == INACTIVE) ) : print "hierzo" execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR31.py"); if( (t.ISBR216_1.getState() == ACTIVE) and (t.OLDbr216_1 == INACTIVE) ) : print "BR216_1" execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR216_1.py"); if( (t.ISBR216_2.getState() == ACTIVE) and (t.OLDbr216_2 == INACTIVE) ) : print "BR216_2" execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR216_2.py"); if( (t.ISv221.getState() == ACTIVE) and (t.OLDv221 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_V221.py"); if( (t.IS_T12.getState() == ACTIVE) and (t.OLDIS_T12 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_mklT12.py"); if( (t.IS_VT75.getState() == ACTIVE) and (t.OLDIS_VT75 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_VT75.py"); if( (t.IS_et.getState() == ACTIVE) and (t.OLD_et == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_EsslingerTrbw.py"); if( (t.ISmak.getState() == ACTIVE) and (t.OLDmak == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_MAK_544.py"); if( (t.ISACTS.getState() == ACTIVE) and (t.OLDACTS == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_ACTS.py"); if( (t.ISv220.getState() == ACTIVE) and (t.OLDv220 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_V220.py"); if( (t.ISv140.getState() == ACTIVE) and (t.OLDv140 == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_V140.py"); if( (t.ISwiebe.getState() == ACTIVE) and (t.OLDwiebe == INACTIVE) ) : execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR320_Wiebe.py"); #if( (t.ISkreissb.getState() == ACTIVE) and (t.OLDkreissb == INACTIVE) ) : # execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR320_Kreissbahn.py"); # #if( (t.ISbr03.getState() == ACTIVE) and (t.OLDbr03 == INACTIVE) ) : # execfile("C:\Users\Wille\Documents\JMRI\Mijn_zolder_baan.jmri\Python\Productie\keten_BR03_1022.py"); t.OLD515_m1 = t.IS515_m1.getState() t.OLDvt137 = t.ISvt137.getState() t.OLDbvt28 = t.ISbvt28.getState() t.OLDVT209 = t.ISVT209.getState() t.OLDbr31 = t.ISbr31.getState() t.OLDbr216_1 = t.ISBR216_1.getState() t.OLDbr216_2 = t.ISBR216_2.getState() t.OLDv221 = t.ISv221.getState() t.OLDIS_T12 = t.IS_T12.getState() t.OLDIS_VT75 = t.IS_VT75.getState() t.OLD_et = t.IS_et.getState() t.OLDmak = t.ISmak.getState() t.OLDACTS = t.ISACTS.getState() t.OLDkreissb = t.ISkreissb.getState() t.OLDbr03 = t.ISbr03.getState() t.OLDv220 = t.ISv220.getState() t.OLDv140 = t.ISv140.getState() t.OLDwiebe = t.ISwiebe.getState() t.waitMsec(100) return 1 # start one of these up # --------------------- T_runtransits().start()