Knowledge Base · Vehicle Sensor Networks

Ambulance Sensor Networks

What an ambulance measures, how the data moves from chassis, cabin and medical devices to the cloud, how a call changes the signals, and which faults and thresholds a simulator should reproduce. All patient vitals in this report are synthetic generator parameters, never real patient data.

Prepared 12 Oct 2026 · Updated 13 Oct 2026 · Feeds: Sense simulator data generator

1 Overview and operating context

An ambulance is a road vehicle with three data domains: the chassis (engine, speed, battery, tyres), the vehicle-mounted emergency and cabin equipment (lights, siren, doors, cot, oxygen, patient-compartment climate, drug fridge), and the clinical devices (monitor/defibrillator, ventilator, infusion pump) that feed an electronic patient care record (ePCR). A telematics unit or mobile data terminal (MDT) carries position and status to the dispatch system (CAD) over cellular.

Unlike a bus or truck, an ambulance is idle for much of its day and then switches abruptly into high-rate operation on dispatch. Utilisation is 20-45% busy in a typical urban system, and a 12-hour shift sees about 1.5-3 calls in rural areas and 6-10 in busy urban ones. Call volume peaks 10:00-20:00 with Friday and Saturday night spikes. Planning figures for the ambulance telemetry stream: one publish every 5-30 s (1 s on dispatch), 0.5-3 kB per publish, 1-15 records/s bursty, 3-30 MB per day and 100-600 MB per month.

Data provenance: values come from the research notes, where they are tagged either as confirmed from a cited source or as domain-knowledge estimates. In this report, items without a source tag are tunable defaults from the research, and anything the report author derived is labelled "inference".

Synthetic patient data only. Every vital-sign value, phenotype and patient event in this report is a parameter for generating synthetic telemetry. None of it is, or derives from, real patient data, and the simulator must not emit identifiable patient information.

2 Sensor inventory

2.1 Vehicle CAN, J1939 and OBD-II

Heavy chassis use J1939 on CAN at 250 kbit/s. Light chassis (for example Ford Transit, E-450, Sprinter) use OBD-II over ISO 15765 at 500 kbit/s. Signal and PGN names are source-confirmed; scaling factors are domain-knowledge defaults to verify against the DBC or J1939DA.

Vehicle bus signals (J1939 PGN/SPN or OBD-II PID)
SignalPGN / SPNUnitTypical rangeRateScalingSource
Engine speedEEC1 PGN 61444 / SPN 190rpmidle 650-800; running 1500-350010-100 ms0.125 rpm/bitVehicle CAN
Vehicle speedCCVS1 PGN 65265 / SPN 84km/h0-130100 ms1/256 km/h/bitVehicle CAN
Coolant temperatureET1 PGN 65262 / SPN 110degC-40..210; normal 85-1001 s1 degC/bit, offset -40Vehicle CAN
Engine oil temperatureSPN 175degC90-1201 s0.03125 degC/bit, offset -273Vehicle CAN
Oil pressurePGN 65263 / SPN 100kPaidle 100-170; running 250-450500 ms4 kPa/bitVehicle CAN
Accelerator pedalSPN 91%0-10050 ms0.4 %/bitVehicle CAN
Fuel levelSPN 96%0-100 (tank 80-150 L)1 s0.4 %/bitVehicle CAN
Fuel rateSPN 183L/hidle 1.5-3; emergency 20-45100 ms0.05 L/h/bitVehicle CAN
Battery voltage-V12 V system: 11.8-12.8 engine off, 13.5-14.6 charging; 24 V system: 24-291 s-Vehicle CAN
Fault codes (DTC)DM1 PGN 65226 (SPN + FMI)code-event; 1 s while active-Vehicle CAN
Tyre pressure (TPMS)-kPa380-620 (55-90 psi)60 s-Vehicle CAN / BLE
Brake switch, ABS/ESC active, seatbelt, parking brake, gear, odometer, ambient temperature-flag / km / degC-event or 1 s-Vehicle CAN

OBD-II polling by a telematics dongle (ISO 15765-4) runs at 1-10 Hz over 5-20 PIDs: 0x0C RPM (1/4 rpm per bit), 0x0D speed (km/h), 0x05 coolant (A-40 degC), 0x11 throttle %, 0x2F fuel level %, 0x42 module voltage.

2.2 GNSS position

GNSS and telematics position reporting
SignalUnitTypical rangeSample / report rateSource
Position, speed, headingdeg, km/h, degper vehicleGNSS 1-5 Hz (10 Hz for dash use); logged at 1 Hz idle, 1 Hz emergency, or on change (heading change of 10 deg or more, or 30 s idle)GNSS (NMEA 0183 / UBX)
Position report to CAD (AVL)lat/lon-1-10 s during dispatch, 30-60 s idle; CAD AVL update 5-30 sTelematics / MDT

2.3 Cabin, vehicle equipment and cold chain

Ambulance-specific vehicle, cabin and cold-chain signals
SignalUnit / typeTypical range or valuesSample / report rateSource
Emergency lightsenumOFF, WARN-FRONT, WARN-ALL, SCENE (flood); light-bar draw 15-60 A (LED 8-25 A)event plus 1 Hz heartbeatCabin
SirenenumOFF, WAIL, YELP, PHASER, AIR HORN, MANUAL; about 120 dB(A) at 3 meventCabin
Patient-compartment and cab doorsopen/closedrear door open during loading about 30-120 seventCabin
Stretcher / cotlocked state, load kg, battery %0-250 kg load (some cots rated 318 kg); battery 0-100%event; 1 HzCabin
Cabin temperaturedegCtarget 18-26; range 5-4010-60 sCabin
House battery / inverter / shore powerV, A, flaghouse battery 12-14.6 V; 120/230 V inverter; 12/24 V DC-DC1 s classCabin
Crew seatbelt, panic button, door locksbool-eventCabin
Drug fridge (2-8 degC items)degCtarget 2-81-5 min (loggers 5-15 min)Cold chain
Ambient drug boxdegC15-25 (controlled room temperature 20-25, excursions 15-30)5 minCold chain
Fridge door ajarbinary-eventCold chain
Parked cab ambientdegCsummer 35-60 when parked; winter below 0-Cold chain

2.4 Oxygen

