Closing elevators and other station infrastructure via SIRI(-FM?)

Leonard Ehrenfried
Leonard Ehrenfried
Hello, 

I'm a developer of OpenTripPlanner and several people have approached me how I would implement the closing of elevators and other station infrastructure with a realtime feed.

My reply is usually that I would investigate how to do it with SIRI-FM and since I was asked yesterday again, I'm actually doing some investigation.

Is it as simple as doing this?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Siri xmlns="http://www.siri.org.uk/siri" xmlns:ns2="http://www.ifopt.org.uk/acsb" xmlns:ns3="http://www.ifopt.org.uk/ifopt" xmlns:ns4="http://datex2.eu/schema/2_0RC1/2_0" xmlns:ns5="http://www.opengis.net/gml/3.2">
    <ServiceDelivery>
        <FacilityMonitoringDelivery>
            <FacilityCondition>
                <FacilityRef>elevator-123</FacilityRef>
                <FacilityStatus>
                    <Status>notAvailable</Status>
                </FacilityStatus>
            </FacilityCondition>
        </FacilityMonitoringDelivery>
    </ServiceDelivery>
</Siri>

Ideally I would like to also say somewhere that it is an elevator ("lift" in SIRI languague) but I'm struggling to find a clear way of expressing that.

Or is this more of a use case for SIRI-SX?

cc
Leon Byford Leon
 
Christophe Duquesne (Aurige)
Your FM message looks Ok (you can enhance it to say for example when the elevator is expected to be repaired with the Remedy information, etc.)
SIRI is to provide the update of the status of the EQUIPMENT, but not to describe the  EQUIPMENT  itself (which is only required once, and not at each updated).
The  EQUIPMENT description itself is expected to be provided via NeTEx (see EPIAP - European Passenger Information Accessibility Profile - for the most detailed description).
However if you really don't have the NeTEx description, you can use the Facility description proposed by SIRI (but that is really a very simple summary... see below)
image.png 271 KB View full-size Download
Leonard Ehrenfried
Okay, I think I got it now. Does this look correct?


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Siri xmlns="http://www.siri.org.uk/siri" xmlns:ns2="http://www.ifopt.org.uk/acsb" xmlns:ns3="http://www.ifopt.org.uk/ifopt" xmlns:ns4="http://datex2.eu/schema/2_0RC1/2_0" xmlns:ns5="http://www.opengis.net/gml/3.2">
    <ServiceDelivery>
        <FacilityMonitoringDelivery>
            <FacilityCondition>
                <Facility>
                    <FacilityCode>elevator-123</FacilityCode>
                    <Features>
                        <Feature>
                            <AccessFacility>lift</AccessFacility>
                        </Feature>
                    </Features>
                </Facility>
                <FacilityStatus>
                    <Status>notAvailable</Status>
                </FacilityStatus>
            </FacilityCondition>
        </FacilityMonitoringDelivery>
    </ServiceDelivery>
</Siri>
Christophe Duquesne (Aurige)
You can't have FacilityRef et Facility together (it's a choice), just keep  Facility  in your case
Leonard Ehrenfried
OK, I updated my example.
Leon Byford
Thanks, both. For it to be useful, I imagine it's necessary to model which areas of the station the lift serves. But if you're going to do that, you'd probably need to have the whole station modelled, which wouldn't make sense to do in SIRI-FM, I think. So our best bet might be to model it all in NeTEx and reference facilities using FacilityRef.
Leonard Ehrenfried
If you have that data that would great.

Christophe Duquesne (Aurige) Christophe Duquesne
How dirty is it, in your view, to use SIRI to target facilities that have been modeled in OSM rather than NeTEx?
Christophe Duquesne (Aurige)
It's mainly about interoperability: only data consumers knowing that you do this will be able to understand (others will not expect it)
Stefan de Konink
This is what happens in NL:

