{% extends "base.html" %} {% block title %}OpenLCB monitor{% endblock %} {% block content %}

OpenLCB bus monitor

← back to discovery

{% if not olcb_active %}

The active connection isn't OpenLCB. Configure an OpenLCB connection to see bus traffic here.

{% else %}

Send a frame

Hand-craft an OpenLCB CAN frame and put it on the wire. Header is a 29-bit hex value; data is up to 8 bytes of hex. Result lands in the monitor below (any peer that answers will show up too). Meant for troubleshooting — probe peers, replay captured frames, prod a stuck decoder.

{% if presets %}
Presets: {% for p in presets %} {% endfor %}
{% endif %} {% include "_openlcb_send_history.html" %}
{% if well_known_events and our_alias %} {% endif %}

Send a datagram

Send an arbitrary datagram to a peer. Payload is up to 72 bytes of hex; the CT-side engine awaits the peer's Received-OK reply (or surfaces a Rejected code). Intended for memory-config debugging and firmware-upgrade experiments — do not send payloads to a peer's memory-config space unless you know what the bytes mean.

Bus stats

{% include "_openlcb_stats.html" %}

Recent frames

{% if our_alias %} us = {{ our_alias }} {% endif %} Auto-refresh every 2 seconds. Newest first. {% include "_openlcb_pause_button.html" %}
{# Filter row — case-insensitive substring on summary + exact hex match on src alias / MTI. Empty fields = no filter. The ``hx-include`` on the auto-poll container below picks up the current filter values every tick, so a paused operator's filter survives the swap. #}
{# Auto-refreshing fragment — htmx polls the refresh endpoint every 2 seconds and swaps the table. ``hx-include`` carries the filter form's current values on every request so the server-side filter matches what the operator sees. The custom ``olcb-sse-nudge`` trigger fires on each SSE push so live traffic updates in near real-time; the 2s poll remains as a safety net for browsers where EventSource is unavailable or the SSE connection drops. #}
{% include "_openlcb_monitor.html" %}
{% endif %} {% endblock %}