Oxygen supply signals
SignalUnitValuesSample rateSource
Main cylinder pressure (M)bar / psifull 2000-2200 psi (138-152 bar); D/E cylinders 2000 psi1 per 10 s to 1 per minOxygen
Low and reserve thresholdspsilow alarm 500 psi (35 bar); reserve 200 psi (14 bar)-Oxygen
Vehicle piped outletbar4 bar (55 psi)-Oxygen
Flow / consumptionL/min2-15 L/min for cannula up to non-rebreather; non-rebreather 15; ventilator 6-12; M cylinder holds about 3450 L-Oxygen

2.5 Medical devices and vitals

These are generator parameters for synthetic patients only. Default alarm limits marked "Mindray" are from the cited bedside monitor checklist; the rest are domain-knowledge defaults.

Synthetic vital-sign parameters and monitor alarm defaults
ParameterUnitNormal adultRange in EMS patientsDefault alarm limitsSample rate
Heart ratebpm60-10030-220 (VT/SVT 150-250)high 130, low 40 (Mindray); alternative 150/50HR 1 Hz; ECG 250-500 Hz
ECGmV-rhythm classes NSR, AF, VT, VF, asystole, STEMI-12-lead snapshot 10 s at 500 Hz on event; 3/5-lead HR and ST at 1 Hz
SpO2%95-10070-100low 87-90 (87 Mindray), high 1001 Hz (pleth 50-125 Hz)
Pulse rate (pleth)bpm60-100-high 140, low 50 (Mindray)1 Hz
NIBP systolic / diastolic / MAPmmHg90-140 / 60-90 / 70-105shock below 90 systolic; crisis above 180/120systolic 90-180on demand or auto-cycle 1, 2, 3, 5, 10, 15, 30 min; cuff cycle 30-60 s
Respiratory ratebreaths/min12-204-50low 8, high 301 Hz
EtCO2mmHg35-450-100; during CPR 10-20; ROSC jump above 40high 55 (Mindray); low 20-30; apnea on absent waveform for 20 s1 Hz (waveform 20-50 Hz)
TemperaturedegC36.1-37.230-41-1 per min
Glucose (point of care)mg/dL70-14020-600-per event
DefibrillatorJ-biphasic 120-200 J adult, 2-4 J/kg paediatric; impedance 25-180 ohm (typical 50-100); charge time 3-10 sCPR targets: rate 100-120/min, depth 5-6 cm, compression fraction above 60-80%, pauses under 10 sshock events; CPR feedback 1-10 Hz
VentilatorVt mL, RR, PEEP cmH2O, FiO2 %Vt 6-8 mL/kg (350-550); RR 10-20; PEEP 5PEEP up to 5-10airway pressure high 401 Hz
Infusion pumpmL/h1-999-occlusion alarm1 per min
Shock index (derived)HR/SBP0.5-0.7above 1.0 indicates shock-derived

3 Networks and messaging standards

Network layers on an ambulance
LayerTechnologyRate or cadenceNotes
Vehicle busCAN 2.0B at 250 kbit/s (J1939) or 500 kbit/s (OBD-II, ISO 15765)10-1000 ms per PGNClassic CAN carries 8 bytes per frame; larger J1939 messages use transport protocol sessions (BAM or RTS/CTS)
OBD-II donglePIDs via ISO 15765-4; ISO-TP framing1-10 Hz, 5-20 PIDsISO-TP single frame up to 7 bytes; first frame carries length up to 4095 bytes
GNSSNMEA 0183 / UBX1-5 HzNMEA 0183 time appears only in RMC and ZDA sentences
Telematics / MDTLTE Cat-M or 4G; MQTT, HTTPS, AVL1-10 s dispatch, 30-60 s idleBinary AVL records about 40-120 B, up to 255 per packet
Medical device to ePCRBluetooth LE, Wi-Fi, vendor protocols (Zoll, Philips, Stryker/LIFEPAK LIFENET)trends 1 Hz to 1 per minGateway-to-hospital via HL7 v2, FHIR
Cellular4G/5G, FirstNet-like priority and pre-emptionsee section 3.2Ambulance coverage is mostly urban; alarms prioritised; reconnect bursts after outages

3.1 Messaging standards

Messaging and data standards used for clinical and dispatch data
StandardUseExample mapping
HL7 v2.x ORU^R01Observation results; one OBX segment per vitalOBX|1|NM|8867-4^Heart rate^LN||78|/min (LOINC); device-to-gateway uses MDC codes such as 147842^MDC_ECG_HEART_RATE
HL7 FHIR R4Observation (vital-signs profile), Patient, Encounter, Device; Bundle (transaction) per transport; Subscription or MQTT for deliveryLOINC 8867-4 heart rate; 59408-5 SpO2 pulse oximetry; 85354-9 blood-pressure panel (8480-6 systolic, 8462-4 diastolic); 9279-1 respiratory rate; 8310-5 body temperature
IEEE 11073-10101 nomenclatureDevice terminologyMDC_ECG_HEART_RATE (147842), MDC_PULS_OXIM_SAT_O2 (150456), MDC_PRESS_BLD_NONINV_SYS (150021); partition-code values need checking against the standard
IEEE 11073-20601 (PHD), 11073-10201/10207 (SDC)BLE/USB personal health device connectivity; service-oriented device connectivity-
NEMSIS v3.5US EMS data standard for the ePCR (XML)eVitals elements: .06 systolic BP, .10 heart rate, .12 SpO2, .14 respiratory rate, .16 EtCO2
IHE PCDDevice-to-EHR profile-
Message frequencyOne charted vitals set about every 5 min; continuous 1 Hz device-to-gateway stream; 12-lead pushed as PDF or XML on event for hospital pre-alert-

The research flags LOINC and MDC codes it could not confirm (an EtCO2 LOINC code and the EtCO2 MDC code). The codes in the table above are the ones the research treats as well known or as nomenclature examples; do not rely on any code without a terminology lookup.

3.2 Cellular behaviour

Cellular link parameters for an ambulance
ItemValue
4G LTE round-trip time30-60 ms good; 80-200 ms at cell edge; 5G NSA 20-40 ms; 5G SA 10-25 ms
Throughput4G 5-50 Mbps; 5G 50-500 Mbps; uplink 2-20 Mbps; video telemedicine needs at least 1-2 Mbps up
Priority serviceFirstNet-like: QCI 65/66/69/70, priority and pre-emption (ARP), Band 14 (700 MHz); fewer congestion events
Handoverevery 0.5-3 km in urban areas; interruption 30-100 ms; failed handover or radio link failure 0.5-2% with reconnect in 1-5 s; 5G to 4G inter-RAT 100-500 ms
Dead zonesrural 5-25% of route in remote areas; tunnels and parking structures; dropouts 10-120 s; store-and-forward queues; MQTT QoS 1
Signal strengthRSRP -70 dBm (excellent) to -110 dBm (poor); RSRQ -5 to -18 dB; SINR 25 to -3 dB
Payload sizestelematics position 0.5-1 KB per message at 1 per 1-5 s in dispatch; a 12-lead ECG about 50-300 KB

