Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hauptproblem: das Debian lenny (5.0) repo war auskommentiert und das für squeeze wohl mal kurz drin.. Nicht gut.. Dist-upgrade entweder komplett durchziehen (Mega-unsupprted!) oder lassen aber nicht der Kiste ihre Distro-Basis nehmen
-> Ich hab das jetzt nur wieder eingefügt und nichts downgegraded (spielt ansich wenig Rolle, es könnte nur bei zukünftigen updates wieder knatschen) schon ist apt zufrieden..
Generell ist Debian ja sehr nett, man darf auch viel mischen aber nicht immer und alles.
Die neuere libc6 macht ja nix kaputt aber die depends bekommen halt Blut&Puls + Herzrasen..
Ja, die libc ist so ungefähr der worstest case.. Die macht alles, also so 98%.
Die Dependency ist vermutlich nichtmal notwendig aber steht da halt drin,
weil Du Pakete der Distro 2 Versionen weiter wolltest.
Entweder das alles schön downgraden oder Wartungs-VPN, ich hab da Erfahrung weil so nen kardinalfehler hab ich auch schon 10x gemacht - und dazugelernt
Jo libc6 wollte der mpd 0.16 sonst läuft der nicht. Was macht das libc6?
Ich hab nur das wiregate repo und das debian_multimedia repo drin.
Da die benötigten Pakete aber nicht per apt-get zu bekommen waren hab ich sie von der debian package HP runter geladen und per dpkg -i installiert (libc6 und mpd 0.16)
Was hat mir das libc verunstaltet? eigentlich funktioniert noch alles einwandfrei.
Nur im WG Webmin Menü das update nicht. Da will er 117 Pakete deinstallieren.
In der shell sagt er:
Code:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 3 nicht aktualisiert.
mehr nicht....?
Was ist im Update vom Webmin Menü anders? Und wie kann ich das so lassen wie das ist und nur bestehende upgraden wenn was verfügbar sein sollte (WG Patch oder so).
Bei den Perl verstehern stell ich mich mal gaaaaannnnzzz hinten an und gehe sicherheitshalber noch ein paar Schritte zurück
Ich wollte eigentlich von den shell scripten weg kommen
Naja, so ein Bash-script ist manchmal eine echt geile Sache: es ist so einfach und übersichtlich
Den Grund dafür würd ich gerne wissen es sollte ja eigentlich nix am Computer zufällig passieren.
Freiwillige vor die Perls' hash(refs) wirklich verstanden haben.. Das ist magic..
Was ist den mit dem apt-get dass es massiv aufräumen will in meinem WG?
Ist das immernoch?
Sollte leicht aufzulösen sein, ist aber ohne genaue Kenntnis was in der sources.list steht/stand so nicht zu sagen. Den MPD 0.15 hatte ich ja im WG-Repo backportet und da liegt er auch immernoch. Über so nen Backport des nächsten Release kann man ja reden, bei noch wilderen ist man dann aber echt alleine!
in der shell bringt mir apt-get keine Fehler, nur in dem Webmin update Menü
vermutlich hast Du was anderes installiert was garnicht gut war (libc/glibc oder so)
Hmm schade, nachdem es mit der Visu jetzt besser aussieht als das, was ich auf dem HS gebastelt hatte, hatte ich gehofft auch noch meine paar Logiken aufs WG zu schieben und dann den HS ganz abzuschalten (bzw in die Bucht zu geben)...
..möchte ich nochmal zart darauf hinweisen, das es keine Logikengine ist. Man kann sicher viel machen aber ab wann das unübersichtlich wird muss jeder selbst entscheiden.
Hmm schade, nachdem es mit der Visu jetzt besser aussieht als das, was ich auf dem HS gebastelt hatte, hatte ich gehofft auch noch meine paar Logiken aufs WG zu schieben und dann den HS ganz abzuschalten (bzw in die Bucht zu geben)...
Ja und ich muss sagen dass WG (und der Support) verzeihen schon sehr viele Fehler. aber die sind ja keine böse absicht nur try&error ohne dabei 100%ig zu wissen was alles mit dran hängt.
Zum Glück is nix kaputt gegangen
Hehe der Volker
Du bist mir ja ein schönes Geschenk.
Treibst es ja noch wilder als ich.
Aber das ist eben das Schöne an einer offenen Plattform.
(Zum Leidwesen derjenigen, die das mit möglichst wenig Aufwand fernwarten müssen/sollen/wollen.)
Naja ein paar wenige freaks kann man ja vielleicht verkraften.
Ich wollte eigentlich von den shell scripten weg kommen
Der Fehler war in dem plugin subscribe wie du richtig vermutet hast.
Das seltsame ist: Es hat funktioniert (an/aus und lauter/leiser)?? Nur wenn ich dasselbe script nochmal mit anderen GA´s mache geht gar keins der beiden scripte mehr.
Den Grund dafür würd ich gerne wissen es sollte ja eigentlich nix am Computer zufällig passieren.
Gruß und Danke
Edit:
Was ist den mit dem apt-get dass es massiv aufräumen will in meinem WG?
was vermutlich dazu beigetragen hat und nicht so gut war:
ich hab den mpd 0.15.3 auf mpd 0.16 geupdatet. (musste hunderte abhängigkeiten mit updaten), weil nur der 0.16 dynamische Datenbanken für verfügbare / nicht verfügbare Netzwerk speicher hat. Da wollte der 0.15 nicht mehr starten, deshalb das update auf 0.16.
in der shell bringt mir apt-get keine Fehler, nur in dem Webmin update Menü
ich hab mich lange davor gedrückt aber ich versuche meine linknx logiken in Perl zu schreiben.
..möchte ich nochmal zart darauf hinweisen, das es keine Logikengine ist. Man kann sicher viel machen aber ab wann das unübersichtlich wird muss jeder selbst entscheiden.
Zum Rest, da sind ein Haufen "syntaktische Feinheiten" drin, das müsste ich Zeilenweise testen aber grundsätzlich: alles was mehr als eine Sekunde dauert/läuft ist in Plugins eine suboptimale Idee!
Es gibt zwar ein paar Tricks aber das ist alles eher mit Tricks und schweinereien verbunden; daher gleich mal der Vorschlag zur güte, wie ich das hier mit Ansagen mache:
Es läuft ein Mini-Shellskript das per UDP-Paket die abzuspielenden Ansagen erhält (von WG, HS, Dreambox, ...)
Code:
wg1-mm-ebox4300-vdr:~# cat udplistener.sh
#!/bin/sh
WAVDIR=/usr/local/share/wav/
IFS=","
while [ 1 ]
do
echo > /dev/null | nc -q 1 -l -u -p 8006 |
while read par1 par2 par3 par4 par5 par6 par7 par8 par9
do
echo received $line p $par1 p $par2 p $par3 p $par4 p $par5 p $par6 p $par7 p $par8 p $par9
case "$par1" in
[[:lower:]] ) echo "Lowercase letter";;
[[:upper:]] ) echo "Uppercase letter";;
[0-9] ) echo "Digit";;
11 )
# Datatype 11 - simply aplay par2
aplay $WAVDIR$par2.wav
;;
12 )
# Datatype 12 - TTS
espeak $par2
;;
20 )
# Datatype 20 - plain cmds
#$par2
echo "disabled for security"
;;
* )
echo "unknown datatype"
;;
esac
done
done
(ist leicht gekürzt)
Gestartet aus rc.local mit "/usr/local/bin/udplistener.sh &"
Gesendet wird dann einfach an Port 8006/UDP
11,Garagentor_offen
(siehe Plugins CUL,DMX etc.)
Mit den ganzen &&-Tricks gehts straight in den Wald.. Dann gibts Zombies und andere Überraschungen, schreib die Aufrufe doch einfach untereinander, die werden auch so nacheinander ausgeführt..
darf ich namen wie "my IP = " nur einmal
my ... ist nur im lokalen Kontext gültig und überschreibt ggfs. sogar vererbte Variablen, darf man also durchaus mehrfach in mehreren Plugins gleich nennen..
ich hab mich lange davor gedrückt aber ich versuche meine linknx logiken in Perl zu schreiben.
Also zuerst dass wo ich Probleme hab:
1.
Code:
my $Sonneneinstrahlung = '11/3/0';
my $Aussentemp = '11/1/0';
my $St;
my $At;
my $berechnung;
my $differenzSoll;
my $St2;
$plugin_info{$plugname.'_cycle'} = 0;
$plugin_subscribe{$Sonneneinstrahlung, $Aussentemp}{$plugname} = 1;
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $Sonneneinstrahlung) {
$St = sprintf ("%.3f", $msg{'value'});
#oder nur falls nicht importiert: $msg{'data'} ist dann leer/undef!
#$St= decode_dpt9($msg{'data'});
return $St;
}
else { # zyklischer Aufruf
# "9" (DPT) kann entfallen falls richtig importiert!
$St= knx_read($Sonneneinstrahlung,300,9);
my $St2 = sprintf ("%.3f", $msg{'value'});
return $St2;
}
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $Aussentemp) {
$At= $msg{'value'};
#der nur falls nicht importiert: $msg{'data'} ist dann leer/undef!
#$At= decode_dpt9($msg{'data'});
}
#else { # zyklischer Aufruf
# "9" (DPT) kann entfallen falls richtig importiert!
#$At= knx_read($Aussentemp,300,9);
#}
# my $berechnung = $St - $At;
#if ($berechnung => $$differenzSoll) {
#return "passt";
#} else {
#return "mist";
#}
das ist nur ein Testscript und soll meine Temperaturen in einen String verwandeln. Nur leider tut es das nicht. Die Frage ist Warum? sprintf geht auf 3 Nachkommastellen, ich brauch nur 2, aber dass änder ich erstmal wenn er das tut was ich will...
2.
Seit dieses Script läuft meine ich eine deutlich höhere Prozessorlast zu haben. Wenn jemand drüber schauen könnte, ob das der Auslöser ist, wäre das sehr nett:
Code:
# do all configs here:
my $knx_addr = '13/1/7'; # knx_address for volume up/down
my $knx_addr_vol = '13/1/8';
my $volumestep = 10; # The stepsize for volume
my $alsa_chanel = 'Software2'; # other possibility: Master
my $sound_device = "mpdvol2"; # The Name of the alsa Sounddevice (asound.conf)
my $knx_addr_player2 = '13/1/0';# mpd Player on/off GA
my $volume_anfang = 80; # This Volume will be set on start
my $Port = "6601"; # Port of the mpd Instanz
my $IP = "192.168.178.33"; # The IP where the mpd Instanz is running
my $info_wz = '3/1/2'; # Info Switch wz
#################################################################
# do not change anything below, all config stays above
#################################################################
# subscribe plugin and call it only when necessary
$plugin_subscribe{$knx_addr, $knx_addr_player2}{$plugname} = 1;
$plugin_info{$plugname.'_cycle'} = 0;
# Volume
if ($msg{'dst'} eq ($knx_addr))
{
if ($msg{'apci'} eq 'A_GroupValue_Write') # change volume
{
if ($msg{'value'} == 1) {
my $debug = `amixer -D $sound_device set $alsa_chanel $volumestep+`;
return;
}
if ($msg{'value'} == 0) {
my $debug = `amixer -D $sound_device set $alsa_chanel $volumestep-`;
return;
}
}
}
# Radio on/off
if ($msg{'dst'} eq ($knx_addr_player2))
{
if ($msg{'apci'} eq 'A_GroupValue_Write') # change volume
{
if ($msg{'value'} == 1) {
my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc play` && `amixer -D $sound_device set $alsa_chanel $volume_anfang%`;
return "Player 2 läuft";
}
if ($msg{'value'} == 0) {
my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc stop`;
return "Player 2 aus";
}
}
}
# Ansage
if ($msg{'dst'} eq ($info_wz)) { #Küche Licht, Kaffee
if ($msg{'apci'} eq 'A_GroupValue_Write') {
my $debug = `/var/www/sprachansage/./aussentemp.sh && /var/www/sprachansage/./vorhersage.sh && /var/www/sprachansage/./wohntemp.sh && amixer -D $sound_device set $alsa_chanel $volumestep%- && mpg123 -a mixing /tmp/hallo.mp3 /tmp/aktuelleaussentemp.mp3 /tmp/vorhersage.mp3 /tmp/wohnzimmer.mp3 && amixer -D $sound_device set $alsa_chanel $volumestep%+`;
return "Ansage";
}
}
if ($msg{'apci'} eq 'A_GroupValue_Read') # get volume
{
my $volume = `amixer -D $sound_device get $alsa_chanel | grep 'Left:' | sed 's/.*Playback \\([0-9]*\\) .*/\\1/'`;
knx_write( $knx_addr_vol, $volume, 6 );
return $volume; #"Figured out volume of $volume and sent it to $knx_addr";
}
Das ist das Script von ChrisM ein wenig umgebaut.
oder ist es das:
Code:
my $volumestep = 10; # The stepsize for volume
my $alsa_chanel = 'Software2'; # other possibility: Master
my $sound_device = "mpdvol2"; # The Name of the alsa Sounddevice (asound.conf)
my $volume_anfang = 80; # This Volume will be set on start
my $Port = "6601"; # Port of the mpd Instanz
my $IP = "192.168.178.33"; # The IP where the mpd Instanz is running
my $kueche_licht = '3/1/0';
my $kaffee = '3/3/0';
# Uhrzeit
my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
$plugin_subscribe{$kaffee, $kueche_licht}{$plugname} = 1;
$plugin_info{$plugname.'_cycle'} = 0;
# Ansage in der Früh
if (($hour >= 4) && ($hour <= 10 )) { #Küche Licht, Kaffee
my $debug = `/var/www/sprachansage/./aussentemp.sh && /var/www/sprachansage/./vorhersage.sh && /var/www/sprachansage/./wohntemp.sh && amixer -D $sound_device set $alsa_chanel $volumestep%- && mpg123 -a mixing /tmp/gutenmorgen.mp3 /tmp/aktuelleaussentemp.mp3 /tmp/vorhersage.mp3 /tmp/wohnzimmer.mp3 && amixer -D $sound_device set $alsa_chanel $volumestep%+`;
return "Ansage in der Früh";}
if (($hour >= 10) && ($hour <= 22 )) { #Küche Licht, Kaffee
my $debug = `/var/www/sprachansage/./aussentemp.sh && /var/www/sprachansage/./vorhersage.sh && /var/www/sprachansage/./wohntemp.sh && amixer -D $sound_device set $alsa_chanel $volumestep%- && mpg123 -a mixing /tmp/hallo.mp3 /tmp/aktuelleaussentemp.mp3 /tmp/vorhersage.mp3 /tmp/wohnzimmer.mp3 && amixer -D $sound_device set $alsa_chanel $volumestep%+`;
return "Ansage";
}
if ($msg{'dst'} eq ($kaffee or $kueche_licht)) {
if ($msg{'value'} == 0) {
my $debug = `/var/www/sprachansage/./aussentemp.sh && /var/www/sprachansage/./vorhersage.sh && /var/www/sprachansage/./wohntemp.sh && amixer -D $sound_device set $alsa_chanel $volumestep%- && mpg123 -a mixing /tmp/hallo.mp3 /tmp/aktuelleaussentemp.mp3 /tmp/vorhersage.mp3 /tmp/wohnzimmer.mp3 && amixer -D $sound_device set $alsa_chanel $volumestep%+`;
return "Ansage wg Telegram";
}
}
Da ich die Dateien mehr oder weniger on demand aus dem Internet lade, könnte es dieses Script sein, dass die Prozessorlast dauerhaft erhöht?
Die shell Befehle stehend deshalb in einer Zeile, da es "wichtig" ist, dass sie nacheinander ausgeführt werden. Gibts da noch eine saubere Lösung?
Die Scripte sind noch "Reste" von linknx, um die aktuellen mp3 Dateien zu erzeugen
Gruß Volker
Edit:
Oh Oh jetzt gehts gar nicht mehr.
apt-get und der wiregate update im Webmin spucken das aus:
Edit2: wenn ich das Script auf 2 Scripte aufteile, dann geht es wieder. Wenn ich das Script dann unter einem anderen Namen Speicher (z.B Bad Radio) Den Port und die Sound Device Namen ändere, dann geht das 2.te Script nicht. darf ich namen wie "my IP = " nur einmal in allen Scripten gebrauchen, oder kann ich die jedes mal wieder anders definieren`?
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: