Просмотр исходного кода

Add support for non-numeric state data

Zachary Kotlarek 13 лет назад
Родитель
Сommit
7d8bf05b36
2 измененных файлов с 9 добавлено и 2 удалено
  1. 1 1
      dmx/DMX.pm
  2. 8 1
      dmx/state.pl

+ 1 - 1
dmx/DMX.pm

@@ -134,7 +134,7 @@ sub parseState($$$) {
 	}
 	if (defined($exists_text)) {
 		foreach my $exists_val (split(/\s*,\s*/, $exists_text)) {
-			my ($name, $value, $time) = $exists_val =~ /(\w+)\:(\d+)\:(\d+)/;
+			my ($name, $value, $time) = $exists_val =~ /(\w+)\:([\w\.\-]+)\:(\d+)/;
 			if (!defined($name) || !defined($value) || !defined($time)) {
 				print STDERR 'State parse error (exists): ' . $text . "\n";
 				next;

+ 8 - 1
dmx/state.pl

@@ -29,6 +29,9 @@ my %MON_FILES     = (
 	'FAN_CMD'   => 'EXISTS_ON',
 	'LIGHTS'    => 'EXISTS_ON',
 
+	'AMPLIFIER_VOL'  => 'STATUS_VALUE',
+	'AMPLIFIER_MODE' => 'STATUS_VALUE',
+
 	'/mnt/media/DMX/cmd/GARAGE_CMD' => 'EXISTS_CLEAR',
 );
 
@@ -187,6 +190,10 @@ while (1) {
 				if ($text =~ /PlayStatus\:Playing/) {
 					$file->{'status'} = 1;
 				}
+			} elsif ($file->{'type'} eq 'STATUS_VALUE') {
+				$text =~ s/^\s*//;
+				$text =~ s/\s*$//;
+				$file->{'status'} = $text;
 			} else {
 				if ($text =~ /1/) {
 					$file->{'status'} = 1;
@@ -287,7 +294,7 @@ while (1) {
 
 	# Update on any status change
 	foreach my $file (values(%files)) {
-		if ($file->{'status'} != $file->{'last'}) {
+		if ($file->{'status'} ne $file->{'last'}) {
 			$update = 1;
 			last;
 		}