Skip to content

Commit

Permalink
Merge pull request #51 from johnrm174/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
johnrm174 authored Jul 15, 2024
2 parents 2147e90 + a52d4a1 commit ce25ab4
Show file tree
Hide file tree
Showing 33 changed files with 43,788 additions and 4,563 deletions.
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ without some of the Raspberry-Pi specific interfacing functions).
* Interfaces with the Pi-SPROG DCC command station to drive the signals and points out on the layout.
* Uses the Raspberry Pi GPIO inputs to provide train detection in support of signalling automation.
* Incorporates MQTT networking to allow multiple signalling applications to be linked for larger layouts.
* Provides a [Public API](https://github.com/johnrm174/model-railway-signalling/blob/main/PUBLIC_API.md) to support custom layout control interfaces.
* Provides a [Public API](https://github.com/johnrm174/model-railway-signalling/blob/main/PUBLIC_API.md)
to support custom layout control interfaces.

![Example Screenshot](https://github.com/johnrm174/model-railway-signalling/blob/main/README_screenshot2.png)

Expand All @@ -21,11 +22,12 @@ The website also included a number of user guides that can be downloaded (in PDF
My youTube channel also has a number of videos demonstrating the use of the application:
[https://www.youtube.com/@DCCModelRailwaySignalling](https://www.youtube.com/@DCCModelRailwaySignalling)

## What's new for Release 4.3.0:
## What's new for Release 4.4.0:

* 'Y' points can now be created on the schematic (select in the point configuration dialog
* Improvements to the 'look' of signal objects on the schematic
* Bugfix to 'Track Sensor' selection when toggling modes
* Support for 'complex trackwork': single slips, double slips, scissor crossovers, trap points, Y-points and 3-way points
can now be represented on the schematic and incorporated within your layout signalling scheme.
* The position of point control buttons can be 'tweaked' via the UI to de-conflict with other schematic objects
when developing complex and/or 'busy' track schematics

Bug reports and feedback is welcome and appreciated:
* What aspects are intuitive? What aspects aren't?
Expand Down
32 changes: 25 additions & 7 deletions configuration_examples/automation_colour_light_example.sig
Original file line number Diff line number Diff line change
Expand Up @@ -1222,6 +1222,7 @@
"hasfpl": false,
"item": "point",
"itemid": 5,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 0,
"posx": 1275.0,
Expand Down Expand Up @@ -1279,7 +1280,9 @@
]
]
],
"tags": "point5"
"tags": "point5",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"3c7bba34-5257-4b19-824b-0ccee7c32079": {
"approachcontrol": [
Expand Down Expand Up @@ -9988,13 +9991,16 @@
"hasfpl": false,
"item": "point",
"itemid": 4,
"itemsubtype": 1,
"itemtype": 1,
"orientation": 180,
"posx": 1225.0,
"posy": 225.0,
"reverse": false,
"siginterlock": [],
"tags": "point4"
"tags": "point4",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"6df4e851-8669-4940-8dc9-fec3e1873294": {
"background": "grey85",
Expand Down Expand Up @@ -14619,6 +14625,7 @@
"hasfpl": true,
"item": "point",
"itemid": 3,
"itemsubtype": 1,
"itemtype": 1,
"orientation": 0,
"posx": 1225.0,
Expand Down Expand Up @@ -14666,7 +14673,9 @@
]
]
],
"tags": "point3"
"tags": "point3",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"c157e7b9-9ea8-46a6-8b6f-99f2ac3b6626": {
"arrowends": 0,
Expand Down Expand Up @@ -14700,6 +14709,7 @@
"hasfpl": true,
"item": "point",
"itemid": 2,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 0,
"posx": 775.0,
Expand Down Expand Up @@ -14747,7 +14757,9 @@
]
]
],
"tags": "point2"
"tags": "point2",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"c8564be9-6891-48f3-999a-53472f24c85f": {
"arrowends": 2,
Expand Down Expand Up @@ -16975,13 +16987,16 @@
"hasfpl": false,
"item": "point",
"itemid": 1,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 180,
"posx": 775.0,
"posy": 175.0,
"reverse": false,
"siginterlock": [],
"tags": "point1"
"tags": "point1",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"e3b1ad43-1e39-456d-aad8-7943e5864ac8": {
"bbox": 573,
Expand Down Expand Up @@ -19208,13 +19223,16 @@
"hasfpl": false,
"item": "point",
"itemid": 6,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 180,
"posx": 1275.0,
"posy": 225.0,
"reverse": false,
"siginterlock": [],
"tags": "point6"
"tags": "point6",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"f514300f-50b5-477c-9673-8cacdaac0c5b": {
"background": "grey85",
Expand Down Expand Up @@ -21549,7 +21567,7 @@
"filename": "/home/pi/Software/model-railway-signalling/configuration_examples/automation_colour_light_example.sig",
"info": "This layout is a development of the basic interlocking example to demonstrate signalling automation\n(note that the application needs to be in 'run' mode for all automation features to function).\n\nTrack sensors (such as those from TrainTech, Heathcote Electronics, DCC Concepts etc) can be located \nwith each signal and connected in to the R-Pi's GPIO ports (via appropriate opto isolator circuits).\nEach GPIO port can then be mapped to a signal to generate 'signal passed' events - In 'edit' mode,\nclick on a signal and select the 'automation' tab to view the configuration. 'Signal passed' events\ncan also be triggered by clicking on the small button at the base of each signal (as an aid to \ndevelopment and testing of signalling schemes before going 'live' with the R-Pi).\n\nTrack sections can be added to the schematic to provide a mimic display of track occupancy (when a\ntrain passes a signal (signal must be 'off') it gets passed from the section behind to the section ahead.\nThe required behavior is configured via the 'automation' tab of each signal. For example, signal 1\ncontrols two 'routes' so when passed, section 2 will be cleared and either section 12 or 3 will be set \nto occupied, depending on which route the signal is cleared for.\n\nAll main signals are configured to be 'overridden' if the track section ahead is occupied. This means\nthat each signal will automatically change to 'on' when passed (section ahead is occupied) and then\nrevert to'off' as soon as the section ahead is cleared. The actual aspect displayed when 'off' will \ndepend on the aspect of the signal ahead (specified via the 'interlocking tab'). This means that any\nsignals on the layout that don't need a level of manual control can be 'fully automated' (no buttons).\n\nTo simulate prototypical aspect changes for trains going off scene, the 'exit' signals (signals 4 and\n11 in this example) can be configured as 'timed signals'. Once passed they are overriden to 'on' (as\nper the other signals on the layout) but then cycle back through the aspects back to 'proceed'.\n\nTrack sensors can also positioned slightly before the signal and mapped to generate 'signal approached'\nevents to simulate 'approach control'. In this example, signal 1 is configured for 'release on yellow'\napproach control for the diverging route (in the case of the diverging route having a speed restriction).\nThis means the signal (when 'off') will initially display a yellow aspect (with the signals behind \ndisplaying flashing yellow and flashing double yellow). When the train approaches the signal (having\nslowed down for the diverging route) it will automatically change to green.\n\nTo demonstrate all the above in action, set 'run' mode and reset the layout to set all signals, points\nand track sections back to their default states. unlock, switch and re-lock points 2 and 3 for the\ndiverging loop line and set signals 8, 1, 2 and 4 to 'off'. Right click the far left track section and\nenter a train designation code of your choice (this sets the section to 'occupied'. Now, move the train\nthrough the schematic, clicking the 'signal passed' button at the base of each signal along the route\nin turn (don't forget to click the 'signal approached' button ahead of signal 1 if you want to see\napproach control working). When you get to signal 4, the train will disappear 'off scene' and the signal\nwill cycle back through the aspects (with a short delay between aspects) until it gets back to green.\n\nAlternatively, if running on a Raspberry pi, the track sensors can be triggered directly via the Ri-Pi's \nGPIO ports (momentarily connect the appropriate GPIO pin to one of the R-Pi's 0V DC pins). Select \n'Settings' =>'Sensors' from the Menubar to view the configuration. In this example the Track Sensor IDs\nhave been mapped to the GPIO port number, but any numbering scheme can be used (e.g. allocate the same ID \nfor the sensor as the signal ID it is triggering). \n\nThe layout is fully configured to support all possible train movements (including shunting movements)\nso have a play - but note that signals can only be 'passed' when 'off' for the track occupancy\nchanges to work correctly (the application currently doesn't support any form of SPAD functionality)\n\n\n\n",
"spadpopups": false,
"version": "Version 4.3.0"
"version": "Version 4.4.0"
},
"gpio": {
"portmappings": [
Expand Down
36 changes: 27 additions & 9 deletions configuration_examples/automation_semaphore_example.sig
Original file line number Diff line number Diff line change
Expand Up @@ -10883,6 +10883,7 @@
"hasfpl": true,
"item": "point",
"itemid": 3,
"itemsubtype": 1,
"itemtype": 1,
"orientation": 0,
"posx": 1300,
Expand Down Expand Up @@ -10930,7 +10931,9 @@
]
]
],
"tags": "point3"
"tags": "point3",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"71e6fad1-a16e-4a4a-be41-a40a63a0f006": {
"approachcontrol": [
Expand Down Expand Up @@ -15352,13 +15355,16 @@
"hasfpl": false,
"item": "point",
"itemid": 4,
"itemsubtype": 1,
"itemtype": 1,
"orientation": 180,
"posx": 1300,
"posy": 225,
"reverse": false,
"siginterlock": [],
"tags": "point4"
"tags": "point4",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"bd8c0b62-add0-4714-b49a-7bbae0da4124": {
"bbox": 1189,
Expand Down Expand Up @@ -16478,6 +16484,7 @@
"hasfpl": true,
"item": "point",
"itemid": 2,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 0,
"posx": 950,
Expand Down Expand Up @@ -16525,7 +16532,9 @@
]
]
],
"tags": "point2"
"tags": "point2",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"c8564be9-6891-48f3-999a-53472f24c85f": {
"arrowends": 2,
Expand Down Expand Up @@ -17656,6 +17665,7 @@
"hasfpl": false,
"item": "point",
"itemid": 5,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 0,
"posx": 1350,
Expand Down Expand Up @@ -17713,7 +17723,9 @@
]
]
],
"tags": "point5"
"tags": "point5",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"dcf7ea0d-cd58-45bf-842e-d4e6e87c9a2a": {
"bbox": 1260,
Expand All @@ -17736,13 +17748,16 @@
"hasfpl": false,
"item": "point",
"itemid": 1,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 180,
"posx": 950,
"posy": 175,
"reverse": false,
"siginterlock": [],
"tags": "point1"
"tags": "point1",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"e0705584-fbf0-47f0-a695-810489e4d5d4": {
"bbox": 1269,
Expand Down Expand Up @@ -18840,13 +18855,16 @@
"hasfpl": false,
"item": "point",
"itemid": 6,
"itemsubtype": 1,
"itemtype": 2,
"orientation": 180,
"posx": 1350,
"posy": 225,
"reverse": false,
"siginterlock": [],
"tags": "point6"
"tags": "point6",
"xbuttonoffset": 0,
"ybuttonoffset": 0
},
"f455f78a-6e63-453c-b335-28b389182cbb": {
"approachcontrol": [
Expand Down Expand Up @@ -19935,7 +19953,7 @@
true,
""
],
"bbox": 1321,
"bbox": 1320,
"dccaspects": [
[
[
Expand Down Expand Up @@ -20999,7 +21017,7 @@
]
},
"fc4b8a11-3862-417f-ba09-493456b59064": {
"bbox": 1325,
"bbox": 1324,
"defaultlabel": "XXXXX",
"editable": true,
"item": "section",
Expand Down Expand Up @@ -21117,7 +21135,7 @@
"filename": "/home/pi/Software/model-railway-signalling/configuration_examples/automation_semaphore_example.sig",
"info": "This layout is a development of the basic interlocking example to demonstrate signalling automation\n(note that the application needs to be in 'run' mode for all automation features to function).\n\nTrack sensors (such as those from TrainTech, Heathcote Electronics, DCC Concepts etc) can be located \nwith each signal and connected in to the R-Pi's GPIO ports (via appropriate opto-isolator circuits).\nEach GPIO port can then be mapped to a signal to generate 'signal passed' events - In 'edit' mode,\nclick on a signal and select the 'automation' tab to view the configuration (note that external\nGPIO sensors haven't been configured for this particular example layout). 'Signal passed' events\ncan also be triggered by clicking on the small button at the base of each signal (as an aid to \ndevelopment and testing of signalling schemes before going 'live' with the R-Pi).\n\nTrack sections can be added to the schematic to provide a mimic display of track occupancy (when a\ntrain passes a signal (signal must be 'off') it gets passed from the section behind to the section ahead.\nThe required behavior is configured via the 'automation' tab of each signal. For example, signal 1\ncontrols two 'routes' so when passed, section 2 will be cleared and either section 12 or 3 will be set \nto occupied, depending on which route the signal is cleared for.\n\nAll main signals are configured to be 'overridden' if the track section ahead is occupied. This means\nthat each signal will automatically change to 'on' when passed (section ahead is occupied) and then\nrevert to 'off' as soon as the section ahead is cleared. Note that some of the signals in this example \nhave been configured as 'fully automatic' (without a control button). This means that they will be 'off'\nby default and controlled entirely by whether the track section ahead is occupied or not.\n\nTo simulate prototypical aspect changes for trains going off scene, the 'exit' signals (signals 4 and\n11 in this example) can be configured as 'timed signals'. Once passed (when 'off') they are overriden \nto 'on' (as per the other signals on the layout) but then revert to 'off' after the specified delay.\n\nTrack sensors can also be positioned slightly before the signal and mapped to generate 'signal \napproached' events to simulate 'approach control'. In this example, all non-fully-automatic home signals \nare configured for 'release on red based on the signals ahead'. This means that if any home signals ahead\nare showing danger then the home signal will also be overridden to 'on' by default.As the train approaches\nthe signal (at a slow speed as the signal is against it) then the signal will be released to 'off' to\nallow the train to pass and then revert back to the overidden 'on' state when the signal is passed.\nSignal 1 is also configured for 'release on red' for the diverging (low-speed) route. In this case it\nwill be overridden to 'on' even if all home signals ahead are 'off', only released as the train approaches.\n\nTo demonstrate all the above in action, set 'run' mode and reset the layout to set all signals, points\nand track sections back to their default states. Right click the far left track section and enter a train\ndesignation code of your choice (this sets the section to 'occupied'). Set signals 8, 1 and 3 to 'off' (note\nthat they will remail overridden to 'on' as home signal ahead 4 is still showing 'on'. Now, move the train\nthrough the schematic, clicking the 'signal passed' button at the base of each signal along the route\nin turn (don't forget to click the 'signal approached' button ahead of each signal if you want to see\napproach control working). When the train reaches signal 4, set the signal to 'off' and trigger the signal\npassed event. The track section before the signal will be cleared and the signal overridden to 'on' as part\nof the timed sequence. After a short delay it will revert to 'off' and when it does, all home signals behind\nwill also revert to 'off' (as they will no longer be overridden on a home signal ahead).\n\nThe layout is fully configured to support all possible train movements (including shunting movements)\nso have a play - but note that signals can only be 'passed' when 'off' for the track occupancy\nchanges to work correctly (the application currently doesn't support any form of SPAD functionality)\n\n",
"spadpopups": false,
"version": "Version 4.3.0"
"version": "Version 4.4.0"
},
"gpio": {
"portmappings": [],
Expand Down
Loading

0 comments on commit ce25ab4

Please sign in to comment.