Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ELV-WD1 to HTML

4 views
Skip to first unread message

Horst Felder

unread,
Apr 11, 2012, 6:29:56 AM4/11/12
to
Hallo!

Dank eurer Hilfe habe ich jetzt ein funktionierendes Script
geschrieben um die Daten aus dem ELV-WD1-Wetter-Sensor auszulesen und
in meine private Wetterseite (nicht online) zu schreiben.

Aufgabe erledigt!

Ich lerne aber gerne dazu und mich interessieren eure verschiedenen
Herangehensweisen...

Daher die Frage: Kann man das Script kürzer und/oder eleganter
schreiben?

---------------------------hier-bitte-abbeißen------------------------
#!/bin/bash

stty -F /dev/ttyUSB0 9600 cs8 raw -cstopb -parity -icanon -hupcl min
0 time 10 tail -f /dev/ttyUSB0 |
while read -t 300 zeile; do
bodent1=`echo $zeile | awk -F';' '{print $5}'`
bodent2=`echo $zeile | awk -F';' '{print $6}'`
kellert=`echo $zeile | awk -F';' '{print $8}'`
kellerf=`echo $zeile | awk -F';' '{print $16}'`
gartent=`echo $zeile | awk -F';' '{print $20}'`
gartenf=`echo $zeile | awk -F';' '{print $21}'`
wind=`echo $zeile | awk -F';' '{print $22}'`
regenmenge=`echo $zeile | awk -F';' '{print $23}'`
regen=`echo $zeile | awk -F';' '{print $24}'`
cp '/home/horst/html/HorstsWetterDienst/gartenwetter.html'
'/home/horst/html/HorstsWetterDienst/gartenwetter-1.html' replace
'$bodent1' $bodent1 '$bodent2' $bodent2 '$kellert' $kellert
'$kellerf' $kellerf '$gartent' $gartent '$gartenf' $gartenf '$wind'
$wind '$regenmenge' $regenmenge '$regen' $regen --
'/home/horst/html/HorstsWetterDienst/gartenwetter-1.html' done
---------------------------hier-bitte-abbeißen------------------------

Einen schönen Tag noch!

--
Mit freundlichen Grüßen
Horst Felder - www.flohheim.de
GNU/Linux; damit ich auch morgen noch vernünftig arbeiten kann!

Horst Felder

unread,
Apr 11, 2012, 8:07:58 AM4/11/12
to
Hallo!

Hupps! Ein Problem habe ich noch...

Habe gerade das Script über "Einstellungen/Startprogramme" mit einem
einfachen "/home/horst/bin/bin/Wetter/wd1tohtml.sh" in den
Autostartordner (Gnome2.32/Ubuntu 10.04) gelegt und das System neu
gestartet...

Da tut sich aber jetzt nix... was mache ich falsch/was muss ich
beachten, wenn ich ein Script mit "Einstellungen/Startprogramme"
automagisch starten will?

Werner Flamme

unread,
Apr 11, 2012, 8:19:32 AM4/11/12
to
Horst Felder [11.04.2012 14:07]:
> Hallo!
>
> Hupps! Ein Problem habe ich noch...
>
> Habe gerade das Script über "Einstellungen/Startprogramme" mit einem
> einfachen "/home/horst/bin/bin/Wetter/wd1tohtml.sh" in den
> Autostartordner (Gnome2.32/Ubuntu 10.04) gelegt und das System neu
> gestartet...
>
> Da tut sich aber jetzt nix... was mache ich falsch/was muss ich
> beachten, wenn ich ein Script mit "Einstellungen/Startprogramme"
> automagisch starten will?
>
> Einen schönen Tag noch!
>

Mag es vielleicht einen Pfad haben, den es sonst nicht hat?

#!/bin/bash
export PATH=/usr/bin:/bin:/usr/local/bin:/home/horst/bin
[...und dann wie gehabt...]

