Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

script / pluging hilfe

Hallo Leute

ich nutze einen Reciver mit Linux, leider funktioniert ein plugin nicht mehr da der anbieter sein Angebot eingestellt hat.
es ist ein script was schon fertig ist und funktioniert hat, ich denke mir mit ein paar kleine Änderungen sollte das wieder laufen.
es handelt sich um ein wetterscript.

Ich bin schon soweit das vom neuen anbieter die daten geladen werden und auf der box gespeichert werden, leider funktioniert das script nicht mehr um in der datei die richtig stelle auszulesen und zu übergeben, ich habe in der telenet console ein systax error.

hier mal das script:

VERSION=Neu
LIC=-1
TRate=0
RATE=60
CITY=Berlin
ICON=

cd /tmp
cp /var/plugins/tuxwet/mybmps.tar.gz /tmp/

while [ -e /tmp/.lcdwetter ]
do
   time=`date +'%H:%M'`
   [ ! -e /tmp/.lcd_epg.on ] && touch lcd.locked
   if [ $TRate -gt 0 ]
   then
      if [ -e /var/etc/.lcdwetter_time ]; then
        wget -q -O /dev/null 'http://localhost/control/lcd?rect=0,0,58,20,1,0&xpos=2&ypos=18&size=30&font=2&text=$time&update=1'
      fi
      TRate=`expr $TRate - 1`
   else
      # Wetterdaten holen und uebersetzen
      wget -q -O /tmp/lcdwetter.list http://www.google.com/ig/api?weather=$CITY?=&hl=de
            sleep 1
      sed -i /'prmo'/,/'\/lnks'/d /tmp/lcdwetter.list
      sed -i -e s/','/''/g -e s/'\/'/'#'/g -e s/'<'/';'/g -e s/'>'/';'/g /tmp/lcdwetter.list

      if [ ! -f /tmp/lcdwetter.list ]; then
           echo 'Datei /tmp/lcdwetter.list fehlt'
           rm -f /tmp/.lcdwetter
           rm -f /tmp/lcd.locked
           exit 1
      fi

      IC=`echo $(cat /tmp/lcdwetter.list) | cut -f 99 -d ';'`
      mztemp=`grep 'temp_c' /tmp/lcdwetter.list | cut -d';' -f3`
      mlength=`expr length $mztemp`
      [ $mlength -eq 1 ] && mztemp='%C2%A0%C2%A0$mztemp'
      [ $mlength -eq 2 ] && mztemp='%C2%A0$mztemp'
      # LCD-Grafik holen
      if [ $LIC -ne $IC -o ! -e /tmp/$ICON$IC.png ]
      then
         LIC=$IC
         cd /tmp
         tar -xzf mybmps.tar.gz $ICON$IC.png
      fi
      if [ -e /var/etc/.lcdwetter_time ]; then
        wget -q -O /dev/null 'http://localhost/control/lcd?png=/tmp/$ICON$IC.png&rect=0,28,60,63,0,0&xpos=0&ypos=57&size=43&font=2&text=$mztemp%C2%B0C'
       else
        wget -q -O /dev/null 'http://localhost/control/lcd?png=/tmp/$ICON$IC.png&rect=0,28,60,63,0,0&xpos=0&ypos=57&size=43&font=2&text=$mztemp%C2%B0C&update=1'         
      fi
      TRate=$RATE
   fi
   sleep 1
done