3.3 Bridge-layer facts relevant to ambulances

  • Telematics boxes (CAN-to-MQTT/TCP, for example Teltonika, CalAmp, Geotab, Samsara) record at 1-10 s and batch every 30-300 s over 4G Cat-1/Cat-4 or LTE-M.
  • Time batching: 10 s live, 60 s typical, 300 s economy; flush on ignition-off or at 70-80% buffer fill. Deadband filtering removes 60-90% of samples (speed 1 km/h, coolant 1 degC, fuel 0.5%, GPS 10-50 m or 15-30 deg heading). Report by exception with a 30-300 s heartbeat; tiered rates run 1 Hz when running and one report per 600 s when parked.
  • MQTT QoS 0 drops on any link loss; QoS 1 gives duplicates (0.1-2% on lossy cellular, 5-15% of in-flight messages around reconnects) and can be overtaken by newer messages; QoS 2 doubles round trips and is rare on cellular. Use keepalive of 60 s or less because cellular NAT timeouts are 30-300 s; reconnect backoff is 1-60 s with jitter. The cloud dedupe key is (device_id, boot_id, seq).
  • LTE-M: round trip 100-300 ms, up to about 1 Mbps, with power-saving wake delays of seconds to minutes.
  • The bridge research gives a one-line ambulance coverage pattern: mostly urban, alarms prioritised, reconnect bursts. Tunnels cause 30 s to 10 min of total loss with GNSS also lost and data buffered.
  • Store-and-forward: RAM ring plus flash; FIFO drop-oldest is silent loss; keep a priority lane for alarms and DTCs; replay at 1-10 times real time interleaves with live data and causes out-of-order arrival; after 6-72 h offline at 1 Hz, records are dropped and a sequence gap is visible.
  • J1939 multi-frame messages (DM1 with more than one DTC, VIN): BAM has no retry, so one lost frame drops the whole message; 0.5-3% of multi-frame messages fail.
  • Typical J1939 rates: EEC1 20 ms, CCVS 100 ms, ET1 1 s, DM1 1 s while a fault is active.

4 Mission profiles

CAD timestamps for a call: call received, call answered, location verified, dispatched, en route (turnout), on scene, patient contact, depart scene, arrive hospital, transfer of care, clear, return or available. CAD status codes: Available, Dispatched, En route, On scene, Transporting, At hospital, Clear, Out of service. Status changes are either manual (crew button on the MDT) or automatic (geofence arrival, speed).

Mission phases, durations and telemetry signature
PhaseTypical durationTelemetry signature
Idle at station (posted)0-60+ minSpeed 0; cabin about 20 degC; siren off; engine off about 70% of the time, otherwise idling at 650-800 rpm in 10-40 min stretches (20-40% of daily engine-on time is idle); idle fuel 1.5-3 L/h; shore power sometimes connected; GNSS 1 Hz or 30 s idle logging; position every 30-60 s
Dispatch / turnout60 s target (NFPA 1710); actual 45-90 sEngine start, lights and siren on, position reports rise to 1-10 s
Emergency run (priority 1)4 min travel target; typical 4-12 min urban, 8-20 min ruralSiren on in 60-90% of priority 1 responses; average 50-70 km/h (urban 40-75 average, peaks 90-110; highway 100-140); fuel rate 20-45 L/h; harsh driving events increase
On scene8-25 min (median about 12-15)Engine idling or off; scene lighting; patient-compartment door open about 30-120 s during loading; 1 Hz vitals begin
Transport to hospital8-25 minLights and siren in about 20-30% of transports; smoother driving with deceleration under 0.2 g ("transport mode"); continuous vitals; oxygen flow active; motion artifact
Hospital handover10-45 min (target 15-30 min offload)Vehicle stationary at hospital; vitals streaming then stopped at transfer of care; pre-alert 12-lead sent on event
Return / posting5-20 minNormal driving without siren
Dwell and restock5-15 minDoors open, cabin and fridge door events

Inference: the research gives duration ranges per phase but no formal state machine; a generator would chain these phases as a state machine with the listed ranges as dwell-time distributions.

5 Faults and anomaly signatures

Ambulance anomaly scenarios, signatures and frequencies
ScenarioSignatureFrequency
GPS multipath / urban canyonPosition jumps of 10-50 m, HDOP above 3; tunnel dropout 5-60 s2-5% of fixes
Oxygen lowCylinder under 500 psi alarm; fast drop (leak) above 100 psi/minabout 1-2% of shifts
Door open while movingPatient-compartment door open with speed above 5 km/hrare
Stretcher unlocked while movingCot lock off with speed above 5 km/hrare
Drug fridge excursionDoor openings of 10-20 s each; parked in sun gives +4-8 K in 1 h; below 2 or above 8 degC for 10-30 min1-2% of shifts
Battery undervoltageEngine-off monitor or inverter load drains 12 V system below 11.5 V0.5-1%
Engine overheating / DTC (for example P0128 coolant thermostat)Coolant above normal 85-100 degC, DM1 active1 per 10-20 vehicle-months
Crash / rolloverAcceleration spike above 4-6 g or roll angle above 60 degvery rare (about 1 crash per 1-2 million km)
Monitor lead-off / SpO2 dropoutMotion artifact in 5-15% of moving time; lead-off 1-3 per transport; NIBP retries 5-10% in motion; SpO2 "---" for 3-10 sfrequent
Patient deterioration (synthetic)HR up 30%, SpO2 down 8-10 points over 5 min5-15% of transports
Cellular outageDead-zone dropouts of 10-120 s; store-and-forwardrural 5-25% of route
Sensor stuck, duplicates, out-of-order timestampsFlatline with valid timestamp; repeated values; reordered records0.1-1%
AVL gapsMissing dispatch position updates1-3%

5.1 Bridge and gateway failures that also apply

