rsmp 0.43.2 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rubocop.yaml +1 -1
  3. data/.github/workflows/sus.yaml +1 -1
  4. data/.gitignore +0 -1
  5. data/CHANGELOG.md +12 -1
  6. data/Gemfile +0 -2
  7. data/Gemfile.lock +10 -88
  8. data/README.md +30 -35
  9. data/Rakefile +2 -2
  10. data/config/supervisor.yaml +2 -1
  11. data/config/tlc.yaml +2 -2
  12. data/documentation/configuration.md +12 -11
  13. data/documentation/message_distribution.md +1 -2
  14. data/documentation/tasks.md +1 -2
  15. data/exe/rsmp +1 -2
  16. data/lib/rsmp/cli.rb +62 -8
  17. data/lib/rsmp/component/component.rb +0 -4
  18. data/lib/rsmp/component/component_base.rb +15 -2
  19. data/lib/rsmp/component/component_proxy.rb +1 -1
  20. data/lib/rsmp/component/components.rb +22 -1
  21. data/lib/rsmp/convert/export/json_schema/outputs.rb +19 -0
  22. data/lib/rsmp/convert/export/json_schema/values.rb +7 -5
  23. data/lib/rsmp/convert/export/json_schema.rb +15 -3
  24. data/lib/rsmp/helpers/deep_merge.rb +2 -2
  25. data/lib/rsmp/message.rb +32 -0
  26. data/lib/rsmp/node/site/site.rb +34 -10
  27. data/lib/rsmp/node/supervisor/modules/configuration.rb +32 -5
  28. data/lib/rsmp/node/supervisor/modules/connection.rb +0 -2
  29. data/lib/rsmp/node/supervisor/supervisor.rb +0 -7
  30. data/lib/rsmp/options/options.rb +55 -6
  31. data/lib/rsmp/options/schemas/site.json +6 -3
  32. data/lib/rsmp/options/schemas/supervisor.json +5 -2
  33. data/lib/rsmp/options/schemas/supervisor_site.json +5 -2
  34. data/lib/rsmp/options/site_options.rb +3 -2
  35. data/lib/rsmp/options/supervisor_options.rb +3 -1
  36. data/lib/rsmp/proxy/modules/acknowledgements.rb +2 -0
  37. data/lib/rsmp/proxy/modules/receive.rb +5 -2
  38. data/lib/rsmp/proxy/modules/state.rb +1 -0
  39. data/lib/rsmp/proxy/modules/versions.rb +90 -15
  40. data/lib/rsmp/proxy/proxy.rb +52 -3
  41. data/lib/rsmp/proxy/site/modules/status.rb +5 -3
  42. data/lib/rsmp/proxy/site/site_proxy.rb +68 -35
  43. data/lib/rsmp/proxy/site/sxl_selection.rb +54 -0
  44. data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +54 -18
  45. data/lib/rsmp/schema/core_sxl_resolution.rb +69 -0
  46. data/lib/rsmp/schema/message_resolution.rb +104 -0
  47. data/lib/rsmp/schema/validation.rb +57 -0
  48. data/lib/rsmp/schema.rb +87 -32
  49. data/lib/rsmp/schema_error.rb +7 -1
  50. data/lib/rsmp/sxl/interface.rb +48 -0
  51. data/lib/rsmp/sxl/registry.rb +55 -0
  52. data/lib/rsmp/sxl/site_interface.rb +10 -0
  53. data/lib/rsmp/sxl/supervisor_interface.rb +21 -0
  54. data/lib/rsmp/tlc/detector_logic.rb +2 -2
  55. data/lib/rsmp/tlc/signal_group.rb +2 -2
  56. data/lib/rsmp/tlc/site_interface.rb +10 -0
  57. data/lib/rsmp/tlc/{traffic_controller_proxy.rb → supervisor_interface.rb} +19 -34
  58. data/lib/rsmp/tlc/traffic_controller.rb +10 -2
  59. data/lib/rsmp/tlc/traffic_controller_site.rb +4 -2
  60. data/lib/rsmp/tlc.rb +10 -0
  61. data/lib/rsmp/version.rb +1 -1
  62. data/lib/rsmp.rb +8 -1
  63. data/rsmp.gemspec +5 -5
  64. data/schemas/core/3.3.0/aggregated_status.json +25 -0
  65. data/schemas/core/3.3.0/aggregated_status_request.json +9 -0
  66. data/schemas/core/3.3.0/alarm.json +71 -0
  67. data/schemas/core/3.3.0/alarm_acknowledge.json +11 -0
  68. data/schemas/core/3.3.0/alarm_issue.json +44 -0
  69. data/schemas/core/3.3.0/alarm_request.json +3 -0
  70. data/schemas/core/3.3.0/alarm_suspend_resume.json +3 -0
  71. data/schemas/core/3.3.0/alarm_suspended_resumed.json +44 -0
  72. data/schemas/core/3.3.0/command_request.json +24 -0
  73. data/schemas/core/3.3.0/command_response.json +35 -0
  74. data/schemas/core/3.3.0/component_list.json +24 -0
  75. data/schemas/core/3.3.0/core.json +40 -0
  76. data/schemas/core/3.3.0/definitions.json +133 -0
  77. data/schemas/core/3.3.0/message_ack.json +11 -0
  78. data/schemas/core/3.3.0/message_not_ack.json +15 -0
  79. data/schemas/core/3.3.0/rsmp.json +142 -0
  80. data/schemas/core/3.3.0/status.json +21 -0
  81. data/schemas/core/3.3.0/status_request.json +5 -0
  82. data/schemas/core/3.3.0/status_response.json +41 -0
  83. data/schemas/core/3.3.0/status_subscribe.json +31 -0
  84. data/schemas/core/3.3.0/status_unsubscribe.json +5 -0
  85. data/schemas/core/3.3.0/status_update.json +41 -0
  86. data/schemas/core/3.3.0/version.json +144 -0
  87. data/schemas/core/3.3.0/watchdog.json +9 -0
  88. data/schemas/tlc/1.0.10/rsmp.json +2 -1
  89. data/schemas/tlc/1.0.10/sxl.yaml +1 -0
  90. data/schemas/tlc/1.0.10/sxl_index.json +356 -0
  91. data/schemas/tlc/1.0.13/rsmp.json +2 -1
  92. data/schemas/tlc/1.0.13/sxl.yaml +1 -0
  93. data/schemas/tlc/1.0.13/sxl_index.json +436 -0
  94. data/schemas/tlc/1.0.14/rsmp.json +2 -1
  95. data/schemas/tlc/1.0.14/sxl.yaml +1 -0
  96. data/schemas/tlc/1.0.14/sxl_index.json +468 -0
  97. data/schemas/tlc/1.0.15/rsmp.json +2 -1
  98. data/schemas/tlc/1.0.15/sxl.yaml +1 -0
  99. data/schemas/tlc/1.0.15/sxl_index.json +508 -0
  100. data/schemas/tlc/1.0.7/rsmp.json +2 -1
  101. data/schemas/tlc/1.0.7/sxl.yaml +1 -0
  102. data/schemas/tlc/1.0.7/sxl_index.json +356 -0
  103. data/schemas/tlc/1.0.8/rsmp.json +2 -1
  104. data/schemas/tlc/1.0.8/sxl.yaml +1 -0
  105. data/schemas/tlc/1.0.8/sxl_index.json +356 -0
  106. data/schemas/tlc/1.0.9/rsmp.json +2 -1
  107. data/schemas/tlc/1.0.9/sxl.yaml +1 -0
  108. data/schemas/tlc/1.0.9/sxl_index.json +356 -0
  109. data/schemas/tlc/1.1.0/rsmp.json +2 -1
  110. data/schemas/tlc/1.1.0/sxl.yaml +1 -0
  111. data/schemas/tlc/1.1.0/sxl_index.json +572 -0
  112. data/schemas/tlc/1.2.0/rsmp.json +2 -1
  113. data/schemas/tlc/1.2.0/sxl.yaml +1 -0
  114. data/schemas/tlc/1.2.0/sxl_index.json +571 -0
  115. data/schemas/tlc/1.2.1/rsmp.json +2 -1
  116. data/schemas/tlc/1.2.1/sxl.yaml +1 -0
  117. data/schemas/tlc/1.2.1/sxl_index.json +571 -0
  118. data/schemas/tlc/1.3.0/alarms/A0001.json +4 -0
  119. data/schemas/tlc/1.3.0/alarms/A0002.json +4 -0
  120. data/schemas/tlc/1.3.0/alarms/A0003.json +4 -0
  121. data/schemas/tlc/1.3.0/alarms/A0004.json +4 -0
  122. data/schemas/tlc/1.3.0/alarms/A0005.json +4 -0
  123. data/schemas/tlc/1.3.0/alarms/A0006.json +4 -0
  124. data/schemas/tlc/1.3.0/alarms/A0007.json +34 -0
  125. data/schemas/tlc/1.3.0/alarms/A0008.json +30 -0
  126. data/schemas/tlc/1.3.0/alarms/A0009.json +4 -0
  127. data/schemas/tlc/1.3.0/alarms/A0010.json +4 -0
  128. data/schemas/tlc/1.3.0/alarms/A0101.json +4 -0
  129. data/schemas/tlc/1.3.0/alarms/A0201.json +35 -0
  130. data/schemas/tlc/1.3.0/alarms/A0202.json +35 -0
  131. data/schemas/tlc/1.3.0/alarms/A0301.json +92 -0
  132. data/schemas/tlc/1.3.0/alarms/A0302.json +115 -0
  133. data/schemas/tlc/1.3.0/alarms/A0303.json +92 -0
  134. data/schemas/tlc/1.3.0/alarms/A0304.json +115 -0
  135. data/schemas/tlc/1.3.0/alarms/alarms.json +287 -0
  136. data/schemas/tlc/1.3.0/commands/M0001.json +92 -0
  137. data/schemas/tlc/1.3.0/commands/M0002.json +69 -0
  138. data/schemas/tlc/1.3.0/commands/M0003.json +69 -0
  139. data/schemas/tlc/1.3.0/commands/M0004.json +51 -0
  140. data/schemas/tlc/1.3.0/commands/M0005.json +69 -0
  141. data/schemas/tlc/1.3.0/commands/M0006.json +69 -0
  142. data/schemas/tlc/1.3.0/commands/M0007.json +51 -0
  143. data/schemas/tlc/1.3.0/commands/M0008.json +87 -0
  144. data/schemas/tlc/1.3.0/commands/M0010.json +51 -0
  145. data/schemas/tlc/1.3.0/commands/M0011.json +51 -0
  146. data/schemas/tlc/1.3.0/commands/M0012.json +51 -0
  147. data/schemas/tlc/1.3.0/commands/M0013.json +51 -0
  148. data/schemas/tlc/1.3.0/commands/M0014.json +69 -0
  149. data/schemas/tlc/1.3.0/commands/M0015.json +69 -0
  150. data/schemas/tlc/1.3.0/commands/M0016.json +51 -0
  151. data/schemas/tlc/1.3.0/commands/M0017.json +51 -0
  152. data/schemas/tlc/1.3.0/commands/M0018.json +69 -0
  153. data/schemas/tlc/1.3.0/commands/M0019.json +87 -0
  154. data/schemas/tlc/1.3.0/commands/M0020.json +87 -0
  155. data/schemas/tlc/1.3.0/commands/M0021.json +51 -0
  156. data/schemas/tlc/1.3.0/commands/M0022.json +249 -0
  157. data/schemas/tlc/1.3.0/commands/M0023.json +51 -0
  158. data/schemas/tlc/1.3.0/commands/M0024.json +33 -0
  159. data/schemas/tlc/1.3.0/commands/M0103.json +72 -0
  160. data/schemas/tlc/1.3.0/commands/M0104.json +141 -0
  161. data/schemas/tlc/1.3.0/commands/command_requests.json +8 -0
  162. data/schemas/tlc/1.3.0/commands/command_responses.json +8 -0
  163. data/schemas/tlc/1.3.0/commands/commands.json +415 -0
  164. data/schemas/tlc/1.3.0/defs/definitions.json +133 -0
  165. data/schemas/tlc/1.3.0/defs/guards.json +24 -0
  166. data/schemas/tlc/1.3.0/rsmp.json +75 -0
  167. data/schemas/tlc/1.3.0/statuses/S0001.json +109 -0
  168. data/schemas/tlc/1.3.0/statuses/S0002.json +36 -0
  169. data/schemas/tlc/1.3.0/statuses/S0003.json +36 -0
  170. data/schemas/tlc/1.3.0/statuses/S0004.json +36 -0
  171. data/schemas/tlc/1.3.0/statuses/S0005.json +72 -0
  172. data/schemas/tlc/1.3.0/statuses/S0006.json +54 -0
  173. data/schemas/tlc/1.3.0/statuses/S0007.json +73 -0
  174. data/schemas/tlc/1.3.0/statuses/S0008.json +73 -0
  175. data/schemas/tlc/1.3.0/statuses/S0009.json +73 -0
  176. data/schemas/tlc/1.3.0/statuses/S0010.json +73 -0
  177. data/schemas/tlc/1.3.0/statuses/S0011.json +73 -0
  178. data/schemas/tlc/1.3.0/statuses/S0012.json +73 -0
  179. data/schemas/tlc/1.3.0/statuses/S0013.json +54 -0
  180. data/schemas/tlc/1.3.0/statuses/S0014.json +55 -0
  181. data/schemas/tlc/1.3.0/statuses/S0015.json +55 -0
  182. data/schemas/tlc/1.3.0/statuses/S0016.json +36 -0
  183. data/schemas/tlc/1.3.0/statuses/S0017.json +36 -0
  184. data/schemas/tlc/1.3.0/statuses/S0018.json +61 -0
  185. data/schemas/tlc/1.3.0/statuses/S0019.json +36 -0
  186. data/schemas/tlc/1.3.0/statuses/S0020.json +54 -0
  187. data/schemas/tlc/1.3.0/statuses/S0021.json +37 -0
  188. data/schemas/tlc/1.3.0/statuses/S0022.json +36 -0
  189. data/schemas/tlc/1.3.0/statuses/S0023.json +37 -0
  190. data/schemas/tlc/1.3.0/statuses/S0024.json +37 -0
  191. data/schemas/tlc/1.3.0/statuses/S0025.json +162 -0
  192. data/schemas/tlc/1.3.0/statuses/S0026.json +36 -0
  193. data/schemas/tlc/1.3.0/statuses/S0027.json +36 -0
  194. data/schemas/tlc/1.3.0/statuses/S0028.json +36 -0
  195. data/schemas/tlc/1.3.0/statuses/S0029.json +36 -0
  196. data/schemas/tlc/1.3.0/statuses/S0030.json +36 -0
  197. data/schemas/tlc/1.3.0/statuses/S0031.json +36 -0
  198. data/schemas/tlc/1.3.0/statuses/S0032.json +73 -0
  199. data/schemas/tlc/1.3.0/statuses/S0033.json +77 -0
  200. data/schemas/tlc/1.3.0/statuses/S0034.json +36 -0
  201. data/schemas/tlc/1.3.0/statuses/S0035.json +49 -0
  202. data/schemas/tlc/1.3.0/statuses/S0091.json +40 -0
  203. data/schemas/tlc/1.3.0/statuses/S0092.json +40 -0
  204. data/schemas/tlc/1.3.0/statuses/S0095.json +36 -0
  205. data/schemas/tlc/1.3.0/statuses/S0096.json +126 -0
  206. data/schemas/tlc/1.3.0/statuses/S0097.json +54 -0
  207. data/schemas/tlc/1.3.0/statuses/S0098.json +72 -0
  208. data/schemas/tlc/1.3.0/statuses/S0201.json +54 -0
  209. data/schemas/tlc/1.3.0/statuses/S0202.json +54 -0
  210. data/schemas/tlc/1.3.0/statuses/S0203.json +54 -0
  211. data/schemas/tlc/1.3.0/statuses/S0204.json +198 -0
  212. data/schemas/tlc/1.3.0/statuses/S0205.json +54 -0
  213. data/schemas/tlc/1.3.0/statuses/S0206.json +54 -0
  214. data/schemas/tlc/1.3.0/statuses/S0207.json +54 -0
  215. data/schemas/tlc/1.3.0/statuses/S0208.json +198 -0
  216. data/schemas/tlc/1.3.0/statuses/statuses.json +787 -0
  217. data/schemas/tlc/1.3.0/sxl.yaml +2297 -0
  218. data/schemas/tlc/1.3.0/sxl_index.json +578 -0
  219. metadata +157 -15
  220. data/.github/copilot-instructions.md +0 -33
  221. data/.rspec +0 -1
  222. data/cucumber.yml +0 -1