<?xml version="1.0" encoding="UTF-8"?>
<Siri xmlns="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://www.siri.org.uk/siri ../../xsd/siri.xsd">
  <ServiceDelivery>
    <ResponseTimestamp>2024-07-25T10:15:14.877Z</ResponseTimestamp>
    <ProducerRef>DOVA</ProducerRef>
    <FacilityMonitoringDelivery>
      <ResponseTimestamp>2024-07-25T10:15:14.877Z</ResponseTimestamp>
      <FacilityCondition>
        <Facility>
          <FacilityCode>UT-ROL-020</FacilityCode>
          <FacilityClass>fixedEquipment</FacilityClass>
          <Features>
            <Feature>
              <AccessFacility>escalator</AccessFacility>
            </Feature>
          </Features>
          <FacilityLocation>
            <StopPointRef>8400621</StopPointRef>
            <StopPlaceRef>NL:CHB:StopPlace:8400621</StopPlaceRef>
          </FacilityLocation>

        </Facility>
        <FacilityStatus>
          <Status>notAvailable</Status>
          <Description>Escalator out of service</Description>
        </FacilityStatus>
        <ValidityPeriod>
          <StartTime>2024-07-25T10:10:08.00Z</StartTime>
        </ValidityPeriod>
      </FacilityCondition>
    </FacilityMonitoringDelivery>
  </ServiceDelivery>
</Siri>
Steffen Suhr
If you want to distribute a message, you can do nearly similar in SIRI SX:

<!--First describe the location: -->
<Consequence>
  <Affects>
    <StopPlaces>
      <AffectedStopPlace>
        <StopPlaceRef>de:05315:11111</StopPlaceRef>
        <PlaceName>Neumarkt</PlaceName>
        <AffectedFacilities>
          <AffectedFacility>
            <FacilityRef>de:05315:11111:lift:2</FacilityRef>
            <FacilityName>Fahrtrichtung Poststraße</FacilityName>
            <FacilityStatus>notAvailable</FacilityStatus>
          </AffectedFacility>
        </AffectedFacilities>
      </AffectedStopPlace>
    </StopPlaces>
  </Affects>
</Consequence>
<!-- 2nd consequence describes accessibiltity restrictions -->
<Consequence>
  <Affects>
    <StopPoints>
      <AffectedStopPoint>
        <StopPointRef>de:05315:11111:4:15</StopPointRef>
        <StopPointName>Neumarkt Gleis 2</StopPointName>
        <StopPlaceRef>de:05315:11111</StopPlaceRef>
        <StopPlaceName>Neumarkt</StopPlaceName>
        <AccessibilityAssessment>
          <ifopt:MobilityImpairedAccess>false</ifopt:MobilityImpairedAccess>
          <ifopt:Limitations>
            <ifopt:AccessibilityLimitation>
              <ifopt:WheelchairAccess>false</ifopt:WheelchairAccess>
              <ifopt:StepFreeAccess>false</ifopt:StepFreeAccess>
            </ifopt:AccessibilityLimitation>
          </ifopt:Limitations>
        </AccessibilityAssessment>
      </AffectedStopPoint>
    </StopPoints>
  </Affects>
</Consequence>
<!-- After that you  can start with a PublishingAction -->


Leonard Ehrenfried
What are the advantages/disadvantages of using the various flavours of SIRI for this?
Stefan de Konink
SX: Situation Exchange, hence a scenario based approach, all predefined.
FM: Facility monitoring, a view based on the actual facilities.

You could argue that FM is similar to VM. It is oriented around specific input data. Where as SX is a provided solution.
Leonard Ehrenfried
Is there an agreement if SIRI-SX should affect routing behaviour of consuming apps? In GTFS-RT this is, as you know, at hotly contested topic.
Stefan de Konink
I think for GTFS-RT there is not yet a possibility to define pedestrian routing changes, is it? For EPIP-RT my impression was to focus on SIRI-ET for routing changes.
Leonard Ehrenfried
There is a proposal: https://github.com/google/transit/issues/268

I meant more: are SIRI-SX message just "bits of text" that you attach to various enties or should the message that
Steffen Suhr Steffen
posted also make the elevator inaccessible in the routing application?

Maybe the answer is that it's just data and the application can use it as it sees fit.
Stefan de Konink
Leonard Ehrenfried Leonard
the consequences are not bit of texts (Description), they are the actual status, being an enumeration.
Norbert Betko
In the trip planner apps from MENTZ, SIRI-SX affects the routing behavior, e.g., with route or stop blockings. It is also possible to block elevators, which leads to longer required interchange times.
Steffen Suhr
It is possible, that the SIRI-SX has an effect to trip planning, but in SIRI-SX in my opion you have too much overhead in it, that is not necessary for effects on trip planning. At KVB (Kölner Verkehrsbetriebe - Cologne Public Transport) a technical control system provides an EMS (Event Management System) via a real time data hub with a SIRI-FM Message, which is as simple as your first example. The EMS generates a SIR-SX message for textual passenger information. At same time the same SIRI-FM elevator message is send to a jorurney planner, which has all pedestrian routes as nodes. The SIR-FM message blocks the node, which represent the elevator and so trip planning is changed.
Leonard Ehrenfried
That is a sophisticated operation you have there,
Steffen Suhr Steffen
.

So your take is that SIRI-SX is for "passenger text" and SIRI-FM for actually making parts of the network unpassable?
Steffen Suhr
Yes, that's it.
Adrian A
Hello Leon
I also want to share our Swiss approach even though Steffen did a great job of summarizing it.
  • From our perspective, FM is best suited for data exchange between source and event management system (as Steffen described; although we don't feed customer information systems with FM data).
  • SX is better suited for data exchange between event management and customer information system. With the PassengerInformationAction model SX provides more control over the textual content (which is standardized in Switzerland) and also the option to publish different messages depending on the perspective of the passengers (with an AlertCause specifically for liftFailure). 
A typical message looks like:
2025-01-14_SIRI-SX_liftFailure_example.xml 14.2 KB Download


On top level the affected pt element is always a stop place. The elevator is identified by its OpenStreeMap ID since this is the only "map" identifier known by all possible consumers. The FacilityName can be quite long, containing entraces, street names and important POIs (in this case simply the platform as it is sufficient for passengers to locate the facility):
<Affects>
	<StopPlaces>
		<AffectedStopPlace>
			<StopPlaceRef>ch:1:sloid:10</StopPlaceRef>
			<PlaceName>Basel SBB</PlaceName>
			<AffectedFacilities>
				<AffectedFacility>
					<FacilityRef>openstreetmap.org:node:3798167051</FacilityRef>
					<FacilityName>Gleis 9/10</FacilityName>
					<FacilityStatus>notAvailable</FacilityStatus>
				</AffectedFacility>
			</AffectedFacilities>
		</AffectedStopPlace>
	</StopPlaces>
</Affects>

The Consequence with the platforms where step free access is no longer possible:
<Consequence>
	<Affects>
		<StopPoints>
			<AffectedStopPoint>
				<StopPointRef>ch:1:sloid:10:5:9</StopPointRef>
				<StopPointName>9</StopPointName>
				<Location>
					<Longitude>7.5889058</Longitude>
					<Latitude>47.5469635</Latitude>
				</Location>
				<StopPlaceRef>ch:1:sloid:10</StopPlaceRef>
				<StopPlaceName>Basel SBB</StopPlaceName>
				<AccessibilityAssessment xmlns:ifopt="http://www.ifopt.org.uk/acsb">
					<ifopt:MobilityImpairedAccess>false</ifopt:MobilityImpairedAccess>
					<ifopt:Limitations>
						<ifopt:AccessibilityLimitation>
							<ifopt:WheelchairAccess>false</ifopt:WheelchairAccess>
							<ifopt:StepFreeAccess>false</ifopt:StepFreeAccess>
						</ifopt:AccessibilityLimitation>
					</ifopt:Limitations>
				</AccessibilityAssessment>
			</AffectedStopPoint>
			<AffectedStopPoint>
				<StopPointRef>ch:1:sloid:10:5:10</StopPointRef>
				<StopPointName>10</StopPointName>
				<Location>
					<Longitude>7.5889058</Longitude>
					<Latitude>47.5469635</Latitude>
				</Location>
				<StopPlaceRef>ch:1:sloid:10</StopPlaceRef>
				<StopPlaceName>Basel SBB</StopPlaceName>
				<AccessibilityAssessment xmlns:ifopt="http://www.ifopt.org.uk/acsb">
					<ifopt:MobilityImpairedAccess>false</ifopt:MobilityImpairedAccess>
					<ifopt:Limitations>
						<ifopt:AccessibilityLimitation>
							<ifopt:WheelchairAccess>false</ifopt:WheelchairAccess>
							<ifopt:StepFreeAccess>false</ifopt:StepFreeAccess>
						</ifopt:AccessibilityLimitation>
					</ifopt:Limitations>
				</AccessibilityAssessment>
			</AffectedStopPoint>
		</StopPoints>
	</Affects>
</Consequence>

The PassengerInformationAction with textual content in different "sizes" (short for displays with limited space and long for journey planner):
<PublishingAction>
	<PublishAtScope>
		<ScopeType>stopPlace</ScopeType>
		<Affects>
			<StopPlaces>
				<AffectedStopPlace>
					<StopPlaceRef>ch:1:sloid:10</StopPlaceRef>
					<PlaceName>Basel SBB</PlaceName>
				</AffectedStopPlace>
			</StopPlaces>
		</Affects>
	</PublishAtScope>
	<PassengerInformationAction>
		<ActionRef>ski-oct_sip2-sx_prod-TT948134-1</ActionRef>
		<RecordedAtTime>2025-01-14T08:54:27.765Z</RecordedAtTime>
		<OwnerRef>ch:1:sboid:100001</OwnerRef>
		<Perspective>general</Perspective>
		<Perspective>stopPoint</Perspective>
		<Perspective>vehicleJourney</Perspective>
		<TextualContent>
			<TextualContentSize>S</TextualContentSize>
			.
			.
			.
		</TextualContent>
		<TextualContent>
			<TextualContentSize>M</TextualContentSize>
			.
			.
			.
		</TextualContent>
		<TextualContent>
			<TextualContentSize>L</TextualContentSize>
			<SummaryContent>
				<SummaryText xml:lang="DE">Der stufenfreie Zugang zum Bahnhof Basel SBB ist für Reisende mit Mobilitätseinschränkung unter Umständen nicht mehr garantiert.</SummaryText>
				<SummaryText xml:lang="FR">L'accès sans marches pour les voyageurs à mobilité réduite à la gare Basel SBB n'est plus garanti dans certaines circonstances.</SummaryText>
				<SummaryText xml:lang="IT">L'accesso senza gradini per i passeggeri con mobilità ridotta alla stazione Basel SBB non è più garantito in certe circostanze.</SummaryText>
				<SummaryText xml:lang="EN">Step-free access for passengers with reduced mobility to station Basel SBB is no longer guaranteed under certain circumstances.</SummaryText>
			</SummaryContent>
			<ReasonContent>
				<ReasonText xml:lang="DE">Der Grund ist eine Liftstörung.</ReasonText>
				<ReasonText xml:lang="FR">La raison est une malfonction d'ascenseur.</ReasonText>
				<ReasonText xml:lang="IT">Il motivo è un guasto all'ascensore.</ReasonText>
				<ReasonText xml:lang="EN">The reason is an elevator malfunction.</ReasonText>
			</ReasonContent>
			<DescriptionContent>
				<DescriptionText xml:lang="DE">Betroffen ist der Personenlift Gleis 9/10.</DescriptionText>
				<DescriptionText xml:lang="FR">L'ascenseur voie 9/10 est concernés.</DescriptionText>
				<DescriptionText xml:lang="IT">È interessato l'ascensore binario 9/10.</DescriptionText>
				<DescriptionText xml:lang="EN">The elevator platform 9/10 is affected.</DescriptionText>
			</DescriptionContent>
			<RecommendationContent>
				<RecommendationText xml:lang="DE">Für Reisende mit Mobilitätseinschränkung wird empfohlen, sich beim Contact Center Handicap zu melden: Tel. 0800 007 102 oder swisspass.ch/handicap.</RecommendationText>
				<RecommendationText xml:lang="FR">Pour les voyageurs à mobilité réduite, il est recommandé de se renseigner aux Contact Center Handicap: tél. 0800 007 102 ou swisspass.ch/handicap.</RecommendationText>
				<RecommendationText xml:lang="IT">Ai passeggeri con mobilità ridotta si consiglia, di rivolgersi al Contact Center Handicap: tel. 0800 007 102 o swisspass.ch/handicap.</RecommendationText>
				<RecommendationText xml:lang="EN">For passengers with reduced mobility, it is recommended to approach the Contact Center Handicap: phone 0800 007 102 or swisspass.ch/handicap.</RecommendationText>
			</RecommendationContent>
			<DurationContent>
				<DurationText xml:lang="DE">Die Einschränkung dauert ungefähr bis 15.01.2025, 22:00.</DurationText>
				<DurationText xml:lang="FR">La restriction dure environ jusqu’au 15.01.2025, 22:00.</DurationText>
				<DurationText xml:lang="IT">La restrizione durerà circa fino al 15.01.2025, 22:00.</DurationText>
				<DurationText xml:lang="EN">The restriction lasts approximately until 15.01.2025, 22:00.</DurationText>
			</DurationContent>
		</TextualContent>
	</PassengerInformationAction>
</PublishingAction>

Cheers,
Adrian
Leonard Ehrenfried
These are all excellent examples. Thanks
Adrian A Adrian
Steffen Suhr Steffen
Stefan de Konink Stefan
 .