Syruslang Snippets
Snippets to help you with syruslang configurations
Motion and Driving Behavior
Snippets that watch how the vehicle moves, including accelerometer-based harsh-braking detection and speed enforcement inside geofences.
Accelerometer
Detects hard braking and possible crashes from the built-in accelerometer, counts hard-brake events per trip, and resets the counter on ignition off. Includes both Pegasus-compatible events and a custom MQTT-friendly fieldset.
#group
define group g_accel
#counters
define counters c_accel
#fieldset
#pegasus taip
define fieldset fs_peg fields=AP:$accelerometer.motion,CV20:$counters.c_accel.hard_brakes
#pegasus json
define fieldset fs_peg_json fields="movement.status":$accelerometer.motion
#custom fieldset
define fieldset fs_custom fields="moving":$accelerometer.motion,"hard_braking_mG":$accelerometer.hard_braking.value,"hard_braking_time":$accelerometer.hard_braking.time,"hard_brake_count":$counters.c_accel.hard_brakes
#signal
define signal sig_braking @accelerometer.hard_braking.signal
define signal sig_possible_crash @accelerometer.hard_braking.value < -320
define signal sig_ign_off min_duration=2sec $io.ign == false
#action
define action act_hard_brake_reset trigger=sig_ign_off set counters c_accel hard_brakes=0
#event - pegasus compatible
define event ev_brake group=g_accel fieldset=fs_peg ack=seq label=negac code=1 trigger=sig_braking
define event ev_crash group=g_accel fieldset=fs_peg ack=seq label=crash code=2 trigger=sig_possible_crash
#event
define event ev_braking group=g_accel fieldset=fs_custom ack=seq trigger=sig_brakingMax Speed In Geofence
Placeholder/template for tracking the maximum speed recorded while inside a geofence. Works only with non-overlapping geofences; the max speed is stored in a variable and reported via a TAIP CV00 tag.
# This snippet allows you to save the max speed recorded while the vehicle was inside a geofence
# Only works with geofences that are separate and do not overlap
# The speed value is saved to a variable
# Define a variable to save the speed limit
# Define the geofences
# Enters geofence set the variable to the speed
# Compare the current speed to the variable speed
# If the speed is greater than update the value of the variable
# Define a fieldset to report the value of the variable on a TAIP fieldset CV00
# Exits geofence clear the variableLocation and Positioning
Snippets that monitor GNSS quality and vehicle speed based on satellite data.
GPS / GNSS
Reports position and speed, detects prolonged loss of GPS fix, and triggers a GNSS warm start when there is no fix for five minutes. Includes speeding detection above 100 km/h.
# Group
define group g_gnss
# Fieldset
#pegasus taip
define fieldset fs_peg fields=$gnss
# Pegasus json
define fieldset fs_peg_json fields="position.latitude":$gnss.latitude,"position.longitude":$gnss.longitude,"position.speed":$gnss.kph,"position.altitude":$gnss.altitude,"position.direction":$gnss.heading,"timestamp":$gnss.timestamp,"position.hdop":$gnss.hdop,"position.pdop":$gnss.pdop
# Custom fieldset
define fieldset fs_custom fields="lat":$gnss.latitude,"lon":$gnss.longitude,"mph":$gnss.mph,"head":$gnss.heading,"epoch":$gnss.timestamp,"hdop":$gnss.hdop
# Signal
define signal sg_nogps min_duration=5min $gnss.fix == 1
define signal sg_speeding min_duration=10sec $gnss.kph > 100
# Action
define action ac_warm_start trigger=sg_nogps set gnss warm-start
# Event - pegasus compatible
define event ev_nogps group=g_gnss fieldset=fs_peg ack=seq label=nogps5 code=20 trigger=sg_nogps
# Event - mqtt
define event ev_speeding group=g_gnss fieldset=fs_custom ack=seq trigger=sg_speedingPower and Battery
Snippets that monitor the device power source and react to low or fully charged conditions.
Battery
Reports battery voltage and percentage, generates low and critical battery events, and puts the device into power-save mode when the battery is critical.
# Group
define group g_batt
# Fieldset
# Pegasus taip
define fieldset fs_peg fields=BL:$battery.voltage
# Pegasus json
define fieldset fs_peg_json fields="device.battery.percent":$battery.percent,"device.battery.level":$battery.voltage
# Custom fieldset
define fieldset fs_custom fields="device_battery":$battery.voltage,"battery_percent":$battery.percent
# Signal
define signal sig_batt_low @battery.low
define signal sig_batt_crit @battery.critical
define signal sig_batt_below_50 min_duration=60sec $battery.percent < 50
define signal sig_batt_below_3700 min_duration=60sec $battery.voltage < 3700
define signal sig_batt_above_99 min_duration=60sec $battery.percent >= 99
# Action
define action act_lwbatt_sleep trigger=sig_batt_crit set power_save immediate
# Event - pegasus compatible
define event ev_lwbatt group=g_batt fieldset=fs_peg ack=seq label=lwbatt code=3 trigger=sig_batt_low
define event ev_crbatt group=g_batt fieldset=fs_peg_json ack=seq label=crbatt code=4 trigger=sig_batt_crit
# Event - mqtt
define event ev_below_50 group=g_batt fieldset=fs_custom ack=seq trigger=sig_batt_below_50
define event ev_below_3700 group=g_batt fieldset=fs_custom ack=seq trigger=sig_batt_below_3700
define event ev_charged group=g_batt fieldset=fs_custom ack=seq trigger=sig_batt_above_99Driver Identification and Fatigue
Snippets for identifying drivers and monitoring driver behavior and alertness through iButton and DMS/fatigue sensors.
iButton
Detects iButton connections and distinguishes between whitelisted (authorized) and unauthorized drivers. Controls an output and speaks a welcome or warning message accordingly.
define group ibutton
## FIELDSETS
define fieldset taip fields=IB:$ibutton.connected.id,IS:$ibutton.last.id
define fieldset json fields=$ibutton
## SIGNALS
# ibutton detected
define signal ibutton_detected $ibutton.connected
# authorized driver
define signal auth_ibutton $ibutton.connected.whitelisted == true
# unauthorized driver
define signal unauth_ibutton $ibutton.connected.whitelisted == false
## EVENTS
# ibutton detected
define event ibuttonConnected group=ibutton fieldset=json ack=seq label=ibdet code=60 trigger=ibutton_detected
# authorized driver
define event authIbutton group=ibutton fieldset=taip ack=seq label=ibmtch code=61 trigger=auth_ibutton
# unauthorized driver
define event unauthIbutton group=ibutton fieldset=taip ack=seq label=ibnomtch code=62 trigger=unauth_ibutton
## ACTIONS
# action to deactivate output2 if driver authorized and speak welcome message
define action auth_driver_deactivate_out trigger=auth_ibutton set out2 off
define action speakActionIbutton trigger=auth_ibutton speak lang=en 'Welcome {{$ibutton.authorized.last.alias}}. Syrus wishes you an excellent trip'
# action to activate output2 if driver is unauthorized
define action unauth_activate_out trigger=unauth_ibutton set out2 on
define action speakActionNoIbutton trigger=unauth_ibutton speak lang=en 'You are not an authorized driver. Please contact an administrator'Fatigue Sensor
Handles multiple DMS (Driver Monitoring System) integrations across serial, Ethernet, wireless, and ECU interfaces. Supports Caredrive MR688B, Movon MDSM-7, and Cipia FS-10, and automatically captures short videos around key alerts such as drowsiness, distraction, phone use, and smoking.
# Group
define group fatigue_serial
define group fatigue_mdsm7
define group fatigue_cipia
define group fatigue_ecu_mdsm7
# Fieldsets
define fieldset default fields=$fatigue_sensor
# Signals
# Serial Fatigue Sensor (Manufacturer: Caredrive, Model: MR688B)
define signal sg_fatigue_sensor_connected $fatigue_sensor.state == "connected"
define signal sg_fifty_captured $fatigue_sensor.nbr_photos >= 50
# Actions
# Serial Fatigue Sensor (Manufacturer: Caredrive, Model: MR688B)
define action ac_clear_captured trigger=fifty_captured clear fatigue_sensor buffer
# Events
# Interface: Serial
# Manufacturer: Caredrive, Model: MR688B
define event ev_fatigue_warning ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.fatigue_warning label=ftgwarning trigger=@fatigue_sensor.fatigue_warning
define event ev_fatigue_remind ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.fatigue_remind label=ftgremind trigger=@fatigue_sensor.fatigue_remind
define event ev_fatigue_alarm ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.fatigue_alarm label=ftgalarm trigger=@fatigue_sensor.fatigue_alarm
define event ev_fatigue_no_driver ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.no_portrait label=ftgnodrivr trigger=@fatigue_sensor.no_portrait
define event ev_fatigue_distract ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.distraction label=ftgdistrct trigger=@fatigue_sensor.distraction
define event ev_fatigue_photo_captured ack=seq fieldset=default group=fatigue_serial photo=fatigue_sensor.photo label=ftgphoto trigger=@fatigue_sensor.photo
# Interface: Ethernet
# Manufacturer: Movon, Model: MDSM-7
define event ev_fatigue_warning_yawning ack=seq fieldset=default group=fatigue_mdsm7 label=ftgwarning trigger=@fatigue_sensor.fatigue_warning
define event ev_fatigue_alarm_drowsiness ack=seq fieldset=default group=fatigue_mdsm7 label=ftgalarm trigger=@fatigue_sensor.fatigue_alarm
define event ev_fatigue_distraction ack=seq fieldset=default group=fatigue_mdsm7 label=ftgdistrct trigger=@fatigue_sensor.distraction
define event ev_fatigue_phone ack=seq fieldset=default group=fatigue_mdsm7 label=ftgcamphon trigger=@fatigue_sensor.phone
define event ev_fatigue_smoking ack=seq fieldset=default group=fatigue_mdsm7 label=ftgcamsmok trigger=@fatigue_sensor.smoking
define event ev_fatigue_cam_blocked ack=seq fieldset=default group=fatigue_mdsm7 label=ftgcamblck trigger=@fatigue_sensor.camera_blocked
# Interface: Wireless
# Manufacturer: Cipia, Model: FS-10
define event ev_fatigue_warning_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgwarning trigger=@fatigue_sensor.fatigue_warning
define event ev_fatigue_alarm_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgalarm trigger=@fatigue_sensor.fatigue_alarm
define event ev_fatigue_distraction_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgdistrct trigger=@fatigue_sensor.distraction
define event ev_fatigue_phone_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgcamphon trigger=@fatigue_sensor.phone
define event ev_fatigue_smoking_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgcamsmok trigger=@fatigue_sensor.smoking
define event ev_fatigue_unknown_driver_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgukwdrv trigger=@fatigue_sensor.unknown_driver
define event ev_fatigue_driver_missing_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgdrvmis trigger=@fatigue_sensor.driver_missing
define event ev_fatigue_tamper_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgtamper trigger=@fatigue_sensor.tamper_alert
define event ev_fatigue_driver_identified_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgdrvid trigger=@fatigue_sensor.driver_identified
define event ev_fatigue_driver_changed_cipia ack=seq fieldset=default group=fatigue_cipia label=`ftgdrvchg trigger=@fatigue_sensor.driver_changed
define event ev_fatigue_ignition_on_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgignon trigger=@fatigue_sensor.ignition_on
define event ev_fatigue_ignition_off_cipia ack=seq fieldset=default group=fatigue_cipia label=ftgignoff trigger=@fatigue_sensor.ignition_off
# Interface: ECU
# Manufacturer: Movon, Model: MDSM-7
define event ev_fatigue_warning_yawning_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgwarning trigger=$ecu.yawning
define event ev_fatigue_alarm_drowsiness_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgalarm trigger=$ecu.drowsiness
define event ev_fatigue_no_driver_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgnodrivr trigger=$ecu.driver_absence
define event ev_fatigue_distraction_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgdistrct trigger=$ecu.distraction
define event ev_fatigue_phone_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgcamphon trigger=$ecu.phone
define event ev_fatigue_smoking_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgcamsmok trigger=$ecu.smoking
define event ev_fatigue_cam_blocked_ecu ack=seq fieldset=default group=fatigue_ecu_mdsm7 label=ftgcamblck trigger=$ecu.camera_blocked
# Actions
# Interface: Ethernet
# Manufacturer: Movon, Model: MDSM-7
define action ac_fatigue_alarm_drowsiness trigger=@fatigue_sensor.fatigue_alarm create video --name={{$gnss.timestamp}}-drowsiness --time_win=-10,+10
define action ac_fatigue_distraction trigger=@fatigue_sensor.distraction create video --name={{$gnss.timestamp}}-distraction --time_win=-10,+10
define action ac_fatigue_warning_yawning trigger=@fatigue_sensor.fatigue_warning create video --name={{$gnss.timestamp}}-yawning --time_win=-10,+10
define action ac_fatigue_phone trigger=@fatigue_sensor.phone create video --name={{$gnss.timestamp}}-phone --time_win=-10,+10
define action ac_fatigue_smoking trigger=@fatigue_sensor.smoking create video --name={{$gnss.timestamp}}-smoking --time_win=-10,+10
define action ac_fatigue_cam_blocked trigger=@fatigue_sensor.camera_blocked create video --name={{$gnss.timestamp}}-cam_blocked --time_win=-10,+10Vehicle Sensors and Telemetry
Snippets that read data from connected vehicle sensors: temperature probes and TPMS.
Temperature
Registers three 1-Wire temperature sensors (temp1, temp2, temp3) with aliases, then generates events when connection state changes or when any sensor reads above or below the configured thresholds.
define group temp
add temperature_sensor temp1 8D01144D07DBAA28
add temperature_sensor temp2 8D01144D07DBAB28
add temperature_sensor temp3 8D01144D07DBAC28
## FIELDSETS
define fieldset taip fields=EA_A:$temp.aliases.temp1.value,EA_B:$temp.aliases.temp2.value,EA_C:$temp.aliases.temp3.value
define fieldset json fields=$temp
## SIGNALS
# temp1 connected
define signal temp1_connected $temp.aliases.temp1.connected
define signal temp2_connected $temp.aliases.temp2.connected
define signal temp3_connected $temp.aliases.temp3.connected
# temperature above 5°C
define signal temp1_above $temp.aliases.temp1.value > 5
define signal temp2_above $temp.aliases.temp2.value > 5
define signal temp3_above $temp.aliases.temp3.value > 5
# temperature below -8°C
define signal temp1_below $temp.aliases.temp1.value < 8
define signal temp2_below $temp.aliases.temp2.value < 8
define signal temp3_below $temp.aliases.temp3.value < 8
## EVENTS
# temp1 Connection
define event temp1Connected group=temp fieldset=taip ack=seq label=temp1det trigger=temp1_connected
define event temp1Disconnected group=temp fieldset=taip ack=seq label=temp1nodet trigger=temp1_connected,not
# temp above
define event tempAbove group=temp fieldset=taip ack=seq label=tempabv code=61 trigger=temp1_above,temp2_above,or,temp3_above,or
# temp below
define event tempBelow group=temp fieldset=taip ack=seq label=tempblw code=62 trigger=temp1_below,temp2_below,or,temp3_below,orTPMS
Monitors tire pressure and temperature via the ECU. Emits rate-limited events for the full set of TPMS alarms (leaks, over/under inflation, temperature warnings, sensor faults) and speaks a spoken alert with the affected axle and tire number.
# TPMS Snippet
define group tpms
# fieldset
define fieldset default fields=$ecu
# signals
define signal ignition $io.ign
define signal tire_lf_pres $ecu.$tires.axle_1.tire_1.pressure < 80
define signal tire_lf_temp $ecu.$tires.axle_1.tire_2.temperature > 100
define signal tire_rf_pres $ecu.$tires.axle_1.tire_1.pressure < 80
define signal tire_rf_temp $ecu.$tires.axle_1.tire_2.temperature > 100
# events
define event lw_press_front rate=1/60min group=tpms fieldset=default ack=seq label=undinffrnt code=50 trigger=tire_lf_pres,tire_rf_pres,or,ignition,and
define event alarm_ok rate=1/60min group=tpms fieldset=default ack=seq label=alrmok code=60 [email protected]_ok
define event alarm_sensor_mute rate=1/60min group=tpms fieldset=default ack=seq label=alrmmute code=61 [email protected]_mute
define event alarm_sensor_defective rate=1/60min group=tpms fieldset=default ack=seq label=alrmdeftv code=62 [email protected]_defective
define event alarm_tire_leak rate=1/60min group=tpms fieldset=default ack=seq label=alrmleak code=63 [email protected]_leak
define event alarm_temperature_warning rate=1/60min group=tpms fieldset=default ack=seq label=alrmtmp code=64 [email protected]_warning
define event alarm_over_inflation_critical rate=1/60min group=tpms fieldset=default ack=seq label=alrmovc code=65 [email protected]_inflation_critical
define event alarm_over_inflation_warning rate=1/60min group=tpms fieldset=default ack=seq label=alrmovw code=66 [email protected]_inflation_warning
define event alarm_under_inflation_critical rate=1/60min group=tpms fieldset=default ack=seq label=alrmunc code=67 [email protected]_inflation_critical
define event alarm_under_inflation_warning rate=1/60min group=tpms fieldset=default ack=seq label=alrmunw code=68 [email protected]_inflation_warning
# actions
define action under_infltion_w rate=1/24hr [email protected]_inflation_warning speak "low tire pressure detected on AXEL {{$tpms.under_inflation_warning[0].axle}}. tire {{$tpms.under_inflation_warning[0].tire}}"
define action under_infltion_c rate=1/12hr [email protected]_inflation_critical speak "critical tire pressure detected on AXEL {{$tpms.under_inflation_critical[0].axle}}. tire {{$tpms.under_inflation_critical[0].tire}}"Peripherals and Connectivity
Snippets that integrate Bluetooth accessories with the device event bus and destinations.
Bluetooth
Defines two Bluetooth groups (one for the events destination, one for the apps console destination) and forwards a call_2x button press to both. The events destination broadcasts without ack; the apps destination uses sequential ack.
# bluetooth
define group bluetooth_e
define group bluetooth_a
define event ev_bt_call_2x_events group=bluetooth_e fieldset=default ack=disabled label=call2x [email protected]_2x
define event ev_bt_call_2x_apps group=bluetooth_a fieldset=default ack=seq label=call2x [email protected]_2x
# broadcast messages to a bluetooth events destination, no ack
set destinations group=bluetooth_e bluetooth_events
# broadcast messages to a bluetooth apps console destination, with ack
set destinations group=bluetooth_a bluetooth_appsVideo
Snippets that trigger and label video recordings from the device cameras.
Video
Starts a short video recording (5 seconds before and after) whenever output 2 is activated, then sends an event referencing the recorded video name.
# groups
define group video
# fieldset
define fieldset tracking fields=$gnss
# signals
define signal sg_out2 $io.out2
# actions
# set your variables for capturing videos
define variable video_name "important_vid"
# start recording after an output activation
define action ac_out_record_start trigger=sg_out2
create video --name=$variables.video_name-out2 --time_win=-5,+5
send event ev_output_recording video=$variables.video_name-out2
# events
define event ev_output_recording group=video fieldset=tracking ack=seq label=vidout code=101Timers and Scheduling
Snippets that use timers to detect idling or to run periodic actions.
Timers
Includes a one-shot idle timer that fires after 5 minutes of ignition-on without movement (with a spoken alert in Spanish), and a recurring 30-minute recycling timer that toggles output 1 on and off.
define group timers
# One Shot Timer
define timer idle duration=5min
define action start_idle trigger=ignitionON,nomov,and start timer idle
define action stop_idle_mov trigger=ignitionON,mov,and stop timer idle
define action stop_idle_ign trigger=ignitionOFF stop timer idle
define event idling group=timers fieldset=default ack=seq label=idl code=5 [email protected],ignitionON,nomov,and,and
define action speakIdle [email protected],ignitionON,nomov,and,and speak lang=es 'Tiempo de ralenti excesivo'
# Recycling Timer
define timer out_timer duration=30min repeat=true enabled=true
define action on_out1_timer [email protected]_timer,output1,not,and set $io.out1 on
define action off_out1_timer [email protected]_timer,output1,and set $io.out1 offUpdated 2 days ago

