¿ªÔÆÌåÓý


Re: How to edit script, re-exec without restarting? #scripting

 

I don't know the best way to remove old listeners, but I have tested this and it seems to work.

sen = sensors.getSensor('LNT-Jython')

# See if the listener has been created.
try:
??? appListener
except NameError:
??? appListener = None

if appListener:
??? # remove listener from objects
??? sen.removePropertyChangeListener(appListener)

appListener = SomeListenerClass()

print 'Listener = {}'.format(appListener)

# add new listener to objects
sen.addPropertyChangeListener(appListener)

Jython variables that are not within a class are global for the duration of the JMRI session.

The first run will create the listener. ?Subsequent runs will remove the old listener and add a new one.

Dave Sand


----- Original message -----
From: stevemac <steveo@...>
Subject: [jmriusers] How to edit script, re-exec without restarting? #scripting
Date: Wednesday, March 19, 2025 11:06 AM

I'm working on a script to facilitate virtual block handling (time before unoccupied, etc) by considering time entered and exited and block length. Since every car being pulled draws power I can estimate how long it will be in a virtual block (assuming same speed).
?
The script is loaded at startup and adds property change listeners.
?
Since I'm learning JMRI I have to make incremental changes and every time I have to restart since the old listener is still active.
?
Maybe I could save my chained listener objects in a memory and check if it's there if I re-execute the script but wanted to check with experts first.
Is there any advice for avoiding a restart?


Re: The future of control and automation - thoughts?

 

With tiny cameras in our phones, and AI, and ever higher integration, someday soon it should be possible to have a camera in every loco, and have it run on clear track, obey signals if they are used, and stop short of other trains or end of track.

I enjoy running my trains manually, but my loop to loop railroad doesn't lend itself to having a train or two run in the background while I switch (shunt) cars or change motive power. The railroad is much more enjoyable when more than one train runs, in my opinion. But, I make mistakes when I try to run two or three at a time by myself.


--
Don Weigt
Connecticut


Re: How to edit script, re-exec without restarting? #scripting

 

stevemac,
?
The document at provided two implementations of () and one of those might be used as your script closes down for the next trial run.
?
If your development is still at the stage of unexpected termination, this idea might not be very useful.
?
Suggestions for all beginning Jython programmers: Keep the Console window open and at least partially visible and put in a lot of print or log statements.
?
Cliff in Baja SoCal


Re: Block occupancy without resistive wheelsets

 

¿ªÔÆÌåÓý

Brsidesa, you are trusting the operator to run at a very precise speerd. Probably impossible. Rspecially with track conditions and other issues.

?

Dana Zimmerli

Z System Designs

?

From: [email protected] <[email protected]> On Behalf Of Dave Sand
Sent: Tuesday, March 18, 2025 8:18 PM
To: [email protected]
Subject: Re: [jmriusers] Block occupancy without resistive wheelsets

?

Operations has a max train length value. ?This is used to limit train sizes between switching locations.

?

Dispatcher has a max train length for automatically controlled trains.

?

I am not aware of any other places where train length might be stored. ?

?

Dave Sand

?

?

----- Original message -----

From: "p.lavers via groups.io" <p.lavers=[email protected]>

Subject: Re: [jmriusers] Block occupancy without resistive wheelsets

Date: Tuesday, March 18, 2025 9:48 PM

?

That JMRI has the facility to store the train length. This would allow the calculation of the position of the end of the train.

?


How to edit script, re-exec without restarting? #scripting

 

I'm working on a script to facilitate virtual block handling (time before unoccupied, etc) by considering time entered and exited and block length. Since every car being pulled draws power I can estimate how long it will be in a virtual block (assuming same speed).
?
The script is loaded at startup and adds property change listeners.
?
Since I'm learning JMRI I have to make incremental changes and every time I have to restart since the old listener is still active.
?
Maybe I could save my chained listener objects in a memory and check if it's there if I re-execute the script but wanted to check with experts first.
Is there any advice for avoiding a restart?