Gateway-layer failure modes from the bridge research (injection rates are estimates)
FailureSignatureRate
CAN bus-offAll signals vanish for 0.1-5 s until recovery or power cycle0.05-0.5 episodes per vehicle per day; 1% of devices chronic
Dropped framesGaps in cyclic PGNs0.01-0.5%
Duplicate framesIdentical timestamp and value0.1-1%
Transport protocol session failureDM1 or VIN missing0.5-3% of multi-frame messages
Encoding errors / sentinels0xFF and 0xFFFF not-available, 0xFE error values, impossible magnitudes, NaN0.1-1% of records
Frozen valueFlatline with valid timestamp0.1-1% of signals
Timestamp skewFuture timestamps or 1970 epoch; 0.5-2% of devices offset above 5 s0.5-2% of devices
Firmware / schema mismatchUnknown IDs, shifted signals2-10% of fleet for 1-4 weeks after rollout
Reconnect stormBurst replay and duplicatesevent-based

6 Events, alerts and thresholds

6.1 Driver behaviour events

Driving events and detection thresholds
EventDetection thresholdEmergency-run frequency
Harsh brakingLongitudinal acceleration below -0.30 g light, below -0.45 g severe1-4 per 10 km in emergency mode vs 0.5-1 normal
Harsh accelerationAbove +0.30 g1-3 per 10 km
Harsh corneringLateral above 0.35 g or yaw rate above 15 deg/s at speed1-5 per 10 km
SpeedingNormal: more than 10 km/h over the limit; emergency exemption typically +20-30 km/h (varies by jurisdiction)-
Red-light runSpeed at intersection above 15 km/h during red; slow-and-proceed 10-15 km/h-
Seatbelt unfastened while movingSpeed above 10 km/h1-5% of trips
Rollover / crashAcceleration above 4-6 g or roll above 60 degabout 1 per 1-2 million km
IdleEngine on, speed under 2 km/h, longer than 5 min-

6.2 Equipment alarms and thresholds

Equipment and safety thresholds
SignalAlarm threshold
Patient-compartment door open while movingAlarm when speed above 5 km/h
Cot unlocked while movingAlarm when speed above 5 km/h
Oxygen cylinderLow alarm 500 psi (35 bar); reserve 200 psi (14 bar)
Cabin temperatureAlarm above 30 or below 15 degC
Drug fridgeExcursion below 2 or above 8 degC for more than 10-30 min; critical above 15 degC
Ambient drug boxAbove 30 degC for 30 min, or below 5 degC (freezing)
Fridge doorAlarm when ajar more than 60 s
12 V batteryLow alarm below 11.5 V, high above 15 V
Tyre pressureLow alarm at 20% below nominal
Monitor batteryTechnical alarm at 10-20% (about 20 min remaining)

Clinical alarm priorities follow IEC 60601-1-8: high (red; for example asystole, VF, SpO2 below 85), medium (yellow) and low (cyan). Technical alarms include lead-off, low battery and cuff leak. Vital-sign limits are in section 2.5.

6.3 Response-time KPIs

Response-time key performance indicators
StandardTargetSource status
NFPA 1710 first-arriving EMS60 s turnout plus 240 s travel, 6:00 total at the 90th percentile (call processing 60 s listed separately; whether it is included in the 6:00 is unclear in the research)Quoted by agency documents
NFPA 1710 ALS arrival60 s turnout plus 480 s travel, 9:00 at 90% or moreQuoted by DC FEMS
DC FEMS KPIFirst EMT arrives within 5 min for high priority callsAgency page
UK ambulance response standardsCat 1 mean 7 min, 90th percentile 15 min; Cat 2 mean 18 min, 90th 40 min; Cat 3 90th 2 h; Cat 4 90th 3 hDomain knowledge; verify against NHS England
US typical median responseUrban 7-8 min; rural 14+ minDomain knowledge (NEMSIS)
Hospital offload10-45 min typical; target 15-30 min or lessDomain knowledge

Priority classes: P1 (life-threatening), P2, P3 (non-emergent), with some systems using P4 or determinant codes such as MPDS 10-D-1.

7 Generator guidance for the simulator

The parameter sets below are the research values arranged for generation. Where a distribution shape or a formula is stated, it is an inference (marked) because the research gives ranges and not distributions.

Generator block

Chassis and engine

  • Idle: engine_rpm ~ uniform(650, 800); fuel_rate 1.5-3 L/h; coolant 85-100 degC; oil pressure 100-170 kPa; oil temperature 90-120 degC.
  • Running: engine_rpm 1500-3500; oil pressure 250-450 kPa; emergency fuel rate 20-45 L/h.
  • Battery: 11.8-12.8 V engine off; 13.5-14.6 V charging. Undervoltage episode (0.5-1% of shifts) drives the 12 V reading below 11.5 V.
  • Raw encoding (J1939): rpm raw = round(rpm / 0.125); speed raw = round(km/h * 256); coolant raw = degC + 40; oil pressure raw = round(kPa / 4); fuel rate raw = round(L/h / 0.05); pedal and fuel level raw = round(percent / 0.4).
  • Inference: draw per-trip peak speed from the stated ranges (urban peaks 90-110 km/h, highway 100-140), and average speed 50-70 km/h for priority 1 runs.
Generator block

Mission state machine

  • States: station_idle, turnout, emergency_run, on_scene, transport, handover, return, restock.
  • Dwell times (minutes unless noted): turnout 45-90 s; emergency_run 4-12 urban or 8-20 rural; on_scene 8-25 (median 12-15); transport 8-25; handover 10-45; return 5-20; restock 5-15; station_idle 0-60+.
  • Per-state signal effects: siren on in 60-90% of priority 1 runs and about 20-30% of transports; engine off 70% of station idle time; 1 Hz vitals from on_scene start; driving smoothness (decel under 0.2 g) when a patient is on board.
  • Calls per 12 h shift: rural 1.5-3, busy urban 6-10. Arrival intensity is higher 10:00-20:00 and on Friday and Saturday nights (inference: scale the rate by a time-of-day multiplier).
Generator block

