summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2017-09-22 19:55:30 +0200
committerDaniel Friesel <derf@finalrewind.org>2017-09-22 19:55:30 +0200
commita80cd82cd46221bbf26dd59c47cc467bd5d120a1 (patch)
tree674835ddf7e729a4a8611d002c57f3e74a924205
Add initial version of mqtt-multipub script
-rwxr-xr-xbin/mqtt-multipub75
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.