Re: Signal Mast Logic #sml

 

David,

Step 1: ?Use the Layout Editor "Tools -> Check" menu items to clean up the non-contiguous blocks.

Step 2: ?Run the GrandReset.py script. ?This will delete all of the transits, sections, SML and block paths. ?After doing a Store and re-start, use "Auto Generate Signaling Pairs" in the Signal Mast Logic table menu to create new SML.

I have not looked at all of the signals yet, but it appears that the inner loop signals are all set for counter clockwise traffic. ?If so, that explains why the buffer signals have no SML. ?There is no source signal for clockwise traffic.

Dave Sand


----- Original message -----
From: "David Smith via groups.io" <daversmth=[email protected]>
Subject: [jmriusers] Signal Mast Logic
Date: Wednesday, March 19, 2025 6:43 AM

Hi All,
?
I have added the panel file ?exhib.xml to the David Smith folder in ProblemsBeingWorked?
There are some issues with some of the signal masts.
Could someone please advise what the problem may be ?
?
Buffer masts Mst_Buff_SdS4, Mst_Buff_SdS5, Mst_Buff_SdS6 are set to Unknown
?
Mst_SE3, Mst_SE2, Mst_SW3e, Mst_SW3f, Mst_W4 signal logic does not see other masts correctly
( I am aware that I could fix the issues by manually editing the signal logic but would prefer not to )
?
Can I also please ask, if ?I add a mast that is not visible on the panel, is there a way to see or edit it afterwards ?
?
Also, can I ask why all of the signal heads appear in the Turnouts table ?
?
Thanks
Dave


Re: The future of control and automation - thoughts?

 

Speaking of WS2812 3-color LED controller IC's, RR-CirKits offers an LCC-based signal controller for their "Simple Serial?Signal Bus" that controls signal LEDs using these inexpensive IC's!
?
Even if signals & switch controllers were wireless, you'd still have to wire power to them.
?
And while controlling track switches via the DCC track bus, using stationary decoders, simplifies and saves wiring, running a train against such a switch would short out both the track and the means by which to rectify the problem from the throttle/panel.
?
-- Andy


Re: Signal Mast Logic #sml

 