Synthetic patient phenotypes (not real patient data)

  • Stable, about 70% of transports: HR 70-95, SpO2 96-99, SBP 110-140.
  • Unstable, 15-20%: HR 110-140, SpO2 88-93, SBP 85-100.
  • Critical or arrest, under 5%: VF or asystole, EtCO2 10-20 under CPR, optional ROSC transition with EtCO2 above 40.
  • Deterioration trigger in 5-15% of transports: over 5 minutes HR rises 30% and SpO2 falls 8-10 points.
  • Artifacts while moving: motion artifact 5-15% of time; lead-off 1-3 per transport; NIBP retry 5-10%; SpO2 dropout of 3-10 s.
  • Derived values: shock index = HR / SBP; MAP in mmHg is related to systolic and diastolic (inference: MAP is approximately diastolic + (systolic - diastolic) / 3).
  • Output mapping: HL7 ORU^R01 OBX rows or FHIR Observation resources using the codes in section 3.1.
Generator block

Oxygen and cold chain

  • Oxygen use: cylinder_psi falls with flow; M cylinder holds about 3450 L at 2000-2200 psi. Inference: litres remaining is approximately 3450 times (psi / 2200); minutes remaining equals litres remaining divided by flow in L/min.
  • Typical flow 2-15 L/min (non-rebreather 15, ventilator 6-12). Leak fault: drop above 100 psi/min (1-2% of shifts).
  • Drug fridge: setpoint 2-8 degC; 10-20 s door openings; parked-in-sun heating of +4-8 K per hour; excursion in 1-2% of shifts; alarm after 10-30 min out of range.
Generator block

Per-tenant variant knobs

  • Urban BLS (basic life support): inference-based preset. Use the urban end of the research ranges: 6-10 calls per 12 h shift, urban response 4-12 min, urban median 7-8 min, short transports, no advanced devices (omit or sparse EtCO2, ventilator, infusion pump).
  • ALS (advanced life support): add the full device set (12-lead ECG, EtCO2, defibrillator CPR metrics, ventilator, infusion pump); 12-lead pre-alert events push 50-300 KB to the hospital; keep the urban call rate.
  • Rural or critical-care transport: 1.5-3 calls per shift, rural travel 8-20 min, transports at the longer end (up to 25 min or more as an inference), dead zones on 5-25% of the route, higher store-and-forward buffering, more oxygen consumed per call; the critical-care variant adds ventilator and infusion pump streams.
  • Siren policy: knob for siren share, default 60-90% of priority 1 runs and 20-30% of transports.
  • Reporting policy (from bridge research): ambulance 1 Hz position always, engine every 5 s, one publish per 5-30 s (1 s on dispatch), 0.5-3 kB per publish.
  • Units and naming: tenants differ in signal sets, units (km/h vs mph, degC vs degF), key naming (camel vs snake), time format (epoch ms vs ISO-8601) and missing-value style (null vs sentinel).
  • Topic pattern: t/{tenantId}/v1/{vehicleClass}/{deviceId}/{telemetry|event|status|cmd|ack}. Retention for ambulance and medical audit data is 6-10 years in the research.
Generator block

Imperfection layer

  • Apply the faults in section 5 with the listed frequencies; emit ground-truth labels for each injected imperfection (per the bridge research pipeline).
  • Per-vehicle latent traits: clock drift ppm (20-50 ppm crystals give 1.7-4.3 s per day; 100 ppm gives 8.6 s per day), firmware version, buffer size, link type, chronic-fault flag.
  • Cellular state machine: up, degraded, down per link, with outage durations 10-120 s in dead zones and 30 s to 10 min in tunnels; replay after reconnect at 1-10 times real time with duplicates.
  • Envelope fields per record: received_at, boot_id, seq, batch_id, fw_version, schema_version, tenant.

8 How the Sense simulator implements this

Source and status. This section restates the simulator document AMBULANCE_POINTS.md (verification dated 13 Oct 2026) and the Sense documents layout-v1.md and BUILD.md (checked against the code on 12 Oct 2026). Everything below was built and run in the simulator and fed through Sense's own protocol handler; none of it is a field measurement. All patient vital signs are synthetic generator values, never real or identifiable patient data. The Sense side is the working copy of Sense, which at the time of writing carries uncommitted changes; the released listener build of 12 Oct 2026 (20:50) is older than part of them, and the places where that matters are marked.

8.1 Scenario codes (tenant subvariant)

The Fleet tenant's variant ambulance selects the vehicle kind and its subvariant selects the scenario. The three presets of this report are mapped onto the platform's codes: urban BLS is bls, ALS is als, and rural or critical-care transport is critical-care. A tenant with another subvariant runs no ambulance; the simulator's own selector is used only when the tenant has no subvariant.

Ambulance scenario codes and what differs between them
CodeStands forChassis and wireMission mix and equipment
blsBasic life support vanLight van (3.6 t, 100 kW, 70 L), 12 V, OBD-II on CANBase Old Airport Road; 6-10 calls in 12 h (rate x1.5 from 10:00 to 20:00, x0.5 at night, x1.4 on weekend nights); priority 1/2/3 = 30/45/25%; scenes in Bengaluru 2-12 km away; patients stable 85%, unstable 15%; basic monitor (pulse, SpO2, blood pressure every 10 min, respiration rate); no ECG, EtCO2, ventilator or pumps; tyre pressures as Wialon params
alsAdvanced life support vanLight van (4.3 t, 120 kW, 75 L), 12 V, OBD-II with more valuesBase Whitefield; 6-10 calls; priority 1/2/3 = 55/35/10%; patients stable 72%, unstable 24%, critical (cardiac arrest) 4%; full monitor and defibrillator: ECG rhythm (sinus, atrial fibrillation 10%, STEMI 5%, VF or asystole in arrests), lead-off, EtCO2, temperature, blood pressure every 5 min, CPR rate, depth and fraction, shocks of 150-200 J, ventilator and infusion pumps, 12-lead pre-alert at handover
critical-careCritical-care transportHeavy chassis (7.2 t, 190 kW, 120 L), 24 V system with J1939Base Hebbal; 1.5-3 calls in 12 h; priority 1/2/3 = 20/70/10%; the "scene" is a referring facility 12-32 km away on rural roads (80-110 km/h, dead cells on 12% of the route), the destination a hospital; patients stable 40%, unstable 52%, critical 8%; 80% ventilated, infusion pumps, blood pressure every 3 min

Mission phases are the same in all scenarios: station idle (engine off 70% of the time), turnout 45-90 s (siren in 60-90% of priority-1 runs and 15% of priority 2), emergency run, on scene (lognormal, median 12.5 / 14 / 22 min; 8% of calls are treated in place), transport (urban 32-55 km/h, siren on 20-30% of transports, twice as often with an unstable patient), hospital handover (median 20 / 25 min, transfer of care at three quarters of the dwell), return, restock 5-15 min, station idle again. The Wialon param trip_state numbers them: 0 station, 1 dispatched or on the run, 2 on scene, 3 transporting, 4 at hospital, 5 returning, 6 restock. In 75% of the ambulances a call is already running at the start.

