diff --git a/plugins/other/vdr_ b/plugins/other/vdr_ new file mode 100755 index 00000000..e3bdb23b --- /dev/null +++ b/plugins/other/vdr_ @@ -0,0 +1,160 @@ +#!/usr/bin/perl -w + +# Version 1.2 +# - kein div 0 Fehler mehr wenn der Host nicht zu erreichen ist +# - Serien Timer werden nun seperat gezaehlt (anzahl pro Woche) +# - im Namen kann munic conform der hostname mit angegeben werden: vdr_localhost vdr_192.168.0.2, ... (localhost ist default) +# - Timer werden nur ignoriert wenn sie 0(inaktiv) als Status haben +# - Erkennung der neuen Aufzeichnungen passte nicht mehr +# +# Version 1.1 +# - laufende Timer zaehlen nun zu aktiven Timern. +# - Ausgabe fuer Festplatteninformation +# +# Version 1.0 +# - Release + +use strict; +use diagnostics; + +$0 =~ /vdr_(.+)*$/; +my $host = $1 || "localhost";; + +#print "Name: $0\nHost: $host\n"; +my $SVDRPSENDPL="/usr/bin/svdrpsend.pl -d $host"; + +sub ermittelnTimer; +sub ermittelnAufnahmen; +sub ermittelnPlatte; +sub uhrzeit2min; + +if (($ARGV[0])&&($ARGV[0] eq "config")){ + print "graph_title VDR Sensors ($host)\n"; +# print "graph_args --upper-limit 50 -l 0\n"; + print "graph_args -l 0\n"; + print "graph_vlabel Anzahl\n"; + print "graph_category VDR\n"; + print "graph_info Diese Graphen zeigen verschiedene Werte des VDR.\n"; + + print "timer.label Timer (Anzahl)\n"; + print "timer.info Anzahl aller aktivierten Timer\n"; + print "timer.draw LINE2\n"; + + print "timer_durchschnitt.label Timer Durchschnitt (Minuten)\n"; + print "timer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n"; + print "timer_durchschnitt.draw LINE2\n"; + + print "serientimer.label Serien Timer (Anzahl)\n"; + print "serientimer.info Anzahl aller aktivierten Serien Timer\n"; + print "serientimer.draw LINE2\n"; + + print "serientimer_durchschnitt.label Serien Timer Durchschnitt (Minuten)\n"; + print "serientimer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n"; + print "serientimer_durchschnitt.draw LINE2\n"; + + print "aufnahmen_gesehen.label Aufnahmen gesehen (Anzahl)\n"; + print "aufnahmen_gesehen.info Aufnahmen die schon angeschaut wurden.\n"; + print "aufnahmen_gesehen.draw LINE2\n"; + + print "aufnahmen_neu.label Aufnahmen ungesehen (Anzahl)\n"; + print "aufnahmen_neu.info Aufnahmen die noch nicht angeschaut wurden.\n"; + print "aufnahmen_neu.draw LINE2\n"; + + print "platte.label Belegung VDR-Platten (%)\n"; + print "platte.info Angabe, wieviel der von VDR beschreibbaren Festplatten belegt ist.\n"; + print "platte.draw LINE2\n"; + + exit 0 +} + +ermittelnTimer(); +ermittelnPlatte(); +ermittelnAufnahmen(); + +sub ermittelnAufnahmen(){ + my $zeile; + my $anzahlAufnahmenNeu=0; + my $anzahlAufnahmenGesehen=0; + open BEFEHL,"$SVDRPSENDPL lstr|"; + while($zeile=){ + if ($zeile=~/^250.* .* [.^*]*\ /){ + $anzahlAufnahmenNeu++; + } else { + $anzahlAufnahmenGesehen++; + } + } + print "aufnahmen_gesehen.value ".$anzahlAufnahmenGesehen."\n"; + print "aufnahmen_neu.value ".$anzahlAufnahmenNeu."\n"; +} + +sub ermittelnPlatte(){ + my $zeile; + my $muell; + my $platteProzent=0; + open BEFEHL,"$SVDRPSENDPL stat disk|"; + while($zeile=){ + if ($zeile=~/^250.*/){ + ($muell,$muell,$muell,$platteProzent)=split(/ /,$zeile,4); + $platteProzent=~s/%//g; + $platteProzent=~s/ //g; + $platteProzent=~s/\n//g; + $platteProzent=~s/\r//g; + #print $zeile; + } + } + print "platte.value ".$platteProzent."\n"; +} + +sub ermittelnTimer(){ + my $zeile; + my $anzahl; + my $anzahlTimer=0; + my $anzahlSerienTimer=0; + my $anzahlMinuten=0; + my $anzahlSerienMinuten=0; + my $start; + my $ende; + my $dauer; + my $muell; + + open BEFEHL,"$SVDRPSENDPL lstt|"; + while($zeile=){ + if ($zeile=~/^250.[0-9]* [1-9]*/){ + ($muell,$muell,$anzahl,$start,$ende,$muell)=split(/:/,$zeile,6); + #print $zeile; + $anzahl =~ s/\-//g; + #ermittle timerdauer + $start=uhrzeit2min($start); + $ende=uhrzeit2min($ende); + if ($start<$ende){ + $dauer=$ende-$start; + }else{ + $dauer=1440-$start; + $dauer=$dauer+$ende; + } + + if (length($anzahl) && $anzahl =~ /\D/){ + #print "Serie"; + $anzahlSerienTimer+=length($anzahl); + $anzahlSerienMinuten+=$dauer*length($anzahl); + } else { + #print "keine Serie"; + $anzahlTimer++; + $anzahlMinuten+=$dauer; + } + + #print "$start-$ende=$dauer\n"; + } + } + print "timer.value ".$anzahlTimer."\n"; + printf $anzahlTimer ? ("timer_durchschnitt.value %d\n",($anzahlMinuten/$anzahlTimer)) : "timer_durchschnitt.value 0\n"; + + print "serientimer.value ".$anzahlSerienTimer."\n"; + printf $anzahlSerienTimer ? ("serientimer_durchschnitt.value %d\n",($anzahlSerienMinuten/$anzahlSerienTimer)) : "serientimer_durchschnitt.value 0\n"; +} + +sub uhrzeit2min(){ + my $zeit=$_[0]; + $zeit=$zeit%100+($zeit-$zeit%100)/100*60; + return $zeit; +}