diff options
author | Daniel Friesel <derf@finalrewind.org> | 2017-09-22 19:55:30 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2017-09-22 19:55:30 +0200 |
commit | a80cd82cd46221bbf26dd59c47cc467bd5d120a1 (patch) | |
tree | 674835ddf7e729a4a8611d002c57f3e74a924205 |
Add initial version of mqtt-multipub script
-rwxr-xr-x | bin/mqtt-multipub | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/bin/mqtt-multipub b/bin/mqtt-multipub new file mode 100755 index 0000000..4c9b2dc --- /dev/null +++ b/bin/mqtt-multipub @@ -0,0 +1,75 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use 5.020; + +our $VERSION = '0.00'; + +use File::Slurp qw(read_file); +use Net::MQTT::Simple; + +my $mqtt = Net::MQTT::Simple->new( '172.23.225.193' ); + +sub parse_content_string { + my ($raw_content) = @_; + if ($raw_content =~ m{ ^ / [^/] }x) { + my $content = read_file($raw_content); + chomp $content; + return $content; + } + return $raw_content; +} + +for my $arg (@ARGV) { + if ($arg =~ m{ ^ (?<topic> [^=]+) = (?<msgtype> . ) = (?<content> .*) $ }x) { + my $content = parse_content_string($+{content}); + if ($+{msgtype} eq 'm') { + $mqtt->publish( $+{topic}, $content ); + } + elsif ($+{msgtype} eq 'r') { + $mqtt->retain( $+{topic}, $content ); + } + else { + warn "Unsupported message type $+{msgtype} ($arg)\n"; + } + } +} + +__END__ + +=head1 NAME + +=head1 SYNOPSIS + +=head1 VERSION + +=head1 DESCRIPTION + +=head1 OPTIONS + +=over + +=back + +=head1 EXIT STATUS + +=head1 CONFIGURATION + +None. + +=head1 DEPENDENCIES + +=over + +=back + +=head1 BUGS AND LIMITATIONS + +=head1 AUTHOR + +Copyright (C) 2017 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + + 0. You just DO WHAT THE FUCK YOU WANT TO. |