8.2 Protocols emitted and the one-vehicle-per-tenant model

One tenant, one ambulance, one Sense

One Fleet tenant is one ambulance with its own Bhairava Sense. The slot (0-23), the three UDP ports (49001+5s, 49002+5s, 49003+5s) and the source address (127.0.(1+s).20) come from the one allocator shared with buses and trucks, so the three kinds never share ports; the tenant card shows the Ports text to enter into that tenant's Sense. Identity depends only on the tenant (FNV-1a of tenant:<id>): id AMB-BLS, AMB-ALS or AMB-CCT plus 4 hex digits, IMEI starting 3520966 with a valid Luhn digit, VIN (Tata Winger, Mercedes Sprinter or Tata 1610 heads, valid check digit), driver card and J1939 identity number. With three vehicle tenants at once (bus, truck, ambulance) on three Sense listeners, none heard another tenant's address, port or IMEI.

Equipment, wire protocol and how Sense names the device (all UDP)
EquipmentProtocol on the wireDefault portSense device name
GNSS receiver (engine on)NMEA 0183 $GNGGA and $GNRMC, 1 Hz10110talker GN at <source ip>
Engine bus through a CAN-to-Ethernet gateway (one datagram a second, engine on)OBD-II for bls and als (requests on 7DF, answers on 7E8); SAE J1939 for critical-care20001control unit 7E8 on CAN gateway <source ip>, or unit <SA> on CAN gateway <source ip> (SA 0 engine, 11 brakes, 23 cluster, 33 body)
Telematics unit (also carries cabin, fridge, oxygen and medical-device values)Wialon IPS 1.1 text, login line then data lines20332tracker <imei>

Wialon input bits: 0 ignition, 1 siren, 2 emergency lights, 3 rear (patient) door; the iButton field carries the driver card in hex. Cadence (+-10% jitter, and at once on dispatch, siren, door, alarm, shock, NIBP, fault and link events): station 60 s with the engine off and 30 s with it on; turnout and run 5 s (als 2 s); on scene 10 s, with a patient 10 s (als 4 s); transport 10 s, with a patient 5 s (als 2 s); handover as on scene; return 15 s; restock 30 s. NMEA and CAN are sent once a second while the engine is on, CAN slow groups every 5 s and the VIN every 600 s. The patient vitals are not HL7 or FHIR messages: they are Wialon params, because Sense reads HL7 v2 only over TCP and the simulator sends UDP only.

8.3 Signals actually emitted

NMEA is as for buses: GGA latitude, longitude, fix quality, satellites and altitude; RMC status, latitude, longitude, speed (knots) and course. Sense makes one reading per OBD-II or J1939 signal and per Wialon param, named as in the tables.

OBD-II points of bls and als (ISO 15765-4 single frames; name and unit as Sense shows them)
ScenariosPIDSense point (unit)Rate
both0C, 0D, 04, 11Engine speed (rpm), Vehicle speed (km/h), Engine load (%), Throttle position (%)1 s
both05, 2F, 42, 46Coolant temperature (degC), Fuel level (%), Control module voltage (V), Ambient air temperature (degC)5 s
als0F, 5C, 33, 0B, 1F, 5EIntake air temperature, Engine oil temperature (degC), Barometric pressure (kPa), Intake manifold pressure (kPa), Run time since engine start (s), Fuel rate (L/h)5 s
bothservice 03Event "Stored fault code P0128" (thermostat stuck open, coolant under 72 degC), P0217 (coolant over 102 degC), P0562 (system voltage under 11.5 V); otherwise "no stored fault codes"5 s
bothservice 09 PID 02Presence "vehicle identification number" with the VINat start and every 600 s

critical-care sends J1939: EEC1 (61444), EEC2 (61443), CCVS (65265) and LFE (65266) every second; ET1 (65262), EFL/P1 (65263), DD (65276, Fuel level), VEP1 (65271), AMB (65269), HOURS (65253), LFC (65257), VD (65248), VDHR (65217), AT1T1I (65110, DEF), TIRE1 (65268, six wheels in turn) and B1 (65274) every 5 s; DM1 (65226) and the address claim (60928) at engine start. Points and units are those of the truck report, without the tachograph group, Cruise control set speed and Cargo ambient temperature. DM1 codes: SPN 110 FMI 16 (coolant over 102 degC), SPN 168 FMI 1 (battery under 11.5 V), SPN 110 FMI 17 (thermostat stuck open), SPN 1761 FMI 18 (DEF under 10%).

Wialon params (Sense point = the param name; unit says what the number means)
GroupParams (unit)
Common, all scenariosign; seq; boot_id; pwr_ext (V); odometer (km); hdop; gps_sats; gsm_lvl, gsm_rsrp (dBm), gsm_rsrq (dB), gsm_sinr (dB), net_type; link_down_s (s); driver_card; trip_state (0-6); priority (1-3, 0 at the station); call_no; siren (0 off, 1 wail, 2 yelp, 3 phaser); lights (0 off, 1 warn-front, 2 warn-all, 3 scene); lightbar_a (A); rear_door, cab_door, cot_lock; cot_kg (patient and cot load, kg); cot_batt (%); seatbelt (0 unfastened above 10 km/h); door_alarm (rear door open above 5 km/h); cot_alarm (cot unlocked above 5 km/h); cabin_temp (degC); house_v (V); inverter; shore; fridge_temp (drug fridge degC, set 4.2-5.8); fridge_alarm (outside 2-8 degC for 10-20 min); fridge_door; drug_box_t (degC); o2_bar (cylinder pressure bar, full 145-152); o2_flow (L/min); o2_swaps; o2_low (under 34.5 bar = 500 psi); fuel_l (L); harsh; panic; patient (monitor attached, 0/1); monitor_batt (%); plus Latitude, Longitude, Speed, Heading, Altitude
bls and als onlytpms_1 to tpms_4 (kPa)
Synthetic patient, all scenarios (present while patient = 1)hr (bpm; left out while leads are off or in arrest); spo2 (%; left out during a 3-10 s dropout and in arrest); spo2_ok; nibp_sys, nibp_dia, nibp_map (mmHg, renewed every cuff cycle); nibp_age_s (s); resp_rate (per min); vital_alarm (0 none, 1 low, 2 medium, 3 high priority of the monitor); shock_index (HR / systolic)
Synthetic patient and devices, als and critical-carelead_off; ecg_rhythm (0 sinus, 1 atrial fibrillation, 3 VF, 4 asystole, 5 STEMI); etco2 (mmHg); pt_temp (degC); ecg12_sent (count of 12-lead pre-alerts); cpr_on; shocks; while CPR runs cpr_rate (per min), cpr_depth (cm), cpr_frac (%); after a shock defib_j (J), defib_ohm (ohm); vent_on and, while ventilated, vent_vt (mL), vent_rr, vent_peep (cmH2O), vent_fio2 (%), vent_paw (cmH2O); pump1_mlh, pump2_mlh (mL/h); pump_occl