If it helps when looking at the panel, the script below will initalise all the sensors and points to a known value.
?
import jmri
vSnsLst=['V_E1a', 'V_E1b','V_E2a','V_E2b','V_E2c','V_E3a','V_E3b','V_E3c','V_E4',\
? ? ? ? ?'V_NE1a','V_NE1b','V_NE1c','V_NE2a','V_NE2b','V_NE2c','V_NE2d',\
? ? ? ? ?'V_NE3a','V_NE3b','V_NE3c','V_NE3d','V_NE4a','V_NE4b','V_NE4c','V_NE4d',\
? ? ? ? ?'V_NW1a','V_NW1b','V_NW2','V_NW3','V_NW4a','V_NW4b',\
? ? ? ? ?'V_SE1a','V_SE1b','V_SE2a','V_SE2b','V_SE3a','V_SE3b',\
? ? ? ? ?'V_SE4a','V_SE4b','V_SE5a','V_SE5b','V_SE6a','V_SE6b',\
? ? ? ? ?'V_SW1a','V_SW1b','V_SW1c','V_SW1d','V_SW1e','V_SW1f',\
? ? ? ? ?'V_SW2a','V_SW2b','V_SW2c','V_SW2d','V_SW2e','V_SW2f',\
? ? ? ? ?'V_SW3a','V_SW3b','V_SW3c','V_SW3d','V_SW3e','V_SW3f',\
? ? ? ? ?'V_SW4a','V_SW4b','V_SW4c','V_SW4d','V_SW4e','V_SW4f',\
? ? ? ? ?'V_SdE','V_SdN3a','V_SdN3b','V_SdN4a','V_SdN4b','V_SdN5a','V_SdN5b',\
? ? ? ? ?'V_SdNE1a','V_SdNE1b','V_SdNE2a','V_SdNE2b',\
? ? ? ? ?'V_SdNW1a','V_SdNW1b','V_SdNW2a','V_SdNW2b',\
? ? ? ? ?'V_SdNxa','V_SdNxb','V_SdNxc','V_SdNxd','V_SdNxe',\
? ? ? ? ?'V_SdS1a','V_SdS1b','V_SdS2a','V_SdS2b','V_SdS3a','V_SdS3b',\
? ? ? ? ?'V_SdS4a','V_SdS4b','V_SdS5a','V_SdS5b','V_SdS6a','V_SdS6b',\
? ? ? ? ?'V_W1a','V_W1b','V_W1c','V_W1d','V_W1e',\
? ? ? ? ?'V_W2','V_W3','V_W4a','V_W4b']
for sns in vSnsLst:
?sensors.provideSensor(sns).setState(4)
print '## All Sensors initialised to Inactive ##'
ptLst=['Pt_E1_NE1','Pt_E1_SE1','Pt_E1_SdN','Pt_E2_SE3','Pt_E3_SE5',\
? ? ? ?'Pt_NE1_NE2','Pt_NE2_NE1','Pt_NE2_NE3','Pt_NE3_NE4','Pt_NE4_NE3','Pt_NE4_SdNa','Pt_NE4_SdNb','Pt_NE4_SdNc',\
? ? ? ?'Pt_SE1_SdS1','Pt_SE1_SdS2','Pt_SE1_SdS3','Pt_SE6_SdS4','Pt_SE6_SdS5','Pt_SE6_SdS6',\
? ? ? ?'Pt_SW1_SW2','Pt_SW2_SE3','Pt_SW2_SW1','Pt_SW2_SW3','Pt_SW3_SE5','Pt_SW3_SW4','Pt_SW4_SW3',\
? ? ? ?'Pt_W1_SdNa','Pt_W1_SdNb','Pt_W4_SdNa','Pt_W4_SdNb','Pt_W4_SdNc']
class ds_init_pts(jmri.jmrit.automat.AbstractAutomaton):
? def handle(self):
? ? for pt in ptLst:
? ? ? turnouts.provideTurnout(pt).setState(2)
? ? ? self.waitMsec(200)
? ? print '## All Points initialised to Closed ##'
? ? return False
a=ds_init_pts()
a.start()


Re: The future of control and automation - thoughts?

 

Regarding Bluetooth control:? is it possible to control more than 1 locomotive at the same time from a single throttle over Bluetooth with any of the current systems?? I don't have any experience with any of them.
?
Also, I'd just like to add that while some people certainly aren't interested in automatic operations - and that's fine - other people do like automation, and that's fine too.? I personally loved the challenge of setting up my layout so it could be operated fully manually, semi-automatically, or fully automatically, and enjoy using it in any of those modes depending on how I feel at the time.? That's the beauty of "My Railroad, My Rules", and the great thing about the flexibility of JMRI.
?
Cheers,
Trevor.


Re: Block occupancy without resistive wheelsets

 

Roger,

With turnouts in a separate block, and not even very long trains, you'd see the occupancy indicator of the turnout go off while both blocks at either side remain on - unless there's added logic.

Wouter

On Wed, 19 Mar 2025 at 12:17, Roger Thomas via <rogert=[email protected]> wrote:
My mainline freights always have a last car with a FRED which is drawing power. A lighted caboose would be the same. So the occupancy light trips as soon as the loco enters, and doesn't release until the last car leaves. No need for resistor wheels on intermediate rolling stock.


Re: The future of control and automation - thoughts?

 

But also remember that a lot of us like to drive the trains and operate the layout entirely manually. Automation holds absolutely no attention from me.??
Same here. OperationsPro is my sole use of JMRI these days. (And occasionally DecoderPro, but mostly LokProgrammer)
?
So in that vein, I've begun to wonder if I could use AI (namely, v0.dev) to write code modifications for OpsPro to mold it more to my niche-prototype likings. Would love to have suggestions on how specifically to do so if anyone has any, as I'm willing to learn but would prefer not to if I can help it. Am the wrong kind of engineer by trade!
?
More to OP's original question, I think Bluetooth is the future (especially for loco-to-loco comms) but the current offerings (namely Blunami & RailPro) are neither mature nor featured enough to get me to switch from DCC.
?
Isaac


