No description
Find a file
2025-08-05 19:10:47 +00:00
lib/Net/Symon Init 2025-08-05 13:55:52 +02:00
.envrc Init 2025-08-05 13:55:52 +02:00
.gitignore Init 2025-08-05 13:55:52 +02:00
Build.PL Init 2025-08-05 13:55:52 +02:00
flake.lock Init 2025-08-05 13:55:52 +02:00
flake.nix Init 2025-08-05 13:55:52 +02:00
Makefile.PL Init 2025-08-05 13:55:52 +02:00
README.md Added reset flag 2025-08-05 15:19:54 +02:00
signcontrol Update signcontrol 2025-08-05 19:10:47 +00:00

SignControl

SignControl is a cli utility that controls Symon NetBrite LED signs. Huge thanks to kevinbosak.

Installation Instructions

  1. Set Up Network: Ensure your device is on the same subnet as the sign. For example, add an IP address to your Ethernet interface:
    sudo ip addr add 10.164.3.86/24 dev enp0s25 # Replace with your interface
    
    This configures your device to communicate with the sign.

Debian

I'm not completely sure about this one, I don't use debian.

  1. Install Perl Dependencies: On a Debian-based system, install the required packages:

    sudo apt install libmodule-build-perl libdigest-crc-perl
    
  2. Build and Install the Module:

    perl Build.PL ./Build installdeps # Installs any additional dependencies
    ./Build manifest # Generates the MANIFEST file
    

    These steps prepare the module for use. If you're building from source, ensure you have Perl 5.10 or later.

NixOS

You should know this one.

nix run github:jsw08/signcontrol -- parameters

Usage

To send messages to the sign, edit and run the provided script (e.g., signboard). Example:

signboard --address 10.164.3.87 --zone zone1="x=0,y=0,width=20,height=5" --zone
zone2="x=10,y=10,width=10,height=10" --message zone1="Hello {scrolloff}"
--message zone2="World {red}"
  • Replace 10.164.3.87 with your sign's IP address.
  • Define zones with --zone zonename="x=0,y=0,width=20,height=5".
  • Provide messages with --message zonename="Text with formatting".
  • I reccommend adding {erase} to the beginning of your first message. This will prevent glitches when changing the text.

Flags

  • --zone zonename="": See the heading zones below.
  • --message zonename="": string with formatting options (see heading below).
  • --address: IP Address
  • --priority: The message priority determines how the new message will replace an existing one. The default is PRI_OVERRIDE, but can also be PRI_FOLLOW, PRI_INTERRUPT, PRI_YIELD or PRI_ROUNDROBIN.
  • --"activation_delay: Message activation delay in milliseconds. Default is 0.
  • --display_delay: Message display delay in milliseconds. Default is 0.
  • --display_repeat: Not really sure. The default is 0.
  • --ttl: The message will self-destruct in x seconds. Default is 0.
  • --sound_alarm: If true, the sign will beep when the message is displayed.
  • --reset: resets the device before sending the message.

Message Formatting

Messages support inline markup for dynamic effects. Include these tags directly in your message text:

  • Scrolling: {scrolloff} (turns off), {scrollon} (turns on).
  • Blinking: {blinkon} (turns on), {blinkoff} (turns off).
  • Color: {red}, {green}, {yellow}.
  • Alignment: {left}, {center}, {right}.
  • Pause: {pause} (pauses display).
  • Erase: {erase} (clears content).
  • Serial Number: {serial} (inserts sign's MAC address).
  • Beep: {bell} (It should beep, but when I tried it it paused the text at the end).
  • Note: {note [pitch] [duration]} (e.g., {note 100 500} for a 100 Hz tone lasting 500 ms).
  • Tune: {tune [1-9] ["repeat"]} (e.g., {tune 9} for Charge!; add "repeat" for looping).
  • Font: {font [font_name]} (switches font; see below).

Available Fonts

The following fonts can be used with {font [font_name]}:

  • monospace_7
  • monospace_16
  • monospace_24
  • proportional_7
  • proportional_5
  • proportional_9
  • proportional_11
  • bold_proportional_7
  • bold_proportional_11
  • script_16
  • picture_24

Note: Ensure the font fits within the zone's height to avoid issues.

Zone Parameters

To create a zone, add the --zone flag with the parameters in the following format:

--zone name="param1=0,param2=0"
  • x: The X coordinate to start the zone, required.

  • y: The Y coordinate to start the zone, required.

  • width: The zone width, required.

  • height: The zone height, required.

  • scroll_speed: The speed of scrolling text in the zone. The default is SCROLL_MED, but can also be SCROLL_SLOW or SCROLL_FAST.

  • pause_duration: The duration in milliseconds of any pause sequences in the message text.

  • volume: The volume of beeps, notes, alarms, and other noises. Valid range is 0 (off) to 8 (deadly). Default is 4.

  • default_font: The default font. See 'Available Fonts'

  • default_color: The default color. Can be COLOR_RED, COLOR_GREEN, or COLOR_YELLOW. The default is red.

  • initial_text: The text initially displayed in the zone. This is just "." by default.