8.4 What Sense can and cannot read yet

The state below follows AMBULANCE_POINTS.md section 8 (checked against the working copy of the Sense listener sources, read only) and Sense's BUILD.md.

  • Read by the working copy of Sense, not by the released build of 12 Oct 2026: TIRE1 (65268) and B1 (65274); GGA HDOP and the RMC time; the Wialon record time; a Wialon unit name table that includes the vitals and device names of the table above (for example hr, spo2, nibp_*, etco2, o2_bar, fridge_temp, vent_*, pump*_mlh, defib_j). Names the table does not know, flags and states stay without a unit.
  • No standard path for vitals and devices: Sense has an HL7 v2 reader but only for TCP (MLLP), so the synthetic vitals travel as Wialon params and not as HL7 ORU^R01 or FHIR Observations; the MDC and LOINC codes of this report are not used. ECG waveforms, 12-lead data (50-300 KB) and CAD status codes cannot be represented as readings; the 12-lead pre-alert is only a counter and the CAD state a number (trip_state).
  • Body, cot, light bar, siren, door and oxygen signals have no J1939 or OBD-II group in Sense; they are carried as Wialon params. OBD-II has no PID for tyre pressure, odometer, seat belt, door or gear, so the vans send tpms_1 to tpms_4 as params; the readable PIDs of this report (0C, 0D, 05, 11, 2F, 42) are all read.
  • Alarms (vital_alarm, fridge_alarm, o2_low, door_alarm, cot_alarm) arrive as ordinary readings; Sense does not apply the IEC 60601-1-8 priorities or this report's thresholds to them.
  • Not read at all: string params and the iButton field of Wialon IPS; the native UDP form of Wialon IPS 2.0; Sense does not use seq or boot_id, so replays and duplicates count as new readings. The heavy-chassis J1939 groups 65270, 61445, 65272, 61441 and 65258, which the document lists as unread, are not sent by the ambulance.
  • Vehicle profiles: the Fleet compatibility check chooses a profile by variant and subvariant (bls, als, critical-care); an empty or unknown subvariant uses the plain Ambulance profile.

8.5 Faults and the ground-truth file

Latent traits and the generic faults are those of the bus and truck work (clock ppm, chronic flag, frame loss, bus-off, J1939 or CAN not-available after engine start, spike, encoding error, stuck-at on fuel level, coolant and fridge temperature, drift, GNSS episodes and cold start, link outages with store-and-forward, reboot, TPMS leak, engine overtemperature, VIN transport abort); rates are those of Tables 5.1 and 5.2 of this report, scaled by --ambulance-faults. Specific to ambulances: oxygen leak (cylinder falls 7-12 bar a minute, 1.5% of shifts), drug fridge fault (compressor off 40-100 min, 1.5% of shifts), battery undervoltage (house battery drains 1.4 V an hour for 25-65 min, 0.75% of shifts), thermostat stuck open (coolant at 68 degC for 30-120 min), door open or cot unlocked while moving (0.0003 per 10 minutes of driving), seatbelt unfastened on 3% of trips, harsh braking (55% of traffic stops during the run, none with a patient on board), monitor artifacts (motion artifact 5-25 s in 5-15% of moving time, lead-off, SpO2 dropout, NIBP retry 7.5% in motion), patient deterioration in 10% of the patients, cardiac arrest in critical patients of als and critical-care (VF 55% or asystole, CPR 100-120 per min, shocks every 2 minutes in VF) and a rare panic button.

With --truth FILE the simulator writes JSON lines, each with t, utc, vehicle and type; first run and one vehicle line per ambulance (scenario, identity, calls per shift, siren share). Then the bus and truck labels that apply and, for ambulances: can_na, station, dispatch (call, priority, scene, hospital, transport), on_scene, transport, at_hospital, transfer_of_care, restock, lights_siren, harsh_brake, seatbelt_unfastened, patient (phenotype 0 stable, 1 unstable, 2 critical; rhythm; weight; deterioration; ventilated), deterioration, vital_alarm, defib_shock, rosc, ecg12_prealert, o2_swap, o2_leak, fridge_fault_start and fridge_fault_end, fridge_alarm, battery_undervoltage_start, thermostat_stuck_open, rear_door_open_moving, cot_unlocked_moving and panic_button. Not simulated: crash and rollover (acceleration over 4-6 g), red-light running, geofence status codes of the CAD, HL7 and FHIR messages, ECG waveforms, AVL gaps beyond the generic link outages, and schema or firmware mismatch.

8.6 Measured differences between the scenarios

Slow runs of 13 Oct 2026 (nothing faster than clock 2; 24 simulated minutes each, starting 13:00 IST), default fault rates, 36 ambulances per scenario over two sets. Speeds are from NMEA, fuel from OBD-II PID 5E or the J1939 fuel rate, cadence from the device time stamps of the Wialon records. Every datagram was identified by Sense's protocol handler as NMEA 0183, OBD-II or J1939, or Wialon IPS (none unknown or unreadable); with every fault at 1000 times the rate, 9 of 7,510 critical-care datagrams carrying only address-claim frames were not identified. The runs cover only what fell into a 24-minute window: no P0128, P0217, P0562 or SPN 168 occurred with frames intact, so those codes were checked by feeding the bytes the simulator writes to the same handler (one event each).