# Temporaee Dateien loeschen
rm -f /tmp/lcd.locked
rm -f /tmp/lcdwetter*
rm -f /tmp/mybmps.tar.gz
rm -f /tmp/*.png

das ist die dazugehörige lcdwetter.list:

;?xml version='1.0'?;;xml_api_reply version='1';;weather module_id='0' tab_id='0' mobile_row='0' mobile_zipped='1' row='0' section='0' ;;forecast_information;;city data='Berlin Berlin'#;;postal_code data='Berlin?='#;;latitude_e6 data=''#;;longitude_e6 data=''#;;forecast_date data='2011-11-21'#;;current_date_time data='1970-01-01 00:00:00 +0000'#;;unit_system data='US'#;;#forecast_information;;current_conditions;;condition data='Fog'#;;temp_f data='27'#;;temp_c data='-3'#;;humidity data='Humidity: 100%'#;;icon data='#ig#images#weather#fog.gif'#;;wind_condition data='Wind: NE at 1 mph'#;;#current_conditions;;forecast_conditions;;day_of_week data='Mon'#;;low data='32'#;;high data='41'#;;icon data='#ig#images#weather#mostly_sunny.gif'#;;condition data='Mostly Sunny'#;;#forecast_conditions;;forecast_conditions;;day_of_week data='Tue'#;;low data='30'#;;high data='39'#;;icon data='#ig#images#weather#mostly_sunny.gif'#;;condition data='Mostly Sunny'#;;#forecast_conditions;;forecast_conditions;;day_of_week data='Wed'#;;low data='30'#;;high data='39'#;;icon data='#ig#images#weather#sunny.gif'#;;condition data='Clear'#;;#forecast_conditions;;forecast_conditions;;day_of_week data='Thu'#;;low data='32'#;;high data='39'#;;icon data='#ig#images#weather#fog.gif'#;;condition data='Fog'#;;#forecast_conditions;;#weather;;#xml_api_reply;


der fehler liegt hier irgendwo denke ich:

      IC=`echo $(cat /tmp/lcdwetter.list) | cut -f 99 -d ';'`
      mztemp=`grep 'temp_c' /tmp/lcdwetter.list | cut -d';' -f1`

die zeile in der lcdwetter.list enthält die daten:
;temp_c data='0'#;
die übergeben werden müssen.

Wer kennt sich da besser aus und kann mit helfen das es wieder seine arbeit tut?




Antworten zu script / pluging hilfe:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

willst Du uns ärgern?  >:(

Wo der Fehler in der Zeile liegt und wie er behoben werden kann, wurde Dir bereits in Deinem anderen Thread geschrieben:
http://www.computerhilfen.de/hilfen-6-382438-0.html

Die grep-Zeile ist noch immer falsch, dadurch bekommt expr keinen  sinnvollen Wert -> Folge: Syntaxfehler.

Den Rest vom Script sehe ich mir jetzt mal nicht genauer an.

selbst nach dem ändern ist der fehler da.
ich habe versucht mal in der console die zeile einzugeben.
egrep kennt er nicht.
und bei der zeile von euch:

grep 'temp_c data' /tmp/lcdwetter.list | cut -d"'" -f2`

gibt er die gesamte xml zeile aus.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die xml-Datei besteht aus einer einzigen Zeile, damit haut's so erstmal nicht hin.

Den (momentan)richtigen Wert von -3 liefert

grep 'temp_c data' /tmp/lcdwetter.list | cut -d"'" -f36

Teste das mal, ob dann der Rest auch klappt.

allerdings ist die grep-Zeile dann etwas unsinnig, sinnvoller wäre dann:

`cat lcdwetter.list | cut -d"'" -f36`

Wahrscheinlich war die XML-Datei beim alten Anbieter anders aufgebaut.  

« Letzte Änderung: 21.11.11, 17:03:35 von SQL-Freak »

danke für deine hilfe, leider funktionieren beide Lösungen nicht.
aber dein hinweiß das es eine zeile ist hatte mich auf die idee gebracht mit den sed befehl absätze einzubauen. also eine art Enter nach jeder zeile.

Kannst du mir evt. folgen und könnte das klappen?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Gute Idee  :)

...in der Hoffnung, dass nicht noch mehr Abweichungen zur alten XML sind.
 ;)
was ich befürchte, wenns bei Dir im Ganzen nicht funktioniert hat, da der "Ausschnitt" bei mir funktioniert.

« Letzte Änderung: 21.11.11, 19:08:42 von SQL-Freak »

also der stand ist, mit der zeile leuft es:

mztemp=`grep -i -n 'temp_c' /tmp/lcdwetter.list | cut -d'"' -f36`

es wird damit richtig ausgelesen und übergeben.

Vielleicht kann mir jemand ein tip geben, ich versuche nun das symbol dafür auch mit auszulesen.
in der xml datei wär das die stelle:

;icon data="#ig#images#weather#sunny.gif"#;

mit den sed befehl änder ich das gif in png um was auch klappt.

der nächste schritt ist mit der zeile:

IC=`grep -i -n 'icon' /tmp/lcdwetter.list | cut -d'#' -f37`
was auch in der xml richtig ausliest und die ausgabe:

sunny.png

macht, nur leider komme ich jetzt nicht mehr weiter, wie muß ich das übergeben das es aus der datei mybmps.tar.gz entpackt wird?
bzw. bin ich auf den richtigen weg?

hallo

hat sich alles erledig, ich hab das script zum laufen gebracht.

Normalerweise zeigt man hier WIE !
Um auch anderen zu helfen  ::):(


« Wie lädt man Wine runter?Ubuntu: SSD mit Ubuntu ? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Linux
Linux bezeichnet ein kostenloses Betriebssystem, das als Open Source verfügbar ist. Die erste Version entstand 1991 und wurde von dem Finnen Linus Torvalds aus dem S...

Auslagerungsdatei
Die Auslagerungsdatei, auch bekannt als virtueller Speicher, ist ein wichtiges Element im Windows-Betriebssystem. Sie dient als Erweiterung des physischen Arbeitsspeicher...

Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...