Re: The future of control and automation - thoughts?

 

At Wed, 19 Mar 2025 04:55:45 -0400 "Mick Moignard" <mick@...> wrote:

Don't forget that Soundtraxx offer Bluetooth-controllable decoders as well.

But also remember that a lot of us like to drive the trains and operate the
layout entirely manually. Automation holds absolutely no attention from me.
Sometimes it can be more interesting to have an additional train or two
operated "by the computer" along with the one mnually operated train.


I'd also point out that a software controlled block detection which attempts
to detect when a block ceases to be occupied by seeing the loco, and
estimating block clearance by working with throttle setting and train length
is bound to fail - derailed trains, split trains, train stopping in section,
not moving at the expected speed, and so on. All of those are why the
prototype would only rely on actual detections, and then fail safe. Isn't it
just easier and waaaaay faster and probably cheaper too, as well as more
accurate and prototypical to add resistor wheel sets to the last vehicle in
a train, typically a caboose/brake van or parlour car?
It is effectively prototypial to have "resistive" wheelsets, if you count a
solid steel axle as a "resistor"...


Mick
________________________________
Mick Moignard
Specialising in DCC Sound
m: +44 7774 652504

The week may start M,T but it always ends WTF.







--
Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software -- Custom Software Services
-- Linux Administration Services
heller@... -- Webhosting Services


Re: Block occupancy without resistive wheelsets

 

The dispatcher functionality was only implemented from 5.10. I need to update and have a look. I was impressed by which implements a solution in the detector hardware (arduino) to calculate (estimate) the end of train position. It will be interesting to compare all the options!?


Re: Current state of DMX support on Apple Silicon Macs? #mac-m1 #powerline

 

Returning to the original question in this thread: Would an Apple Silicon Mac, e.g. an M4, be able to run a DMX512 connection natively?

I¡¯ve made some more progress on this: I have been able to set up a M1 Mac with the right native libraries (as opposed to x86_64 Intel libraries) and JMRI is able to make a HID connection to another device in the same way an Anyma connection would be made. So that works.

I think the answer is ¡°Yes, if the Mac is set up with native libraries¡±. I don¡¯t have an actual Anyma DMX512 system to check with, so I can¡¯t be 100% sure.

Bob
¡ª
Bob Jacobsen
rgj1927@...


Re: Signal Mast Logic #sml

 

On 3/19/2025 7:43 AM, David Smith via groups.io wrote:

Can I also please ask, if ?I add a mast that is not visible on the panel, is there a way to see or edit it afterwards ?
Sure there is. "Tools"->"Tables"->"Signals"->"Signal Masts" . Or "Tools"->"Tables"->"Signals"->"Signal Mast Logic" . As appropriate.

Also, can I ask why all of the signal heads appear in the Turnouts table ?
It depends on how you have defined the signals. If you build a JMRI "Signal Head" or a JMRI "Signal Mast" using individual JMRI "Turnout"s, by definition JMRI _must_ define the turnouts before it can use those "Turnout"s.

(This goes back to the original NMRA DCC specifications where where the only way to control anything of an "accessory" nature was via a DCC turnout. JMRI followed this assumption. And the majority of Signal hardware uses that same assumption. Where a hardware signaling device _does not_ use a DCC "Turnout" address, that device will generally not use a JMRI "Turnout".)


Re: Block occupancy without resistive wheelsets

 

Hi
Dispatcher runs trains automatically or with manual drivers need only the head of the train detectable and a length for the train.
After the head leaves a block it shows that the block is unoccupied but allocated (so it cannot be allocated to another train) until the calculated end of the train exits the block.
It uses pessamistic assumptions about the position of the head in an occupied block.
You can also use Head and tail detection so a single car detected car at the rear is required. Lighted caboose , track powered FRED.
The major down side of head only is the failure to detect broken trains, so I would never use them for an exhibition piece.
Steve G.
?