Aber mit Gnomen kenne ich mich nicht aus. Ist das ein Tippfehler beim
Pfad (/home/horst/bin/bin/) oder hast Du wirklich ein bin-Verzeichnis im
bin-Verzeichnis?

Der "replace"-Befehl gehört lt. meiner Manpage zu MySQL, das Script muss
also nicht immer funktionieren ;-) Das Ersetzen geht auch mit sed, das
ist verbreiterter ;-)

sed "s|\$bodent1|$bodent1|g" usw. <
'/home/horst/html/HorstsWetterDienst/gartenwetter.html' >
'/home/horst/html/HorstsWetterDienst/gartenwetter-1.html'

würde auch das "cp" ersparen, aber ob das eleganter ist? Evtl. kannst Du
mit Bash-Arrays arbeiten, um die 9 Einzelzuweisungen durch eine
for-Schleife erledigen zu lassen, aber ob das eleganter ist?

Gruß
Werner
--

Horst Felder

unread,
Apr 12, 2012, 4:16:22 AM4/12/12
to
Hallo Werner!

Werner Flamme <werner...@ufz.de> schrieb:
> > Da tut sich aber jetzt nix... was mache ich falsch/was muss ich
> > beachten, wenn ich ein Script mit "Einstellungen/Startprogramme"
> > automagisch starten will?
[...]
> #!/bin/bash
> export PATH=/usr/bin:/bin:/usr/local/bin:/home/horst/bin
> [...und dann wie gehabt...]

Sehe ich gleich mal an...

> Der "replace"-Befehl gehört lt. meiner Manpage zu MySQL, das Script
> muss also nicht immer funktionieren ;-) Das Ersetzen geht auch mit
> sed, das ist verbreiterter ;-)
>
> sed "s|\$bodent1|$bodent1|g" usw. <
> '/home/horst/html/HorstsWetterDienst/gartenwetter.html' >
> '/home/horst/html/HorstsWetterDienst/gartenwetter-1.html'
>
> würde auch das "cp" ersparen, aber ob das eleganter ist?

Also ich finde schon... hört sich zumindest so an... :)

Super, das probiere ich direkt mal aus...

> Evtl. kannst Du mit Bash-Arrays arbeiten, um die 9 Einzelzuweisungen
> durch eine for-Schleife erledigen zu lassen, aber ob das eleganter
> ist?

Äh, da muss ich mal nachschlagen wie das geht...

Vielen Dank, Werner, für deine hilfreichen Tipps! :)

Einen schönen Tag noch!

> Gruß
> Werner

Bernd Hohmann

unread,
Apr 12, 2012, 5:07:10 AM4/12/12
to
Am 11.04.2012 12:29, schrieb Horst Felder:

> Daher die Frage: Kann man das Script kürzer und/oder eleganter
> schreiben?

Du könntest die auszulesenden Werte in einer separaten Datei
"sensors.lst" definieren.

bodent1,5
bodent2,6
....
regen,23

# $line enthält zeile aus /dev/ttyUSB0
cat sensors.lst | while read sensors; do
parm1=$(echo $sensors | cut -d"," -f1) # variablenname in html
parm2=$(echo $sensors | cut -d"," -f2) # position in $line
value=$(echo $line | cut -d";" -f$param2) # wert holen
replace '$($param1)' $value gartenwetter.html
done

Das mit '$($param1)' funktioniert so mit sicherheit nicht, müsste ich
erstmal ausprobieren wie man in Bash dort agieren muss.

Bernd

Werner Flamme

unread,
Apr 12, 2012, 5:16:44 AM4/12/12
to
Bernd Hohmann [12.04.2012 11:07]:
ich würde den Befehl als

replace "'$param1'" $value gartenwetter.html

schreiben. Der String-Delimiter ist dann "", und innerhalb dieser
Gänsehufe werden Variablen ersetzt. Die '' sind dann keine Delimiter
(innerhalb deren gar nichts ersetzt wird), sondern Zeichen wie alle
anderen auch.

Gruß
Werner
--

0 new messages