X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=zc-mqtt;h=5a6cd86204a79a9f38b375e3ade3634161f191aa;hb=675400b462e3b3b1323fbf54d092dd47e171e326;hp=cb75957f0430ea024180ada3c2f8efe3f4e68ba4;hpb=8c770581c58ce831a0b73b6e8a6b2b1410025981;p=zc diff --git a/zc-mqtt b/zc-mqtt index cb75957..5a6cd86 100755 --- a/zc-mqtt +++ b/zc-mqtt @@ -20,13 +20,24 @@ use DBD::Pg; use Data::Dump qw(dump); use autodie; +BEGIN { + my $cwd = $0; + $cwd =~ s{/[^/]+$}{}; + chdir $cwd; + + my $log_dir = 'log'; + mkdir $log_dir unless -d $log_dir; + + open(my $log, '>', "$log_dir/".strftime("%Y-%m-%dT%H:%M:%S",localtime())); + select($log); + $|=1; +} + use lib '.'; use Protocol; my $queue = "queue"; -$|=1; # flush STDOUT - my $dbh = DBI->connect("dbi:Pg:dbname=zc", "dpavlin", "", { RaiseError => 1 }); my @columns = split(/\n/, <<__COLUMNS__); 0x01 PN @@ -97,6 +108,7 @@ while (1) { $msg = read_message($socket, $buf); if ($msg) { my $t = time(); + my ($date,$time) = split(/ /,strftime("%Y-%m-%d %H:%M:%S", localtime($t))); print "\n",strftime("%Y-%m-%d %H:%M:%S ", localtime($t)) if $msg->message_type != MQTT_PINGRESP; if ($msg->message_type == MQTT_PUBLISH) { if ($verbose == 0) { @@ -117,7 +129,8 @@ while (1) { my $function_code = unpack('C',substr($msg->message,2,1)); - write_file "$queue/$dir/$t.$up_down.$function_code", $msg->message; + mkdir "$queue/$dir/$date" if ! -d "$queue/$dir/$date"; + write_file "$queue/$dir/$date/$time.$t.$up_down.$function_code", $msg->message; if ( substr($msg->message,2,1) eq "\x07" ) { # heartbeat $topic =~ s/up$/down/;