Measured scenario differences (simulator output, not field data)
Measureblsalscritical-care
WireOBD-II, 8 PIDs, WialonOBD-II, 14 PIDs, WialonJ1939 (16 groups and DM1), Wialon
Travel to the scene (s, n)279-1,113, median 542 (16)304-999, median 506 (10)171-1,332, median 521 (9)
Time on scene (s)508-1,417, median 756543-1,476, median 892848-2,047, median 1,244
Handover (s)605-2,377, median 1,339754-2,314, median 1,153771-2,517, median 1,888
Speed on the run, mean / max (km/h)36.7 / 8440.8 / 8790.2 / 123
Speed in transport, mean / max29.6 / 5524.4 / 5279.2 / 106
Fuel on the run, mean / max (L/h; station 2.4)-15.4 / 5832.1 / 58 (transport 27.7)
Harsh braking per 10 km driven2.01.80.09
Wialon cadence run / transport with patient / station (median s)4 / 4 / 55 (engine off)1 / 1 / 324 / 4 / 32
Patients (n): stable / unstable / arrest15 / 1 / 05 / 5 / 13 / 6 / 0 (8 of 9 ventilated)
Heart rate mean (range)90 (64-130)89 (60-168)104 (68-166)
SpO2 mean (range)95.8 (84-100)95.7 (77-100)94.2 (83-100)
Systolic mean (range)120 (87-144)115 (77-147)113 (80-145)
EtCO2 mean (range)-38.7 (8-49)36.3 (26-44)

Other measured values: cabin temperature 22.5-32.7 degC (door open: ambient), drug fridge 4.2-7.9 degC (the 7.9 comes from the fridge fault), oxygen cylinder 93-152 bar, house battery 12.55-14.28 V (engine off / on). Priority-1 runs with siren: als 6 of 7 (knob 60-90%); transports with siren 12 of 32 over all sets (knob 20-30%, twice as often with an unstable patient). The Wialon cadence of als shows 1-2 s because the 2 s interval is jittered by +-10% and truncated to whole seconds. Over all sets: 43 calls started, 48 scenes, 32 transports, 14 transfers of care, 14 restocks, 20 12-lead pre-alerts, 2 defibrillator shocks.

  • Travel to the scene is 4.7-18.6 min for the vans (this report: 4-12 min urban, 8-20 min rural, 22 min at most for critical-care legs).
  • The mean speed on the run is below this report's 50-70 km/h for the van scenarios because the legs are short (2-12 km, a 600 m approach limit and an urban canyon limit of 38 km/h).
  • The fuel rate of the vans on the run is below this report's 20-45 L/h on average and reaches 58 L/h at hard acceleration.
  • Defibrillator shocks happened only in als, so defib_j and defib_ohm were seen only there; the sample sizes of patients per scenario are small (9 to 16).

9 Uncertainty and assumptions

Treat the numbers as tunable priors. The research file states that cited items came from search summaries and not full-page reads, and that most numeric values are domain-knowledge estimates rather than specification quotes. Bridge-layer rates are engineering estimates and should be used with wide jitter.

  • LOINC and MDC codes marked uncertain in the research (EtCO2 codes in particular) must be looked up before use. Heart rate 8867-4, SpO2 2708-6 and the blood-pressure panel 85354-9 are described as well known. The FHIR mapping lists 59408-5 and 20564-1 for SpO2 inconsistently in the research; confirm which code applies.
  • UK ambulance response figures and jurisdiction-specific emergency speed exemptions need verification. The NFPA 1710 total includes or excludes call processing ambiguously in the research.
  • Vitals alarm limits are drawn partly from a bedside-monitor checklist (not an ambulance monitor) and partly from estimates.
  • Per-ambulance fault frequencies are estimates, not measured fleet statistics.
  • Inference items in this report: the mission state machine as a Markov-style chain, time-of-day call-rate scaling, MAP approximation, oxygen minutes-remaining formula, and the urban BLS, ALS and rural variant presets.
  • All patient vitals are generator parameters for synthetic data. No real patient data was used or is implied.

10 Sources

  1. isobus.net J1939 PGN/SPN reference (https://www.isobus.net/isobus/pGNAndSPN/1856?type=PGN)
  2. SAE J1939DA digital annex (https://saemobilus.sae.org/content/J1939DA_201505)
  3. Mindray DPM5 bedside monitor guidelines (https://www.mindray.com/content/dam/xpace/en_us/service-and-support/training-and-education/clinical-support/clinical-reference-guidelines/dpm5-bedside-monitor-guidelines.pdf)
  4. Mindray N-Series bedside guideline (https://WWW.MINDRAY.COM/content/dam/xpace/en_us/resource-library/patient-monitoring/technical-document/continuous-patient-monitoring/N-Series-Bedside-Guideline-8135.pdf)
  5. Fort Lauderdale Fire Rescue statistics (https://www.fortlauderdale.gov/Government/Departments/Fire-Rescue/Organization/Fire-Rescue-Statistics)
  6. DC FEMS EMS response time (https://fems.dc.gov/page/ems-reponse-time)
  7. Utah agency document quoting NFPA 1710 (https://www.utah.gov/pmn/files/893169.pdf)
  8. AUTOSAR SAE J1939 transport layer specification (https://www.autosar.org/fileadmin/standards/R25-11/CP/AUTOSAR_CP_SWS_SAEJ1939TransportLayer.pdf)
  9. Copperhill J1939 RTS/CTS walkthrough (https://copperhilltech.com/blog/sae-j1939-programming-with-arduino-multipacket-peertopeer-rtscts-session/)
  10. NDSS VehicleSec J1939 slides (https://www.ndss-symposium.org/wp-content/uploads/2024/09/vehiclesec2023-23053-slides.pdf)
  11. ISO 15765-2 (ISO-TP) (https://en.wikipedia.org/wiki/ISO_15765-2)
  12. Zephyr ISO-TP documentation (https://docs.zephyrproject.org/latest/services/connectivity/canbus/isotp.html)
  13. EMQX introduction to MQTT QoS (https://emqx.io/blog/introduction-to-mqtt-qos)
  14. ThingsBoard MQTT QoS (https://thingsboard.io/docs/mqtt-broker/concepts/qos/)
  15. DTU benchmarking of cellular IoT technology (https://orbit.dtu.dk/en/publications/benchmarking-of-cellular-iot-technology-based-on-coverage-mobilit/)
  16. Digital Matter data usage (https://digitalmatter.helpjuice.com/how-much-data-do-dm-devices-use)
  17. AWS IoT connect and publish (https://docs.aws.amazon.com/iot/latest/developerguide/connect-and-pub.html)