Re: Block occupancy without resistive wheelsets

 

My mainline freights always have a last car with a FRED which is drawing power. A lighted caboose would be the same. So the occupancy light trips as soon as the loco enters, and doesn't release until the last car leaves. No need for resistor wheels on intermediate rolling stock.


Signal Mast Logic #sml

 

Hi All,
?
I have added the panel file ?exhib.xml to the David Smith folder in ProblemsBeingWorked?
There are some issues with some of the signal masts.
Could someone please advise what the problem may be ?
?
Buffer masts Mst_Buff_SdS4, Mst_Buff_SdS5, Mst_Buff_SdS6 are set to Unknown
?
Mst_SE3, Mst_SE2, Mst_SW3e, Mst_SW3f, Mst_W4 signal logic does not see other masts correctly
( I am aware that I could fix the issues by manually editing the signal logic but would prefer not to )
?
Can I also please ask, if ?I add a mast that is not visible on the panel, is there a way to see or edit it afterwards ?
?
Also, can I ask why all of the signal heads appear in the Turnouts table ?
?
Thanks
Dave


Re: Zimo MS450P22 CVs above #841 #zimo #definitions

 

¿ªÔÆÌåÓý


Now in JMRI GitHub as issue #13945



And from there, should find its way through approvals to a JMRI test release.??


- Nigel



------ Original Message ------
From "Nigel Cliffe via groups.io" <nigel.cliffe@...>
Date 14/03/2025 14:50:26
Subject Re: [jmriusers] Zimo MS450P22 CVs above #841 #zimo #definitions


OK,? now added to my local file.? ? I've also removed the comments around the MS540E24 decoder, as I think its likely available.??

They'll be in the update when it goes to the JMRI approvals processes.??



- Nigel



------ Original Message ------
From "uligg100 via groups.io" <uligg100@...>
Date 14/03/2025 13:03:58
Subject Re: [jmriusers] Zimo MS450P22 CVs above #841 #zimo #definitions

Can you also add the new MS decoder MS591N18 CV250=15 ?
?
The type of decoder can be read out from the value of CV #250 if required:
?1 = MS500 2 = MS480 3 = MS490 4 = MS440 5 = MS580
?6 = MS450 7 = MS990 8 = MS590 9 = MS950 10 = MS560
11 = MS001* 12 = MS491 13 = MS581 14 = MS540 15 = MS591
16 = MS481 *?
119 = MN140 120 = MN250 121 = MN150 122 = MN160 123 = MN340
124 = MN170 125 = MN300 126 = MN330 127 = MN180


Re: Block occupancy without resistive wheelsets

 

It can be done in Java. I? fact, I am doing something in Java on topmof JMRI that has train lengths (standard jmri doesn't have it for running trains, only for the relatively stand-alone "operations").

Using the information for positioning is not at all straightforward, though, because the positioning "brains" must at all times be aware of speed changes, too.

A further complication is, that this would be relatively easy for standard trains, but when adding and removing wagons the overhead of people having to add those changes to the "train" (a concept not present in java!) is considerable unless it can be automated with strategically placed RFID units. So a layout that uses unchanging passenger trains would be better served than one with lots of shunting of goods trains.

In short: it sounds much easier than it is.

Wouter


On Wed, 19 Mar 2025, 00:28 p.lavers via , <p.lavers=[email protected]> wrote:
To ensure the whole train is considered when assessing block occupancy by current sensors and not just the current drawing locomotive the standard solution is resistive wheelsets. However JMRI knows (with speed profiling) the speed of a train and can also record its length. Along with block length these values would allow a calculation of the block occupied by the end of the train. Would it therefore not be possible to show a block as occupied until the end of the train had left it? I can't find any information on this functionality within JMRI. Is this something that could be implemented on top of JMRI in (say) python or java? Anyone explored this? Any ideas?