View raw

1 #!/usr/bin/env perl 2 3 use v5.32.1; 4 use strict; 5 use warnings; 6 7 use FindBin qw($Bin); 8 use lib "$Bin/../../../lib"; 9 10 use FAPG::DAQ::MQTT qw(publish_status_mqtt); 11 use Sys::Hostname qw(hostname); 12 13 my $publish_interval = positive_number_from_env( HUB_STATUS_INTERVAL => 5 ); 14 my $node = $ENV{FAPG_DAQ_HUB_NODE} // $ENV{FAPG_DAQ_NODE} // $ENV{DAQ_NODE} 15 // hostname(); 16 17 while (1) { 18 eval { 19 publish_status_mqtt( 20 { probe => 'hub', 21 node => $node, 22 status => 'ok', 23 message => 'DAQ hub MQTT broker reachable', 24 }, 25 source => 'fapg-daq-hub', 26 ); 27 1; 28 } or do { 29 my $error = $@ || 'unknown error'; 30 warn "MQTT hub status publish error: $error"; 31 }; 32 33 sleep $publish_interval; 34 } 35 36 sub positive_number_from_env { 37 my ( $name, $default ) = @_; 38 my $value = $ENV{$name}; 39 40 return $default 41 if !defined $value 42 || $value !~ /\A(?:\d+(?:\.\d*)?|\.\d+)\z/ 43 || $value <= 0; 44 45 return 0 + $value; 46 } 47