@@ -0,0 +1,2297 @@
1
+ ---
2
+ meta:
3
+ name: tlc
4
+ description: Traffic Light Controllers
5
+ version: 1.3.0
6
+ minimum_core_version: 3.3.0
7
+ objects:
8
+ Traffic Light Controller:
9
+ description:
10
+ aggregated_status:
11
+ 1:
12
+ title: Local mode
13
+ description: Traffic Light Controller is in local mode. NTS has no control.
14
+ 2:
15
+ title: No Communications
16
+ description: Not used
17
+ 3:
18
+ title: High Priority Fault
19
+ description: Traffic Light Controller is in fail-safe mode; e.g. yellow flash
20
+ or dark mode
21
+ 4:
22
+ title: Medium Priority Fault
23
+ description: |-
24
+ Traffic Light Controller has a medium priority fault, but not in fail-safe mode.
25
+ E.g. several lamp faults or detector fault
26
+ 5:
27
+ title: Low Priority Fault
28
+ description: Traffic Light Controller has a low priority fault. E.g. Detector
29
+ fault
30
+ 6:
31
+ title: Connected - In Use
32
+ description: Traffic Light Controller is not in dark mode or in yellow flash
33
+ 7:
34
+ title: Connected - Idle
35
+ description: Traffic Light Controller is in dark mode or in yellow flash
36
+ 8:
37
+ title: Not Connected
38
+ description: Not used
39
+ functional_position: null
40
+ functional_state: null
41
+ alarms:
42
+ A0001:
43
+ description: |-
44
+ Serious hardware error.
45
+ Is a "major fault" defined according to 3.8 in EN12675 which causes the controller to switch to a "failure mode" according to 3.6 in EN12675.
46
+ priority: 2
47
+ category: D
48
+ from_version: 1.0.0
49
+ A0002:
50
+ description: |-
51
+ Less serious hardware error.
52
+ Is a "minor fault" defined according to 3.11 in EN12675.
53
+ priority: 3
54
+ category: D
55
+ from_version: 1.0.0
56
+ A0003:
57
+ description: |-
58
+ Serious configuration error.
59
+ Is a "major fault" defined according to 3.8 in EN12675 which causes the controller to switch to a "failure mode" according to 3.6 in EN12675.
60
+ priority: 2
61
+ category: D
62
+ from_version: 1.0.0
63
+ A0004:
64
+ description: |-
65
+ Less serious configuration error.
66
+ Is a "minor fault" defined according to 3.11 in EN12675.
67
+ priority: 3
68
+ category: D
69
+ from_version: 1.0.0
70
+ A0005:
71
+ description: |-
72
+ Synchronisation error (coordination).
73
+ Is a "minor fault" defined according to 3.11 in EN12675.
74
+ priority: 3
75
+ category: D
76
+ from_version: 1.0.0
77
+ A0006:
78
+ description: |-
79
+ Safety error
80
+ Is a "major fault" defined according to 3.8 in EN12675 which causes the controller to switch to a "failure mode" according to 3.6 in EN12675.
81
+ priority: 2
82
+ category: D
83
+ from_version: 1.0.0
84
+ A0007:
85
+ description: |-
86
+ Communication error.
87
+ Used for communication errors with the central system. Includes NTP connection loss if the TLC is configured to use NTP.
88
+ Is a "minor fault" defined according to 3.11 in EN12675.
89
+ priority: 3
90
+ category: D
91
+ from_version: 1.0.0
92
+ arguments:
93
+ protocol:
94
+ type: string
95
+ description: Type of communication error, e.g. NTP or RSMP
96
+ values:
97
+ rsmp: RSMP
98
+ ntp: NTP
99
+ A0009:
100
+ description: |-
101
+ Other error.
102
+ Used for other errors not covered by any other alarm type.
103
+ Is a "minor fault" defined according to 3.11 in EN12675.
104
+ priority: 3
105
+ category: D
106
+ from_version: 1.0.0
107
+ A0010:
108
+ description: |-
109
+ Door open.
110
+ Used for open door (room or cabinet).
111
+ priority: 3
112
+ category: D
113
+ from_version: 1.0.15
114
+ statuses:
115
+ S0001:
116
+ description: |-
117
+ Signal group status.
118
+ Provides the status of each signal group, e.g. green, yellow, red,
119
+ or other states used in the signal program.
120
+ See the section on signal group states for more information about
121
+ the possible states.
122
+
123
+ Can be used to draw a live signal group diagram as well as to provide
124
+ diagnostic information about the performance of the controller.
125
+
126
+ The base cycle counter is computed based on the internal clock and
127
+ the cycle time. Controllers in active coordination will have
128
+ synchronized base cycle counters.
129
+
130
+ The cycle clock is based on the base cycle counter, but shifts the
131
+ phase using the offset set in the controller:
132
+
133
+ c = (b + o) modulo t
134
+
135
+ where: \
136
+ c = cycle counter \
137
+ b = base cycle counter \
138
+ o = offset \
139
+ t = cycle time
140
+
141
+ THe cycle counter and base cycle counter are both specified using whole seconds.
142
+
143
+ See the coordination section for more information about cycle
144
+ counters.
145
+
146
+ The millisecond attributes provides the high resolution cycle counter
147
+ (not base cycle counter) of the the last signal group change.
148
+ If the controller internally works with discrete ticks, the value must
149
+ be quantized to the tick where the signal groups changed.
150
+ E.g. if the controller uses 100ms ticks, the value must be
151
+ quantized to 0, 100, 200, 300...
152
+
153
+ The millisecond attribute updates only when one or more signal group states changes,
154
+ NOT every millisecond. Subscribing with **sendOnChange** will therefore not result in
155
+ updates every millisecond.
156
+ from_version: 1.0.0
157
+ arguments:
158
+ signalgroupstatus:
159
+ type: string
160
+ description: |-
161
+ Signal group status as text field.
162
+ Each character represents the state of the signal group in consecutive order,
163
+ where the leftmost character starts with signal group 1.
164
+ Signal group status is described in detail in the corresponding section.
165
+ A dash "-" is used for undefined/non-existing signal groups.
166
+ pattern: "^[a-hA-G0-9N-P]*$"
167
+ basecyclecounter:
168
+ type: integer_as_string
169
+ description: |-
170
+ Base cycle counter.
171
+ Updates once per second, counting from 0 and wrapping around when reaching the cycle time.
172
+ min: 0
173
+ max: 999
174
+ cyclecounter:
175
+ type: integer_as_string
176
+ description: |-
177
+ Cycle counter.
178
+ Updates once per second, counting from 0 and wrapping around when reaching the cycle time.
179
+ min: 0
180
+ max: 999
181
+ millisecond:
182
+ type: integer_as_string
183
+ min: 0
184
+ max: 999999
185
+ description: |-
186
+ Provides the cycle counter (not base cycle counter) in milliseconds
187
+ of when the last signal group state changed occured.
188
+ Updates only when the signalgroupstatus attribute changes.
189
+ stage:
190
+ type: integer_as_string
191
+ description: Current stage (isolated)
192
+ min: 0
193
+ max: 999
194
+ S0002:
195
+ description: |-
196
+ Detector logic status.
197
+ Provides the status of all detector logics of the controller.
198
+ Can be used to draw a live signal group diagram as well provide diagnostic information about the performance of the controller. Can also be used for bus priority, external control systems, and much more.
199
+ from_version: 1.0.2
200
+ arguments:
201
+ detectorlogicstatus:
202
+ type: string_list_as_string
203
+ description: |-
204
+ Detector logic status as text field.
205
+ Each character represent the state of the detector logic in consecutive order,
206
+ where the leftmost character starts with detector logic 1.
207
+ 0 : Detector logic is not active
208
+ 1 : Detector logic is active
209
+ - : Detector logic is undefined/does not exist
210
+ S0003:
211
+ description: |-
212
+ Input status.
213
+ Input (1-255) of the controllers general purpose I/O.
214
+ Input is used where the traffic light controller must react to external control. It could be external detectors, bus priority, and much more.
215
+ from_version: 1.0.2
216
+ arguments:
217
+ inputstatus:
218
+ type: string_list_as_string
219
+ description: |-
220
+ Input status as text field.
221
+ Each character represent the state of the input in consecutive order,
222
+ where the leftmost character starts with input 1.
223
+ 0 : Input is not active
224
+ 1 : Input is active
225
+ - : Input is undefined/does not exist
226
+ S0004:
227
+ description: |-
228
+ Output status.
229
+ Output (1-255) of the controllers general purpose I/O.
230
+ Can be used for all types of output where the traffic light controller needs to control other equipment. Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.
231
+ from_version: 1.0.2
232
+ arguments:
233
+ outputstatus:
234
+ type: string
235
+ description: |-
236
+ Output status as text field.
237
+ Each character represent the state of the output status in consecutive order,
238
+ where the leftmost character starts with output 1.
239
+ 0 : Output is not active
240
+ 1 : Output is active
241
+ - : Output is undefined/does not exist
242
+ S0005:
243
+ description: |-
244
+ Traffic Light Controller starting.
245
+ The traffic signal is starting, e.g. it is in startup mode and has not begun working normally yet.
246
+ During startup mode the traffic controller shows dark, red, yellow flash or using the predetermined start cycle (minimum times).
247
+ from_version: 1.0.2
248
+ arguments:
249
+ status:
250
+ type: boolean_as_string
251
+ description: |-
252
+ False: Controller is not in start up mode
253
+ True: Controller is currently in start up mode
254
+ statusByIntersection:
255
+ description: |-
256
+ False: Intersection is not in start up mode
257
+ True: Intersection is currently in start up mode
258
+ type: array
259
+ items:
260
+ intersection:
261
+ type: integer_as_string
262
+ description: Intersection id
263
+ min: 0
264
+ max: 255
265
+ startup:
266
+ type: boolean_as_string
267
+ description: Start up mode
268
+ S0006:
269
+ description: |-
270
+ Emergency route.
271
+ The status is active during emergency prioritization.
272
+ Used in situations where full priority is given in the emergency vehicle program
273
+ or for other types of priority in some cases.
274
+
275
+ If no emergency route is active, status should be set to False, and emergencystage to zero.
276
+
277
+ Deprecated, use S0035 instead.
278
+ from_version: 1.0.2
279
+ arguments:
280
+ status:
281
+ type: boolean_as_string
282
+ deprecated: true
283
+ description: |-
284
+ False: Emergency route inactive
285
+ True: Emergency route active
286
+ emergencystage:
287
+ type: integer_as_string
288
+ deprecated: true
289
+ description: Number of emergency route (set to zero if no route is active)
290
+ min: 0
291
+ max: 255
292
+ S0007:
293
+ description: |-
294
+ Controller switched on.
295
+ The controller is active and is not in dark mode.
296
+ Used to determine if the there is output to the signal heads, e.g. it shows red, green or yellow to the vehicles.
297
+ During maintenance work the controller might be using dark mode (no output to the signal heads).
298
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "0" and "True" (one intersection) or "1,2" and "True,False" (two intersections).
299
+ from_version: 1.0.2
300
+ arguments:
301
+ intersection:
302
+ type: integer_list_as_string
303
+ description: |-
304
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
305
+ Use “0” for all intersections of the TLC.
306
+ min: 0
307
+ max: 255
308
+ status:
309
+ type: boolean_list_as_string
310
+ description: |-
311
+ False: Traffic Light Controller in dark mode
312
+ True: Traffic Light Controller not in dark mode
313
+ source:
314
+ description: Source of the status change
315
+ type: string_list_as_string
316
+ values:
317
+ operator_panel: Operator panel
318
+ calendar_clock: Calendar/clock
319
+ control_block: Control block
320
+ forced: Forced due to external command e.g. supervisor
321
+ startup: Set after startup mode
322
+ other: Other reason
323
+ S0008:
324
+ description: |-
325
+ Manual control.
326
+ Traffic control deactivated in controller.
327
+ Signal timings is controlled manually by service personnel using the operating panel of the controller.
328
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "0" and "True" (one intersection) or "1,2" and "True,False" (two intersections).
329
+ from_version: 1.0.2
330
+ arguments:
331
+ intersection:
332
+ type: integer_list_as_string
333
+ description: |-
334
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
335
+ Use “0” for all intersections of the TLC.
336
+ min: 0
337
+ max: 255
338
+ status:
339
+ type: boolean_list_as_string
340
+ description: |-
341
+ False: Manual control inactive
342
+ True: Manual control active
343
+ source:
344
+ type: string_list_as_string
345
+ description: Source of the status change
346
+ values:
347
+ operator_panel: Operator panel
348
+ calendar_clock: Calendar/clock
349
+ control_block: Control block
350
+ forced: Forced due to external command e.g. supervisor
351
+ startup: Set after startup mode
352
+ other: Other reason
353
+ S0009:
354
+ description: |-
355
+ Fixed time control.
356
+ Traffic actuated control deactivated and a pre-timed control is used.
357
+ Usually only used in case normal detectors can't be used, e.g. during maintenance work.
358
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "0" and "True" (one intersection) or "1,2" and "True,False" (two intersections).
359
+ from_version: 1.0.2
360
+ arguments:
361
+ intersection:
362
+ type: integer_list_as_string
363
+ description: |-
364
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
365
+ Use “0” for all intersections of the TLC.
366
+ min: 0
367
+ max: 255
368
+ status:
369
+ type: boolean_list_as_string
370
+ description: |-
371
+ False: Fixed time control inactive
372
+ True: Fixed time control active
373
+ source:
374
+ type: string_list_as_string
375
+ description: Source of the status change
376
+ values:
377
+ operator_panel: Operator panel
378
+ calendar_clock: Calendar/clock
379
+ control_block: Control block
380
+ forced: Forced due to external command e.g. supervisor
381
+ startup: Set after startup mode
382
+ other: Other reason
383
+ S0010:
384
+ description: |-
385
+ Isolated control.
386
+ Isolated control mode indicates that the controller operates independently of any other traffic light controller. This may be different depending on traffic program (time plan).
387
+ Used to determine if the controller is operating independently or operating with other controllers (coordination).
388
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "0" and "True" (one intersection) or "1,2" and "True,False" (two intersections).
389
+ from_version: 1.0.2
390
+ arguments:
391
+ intersection:
392
+ type: integer_list_as_string
393
+ description: |-
394
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
395
+ Use “0” for all intersections of the TLC.
396
+ min: 0
397
+ max: 255
398
+ status:
399
+ type: boolean_list_as_string
400
+ description: |-
401
+ False: Isolated control disabled
402
+ True: Isolated control enabled (Vehicle actuated control or Fixed time control)
403
+ source:
404
+ type: string_list_as_string
405
+ description: Source of the status change
406
+ values:
407
+ operator_panel: Operator panel
408
+ calendar_clock: Calendar/clock
409
+ control_block: Control block
410
+ forced: Forced due to external command e.g. supervisor
411
+ startup: Set after startup mode
412
+ other: Other reason
413
+ S0011:
414
+ description: |-
415
+ Yellow flash.
416
+ The controller shows yellow flash.
417
+ Yellow flash may be used during a serious fault (depending on configuration) or maintenance work. It can also be manually set using M0001.
418
+ Some countries may use yellow flash as a normal operating mode, and not necessarily during fault.
419
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "1,2" and "True,False"
420
+ from_version: 1.0.2
421
+ arguments:
422
+ intersection:
423
+ type: integer_list_as_string
424
+ description: |-
425
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
426
+ Use “0” for all intersections of the TLC.
427
+ min: 0
428
+ max: 255
429
+ status:
430
+ type: boolean_list_as_string
431
+ description: |-
432
+ False: Yellow flash disabled
433
+ True: Yellow flash enabled
434
+ source:
435
+ type: string_list_as_string
436
+ description: Source of the status change
437
+ values:
438
+ operator_panel: Operator panel
439
+ calendar_clock: Calendar/clock
440
+ control_block: Control block
441
+ forced: Forced due to external command e.g. supervisor
442
+ startup: Set after startup mode
443
+ other: Other reason
444
+ S0012:
445
+ description: |-
446
+ All red.
447
+ The controller show all red.
448
+ All red can be manually set using the controllers operating panel during maintenance work.
449
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "1,2" and "True,False"
450
+ from_version: 1.0.2
451
+ arguments:
452
+ intersection:
453
+ type: integer_list_as_string
454
+ description: |-
455
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
456
+ Use “0” for all intersections of the TLC.
457
+ min: 0
458
+ max: 255
459
+ status:
460
+ type: boolean_list_as_string
461
+ description: |-
462
+ False: All red disabled
463
+ True: All red enabled
464
+ source:
465
+ type: string_list_as_string
466
+ description: Source of the status change
467
+ values:
468
+ operator_panel: Operator panel
469
+ calendar_clock: Calendar/clock
470
+ control_block: Control block
471
+ forced: Forced due to external command e.g. supervisor
472
+ startup: Set after startup mode
473
+ other: Other reason
474
+ S0013:
475
+ description: |-
476
+ Police key
477
+ The controller is forced to dark mode or yellow flash.
478
+ The "police key" is an external control switch present in some controllers that manually switches the controller to either dark mode or yellow flash.
479
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "1,2" and "0,1"
480
+ from_version: 1.0.2
481
+ arguments:
482
+ intersection:
483
+ type: integer_list_as_string
484
+ description: |-
485
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
486
+ Use “0” for all intersections of the TLC.
487
+ min: 0
488
+ max: 255
489
+ status:
490
+ type: integer_list_as_string
491
+ values:
492
+ 0: disabled
493
+ 1: dark mode
494
+ 2: yellow flash
495
+ 3: all red
496
+ S0014:
497
+ description: |-
498
+ Current time plan.
499
+ The current time plan (signal program) used in the controller. There may be 1-255 predefined time plans.
500
+ The time plan (signal program) may change signal timings, cycle time, control strategy and much more. Typical usage is scenario based control where change of program is used to change priority etc.
501
+ from_version: 1.0.2
502
+ arguments:
503
+ status:
504
+ type: integer_as_string
505
+ description: Current time plan
506
+ min: 1
507
+ max: 255
508
+ source:
509
+ type: string_list_as_string
510
+ description: Source of the status change
511
+ values:
512
+ operator_panel: Operator panel
513
+ calendar_clock: Calendar/clock
514
+ control_block: Control block
515
+ forced: Forced due to external command e.g. supervisor
516
+ startup: Set after startup mode
517
+ other: Other reason
518
+ S0015:
519
+ description: |-
520
+ Current traffic situation.
521
+ The current traffic situation used in the controller.
522
+ Used for area-based control where the M0003 command can be sent to a master traffic light controller about which predefined traffic situation to use (1-255).
523
+ Traffic situation is a concept used to divide multiple TLC's into areas and sub-areas. The traffic situation gives the possibility to change the TLC sub-area dynamically depending on the time of day and the traffic flow. Depending on the traffic situation each TLC selects the time plan dynamically.
524
+ from_version: 1.0.2
525
+ arguments:
526
+ status:
527
+ type: integer_as_string
528
+ description: Current traffic situation
529
+ min: 1
530
+ max: 255
531
+ source:
532
+ type: string_list_as_string
533
+ description: Source of the status change
534
+ values:
535
+ operator_panel: Operator panel
536
+ calendar_clock: Calendar/clock
537
+ control_block: Control block
538
+ forced: Forced due to external command e.g. supervisor
539
+ startup: Set after startup mode
540
+ other: Other reason
541
+ S0016:
542
+ description: |-
543
+ Number of detector logics.
544
+ Can be used by the management system to check the number of detector logics configured in the controller.
545
+ from_version: 1.0.2
546
+ arguments:
547
+ number:
548
+ type: integer_as_string
549
+ description: Number of detector logics
550
+ min: 1
551
+ max: 65025
552
+ S0017:
553
+ description: |-
554
+ Number of signal groups.
555
+ Can be used for the management system to check the number of signal groups configured in the controller.
556
+ from_version: 1.0.2
557
+ arguments:
558
+ number:
559
+ type: integer_as_string
560
+ description: Number of signal groups
561
+ min: 1
562
+ max: 65025
563
+ S0019:
564
+ description: |-
565
+ Number of traffic situations.
566
+ Can be used for the management system to check the number of traffic situations configured in the controller.
567
+ from_version: 1.0.2
568
+ arguments:
569
+ number:
570
+ type: integer_as_string
571
+ description: Number of traffic situations
572
+ min: 1
573
+ max: 65025
574
+ S0020:
575
+ description: |-
576
+ Control mode.
577
+ Can be used for the management system to check the current control mode (startup, normal, standby, failure, test).
578
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. "1,2" and "startup,control"
579
+ from_version: 1.0.2
580
+ arguments:
581
+ intersection:
582
+ type: integer_list_as_string
583
+ description: |-
584
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
585
+ Use “0” for all intersections of the TLC.
586
+ min: 0
587
+ max: 255
588
+ controlmode:
589
+ type: string_list_as_string
590
+ values:
591
+ startup: The controller starts up, performs a power on self test and performs each :term:`start-up interval`
592
+ control: Normal 3-light control
593
+ standby: The controller is in dark or yellow flash mode (either according to programming or manually set)
594
+ failure: The controller has a “major fault” defined according to 3.8 in EN12675. The controller is in dark or yellow flash mode
595
+ test: Mode used for various tests, e.g. signal lights
596
+ S0021:
597
+ description: |-
598
+ Manually set detector logic.
599
+ Provides status of detector logic (1-255) regarding if they are either forced to true or false.
600
+ Can be used to connect RSMP compatible detection equipment to the traffic light controller. Can also be used for prioritization.
601
+ from_version: 1.0.3
602
+ arguments:
603
+ detectorlogics:
604
+ type: string
605
+ description: |-
606
+ Manually set detector logic as text field.
607
+ Each character represent the state in consecutive order,
608
+ where the leftmost character starts with detector logic 1.
609
+ 0 : Detector logic not manually set
610
+ 1 : Detector logic manually set
611
+ - : Detector logic is undefined/does not exist
612
+ pattern: "^[01]*$"
613
+ S0022:
614
+ description: |-
615
+ List of time plans.
616
+ Provides a list of the configured time plans which is possible to use. This status was added due to status S0018 only provided the total number of time plans and not which were possible to use with M0002.
617
+ Can be used for the management system to check the number of time plans configured in the controller.
618
+ from_version: 1.0.13
619
+ arguments:
620
+ status:
621
+ type: integer_list_as_string
622
+ description: Comma separated list of configured time plans. E.g. "1,2,3,5"
623
+ S0023:
624
+ description: |-
625
+ Dynamic bands.
626
+ Provides a list of all defined dynamic bands. Dynamic bands moves start of signal groups in the cycle and changes the signal timings.
627
+ A typical usage of dynamic bands is scenario based control where changing of signal timings is used for optimal traffic flow.
628
+ from_version: 1.0.13
629
+ arguments:
630
+ status:
631
+ type: string
632
+ description: |-
633
+ Dynamic bands.
634
+ Each dynamic band are written as pp-dd-ee where:
635
+ pp=Time plan
636
+ dd=Dynamic band number (from 1-10)
637
+ ee=Extension in seconds in this band
638
+
639
+ Each dynamic band is separated with a comma.
640
+
641
+ E.g.
642
+ pp-dd-ee,pp-dd-ee
643
+ pattern: "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
644
+ S0024:
645
+ description: |-
646
+ Offset time.
647
+ Offset time is used to define an offset between intersections in coordinated control. It is based on the expected travel time between intersections.
648
+ Can be used by the management system to check to fine tune the coordination for optimal traffic flow.
649
+ from_version: 1.0.13
650
+ arguments:
651
+ status:
652
+ type: string_list_as_string
653
+ description: |-
654
+ Offset table
655
+ Each offset time is written as p-t where:
656
+ p=time plan number (from 1 to 255)
657
+ t=offset time in seconds (from 0 to 255)
658
+
659
+ Each offset time is separated with a comma
660
+
661
+ E.g.
662
+ 1-0,2-13-3-7
663
+ pattern: "^(\\d{1,3}\\-\\d{1,3})(?:,(\\d{1,3}\\-\\d{1,3}))*$"
664
+ S0026:
665
+ description: |-
666
+ Week time table.
667
+ Week time table for signal programs (time plan) to use for each day during a week.
668
+ The week time table determine which predefined signal timings (time plan) to use during the week for optimal traffic flow.
669
+ from_version: 1.0.13
670
+ arguments:
671
+ status:
672
+ type: string_list_as_string
673
+ description: |-
674
+ Week time table. Defines time table to use for each week day
675
+ Each day is written as d-t where:
676
+ d=day of week
677
+ t=time table nr
678
+
679
+ Day of week legend:
680
+ 0=Monday
681
+ 1=Tuesday
682
+ 2=Wednesday
683
+ 3=Thursday
684
+ 4=Friday
685
+ 5=Saturday
686
+ 6=Sunday
687
+
688
+ Each segment is separated with a comma
689
+ E.g.
690
+ d-t,d-t
691
+ S0027:
692
+ description: |-
693
+ Time tables.
694
+ Time of day for when to switch signal program (time plan).
695
+ The signal timings (time plan) to use during time of day for optimal traffic flow.
696
+ from_version: 1.0.13
697
+ arguments:
698
+ status:
699
+ type: string_list_as_string
700
+ description: |-
701
+ Time Table. Defines time tables.
702
+ Each time definition is written as t-o-h-m where:
703
+ t=time table nr (1-12)
704
+ o=function
705
+ h=hour - switching time
706
+ m=minute - switching minute
707
+
708
+ Function legend:
709
+ 0=no plan is selected by time table
710
+ 1=set plan 1
711
+
712
+ 16= set plan 16
713
+
714
+ hour and minute is using local time (not UTC)
715
+
716
+ Each time definition is separated with a comma
717
+
718
+ E.g.
719
+ t-o-h-m,t-o-h-m
720
+ S0028:
721
+ description: |-
722
+ Cycle time.
723
+ Cycle time (or cycle length) is the sum of all phases in a time plan (traffic program). This time is fixed when using fixed time control or coordination (except "local coordination"). When the cycle counter reaches this length it is reset back to zero.
724
+ Changing the cycle time can be used as part of scenario based control.
725
+ from_version: 1.0.13
726
+ arguments:
727
+ status:
728
+ type: string_list_as_string
729
+ description: |-
730
+ Cycle time table
731
+ Each cycle time is written as pp-tt where:
732
+ pp=time plan
733
+ tt=cycle time in seconds
734
+
735
+ Each cycle time is separated with a comma
736
+
737
+ E.g.
738
+ pp-tt,pp-tt
739
+ S0029:
740
+ description: |-
741
+ Forced input status.
742
+ Provide status of input (1-255) regarding if they are forced or not. Can be used for all types of input where the traffic light controller must react to external control.
743
+ Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.
744
+ from_version: 1.0.13
745
+ arguments:
746
+ status:
747
+ type: string
748
+ description: |-
749
+ Forced input status as text field.
750
+ Each character represent the state in consecutive order,
751
+ where the leftmost character starts with input 1.
752
+ 0 : Input not forced
753
+ 1 : Input forced
754
+ - : Input undefined/does not exist
755
+ S0030:
756
+ description: |-
757
+ Forced output status.
758
+ Provide status of output (1-255) regarding if they are forced or not. Can be used for all types of output where the traffic light controller needs to control other equipment.
759
+ Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.
760
+ from_version: 1.0.15
761
+ arguments:
762
+ status:
763
+ type: string
764
+ description: |-
765
+ Forced output status as text field.
766
+ Each character represent the state in consecutive order,
767
+ where the leftmost character starts with output 1.
768
+ 0 : Output not forced
769
+ 1 : Output forced
770
+ - : Output undefined/does not exist
771
+ S0031:
772
+ description: |-
773
+ Trigger level sensitivity for loop detector.
774
+ The trigger level sensitivity determines at what level the loop detector should trigger. If it set too low then then traffic will not be detected as intended. If it is set too high the detector might give false positives.
775
+ Can be used to make sure that the detectors detect traffic as intended.
776
+ from_version: 1.0.15
777
+ arguments:
778
+ status:
779
+ type: string_list_as_string
780
+ description: |-
781
+ Loop detector trigger level sensitivity is written as dd-ss where:
782
+ dd=loop detector number
783
+ ss=sensitivity value
784
+ Each loop detector is separated with a comma. E.g.dd-ss,dd-ss.
785
+ S0032:
786
+ description: |-
787
+ Coordinated control
788
+ This status is used when coordination between traffic light controllers is active. Coordination is described in detail in the corresponding section
789
+ Please note that all values in this status uses comma-separated lists - one value for each intersection, e.g. “1,2” and “centralized,off”
790
+ from_version: 1.1.0
791
+ arguments:
792
+ intersection:
793
+ type: integer_list_as_string
794
+ description: |-
795
+ Comma separated list of intersections which the status relates to, e.g. “1,2”.
796
+ Use “0” for all intersections of the TLC.
797
+ min: 0
798
+ max: 255
799
+ status:
800
+ type: string_list_as_string
801
+ values:
802
+ local: Local coordination
803
+ centralized: Coordination with synchronized clock
804
+ 'off': Coordination not active
805
+ source:
806
+ description: Source of the status change
807
+ type: string_list_as_string
808
+ values:
809
+ operator_panel: Operator panel
810
+ calendar_clock: Calendar/clock
811
+ control_block: Control block
812
+ forced: Forced due to external command e.g. supervisor
813
+ startup: Set after startup mode
814
+ other: Other reason
815
+ S0033:
816
+ description: |-
817
+ Signal Priority Status
818
+ This status can be used to get updates about priority requests. For example, you can use it to know when priority requests are activated or cancelled.
819
+ A list of priorities is returned, referred to by their request ids. The same request id can appear only once.
820
+ All priorities are included in the list (not only the ones that have changed state since the last update). This is done regardless of whether the status is send in respond to a status request, or due to a status subscription, and also regardless of whether a status subscription uses an update interval, or send-on-change, or both.
821
+ If you subscribe using an update interval, you’re not guaranteed to get all intermediate states. To guarantee that, send-on-change must be used when subscribing.
822
+ To understand how this status relates to ETSI/J2735, please see the [wiki](https://github.com/rsmp-nordic/rsmp_sxl_traffic_lights/wiki/Signal-priority-and-ETSI-J2735).
823
+ All priorities are send on every status update, regardless of whether an interval, or sendOnChange (or both) is used.
824
+ When a priority reaches an end states (completed, timeout, rejected, cooldown or stale), it must be sent once on the next status update, then removed from the list.
825
+ A request always starts in the ‘received’ state. The following table shows the possible state transitions:
826
+
827
+ State | Possible next states
828
+ ---------- | -------------------------------------
829
+ received | queued, activated, rejected, cooldown
830
+ queued | activated, timeout
831
+ activated | completed, stale
832
+ completed |
833
+ timeout |
834
+ rejected |
835
+ cooldown |
836
+ stale |
837
+ from_version: 1.1.0
838
+ arguments:
839
+ status:
840
+ description: JSON array of priority status items
841
+ type: array
842
+ items:
843
+ r:
844
+ type: string
845
+ description: ID of the priority request
846
+ t:
847
+ type: timestamp
848
+ description: Timestamp, indicating when the priority last changed state.
849
+ s:
850
+ type: string
851
+ description: |-
852
+ Current status of the priority request
853
+ values:
854
+ received: A new priority request was received but has not yet been processed
855
+ queued: The priority request has been queued for later activation
856
+ activated: The priority was activated
857
+ completed: The priority was cancelled as expected
858
+ timeout: The priority has been queued for too long
859
+ rejected: The priority request cannot be granted
860
+ cooldown: A similar priority request means the priority request cannot be activated now
861
+ stale: The priority has been active too long without cancellation, and was therefore removed
862
+ e:
863
+ type: integer_as_string
864
+ description: |-
865
+ Estimated green extension provided by the priority, in seconds
866
+ Only used when state is ‘completed’.
867
+ optional: true
868
+ min: 0
869
+ max: 255
870
+ d:
871
+ type: integer_as_string
872
+ description: |-
873
+ Estimated red reduction provided by the priority, in seconds
874
+ Only used when state is ‘completed’.
875
+ optional: true
876
+ min: 0
877
+ max: 255
878
+ S0034:
879
+ description: |-
880
+ Timeout for dynamic bands.
881
+ Time until a designated time plan is entered due to lost connection with the supervisor.
882
+ Disabled if set to '0'.
883
+ Used in conjunction with dynamic bands, M0014
884
+ from_version: 1.1.0
885
+ arguments:
886
+ status:
887
+ type: integer_as_string
888
+ description: Timeout, in minutes
889
+ min: 0
890
+ max: 65535
891
+ S0035:
892
+ description: |-
893
+ Emergency route.
894
+ The status is active during emergency prioritization.
895
+ Used in situations where full priority is given in the emergency vehicle program
896
+ or for other types of priority in some cases.
897
+
898
+ This status is similar to S0006, but supports multiple routes
899
+ from_version: 1.2.0
900
+ arguments:
901
+ emergencyroutes:
902
+ description: Active emergency routes
903
+ type: array
904
+ items:
905
+ id:
906
+ type: integer_as_string
907
+ description: ID of active emergency route
908
+ min: 1
909
+ max: 255
910
+ S0091:
911
+ description: |-
912
+ Operator logged in/out OP-panel.
913
+ Provides information if maintenance personnel is currently working on site.
914
+ from_version: 1.0.1
915
+ arguments:
916
+ user:
917
+ type: integer_as_string
918
+ values:
919
+ 0: Nobody logged in
920
+ 1: Operator logged in at level 1 (read only)
921
+ 2: Operator logged in at level 2 (read/write)
922
+ S0092:
923
+ description: |-
924
+ Operator logged in/out web-interface.
925
+ Provides information if maintenance personnel is currently working with the controller.
926
+ from_version: 1.0.1
927
+ arguments:
928
+ user:
929
+ type: integer_as_string
930
+ values:
931
+ 0: Nobody logged in
932
+ 1: Operator logged in at level 1 (read only)
933
+ 2: Operator logged in at level 2 (read/write)
934
+ S0095:
935
+ description: |-
936
+ Version of Traffic Light Controller.
937
+ Provides diagnostic version information.
938
+ from_version: 1.0.1
939
+ arguments:
940
+ status:
941
+ type: string
942
+ description: Manufacturer, product name and version of traffic light controller
943
+ S0096:
944
+ description: |-
945
+ Current date and time.
946
+ Note: UTC is used.
947
+ Provides diagnostic information about the current date and time set in the controller.
948
+ from_version: 1.0.1
949
+ arguments:
950
+ year:
951
+ type: integer_as_string
952
+ description: Year
953
+ min: 0
954
+ max: 9999
955
+ month:
956
+ type: integer_as_string
957
+ description: Month
958
+ min: 1
959
+ max: 12
960
+ day:
961
+ type: integer_as_string
962
+ description: Day of month
963
+ min: 1
964
+ max: 31
965
+ hour:
966
+ type: integer_as_string
967
+ description: Hour
968
+ min: 0
969
+ max: 23
970
+ minute:
971
+ type: integer_as_string
972
+ description: Minute
973
+ min: 0
974
+ max: 59
975
+ second:
976
+ type: integer_as_string
977
+ description: Second
978
+ min: 0
979
+ max: 59
980
+ S0097:
981
+ description: |-
982
+ Checksum of traffic parameters.
983
+ Can be used to check if any traffic parameter has been changed.
984
+ For instance, depending on controller, maintenance personnel can modify traffic parameters on site to optimize traffic flow. This status provides the ability to monitor if any traffic parameter has been changed. The traffic parameters may be downloaded with S0098.
985
+ from_version: 1.0.15
986
+ arguments:
987
+ checksum:
988
+ type: string
989
+ description: |-
990
+ Checksum of the traffic parameters
991
+ Uses SHA-2 as hashing algorithm
992
+ Includes
993
+ - all signal programs, including program versions
994
+ - signal group settings
995
+ - time plans
996
+ - safety matrix
997
+ - intergreen times
998
+ - detector settings
999
+
1000
+ It should NOT include:
1001
+ - network settings
1002
+ - log files
1003
+ - software
1004
+ - other device settings that are not part of the signal program
1005
+
1006
+ Note:
1007
+ - The checksum should be calculated using the same data as used in S0098
1008
+ - Data Downloaded with S0098 and hashed with SHA-2 should match this value.
1009
+ timestamp:
1010
+ type: timestamp
1011
+ description: Time stamp of the checksum
1012
+ S0098:
1013
+ description: |-
1014
+ Configuration of traffic parameters.
1015
+ Can be used to download all traffic parameters from the controller.
1016
+ For instance, depending on controller, maintenance personnel can modify traffic parameters on site to optimize traffic flow. This status provides the ability to downloaded them.
1017
+ from_version: 1.0.15
1018
+ arguments:
1019
+ config:
1020
+ type: base64
1021
+ description: |-
1022
+ Traffic parameters.
1023
+ Includes
1024
+ - all signal programs, including program versions
1025
+ - signal group settings
1026
+ - time plans
1027
+ - safety matrix
1028
+ - intergreen times
1029
+ - detector setting
1030
+
1031
+ It should NOT include:
1032
+ - network settings
1033
+ - log files
1034
+ - software
1035
+ - other device settings that are not part of the signal program
1036
+
1037
+ Note:
1038
+ - There is no way to upload this binary file to the TLC using RSMP
1039
+ - The format of the binary file is not specified and is not expected to be compatible between suppliers
1040
+ timestamp:
1041
+ type: timestamp
1042
+ description: Time stamp of the config
1043
+ version:
1044
+ type: string_list_as_string
1045
+ description: |-
1046
+ Version information of the configuration. Contains basic information such as controller id, changes to config and other information.
1047
+ The format is not specified in detail.
1048
+ S0205:
1049
+ description: |-
1050
+ Traffic Counting: Number of vehicles.
1051
+ This status was introduced to improve performance in case traffic counting is done on all all detectors.
1052
+ Please see Section 4: "Traffic counting" for additional requirements.
1053
+ from_version: 1.0.14
1054
+ arguments:
1055
+ start:
1056
+ type: timestamp
1057
+ description: Time stamp for start of measuring
1058
+ vehicles:
1059
+ type: integer_list_as_string
1060
+ description: |-
1061
+ Number of vehicles.
1062
+ - Value expressed as an integer with a range of 0-65535.
1063
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1064
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1065
+ min: -1
1066
+ max: 65535
1067
+ S0206:
1068
+ description: |-
1069
+ Traffic Counting: Vehicle speed
1070
+ This status was introduced to improve performance in case traffic counting is done on all all detectors.
1071
+ Please see Section 4: "Traffic counting" for additional requirements.
1072
+ from_version: 1.0.14
1073
+ arguments:
1074
+ start:
1075
+ type: timestamp
1076
+ description: Time stamp for start of measuring
1077
+ speed:
1078
+ type: integer_list_as_string
1079
+ description: |-
1080
+ Average speed in km/h (integer).
1081
+ - Value expressed as an integer with a range of 0-65535.
1082
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1083
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1084
+ min: -1
1085
+ max: 65535
1086
+ S0207:
1087
+ description: |-
1088
+ Traffic Counting: Occupancy.
1089
+ This status was introduced to improve performance in case traffic counting is done on all all detectors.
1090
+ Please see Section 4: "Traffic counting" for additional requirements.
1091
+ from_version: 1.0.14
1092
+ arguments:
1093
+ start:
1094
+ type: timestamp
1095
+ description: Time stamp for start of measuring
1096
+ occupancy:
1097
+ type: integer_list_as_string
1098
+ description: |-
1099
+ Occupancy in percent (%) (0-100)
1100
+ - Value expressed as an integer with a range of 0-100.
1101
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1102
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1103
+ min: -1
1104
+ max: 100
1105
+ S0208:
1106
+ description: |-
1107
+ Traffic Counting: Number of vehicles of given classification.
1108
+ This status was introduced to improve performance in case traffic counting is done on all all detectors.
1109
+ Please see Section 4: "Traffic counting" for additional requirements.
1110
+ from_version: 1.0.14
1111
+ arguments:
1112
+ start:
1113
+ type: timestamp
1114
+ description: Time stamp for start of measuring
1115
+ P:
1116
+ type: integer_list_as_string
1117
+ description: |-
1118
+ Number of cars.
1119
+ - Value expressed as an integer with a range of 0-65535.
1120
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1121
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1122
+ min: -1
1123
+ max: 65535
1124
+ PS:
1125
+ type: integer_list_as_string
1126
+ description: |-
1127
+ Number of cars with trailers.
1128
+ - Value expressed as an integer with a range of 0-65535.
1129
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1130
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1131
+ min: -1
1132
+ max: 65535
1133
+ L:
1134
+ type: integer_list_as_string
1135
+ description: |-
1136
+ Number of trucks.
1137
+ - Value expressed as an integer with a range of 0-65535.
1138
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1139
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1140
+ min: -1
1141
+ max: 65535
1142
+ LS:
1143
+ type: integer_list_as_string
1144
+ description: |-
1145
+ Number of trucks with trailers.
1146
+ - Value expressed as an integer with a range of 0-65535.
1147
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1148
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1149
+ min: -1
1150
+ max: 65535
1151
+ B:
1152
+ type: integer_list_as_string
1153
+ description: |-
1154
+ Number of buses.
1155
+ - Value expressed as an integer with a range of 0-65535.
1156
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1157
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1158
+ min: -1
1159
+ max: 65535
1160
+ SP:
1161
+ type: integer_list_as_string
1162
+ description: |-
1163
+ Number of trams.
1164
+ - Value expressed as an integer with a range of 0-65535.
1165
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1166
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1167
+ min: -1
1168
+ max: 65535
1169
+ MC:
1170
+ type: integer_list_as_string
1171
+ description: |-
1172
+ Number of motor cycles.
1173
+ - Value expressed as an integer with a range of 0-65535.
1174
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1175
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1176
+ min: -1
1177
+ max: 65535
1178
+ C:
1179
+ type: integer_list_as_string
1180
+ description: |-
1181
+ Number of bicycles.
1182
+ - Value expressed as an integer with a range of 0-65535.
1183
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1184
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1185
+ min: -1
1186
+ max: 65535
1187
+ F:
1188
+ type: integer_list_as_string
1189
+ description: |-
1190
+ Number of pedestrians.
1191
+ - Value expressed as an integer with a range of 0-65535.
1192
+ - Contains data from all detector logics. Each detector logic is separated with a comma.
1193
+ - The value is set to “-1” if no data could be measured (e.g. detector fault)
1194
+ min: -1
1195
+ max: 65535
1196
+ commands:
1197
+ M0001:
1198
+ description: |-
1199
+ Sets functional position.
1200
+ Sets the controller to yellow flash, dark mode or normal control.
1201
+ Requires security code 2.
1202
+ from_version: 1.0.1
1203
+ arguments:
1204
+ status:
1205
+ type: string
1206
+ description: Set operating mode
1207
+ values:
1208
+ NormalControl: Normal Control
1209
+ YellowFlash: Enables yellow flash
1210
+ Dark: Enables dark mode
1211
+ securityCode:
1212
+ type: string
1213
+ description: Security code 2
1214
+ timeout:
1215
+ optional: true
1216
+ type: integer_as_string
1217
+ description: |-
1218
+ Time in minutes until controller automatically reverts to previous functional position.
1219
+ 0=no automatic return
1220
+ min: 0
1221
+ max: 1440
1222
+ intersection:
1223
+ optional: true
1224
+ type: integer_as_string
1225
+ description: |-
1226
+ Intersection number.
1227
+ Command only applies to specified intersection. Other intersections remains in their respective operating mode(s).
1228
+ 0: All intersections
1229
+ min: 0
1230
+ max: 255
1231
+ command: setValue
1232
+ M0002:
1233
+ description: |-
1234
+ Sets current time plan.
1235
+ Change of traffic program of the traffic light controller.
1236
+ Typical usages is scenario based control where change of program is used to change signal timings etc.
1237
+ This command changes the signal timings for optimal traffic flow.
1238
+ Requires security code 2
1239
+ from_version: 1.0.1
1240
+ arguments:
1241
+ status:
1242
+ type: boolean_as_string
1243
+ description: |-
1244
+ False: Controller uses time plan according to programming
1245
+ True: Controller uses time plan according to command
1246
+ securityCode:
1247
+ type: string
1248
+ description: Security code 2
1249
+ timeplan:
1250
+ type: integer_as_string
1251
+ description: designation of time plan
1252
+ min: 1
1253
+ max: 255
1254
+ command: setPlan
1255
+ M0003:
1256
+ description: |-
1257
+ Sets traffic situation the controller uses.
1258
+ Used for area-based control where this command can be sent to a master traffic light controller about which predefined traffic situation to use (1-255).
1259
+ Traffic situation is a concept used to divide multiple TLC's into areas and sub-areas. The traffic situation gives the possibility to change the TLC sub-area dynamically depending on the time of day and the traffic flow. Depending on the traffic situation each TLC selects the time plan dynamically.
1260
+ Requires security code 2
1261
+ from_version: 1.0.1
1262
+ arguments:
1263
+ status:
1264
+ type: boolean_as_string
1265
+ description: |-
1266
+ False: Controller uses traffic situation according to own programming
1267
+ True: Controller uses traffic situation according to command
1268
+ securityCode:
1269
+ type: string
1270
+ description: Security code 2
1271
+ traficsituation:
1272
+ type: integer_as_string
1273
+ description: designation of traficsituation
1274
+ min: 1
1275
+ max: 255
1276
+ command: setTrafficSituation
1277
+ M0004:
1278
+ description: |-
1279
+ Reset Traffic Light Controller.
1280
+
1281
+ This command is used as a last resort to attempt to remotely fix serious faults.
1282
+ If unsuccessful, manual intervention on site is probably required.
1283
+
1284
+ The controller must attempt all available safe action to reset to a functional state.
1285
+ Depending on regulations and controller capabilities, examples actions could be:
1286
+
1287
+ - resetting parameters to defaults
1288
+ - restarting applications
1289
+ - restarting peripheral hardware
1290
+ - going through a shutdown/startup sequence and cycling power
1291
+
1292
+ The controller must also clear all alarms.
1293
+
1294
+ Requires security code 2.
1295
+ The attribute 'status' is deprecated and must be set to true.
1296
+ from_version: 1.0.1
1297
+ arguments:
1298
+ status:
1299
+ type: boolean_as_string
1300
+ description: 'True: Reset controller'
1301
+ securityCode:
1302
+ type: string
1303
+ description: Security code 2
1304
+ command: setRestart
1305
+ M0005:
1306
+ description: |-
1307
+ Activate emergency route.
1308
+ The function is made for emergency prioritization. Works in the same way as the M0006 and M0008 where the traffic light controller responds to an input.
1309
+ Should be used in situations where full priority is given in the emergency vehicle program.
1310
+ Requires security code 2.
1311
+ from_version: 1.0.1
1312
+ arguments:
1313
+ status:
1314
+ type: boolean_as_string
1315
+ description: |-
1316
+ False: Deactivate emergency route
1317
+ True: Activate emergency route
1318
+ securityCode:
1319
+ type: string
1320
+ description: Security code 2
1321
+ emergencyroute:
1322
+ type: integer_as_string
1323
+ description: Number of emergency route
1324
+ min: 1
1325
+ max: 255
1326
+ command: setEmergency
1327
+ M0006:
1328
+ description: |-
1329
+ Activate input.
1330
+ Set given input (1-255) of the controllers general purpose I/O to either true or false.
1331
+ The function can provide an input to the traffic light controller on which a predefined action can be taken.
1332
+ Can be used for all types of input where the traffic light controller must react to external control.
1333
+ Typical usages are bus priority, coordination between traffic controllers, external control systems, and much more.
1334
+ Requires security code 2.
1335
+ from_version: 1.0.1
1336
+ arguments:
1337
+ status:
1338
+ type: boolean_as_string
1339
+ description: |-
1340
+ False: Deactivate input
1341
+ True: Activate input
1342
+ securityCode:
1343
+ type: string
1344
+ description: Security code 2
1345
+ input:
1346
+ type: integer_as_string
1347
+ description: Number of Input
1348
+ min: 1
1349
+ max: 255
1350
+ command: setInput
1351
+ M0007:
1352
+ description: |-
1353
+ Activate fixed time control.
1354
+ Deactivates the traffic actuated control using detectors and activates pre-timed control.
1355
+ Can be used in case normal detectors can't be used, e.g. during maintenance work.
1356
+ Requires security code 2.
1357
+ from_version: 1.0.2
1358
+ arguments:
1359
+ status:
1360
+ type: boolean_as_string
1361
+ description: |-
1362
+ False: Deactivate fixed time control
1363
+ True: Activate fixed time control
1364
+ securityCode:
1365
+ type: string
1366
+ description: Security code 2
1367
+ command: setFixedTime
1368
+ M0012:
1369
+ description: |-
1370
+ Request start or stop of a series of signal groups.
1371
+ Starts or stops several signal groups.
1372
+ This command was introduced due to coordination requirements needing to set many signal groups to green and red at the same time and M0010 and M0012 being to slow to send a message for each signal group individually.
1373
+ Although this command is intended to be used with coordination it is not actually specified to be used for this yet. It is reserved in the SXL for possible future use.
1374
+ Intended for use with coordination of signaling systems where a traffic light controller communicates with neighboring controllers.
1375
+ Only used when a primary controller orders signal group of other controller to green or red (Coordination with external control bits).
1376
+ May also include purposes for adaptive control where a UTC system or a local traffic light controller takes over the phase control (stage control).
1377
+ Requires security code 2.
1378
+ from_version: 1.0.8
1379
+ reserved: true
1380
+ arguments:
1381
+ status:
1382
+ type: string_list_as_string
1383
+ description: |-
1384
+ Orders signal groups to green or red. Sets a block of 16 signal groups at a time. Can be repeated to set several blocks of 16 signal groups. Values are separated with comma. Blocks are separated with semicolon. Since semicolon breaks the SXL csv-format, colon is used in example below.
1385
+
1386
+ 1=Order signal group to green
1387
+ 0=Order signal group to red
1388
+
1389
+ Format: [Offset],[Bits to set],[Bits to unset]:…
1390
+
1391
+ Offset sets where the 16 inputs starts from followed by two 16 bit values telling which bit to set and unset in binary format, i.e. first bit have value 1 and last bit have value 32768.
1392
+
1393
+ Example 1:
1394
+ "5, 4134, 65" sets input 6,7,10,17 = on and 5,11 = off
1395
+ (Input starts from no. 5 and bit 1,2,5,12 = 1 and bit 0,6 = 0)
1396
+
1397
+ Example 2:
1398
+ "22, 1, 4" sets input 22 = on and 24 = off
1399
+ (Input starts from no. 22 and bit 0 = 1 and bit 2 = 0)
1400
+
1401
+ And both these examples could be sent in the same message as:
1402
+ "5,4143,65:22,1,4"
1403
+
1404
+ Such a message would order signal group 6,7,10,17,22 to green and signal group 5,11,24 to red
1405
+ securityCode:
1406
+ type: string
1407
+ description: Security code 2
1408
+ command: setStart
1409
+ M0013:
1410
+ description: |-
1411
+ Activate a series of inputs
1412
+
1413
+ Set given inputs (1-255) of the controllers general purpose I/O to either true or false. This command was introduced due to coordination requirements needing to set many inputs to true/false at the same time and M0006 being to slow to send a message for each input individually. With this command many inputs can be set to true/false at the same time using a single command message. It can be used for all types of input where the traffic light controller must react to external control. Typical usages are bus priority, coordination between traffic controllers, external control systems, and much more.
1414
+
1415
+ Requires security code 2.
1416
+
1417
+ The parameter ‘status’ sets/unsets a block of 16 inputs at a time. It can be repeated to set several blocks of 16 inputs. Values are separated with comma. Blocks are separated with semicolon. Format: [Offset];[Bits to set];[Bits to unset];…
1418
+
1419
+ - ‘Offset’ defines where the 16 inputs starts from
1420
+ - ‘Bits to set’ defines which bit(s) to set. ‘0’ if unused
1421
+ - ‘Bits to unset’ defines which bit(s) to unset. ‘0’ if unused
1422
+
1423
+ Example 1:
1424
+ “3,4134,65” sets input 4,5,8,15 and unsets 3,9
1425
+ - Input starts from no. 5
1426
+ - “4134” is 1 0000 0010 0110 in binary, but since input starts from 3, it is shifted 3 bits, e.g. 1000 0001 0011 0000 which are bits 4,5,8,15
1427
+ - “65” is 100 0001 in binary, but since input starts from 3, it is shifted 3 bits, e.g. 10 0000 1000 which are bits 3,9
1428
+
1429
+ Example 2:
1430
+ “12,1,4” sets input 12 and unsets 14
1431
+ - Input starts from no. 12
1432
+ - “1” is 1 in binary, but since input starts at 12 it is shifted 12 bits, e.g. 1 0000 0000 0000, which is bit 12
1433
+ - “4” is 100 in binary, but since input starts at 12 it is shifted 12 bits, e.g. 100 0000 0000 0000, which is bit 14
1434
+
1435
+ And both these examples could be sent in the same message as: “3,4143,65;12,1,4”
1436
+
1437
+ Such a message would set input 4,5,8,12,15 and unset input 3,9,14
1438
+
1439
+ Example 3:
1440
+ “0,1,2” sets input 0 and unsets 1
1441
+ - Input starts from 0
1442
+ - “1” is 1 in binary, which is bit 0
1443
+ - “2” is 10 in binary, which is bit 1
1444
+ from_version: 1.0.8
1445
+ arguments:
1446
+ status:
1447
+ type: string_list_as_string
1448
+ description: |-
1449
+ Sets/Unsets a block of 16 inputs at a time. Can be repeated to set several blocks of 16 inputs. Values are separated with comma. Blocks are separated with semicolon.
1450
+ Format: [Offset];[Bits to set];[Bits to unset];…
1451
+ securityCode:
1452
+ type: string
1453
+ description: Security code 2
1454
+ command: setInput
1455
+ M0014:
1456
+ description: |-
1457
+ Set dynamic bands.
1458
+ Can be used to change between predefined signal timings. Moves the start of signal groups in the cycle.
1459
+ This command can be used to change the split of green time during the cycle. A typical usage is scenario based control where changing of signal timings is used for optimal traffic flow.
1460
+ Requires security code 2
1461
+ from_version: 1.0.13
1462
+ arguments:
1463
+ plan:
1464
+ type: integer_as_string
1465
+ description: Plan to be changed
1466
+ min: 0
1467
+ max: 255
1468
+ status:
1469
+ type: string_list_as_string
1470
+ description: |-
1471
+ Dynamic bands.
1472
+ Each dynamic band are written as dd-ee where:
1473
+ dd=Dynamic band number (from 1-10)
1474
+ ee=Extension in seconds in this band
1475
+
1476
+ Each dynamic band is separated with a comma.
1477
+
1478
+ E.g.
1479
+ dd-ee,dd-ee
1480
+ securityCode:
1481
+ type: string
1482
+ description: Security code 2
1483
+ command: setCommands
1484
+ M0015:
1485
+ description: |-
1486
+ Set Offset time.
1487
+ Offset time is used to define an offset between intersections in coordinated control. It is based on the expected travel time between intersections.
1488
+ This command can be used to fine tune the coordination for optimal traffic flow.
1489
+ Requires security code 2.
1490
+ from_version: 1.0.13
1491
+ arguments:
1492
+ status:
1493
+ type: integer_as_string
1494
+ description: Set offset time in seconds
1495
+ min: 0
1496
+ max: 255
1497
+ plan:
1498
+ type: integer_as_string
1499
+ description: Time plan nr
1500
+ min: 0
1501
+ max: 255
1502
+ securityCode:
1503
+ type: string
1504
+ description: Security code 2
1505
+ command: setOffset
1506
+ M0016:
1507
+ description: |-
1508
+ Set week time table.
1509
+ Set which time table for signal programs to use for each day during a week.
1510
+ This command changes the signal timings during the week for optimal traffic flow.
1511
+ Requires security code 2.
1512
+ from_version: 1.0.13
1513
+ arguments:
1514
+ status:
1515
+ type: string_list_as_string
1516
+ description: |-
1517
+ Week time table. Defines time table to use for each week day
1518
+ Each segment is written as d-t where:
1519
+ d=day of week
1520
+ t=time table nr
1521
+
1522
+ Day of week legend:
1523
+ 0=Monday
1524
+ 1=Tuesday
1525
+ 2=Wednesday
1526
+ 3=Thursday
1527
+ 4=Friday
1528
+ 5=Saturday
1529
+ 6=Sunday
1530
+
1531
+ Each segment is separated with a comma
1532
+ E.g.
1533
+ d-t,d-t
1534
+ securityCode:
1535
+ type: string
1536
+ description: Security code 2
1537
+ command: setWeekTable
1538
+ M0017:
1539
+ description: |-
1540
+ Set time tables.
1541
+ Set time of day for when to automatically switch signal program (time plan).
1542
+ This command changes the signal timings according to time of day for optimal traffic flow.
1543
+ Requires security code 2.
1544
+ from_version: 1.0.13
1545
+ arguments:
1546
+ status:
1547
+ type: string_list_as_string
1548
+ description: |-
1549
+ Time Table. Defines time tables.
1550
+ Each time definition is written as t-o-h-m where:
1551
+ t=time table nr (1-12)
1552
+ o=function
1553
+ h=hour - switching time
1554
+ m=minute - switching minute
1555
+
1556
+ Function legend:
1557
+ 0=no plan is selected by time table
1558
+ 1=set plan 1
1559
+
1560
+ 16= set plan 16
1561
+
1562
+ hour and minute is using local time (not UTC)
1563
+
1564
+ Each time definition is separated with a comma.
1565
+
1566
+ E.g.
1567
+ t-o-h-m,t-o-h-m
1568
+ securityCode:
1569
+ type: string
1570
+ description: Security code 2
1571
+ command: setTimeTable
1572
+ M0018:
1573
+ description: |-
1574
+ Set Cycle time.
1575
+ Cycle time (or cycle length) is the sum of all phases in a time plan (traffic program). This time is fixed when using fixed time control or coordination (except "local coordination"). When the cycle counter reaches this length it is reset back to zero.
1576
+ This command provides the ability to change the cycle time when using coordinated or fixed time control. It changes the timings for optimal traffic flow. Can be used with scenario based control.
1577
+ Requires security code 2.
1578
+ from_version: 1.0.13
1579
+ arguments:
1580
+ status:
1581
+ type: integer_as_string
1582
+ description: Set cycle time in seconds
1583
+ min: 1
1584
+ max: 255
1585
+ plan:
1586
+ type: integer_as_string
1587
+ description: Time plan nr
1588
+ min: 0
1589
+ max: 255
1590
+ securityCode:
1591
+ type: string
1592
+ description: Security code 2
1593
+ command: setCycleTime
1594
+ M0019:
1595
+ description: |-
1596
+ Force input.
1597
+ Force a given input (1-255) of the controllers general purpose I/O to either True or False. Can be used for all types of input where the traffic light controller must react to external control.
1598
+ Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.
1599
+ Requires security code 2.
1600
+ from_version: 1.0.13
1601
+ arguments:
1602
+ status:
1603
+ type: boolean_as_string
1604
+ description: |-
1605
+ False: Release input
1606
+ True: Force input
1607
+ securityCode:
1608
+ type: string
1609
+ description: Security code 2
1610
+ input:
1611
+ type: integer_as_string
1612
+ description: Number of Input
1613
+ min: 1
1614
+ max: 255
1615
+ inputValue:
1616
+ type: boolean_as_string
1617
+ description: |-
1618
+ False: input forced to False
1619
+ True: input forced to True
1620
+ command: setInput
1621
+ M0020:
1622
+ description: |-
1623
+ Force output.
1624
+ Force a given output (1-255) of the controllers general purpose I/O to either True of False. Can be used for all types of output where the traffic light controller needs to control other equipment.
1625
+ Can be used for bus priority, coordination between traffic controllers, external control systems, and much more.
1626
+ When the output is released (status=False), the outputValue is ignored.
1627
+ Requires security code 2.
1628
+ from_version: 1.0.15
1629
+ arguments:
1630
+ status:
1631
+ type: boolean_as_string
1632
+ description: |-
1633
+ True: Force output
1634
+ False: Release output
1635
+ securityCode:
1636
+ type: string
1637
+ description: Security code 2
1638
+ output:
1639
+ type: integer_as_string
1640
+ description: Number of Output
1641
+ min: 1
1642
+ max: 255
1643
+ outputValue:
1644
+ type: boolean_as_string
1645
+ description: |-
1646
+ False: output forced off
1647
+ True: output forced on
1648
+ command: setOutput
1649
+ M0021:
1650
+ description: |-
1651
+ Set trigger level sensitivity for loop detector.
1652
+ The trigger level sensitivity determines at what level a loop detector should trigger. If it set too low then then traffic will not be detected as intended. If it is set too high the detector might give false positives.
1653
+ This command provides the ability to fine tune loop detectors to make sure they detect traffic as intended.
1654
+ Requires security code 2
1655
+ from_version: 1.0.15
1656
+ arguments:
1657
+ status:
1658
+ type: string_list_as_string
1659
+ description: |-
1660
+ Loop detector trigger level sensitivity is written as dd-ss where:
1661
+ dd=loop detector number
1662
+ ss=sensitivity value
1663
+ securityCode:
1664
+ type: string
1665
+ description: Security code 2
1666
+ command: setLevel
1667
+ M0022:
1668
+ description: |-
1669
+ Request Signal Priority
1670
+
1671
+ Useful for bus priority or other type of priorities like emergency vehicles or groups of cyclists.
1672
+
1673
+ The benefit of using this message over activating inputs or detector logics is that you can specify a priority level, vehicle type and estimated time of arrival. You can also update or cancel the request, and use the corresponding status message to track the status of the request, including how much priority was actually given.
1674
+
1675
+ To understand how this command relates to ETSI/J2735, please see the [wiki](https://github.com/rsmp-nordic/rsmp_sxl_traffic_lights/wiki/Signal-priority-and-ETSI-J2735).
1676
+
1677
+ Activating signal priority is expected to provide more green time for a particular movement through the intersection, but the exact mechanism must typically be configured in the controller.
1678
+
1679
+ The movement to prioritize can be referenced in a number of ways, depending on what is configured in the controller, and in the system that sends priority requests. Either:
1680
+
1681
+ - Reference a signal group by setting ‘signalGroupId’. This method is simple, but will not allow you to have different priority mechanism for the same signal group, unless they can be distinguished by the vehicle type. For example, if you need to trigger different priorities depending on whether a bus goes straight or makes a turn for the same signal group, you need to use of the other referencing methods.
1682
+ - Reference an input by setting ‘inputId’. This can be useful if you previously used inputs to activate priority. The input will not be activated, only the priority.
1683
+ - Reference a connection by setting ‘connectionId’. A connection is a movement from a specific ingoing lane to a specific outgoing lane.
1684
+ - Reference an intersection approach by setting ‘approachId’.
1685
+ - Reference an ingoing lane by setting ‘laneInId’, and optionally also reference an outgoing lane by setting ‘laneOutId’.
1686
+
1687
+ Referencing attributes that are not used must be left out, rather than set to null or empty strings. This includes:
1688
+
1689
+ - signalGroupId
1690
+ - inputId
1691
+ - connectionId
1692
+ - approachId
1693
+ - laneInId
1694
+ - laneOutId
1695
+
1696
+ Referencing attributes are only used when initiating a request. When updating or cancelling the request, the request is identified by its requestId, and no referencing attributes are allowed.
1697
+
1698
+ You initiate a priority request with type set to ‘new’. You must provide a request id that uniquely identifies the request on the controller. It can be a randomly generated UUID (universally unique identifier), or it can be constructed by combining e.g. a vehicle id and some other identifier. When updating or cancelling a request, you must pass the same request id again.
1699
+
1700
+ Providing ETA (estimated time of arrival) when initiating a request is optional, but can help the controller plan ahead in cases where you’re able to send the request before the vehicle arrives at the intersection. You’re allowed to initiate the request without an ETA and provide it in a later request update. But providing the ETA when initiating the request is recommended, since it will give the controller more time to plan ahead.
1701
+
1702
+ Like ETA, providing a vehicle type is optional, but can help the controller decide how to best handle the request.
1703
+
1704
+ The priority level provides a way to indicate the relative importance of the request compared to other requests. For example, emergency vehicles or delayed buses could be given a higher priority level.
1705
+
1706
+ If the ETA changes before the priority is cancelled, or you want to change the priority level, you can send another request message with type set to ‘update’. The vehicle type cannot be changed.
1707
+
1708
+ When you send a priority request, it will be processed to decide if it’s possible to activate the requested priority.
1709
+
1710
+ If the request is accepted, the priority can either be activated immediately, or if another priority is currently active, it can be queued for later activation.
1711
+
1712
+ If the priority cannot be accepted the request is rejected. Cooldown is a specific type of rejection, which means that s similar request has just completed, and some time needs to pass before a similar request can be activated.
1713
+
1714
+ When a request is queued, it is expected to become activated later, but in case too long passes without activation, the controller is expected to time out the request.
1715
+
1716
+ Once a priority is activated, you’re excepted to cancel it as soon as there’s no need for it anymore, typically when the vehicle has passed the intersection. You cancel a request by sending a request passing the existing request id setting the type to ‘cancel’.
1717
+
1718
+ If a request is never cancelled, the controller is expected to remove the priority at some point, but until then the priority might block requests in other direction which is why you should always cancel a priority when it’s not needed anymore.
1719
+ from_version: 1.1.0
1720
+ arguments:
1721
+ requestId:
1722
+ type: string
1723
+ description: A string that uniquely identifies the request on the controller
1724
+ signalGroupId:
1725
+ type: string
1726
+ optional: true
1727
+ description: ID of a signal group component.
1728
+ inputId:
1729
+ type: integer_as_string
1730
+ optional: true
1731
+ description: ID of an input, using the same numbering scheme as M0006
1732
+ min: 0
1733
+ max: 255
1734
+ connectionId:
1735
+ type: integer_as_string
1736
+ optional: true
1737
+ description: ID of a connection, connecting an ingoing and an outgoing lane
1738
+ min: 0
1739
+ max: 255
1740
+ approachId:
1741
+ type: integer_as_string
1742
+ optional: true
1743
+ description: ID of an intersection approach
1744
+ min: 0
1745
+ max: 16
1746
+ laneInId:
1747
+ type: integer_as_string
1748
+ optional: true
1749
+ description: ID of an ingoing lane
1750
+ min: 0
1751
+ max: 255
1752
+ laneOutId:
1753
+ type: integer_as_string
1754
+ optional: true
1755
+ description: ID of an outgoing lane
1756
+ min: 0
1757
+ max: 255
1758
+ priorityId:
1759
+ type: integer_as_string
1760
+ optional: true
1761
+ description: ID of a priority
1762
+ min: 0
1763
+ max: 255
1764
+ type:
1765
+ type: string
1766
+ values:
1767
+ new: New priority request
1768
+ update: Update to existing priority request
1769
+ cancel: Cancel an existing priority
1770
+ level:
1771
+ type: integer_as_string
1772
+ description: |-
1773
+ 0: Lowest, 14: Highest
1774
+ min: 0
1775
+ max: 14
1776
+ eta:
1777
+ type: integer_as_string
1778
+ optional: true
1779
+ description: Estimated time of arrival to the intersection, in seconds
1780
+ min: 0
1781
+ max: 255
1782
+ vehicleType:
1783
+ type: string
1784
+ optional: true
1785
+ description: Vehicle type
1786
+ values:
1787
+ pedestrian: Pedestrians
1788
+ bicycle: Bicycles
1789
+ motorcycle: Motorcycles
1790
+ car: Passenger vehicle
1791
+ bus: Bus used for public transport
1792
+ lightTruck: Light truck
1793
+ heavyTruck: Heavy truck
1794
+ tram: Trams used for Public transport
1795
+ emergency: Police, fire or ambulance
1796
+ safetyCar: For e.g. escort vehicles
1797
+ specialTransport: For e.g. heavy load
1798
+ other: Other type of vehicle
1799
+ command: requestPriority
1800
+ M0023:
1801
+ description: |-
1802
+ Set timeout for dynamic bands
1803
+ Switch to a designated time plan if this timeout is reached due to lost connection with the supervisor.
1804
+ Disable by setting timeout to '0'.
1805
+ Used in conjunction with dynamic bands, M0014
1806
+ Requires security code 2.
1807
+ from_version: 1.1.0
1808
+ arguments:
1809
+ status:
1810
+ type: integer_as_string
1811
+ min: 0
1812
+ max: 65535
1813
+ description: Timeout, in minutes
1814
+ securityCode:
1815
+ type: string
1816
+ description: Security code 2
1817
+ command: setTimeout
1818
+ M0024:
1819
+ description: |-
1820
+ Clear all alarms.
1821
+ Clear all active alarms in the traffic light controller.
1822
+ If the cause of an alarm is still present, the alarm will be reactivated again.
1823
+ from_version: 1.3.0
1824
+ command: clearAlarms
1825
+ arguments:
1826
+ status:
1827
+ type: boolean
1828
+ description: 'True: Clear all alarms'
1829
+ M0103:
1830
+ description: |-
1831
+ Set security code.
1832
+ Change the security code to use when sending commands
1833
+ Security codes are used as an extra layer of security in many commands. They need to match between the supervision system and the traffic light controller in order for the commands to be executed.
1834
+ from_version: 1.0.1
1835
+ arguments:
1836
+ status:
1837
+ type: string
1838
+ values:
1839
+ Level1: Change security code 1
1840
+ Level2: Change security code 2
1841
+ oldSecurityCode:
1842
+ type: string
1843
+ description: Previous security code
1844
+ newSecurityCode:
1845
+ type: string
1846
+ description: New security code
1847
+ command: setSecurityCode
1848
+ M0104:
1849
+ deprecated: true
1850
+ description: |-
1851
+ Set clock.
1852
+ This command will be removed in an upcoming version.
1853
+ You should instead use automatic time synchronization using e.g. using NTP or GPS.
1854
+
1855
+ Can be used to manually set the clock of the traffic light controller in case
1856
+ automatic time synchronization is not available, e.g. during maintenance work.
1857
+
1858
+ If automatic time synchronization is active, the
1859
+ command returns a normal response, but is otherwise ignored and does not set
1860
+ the clock.
1861
+
1862
+ UTC is used. Requires security code 1.
1863
+ from_version: 1.0.1
1864
+ arguments:
1865
+ securityCode:
1866
+ type: string
1867
+ description: Security code 1
1868
+ year:
1869
+ type: integer_as_string
1870
+ description: Year
1871
+ min: 0
1872
+ max: 9999
1873
+ month:
1874
+ type: integer_as_string
1875
+ description: Month
1876
+ min: 1
1877
+ max: 12
1878
+ day:
1879
+ type: integer_as_string
1880
+ description: Day of month
1881
+ min: 1
1882
+ max: 31
1883
+ hour:
1884
+ type: integer_as_string
1885
+ description: Hour
1886
+ min: 0
1887
+ max: 23
1888
+ minute:
1889
+ type: integer_as_string
1890
+ description: Minute
1891
+ min: 0
1892
+ max: 59
1893
+ second:
1894
+ type: integer_as_string
1895
+ description: Second
1896
+ min: 0
1897
+ max: 59
1898
+ command: setDate
1899
+ Signal group:
1900
+ description:
1901
+ alarms:
1902
+ A0008:
1903
+ description: |-
1904
+ Dead lock error.
1905
+ Used for dead lock errors.
1906
+ For instance; a signal group has requested green but is unable to switch due to a conflicting signal group for an extended period of time. At some point the request times out and the controller goes into failure mode. The cause for this error is due to configuration errors or external sources.
1907
+ Is a "major fault" defined according to 3.8 in EN12675 which causes the controller to switch to a "failure mode" according to 3.6 in EN12675.
1908
+ priority: 2
1909
+ category: D
1910
+ from_version: 1.0.1
1911
+ arguments:
1912
+ timeplan:
1913
+ type: integer_as_string
1914
+ description: Current time plan
1915
+ min: 1
1916
+ max: 255
1917
+ A0101:
1918
+ description: |-
1919
+ Pushbutton error.
1920
+ Used for push buttons.
1921
+ priority: 3
1922
+ category: D
1923
+ from_version: 1.0.0
1924
+ A0201:
1925
+ description: |-
1926
+ Serious lamp error.
1927
+ Used for lamp errors.
1928
+ Is a "major fault" defined according to 3.8 in EN12675 which causes the controller to switch to a "failure mode" according to 3.6 in EN12675.
1929
+ priority: 2
1930
+ category: D
1931
+ from_version: 1.0.0
1932
+ arguments:
1933
+ color:
1934
+ type: string
1935
+ description: Color of lamp
1936
+ values:
1937
+ red: red
1938
+ yellow: yellow
1939
+ green: green
1940
+ A0202:
1941
+ description: |-
1942
+ Less serious lamp error.
1943
+ Used for lamp errors.
1944
+ Is a "minor fault" defined according to 3.11 in EN12675.
1945
+ priority: 3
1946
+ category: D
1947
+ from_version: 1.0.0
1948
+ arguments:
1949
+ color:
1950
+ type: string
1951
+ description: Color of lamp
1952
+ values:
1953
+ red: red
1954
+ yellow: yellow
1955
+ green: green
1956
+ statuses:
1957
+ S0025:
1958
+ description: |-
1959
+ Time-of-Green / Time-of-Red.
1960
+ Provides predicted signal timings of green and red for each signal group. Max, min and likely time to green and red.
1961
+ from_version: 1.0.13
1962
+ arguments:
1963
+ minToGEstimate:
1964
+ type: timestamp
1965
+ description: |-
1966
+ Time stamp for the minimum time for the signal group to go to green. If the signal group is green, it is the minimum time for the next green.
1967
+ maxToGEstimate:
1968
+ type: timestamp
1969
+ description: |-
1970
+ Time stamp for the maximum time for the signal group to go to green. If the signal group is green, it is the maximum time for the next green.
1971
+ likelyToGEstimate:
1972
+ type: timestamp
1973
+ description: |-
1974
+ Time stamp for the most likely time for the signal group to go to green. If the signal group is green, it is the most likely time for the next green.
1975
+ ToGConfidence:
1976
+ type: integer_as_string
1977
+ description: Confidence of the likelyToGEstimate. 0-100%
1978
+ min: 0
1979
+ max: 100
1980
+ minToREstimate:
1981
+ type: timestamp
1982
+ description: |-
1983
+ Time stamp for the minimum time for the signal group to go to red. If the signal group is red, it is the minimum time for the next red.
1984
+ maxToREstimate:
1985
+ type: timestamp
1986
+ description: |-
1987
+ Time stamp for the maximum time for the signal group to go to red. If the signal group is red, it is the maximum time for the next red.
1988
+ likelyToREstimate:
1989
+ type: timestamp
1990
+ description: |-
1991
+ Time stamp for the most likely time for the signal group to go to red. If the signal group is red, it is the most likely time for the next red.
1992
+ ToRConfidence:
1993
+ type: integer_as_string
1994
+ description: Confidence of the likelyToREstimate. 0-100%
1995
+ min: 0
1996
+ max: 100
1997
+ commands:
1998
+ M0010:
1999
+ description: |-
2000
+ Start of signal group. Orders a signal group to green.
2001
+ Although this command is intended to be used with coordination it is not actually specified to be used for this yet. It is reserved in the SXL for possible future use.
2002
+ Intended for use with coordination of signaling systems where a traffic light controller communicates with neighboring controllers. Only used when a primary controller orders signal group of other controller to green or red (Coordination with external control bits).
2003
+ Requires security code 2
2004
+ from_version: 1.0.8
2005
+ reserved: true
2006
+ arguments:
2007
+ status:
2008
+ type: boolean_as_string
2009
+ description: |-
2010
+ False: No command (default)
2011
+ True: Order a signal group to green
2012
+ securityCode:
2013
+ type: string
2014
+ description: Security code 2
2015
+ command: setStart
2016
+ M0011:
2017
+ description: |-
2018
+ Stop of signal group. Orders a signal group to red.
2019
+ Although this command is intended to be used with coordination it is not actually specified to be used for this yet. It is reserved in the SXL for possible future use.
2020
+ Intended for use with coordination of signaling systems where a traffic light controller communicates with neighboring controllers. Only used when a primary controller orders signal group of other controller to green or red (Coordination with external control bits).
2021
+ Requires security code 2
2022
+ from_version: 1.0.8
2023
+ reserved: true
2024
+ arguments:
2025
+ status:
2026
+ type: boolean_as_string
2027
+ description: |-
2028
+ False: No command (default)
2029
+ True: Order a signal group to red
2030
+ securityCode:
2031
+ type: string
2032
+ description: Security code 2
2033
+ command: setStop
2034
+ Detector logic:
2035
+ description:
2036
+ alarms:
2037
+ A0301:
2038
+ description: |-
2039
+ Detector error (hardware).
2040
+ Is a "minor fault" defined according to 3.11 in EN12675.
2041
+ priority: 3
2042
+ category: D
2043
+ from_version: 1.0.2
2044
+ arguments:
2045
+ detector:
2046
+ type: string
2047
+ description: Designation of the detector (hardware)
2048
+ type:
2049
+ type: string
2050
+ description: Type of detector
2051
+ values:
2052
+ loop: Inductive detector loop
2053
+ input: External input
2054
+ errormode:
2055
+ type: string
2056
+ description: Detector forced on/off while detector error
2057
+ values: ['on','off'] # on/off must be quoted, otherwise they are converted to true/false
2058
+ manual:
2059
+ type: boolean_as_string
2060
+ description: Manually controlled detector logic (True/False)
2061
+ A0302:
2062
+ description: |-
2063
+ Detector error (logic error).
2064
+ For instance; detector continuously on or off during an extended time.
2065
+ Is a "minor fault" defined according to 3.11 in EN12675.
2066
+ priority: 3
2067
+ category: D
2068
+ from_version: 1.0.2
2069
+ arguments:
2070
+ detector:
2071
+ type: string
2072
+ description: Designation of the detector (hardware)
2073
+ type:
2074
+ type: string
2075
+ description: Type of detector.
2076
+ values:
2077
+ loop: Inductive detector loop
2078
+ input: External input
2079
+ errormode:
2080
+ type: string
2081
+ description: Detector forced on/off while detector error
2082
+ values: ['on','off'] # on/off must be quoted, otherwise they are converted to true/false
2083
+ manual:
2084
+ type: boolean_as_string
2085
+ description: Manually controlled detector logic (True/False)
2086
+ logicerror:
2087
+ type: string
2088
+ description: Type of logic error
2089
+ values:
2090
+ always_off: no detection during predefined max time
2091
+ always_on: detection constantly on during predefined max time
2092
+ intermittent: intermittent logic fault (flutter)
2093
+ A0303:
2094
+ description: |-
2095
+ Serious detector error (hardware).
2096
+ Is a “major fault” defined according to 3.8 i EN12675 which causes the controller to switch to a “failure mode” according to 3.6 in EN12675.
2097
+ priority: 2
2098
+ category: D
2099
+ from_version: 1.1.0
2100
+ arguments:
2101
+ detector:
2102
+ type: string
2103
+ description: Designation of the detector (hardware)
2104
+ type:
2105
+ type: string
2106
+ description: Type of detector.
2107
+ values:
2108
+ loop: Inductive detector loop
2109
+ input: External input
2110
+ errormode:
2111
+ type: string
2112
+ description: Detector forced on/off while detector error
2113
+ values: ['on','off'] # on/off must be quoted, otherwise they are converted to true/false
2114
+ manual:
2115
+ type: boolean_as_string
2116
+ description: Manually controlled detector logic (True/False)
2117
+ A0304:
2118
+ description: |-
2119
+ Serious detector error (logic error).
2120
+ For instance; detector continuously on or off during an extended time.
2121
+ Is a “major fault” defined according to 3.8 i EN12675 which causes the controller to switch to a “failure mode” according to 3.6 in EN12675
2122
+ priority: 2
2123
+ category: D
2124
+ from_version: 1.1.0
2125
+ arguments:
2126
+ detector:
2127
+ type: string
2128
+ description: Designation of the detector (hardware)
2129
+ type:
2130
+ type: string
2131
+ description: Type of detector.
2132
+ values:
2133
+ loop: Inductive detector loop
2134
+ input: External input
2135
+ errormode:
2136
+ type: string
2137
+ description: Detector forced on/off while detector error
2138
+ values: ['on','off'] # on/off must be quoted, otherwise they are converted to true/false
2139
+ manual:
2140
+ type: boolean_as_string
2141
+ description: Manually controlled detector logic (True/False)
2142
+ logicerror:
2143
+ type: string
2144
+ description: Type of logic error
2145
+ values:
2146
+ always_off: no detection during predefined max time
2147
+ always_on: detection constantly on during predefined max time
2148
+ intermittent: intermittent logic fault (flutter)
2149
+ statuses:
2150
+ S0201:
2151
+ description: |-
2152
+ Traffic Counting: Number of vehicles.
2153
+ Used for Traffic counting.
2154
+ Please see Section 4: "Traffic counting" for additional requirements.
2155
+ from_version: 1.0.5
2156
+ arguments:
2157
+ starttime:
2158
+ type: timestamp
2159
+ description: Time stamp for start of measuring
2160
+ vehicles:
2161
+ type: integer_as_string
2162
+ description: Number of vehicles on a given detector logic (since last
2163
+ update)
2164
+ min: 0
2165
+ max: 65535
2166
+ S0202:
2167
+ description: |-
2168
+ Traffic Counting: Vehicle speed.
2169
+ Used for Traffic counting.
2170
+ Please see Section 4: "Traffic counting" for additional requirements.
2171
+ from_version: 1.0.5
2172
+ arguments:
2173
+ starttime:
2174
+ type: timestamp
2175
+ description: Time stamp for start of measuring
2176
+ speed:
2177
+ type: integer_as_string
2178
+ description: Average speed in km/h
2179
+ min: 0
2180
+ max: 65535
2181
+ S0203:
2182
+ description: |-
2183
+ Traffic Counting: Occupancy.
2184
+ Used for Traffic counting.
2185
+ Please see Section 4: "Traffic counting" for additional requirements.
2186
+ from_version: 1.0.5
2187
+ arguments:
2188
+ starttime:
2189
+ type: timestamp
2190
+ description: Time stamp for start of measuring
2191
+ occupancy:
2192
+ type: integer_as_string
2193
+ description: Occupancy in percent (0-100%)
2194
+ min: 0
2195
+ max: 100
2196
+ S0204:
2197
+ description: |-
2198
+ Traffic Counting: Number of vehicles of given classification.
2199
+ Used for Traffic counting.
2200
+ Please see Section 4: "Traffic counting" for additional requirements.
2201
+ from_version: 1.0.5
2202
+ arguments:
2203
+ starttime:
2204
+ type: timestamp
2205
+ description: Time stamp for start of measuring
2206
+ P:
2207
+ type: integer_as_string
2208
+ description: Number of cars
2209
+ min: 0
2210
+ max: 65535
2211
+ PS:
2212
+ type: integer_as_string
2213
+ description: Number of cars with trailers
2214
+ min: 0
2215
+ max: 65535
2216
+ L:
2217
+ type: integer_as_string
2218
+ description: Number of trucks
2219
+ min: 0
2220
+ max: 65535
2221
+ LS:
2222
+ type: integer_as_string
2223
+ description: Number of trucks with trailers
2224
+ min: 0
2225
+ max: 65535
2226
+ B:
2227
+ type: integer_as_string
2228
+ description: Number of buses
2229
+ min: 0
2230
+ max: 65535
2231
+ SP:
2232
+ type: integer_as_string
2233
+ description: Number of trams
2234
+ min: 0
2235
+ max: 65535
2236
+ MC:
2237
+ type: integer_as_string
2238
+ description: Number of motor cycles
2239
+ min: 0
2240
+ max: 65535
2241
+ C:
2242
+ type: integer_as_string
2243
+ description: Number of bicycles
2244
+ min: 0
2245
+ max: 65535
2246
+ F:
2247
+ type: integer_as_string
2248
+ description: Number of pedestrians
2249
+ min: 0
2250
+ max: 65535
2251
+ commands:
2252
+ M0008:
2253
+ description: |-
2254
+ Force detector logic.
2255
+ Force a given detector logic (1-255) to either true or false.
2256
+
2257
+ When 'status' is true the detector logic is forced to the state specified in 'mode'.
2258
+ While forced, no other source can activate or deactivate the detector logic.
2259
+ When forcing, the 'duration' can be set to automatically release the
2260
+ detector logic after a specific time interval.
2261
+
2262
+ When 'status' is false the detector logic is released and the state
2263
+ will again be controlled by other sources, e.g. hardware.
2264
+ Note that this means that releasing does not guarantee a return to the previous state.
2265
+ This is because the other control sources might have changed state while
2266
+ the detector logic was forced.
2267
+ When releasing, the 'mode' and 'duration' attributes are ignored.
2268
+
2269
+ Can also be for signal group prioritization if the controller is programmed
2270
+ to activate priority based on detector logic actication.
2271
+
2272
+ Requires security code 2
2273
+ from_version: 1.0.3
2274
+ arguments:
2275
+ status:
2276
+ type: boolean_as_string
2277
+ description: |-
2278
+ False: Release detector logic, 'mode' is ignored.
2279
+ True: Force detector logic to the value in 'mode'.
2280
+ duration:
2281
+ type: integer_as_string
2282
+ description: |-
2283
+ If set, automatically release after this number of
2284
+ milliseconds. Ignored if 'status' is false.
2285
+ Setting to zero is the same as leaving out, and means
2286
+ no automatic release will happen.
2287
+ min: 0
2288
+ securityCode:
2289
+ type: string
2290
+ description: Security code 2
2291
+ mode:
2292
+ type: boolean_as_string
2293
+ description: |-
2294
+ Mode to force to (ignored if 'status' is false).
2295
+ False: Deactivate detector logic
2296
+ True: Activate detector logic
2297
+ command: setForceDetectorLogic