Bläddra i källkod

Merge branch 'master' of github.com:profplump/UberZach-Integration

Zachary Kotlarek 13 år sedan
förälder
incheckning
b6a3adbe80
4 ändrade filer med 31 tillägg och 14 borttagningar
  1. 18 2
      dmx/projectorPower.pl
  2. 5 5
      dmx/rifftrax.pl
  3. 3 4
      dmx/state.pl
  4. 5 3
      serial/serial.pl

+ 18 - 2
dmx/projectorPower.pl

@@ -14,9 +14,10 @@ my $COUNTDOWN   = 300;
 my $OFF_DELAY   = 15;
 my $CMD_DELAY   = 20;
 my $COLOR_DELAY = 60;
-my $COLOR_HIGH  = 'DYNAMIC';
-my $COLOR_PLAY  = 'THEATER';
+my $COLOR_HIGH  = 'THEATER';
+my $COLOR_PLAY  = 'THEATER_BLACK_1';
 my $COLOR_LOW   = 'THEATER_BLACK_1';
+my $LAMP_LIFE   = 2000;
 
 # App config
 my $DATA_DIR     = DMX::dataDir();
@@ -236,6 +237,21 @@ while (1) {
 		# Annouce the state change, after the fact
 		DMX::say('Projector ' . $state);
 
+		# Announce lamp life status, if near/past $LAMP_LIFE
+		if (exists($exists{'PROJECTOR_LAMP'})) {
+			my $life = $exists{'PROJECTOR_LAMP'} / $LAMP_LIFE;
+			if ($DEBUG) {
+				print STDERR 'Lamp life: ' . $life . "%\n";
+			}
+
+			if ($life > 0.9) {
+				my $chance = ($life - 0.9) * 10;
+				if (rand(1) <= $chance) {
+					DMX::say('Projector lamp has run for ' . int($life * 100) . '% of its projected life.');
+				}
+			}
+		}
+
 		# No output file
 
 		# Update the push time

+ 5 - 5
dmx/rifftrax.pl

@@ -391,17 +391,17 @@ sub parseConfig($$) {
 
 			# Parse out the data we care about
 			my %data = ();
-			if ($text =~ /^\s*Name:\s*(\S.*\S)\s*$/mi) {
+			if ($text =~ /^\s*Name:[ \t]*(\S.*\S)\s*$/mi) {
 				$data{'name'} = $1;
 			}
-			if ($text =~ /^\s*Year:\s*(\d{4})\s*$/mi) {
+			if ($text =~ /^\s*Year:[ \t]*(\d{4})\s*$/mi) {
 				$data{'year'} = $1;
 			}
-			if ($text =~ /^\s*File:\s*(\S.*\S)\s*$/mi) {
+			if ($text =~ /^\s*File:[ \t]*(\S.*\S)\s*$/mi) {
 				$data{'file'} = $1;
 			}
-			if ($text =~ /^\s*Offset:\s*([\-\+]?\d+(?:\.\d+)?)\s*$/mi) {
-				$data{'offset'} = $1;
+			if ($text =~ /^\s*Offset:[ \t]*([\-\+]?\d+(?:\.\d+)?)\s*$/mi) {
+				$data{'offset'} = $1 * 1.0;
 			}
 
 			# Ensure we have a valid record

+ 3 - 4
dmx/state.pl

@@ -39,6 +39,7 @@ my %MON_FILES     = ();
 	$MON_FILES{'PROJECTOR'}       = 'STATUS';
 	$MON_FILES{'PROJECTOR_COLOR'} = 'STATUS_VALUE';
 	$MON_FILES{'PROJECTOR_INPUT'} = 'STATUS_VALUE';
+	$MON_FILES{'PROJECTOR_LAMP'}  = 'STATUS_VALUE';
 
 	# Amplifier
 	$MON_FILES{'AMPLIFIER'}       = 'STATUS';
@@ -123,7 +124,7 @@ foreach my $file (keys(%MON_FILES)) {
 		'update'    => 0,
 		'status'    => 0,
 		'last'      => 0,
-		'available' => 0,
+		'available' => 1,
 	);
 
 	# Allow absolute paths to override the $DATA_DIR path
@@ -234,8 +235,7 @@ while (1) {
 		$file->{'status'} = 0;
 
 		# Track available/unavailable files
-		if (!$file->{'type'} =~ /^EXISTS/) {
-
+		if (!($file->{'type'} =~ /^EXISTS/)) {
 			my $wasAvailable = $file->{'available'};
 			$file->{'available'} = -r $file->{'path'} ? 1 : 0;
 			if ($wasAvailable != $file->{'available'}) {
@@ -259,7 +259,6 @@ while (1) {
 						print STDERR 'Added file ' . $file->{'name'} . ': ' . $file->{'path'} . "\n";
 					} else {
 						print STDERR 'Dropped file ' . $file->{'name'} . ': ' . $file->{'path'} . "\n";
-
 					}
 				}
 			}

+ 5 - 3
serial/serial.pl

@@ -45,11 +45,13 @@ if (basename($0) =~ /PROJECTOR/i) {
 		'HDMI_2'          => 'SOURCE A0',
 		'VGA'             => 'SOURCE 20',
 		'INPUT'           => 'SOURCE?',
+		'LAMP'            => 'LAMP?',
 	);
 	%STATUS_CMDS = (
-		'STATUS' => { 'MATCH' => [ qr/^PWR=/,                 qr/PWR=01/ ] },
-		'COLOR'  => { 'EVAL'  => [ qr/^CMODE=[0-9A-Z]{2}$/i,  'if ($a =~ /06$/i) { $a = "DYNAMIC" } elsif ($a =~ /0C$/i) { $a = "LIVING_ROOM" } elsif ($a =~ /07$/i) { $a = "NATURAL" } elsif ($a =~ /05$/i) { $a = "THEATER" } elsif ($a =~ /09$/i) { $a = "THEATER_BLACK_1" } elsif ($a =~ /0A$/i) { $a = "THEATER_BLACK_2" } elsif ($a =~ /0B$/i) { $a = "XV" }' ] },
-		'INPUT'  => { 'EVAL'  => [ qr/^SOURCE=[0-9A-Z]{2}$/i, 'if ($a =~ /30$/i) { $a = "HDMI_1" } elsif ($a =~ /A0$/i) { $a = "HDMI_2" } elsif ($a =~ /20$/i) { $a = "VGA" }' ] },
+		'STATUS' => { 'MATCH'   => [ qr/^PWR=/,                 qr/PWR=01/ ] },
+		'COLOR'  => { 'EVAL'    => [ qr/^CMODE=[0-9A-Z]{2}$/i,  'if ($a =~ /06$/i) { $a = "DYNAMIC" } elsif ($a =~ /0C$/i) { $a = "LIVING_ROOM" } elsif ($a =~ /07$/i) { $a = "NATURAL" } elsif ($a =~ /05$/i) { $a = "THEATER" } elsif ($a =~ /09$/i) { $a = "THEATER_BLACK_1" } elsif ($a =~ /0A$/i) { $a = "THEATER_BLACK_2" } elsif ($a =~ /0B$/i) { $a = "XV" }' ] },
+		'INPUT'  => { 'EVAL'    => [ qr/^SOURCE=[0-9A-Z]{2}$/i, 'if ($a =~ /30$/i) { $a = "HDMI_1" } elsif ($a =~ /A0$/i) { $a = "HDMI_2" } elsif ($a =~ /20$/i) { $a = "VGA" }' ] },
+		'LAMP'   => { 'REPLACE' => qr/^LAMP=(\d+)$/i },
 	);
 } elsif (basename($0) =~ /AMPLIFIER/i) {
 	$DEV       = 'Amplifier';