#!/usr/bin/env perl use v5.32.1; use strict; use warnings; use FindBin qw($Bin); use lib "$Bin/../../../lib"; use FAPG::DAQ::MQTT qw(publish_status_mqtt); use Sys::Hostname qw(hostname); my $publish_interval = positive_number_from_env( HUB_STATUS_INTERVAL => 5 ); my $node = $ENV{FAPG_DAQ_HUB_NODE} // $ENV{FAPG_DAQ_NODE} // $ENV{DAQ_NODE} // hostname(); while (1) { eval { publish_status_mqtt( { probe => 'hub', node => $node, status => 'ok', message => 'DAQ hub MQTT broker reachable', }, source => 'fapg-daq-hub', ); 1; } or do { my $error = $@ || 'unknown error'; warn "MQTT hub status publish error: $error"; }; sleep $publish_interval; } sub positive_number_from_env { my ( $name, $default ) = @_; my $value = $ENV{$name}; return $default if !defined $value || $value !~ /\A(?:\d+(?:\.\d*)?|\.\d+)\z/ || $value <= 0; return 0 + $value; }