Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
23.04.2021, 19:27:39

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
Statistiken
  • Beiträge insgesamt: 730838
  • Themen insgesamt: 58943
  • Heute online: 618
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Conky Sammelthread - Alles rund um Conky - Fragen, Probleme, Anregungen !  (Gelesen 47343 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Hallo, ich brauche mal wieder eure Hilfe.
Mit einem Bashscript
#!/bin/bash
cp ~/corona.txt ~/corona_gestern.txt
sleep 5s
kopiere ich eine als Text gespeicherte CSV-Datei corona.txt und speichere sie mit neuem Namen corona_gestern.txt in Home.
Ich möchte damit mein Corona-Conky
conky.config = {
--## Settings ###
background = true,
cpu_avg_samples = 1,
default_bar_width = 200, default_bar_height = 10,
default_graph_width = 200, default_graph_height = 100,
diskio_avg_samples = 10,
double_buffer = true,
extra_newline = false,
if_up_strictness = 'address',
net_avg_samples = 1,
no_buffers = true,
temperature_unit = 'celsius',
text_buffer_size = 2048,
short_units = true,
update_interval = 7200,
--## End Settings ###
--## Position ###
alignment = 'top_right',
gap_x = 0,
gap_y = 20,
minimum_width = 375,
maximum_width = 375,
    minimum_height = 100,
--## End Position ###
--## Borders ###
border_inner_margin = 0,
border_outer_margin = 10,
border_width = 0,
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
--## End Borders ###
--## Window ###
own_window = true,
own_window_argb_value = 102,
own_window_argb_visual = true,
own_window_colour = '#000000',
own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below',
    own_window_type = 'desktop',
--## End Window ###
--## Font ###
max_text_width = 0,
override_utf8_locale = true,
uppercase = false,
use_spacer = 'none',
use_xft = true,
font = 'ubuntu:size=8',
xftalpha = 0.9,
--## End Font ###
--## Defining Colors ###
default_color = 'DeepSkyBlue',
color1 = 'Yellow',
--## End Color ###
};

conky.text = [[
${exec ~/.conky/corona_copy.sh}
${execi 3600 wget ‐‐continue ‐‐timestamping -O '/home/sonny/corona.txt' 'https://www.apps.nlga.niedersachsen.de/corona/download.php?csv'}
${color1}${font DejaVu Sans Condensed :Bold:size=9}CORONA [Gestern]${goto 140}  HK   (Neu) ${goto 220}  Nds  ${goto 280}(Neu)    DE
Gesamtfälle: ${goto 150}${execi 3600 awk -F \; '/Heidekreis/{print $4}' /home/sonny/corona.txt} ${goto 180} (${execi 3600 awk -F \; '/Heidekreis/{print $6}' /home/sonny/corona.txt}) ${goto 230}${execi 3600 awk -F \; '!/^id/{sum+=$4}END{print sum}' /home/sonny/corona.txt}  ${goto 285} (${execi 3600 awk -F \; '!/^id/{sum+=$6}END{print sum}' /home/sonny/corona.txt})
Todesfälle:${goto 150}${execi 3600 awk -F \; '/Heidekreis/{print $7}' /home/sonny/corona.txt} ${goto 180} (${execi 3600 awk -F \; '/Heidekreis/{print $8}' /home/sonny/corona.txt})  ${goto 230}${execi 3600 awk -F \; '!/^id/{sum+=$7}END{print sum}' /home/sonny/corona.txt} ${goto 285} (${execi 3600 awk -F \; '!/^id/{sum+=$8}END{print sum}' /home/sonny/corona.txt})
letzte 7 Tage: ${goto 150}${execi 3600 awk -F \; '/Heidekreis/{print $10}' /home/sonny/corona.txt}   ${goto 230}${execi 3600 awk -F \; '!/^id/{sum+=$10}END{print sum}' /home/sonny/corona.txt}
7-Tagesinzidenz:${goto 150}${execi 3600 awk -F \; '/Heidekreis/{printf $11}' /home/sonny/corona.txt} [${execi 3600 awk -F \; '/Heidekreis/{printf $11}' /home/sonny/corona_gestern.txt}] ${goto 230}${execi 3600 awk -F \; '!/^id/{sum+=$10/7993608*100000}END{printf("%5.1f\n", sum)}' /home/sonny/corona.txt} [${execi 3600 awk -F \; '!/^id/{sum+=$10/7993608*100000}END{printf("%5.1f\n", sum)}' /home/sonny/corona_gestern.txt}]      ${execi 21600 wget "https://www.corona-in-zahlen.de/weltweit/deutschland/" -O - | sed -n '232p' | cut -c 65-68}
${hr 1}
Impfquote:${goto 230} ${execi 21600 wget "https://www.corona-in-zahlen.de/bundeslaender/niedersachsen/" -O - | sed -n '299p' | cut -c 65-69}${goto 330} ${execi 21600 wget "https://impfdashboard.de/" -O - | sed -n '57p' | cut -c 32-34}
]];
so darstellen, dass ich neben den aktuellen Daten auch einige Vortagswerte habe.
Das klappt leider nicht. Wie man auf Bild 1 sieht, werden anstatt der Vortagswerte identische Werte bei der 7-Tagesinzidenz eingetragen.
Des Weiteren wird in unregelmäßigen Abständen die Datei corona_gestern.txt geleert, Bild 2.
Danke für eure Hilfe.


Hallo, ich brauche mal wieder eure Hilfe.
Ich kann dein Conky weder lesen noch nachvollziehen. Ich habe 18 execi gezählt und ein paar wget, die natürlich alle in Fehler laufen können. Fehlerhandling habe ich nicht gesehen.
Ich löse so etwas anders. Ich schreibe ein Script, welches alles zusammenstellt inkl. Fehlerhandling und rufe nur das in Conky auf. Das ist dann auch ohne Conky testbar. Das würde ich dir auch empfehlen.

Bswp.
${execi 3600 ~/Conky/corona.sh}
oder
${execpi 1200 ~/Conky/corona.py}

Volle Zustimmung. Im externen Skript die aktuellen Daten in eine temporäre Datei downloaden, kontrollieren ob es funktionierte und ob sich die Daten von corona.txt unterscheiden und dann ggf. updaten (corona.txt nach corona_gestern.txt und danach die temporären Daten nach corona.txt verschieben). Dann erst den Conky auf die beiden Datensätze ansetzen.

@Sonny37
Hier ein erstes Beispiel. Ich hab mich an Nessies Lösungsskizze bedient. Andere Lösungen sind natürlich auch möglich.
#!/usr/bin/bash
#
# 7-Tage-Inzidenz
#
# conky.text = [[
# 7-Tage-Inzidenz ${hr}
# ${execpi 21600 ~/.conky/corona.sh}
# ]];

BI_Inzidenz=$(curl -s https://www.corona-in-zahlen.de/landkreise/sk%20bielefeld/ | sed -n '/Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')
NRW_Inzidenz=$(curl -s https://www.corona-in-zahlen.de/bundeslaender/nordrhein-westfalen/ | sed -n '/Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')
DE_Inzidenz=$(curl -s https://www.corona-in-zahlen.de/weltweit/deutschland/ | sed -n '/Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')

printf "%s" "$BI_Inzidenz" >corona_jetzt.txt
printf "\t%s" "$NRW_Inzidenz" >>corona_jetzt.txt
printf "\t%s" "$DE_Inzidenz" >>corona_jetzt.txt

if [ ! -f corona_heute.txt ] || [ ! -f corona_gestern.txt ]; then
    cp corona_jetzt.txt corona_heute.txt
    cp corona_jetzt.txt corona_gestern.txt
else
    if ! diff -q corona_jetzt.txt corona_heute.txt >/dev/null; then
        cp corona_heute.txt corona_gestern.txt
        cp corona_jetzt.txt corona_heute.txt
    fi
fi

printf "Bielefeld\${goto 165}%5.1f [%5.1f]\n" "$(cut -f1 corona_heute.txt)" "$(cut -f1 corona_gestern.txt)"
printf "Nordrhein-Westfalen\${goto 165}%5.1f [%5.1f]\n" "$(cut -f2 corona_heute.txt)" "$(cut -f2 corona_gestern.txt)"
printf "Deuschland\${goto 165}%5.1f [%5.1f]\n" "$(cut -f3 corona_heute.txt)" "$(cut -f3 corona_gestern.txt)"

Danke für eure Hilfe. Werde das nächste Woche mal umsetzen und ausprobieren, da ich zum Geburtstag meiner Enkelin bin.

@Sonny37
Hier deine Werte für den Heidekreis (heidekreis.sh). Das Skript kannst du einfach mal im Terminal ausführen. Die Ausgabe kannst du für dein Conky mit gotos (bspw. "\${goto 150}") anpassen.
#!/usr/bin/bash
#
# Heidekreis, Niedersachsen, Deutschland
#
# conky.text = [[
# ${execpi 21600 ~/.conky/heidekreis.sh}
# ]];

# Fälle gesamt (neu)
# Todesfälle gesamt (neu)
# Fälle vergangene 7 Tage
CSV_datei=$(curl -s https://www.apps.nlga.niedersachsen.de/corona/download.php?csv)
HK_gesamt=$(echo "$CSV_datei" | awk -F \; '/Heidekreis/{print $4}')
HK_gesamt_neu=$(echo "$CSV_datei" | awk -F \; '/Heidekreis/{print $6}')
NDS_gesamt=$(echo "$CSV_datei" | awk -F \; '!/^id/{sum+=$4}END{print sum}')
NDS_gesamt_neu=$(echo "$CSV_datei" | awk -F \; '!/^id/{sum+=$6}END{print sum}')
HK_tod_gesamt=$(echo "$CSV_datei" | awk -F \; '/Heidekreis/{print $7}')
HK_tod_gesamt_neu=$(echo "$CSV_datei" | awk -F \; '/Heidekreis/{print $8}')
NDS_tod_gesamt=$(echo "$CSV_datei" | awk -F \; '!/^id/{sum+=$7}END{print sum}')
NDS_tod_gesamt_neu=$(echo "$CSV_datei" | awk -F \; '!/^id/{sum+=$8}END{print sum}')
HK_sieben_tage=$(echo "$CSV_datei" | awk -F \; '/Heidekreis/{print $10}')
NDS_sieben_tage=$(echo "$CSV_datei" | awk -F \; '!/^id/{sum+=$10}END{print sum}')

# 7-Tage-Inzidenz [vortag]
HK_inzidenz=$(curl -s https://www.corona-in-zahlen.de/landkreise/lk%20heidekreis/ | sed -n '/<p class="card-text">Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')
NDS_inzidenz=$(curl -s https://www.corona-in-zahlen.de/bundeslaender/niedersachsen/ | sed -n '/<p class="card-text">Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')
DE_inzidenz=$(curl -s https://www.corona-in-zahlen.de/weltweit/deutschland/ | sed -n '/<p class="card-text">Neuinfektionen\ (7\-Tage\-Inzidenz)/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)<\/b>.*$/\1/')

printf "%s" "$HK_inzidenz" >corona_jetzt.txt
printf "\t%s" "$NDS_inzidenz" >>corona_jetzt.txt
printf "\t%s" "$DE_inzidenz" >>corona_jetzt.txt

if [ ! -f corona_heute.txt ] || [ ! -f corona_gestern.txt ]; then
    cp corona_jetzt.txt corona_heute.txt
    cp corona_jetzt.txt corona_gestern.txt
else
    if ! diff -q corona_jetzt.txt corona_heute.txt >/dev/null; then
        cp corona_heute.txt corona_gestern.txt
        cp corona_jetzt.txt corona_heute.txt
    fi
fi

# Impfquote
NDS_impfquote=$(curl -s https://www.corona-in-zahlen.de/bundeslaender/niedersachsen/ | sed -n '/<p class="card-text">Impfquote/{g;1!p;};h' | sed -e 's/^.*<b>\(.*\)%<\/b>.*$/\1/')
DE_impfquote=$(curl -s https://www.corona-in-zahlen.de/impfungen/ | sed -n '/bundesweiten Impfquote von /p' | sed -e 's/^.*bundesweiten Impfquote von \(.*\)% (Stand.*$/\1/')

# Ausgabe HK NDS DE
printf "CORONA\t\t\t    Heidekreis  Niedersachsen    Deutschland\n"
printf "Fälle gesamt (neu)\t%6d (%5d) %6d (%5d)\n" "$HK_gesamt" "$HK_gesamt_neu" "$NDS_gesamt" "$NDS_gesamt_neu"
printf "Todesfälle gesamt (neu)\t%6d (%5d) %6d (%5d)\n" "$HK_tod_gesamt" "$HK_tod_gesamt_neu" "$NDS_tod_gesamt" "$NDS_tod_gesamt_neu"
printf "Fälle 7 Tage\t\t%6d         %6d\n" "$HK_sieben_tage" "$NDS_sieben_tage"
printf "7-Tage-Inzidenz [alt]\t%6.1f [%5.1f] %6.1f [%5.1f] %6.1f [%5.1f]\n" "$(cut -f1 corona_heute.txt)" "$(cut -f1 corona_gestern.txt)" "$(cut -f2 corona_heute.txt)" "$(cut -f2 corona_gestern.txt)" "$(cut -f3 corona_heute.txt)" "$(cut -f3 corona_gestern.txt)"
printf "Impfquote\t\t                      %6.2f%%        %6.2f%%" "$NDS_impfquote" "$DE_impfquote"
printf "\n"

@pinky

Danke, das funktioniert perfekt. Ich muss nur die Formatierung der Ausgabe im Conky etwas anpassen.

Danke, das funktioniert perfekt. Ich muss nur die Formatierung der Ausgabe im Conky etwas anpassen.
Das freut mich. Richtig, die Ausgabe musst du anpassen. Wenn du den Aufruf in Conky mit execpi machst, werden auch Conky Anweisungen in der Ausgabe interpretiert.
Auf Fehlerbehandlung bei bspw. Netzausfall oder bei sed - falls sich Webseiten ändern - habe ich verzichtet. Das sollte aber für den Privatgebrauch auch OK sein.

Hallo,
ich könnte noch einmal eure Hilfe bei einem weiteren Conky-Problem gebrauchen.
Mit dem Befehl
${texeci 900 curl -s "wttr.in/hademstorf_Niedersachsen?format=+%c+%t+%w+%P+%h\n"}lass ich mir das Wetter in Conky anzeigen.

Wie ihr im Bild seht, wird als erstes Zeichen ein Rechteck ausgegeben, während im Terminal dafür ein Wettersymbol angezeigt wird. Das Rechteck wird  nur im Fall von strahlendem Sonnenschein durch die Sonne ersetzt.

Und wo brauchst Du Hilfe?

Ich möchte gerne im Conky die Wettersymbole anstelle des Rechtecksymbols angezeigt haben.

Das liegt m.E. am benutzten Font, dem die entsprechenden Symbole fehlen. Ggf. hilft eine Font configuration wie hier https://github.com/chubin/wttr.in beschrieben. Ich weiß es aber nicht.

Eine andere Option ist vielleicht auch diesmal ein kleines Skript für dein Conky, welches zuerst das Wetter als Gesamtbild herunterlädt http://wttr.in/hademstorf_Niedersachsen.png?format=+%c+%t+%w+%P+%h und dieses schließlich als ${image ...} ausgibt.

@pinky
Hallo,, das habe ich schon alles durchprobiert. Im Terminal wird der Monospace Font benutzt. Den habe ich dann auch im Conky probiert. Ebenso Noto oder Deja Vu Fonts und viele andere. Fonts aus dem Internet heruntergeladen, welche die Fontcodes U+26xx bzw. U+29xx beinhalten.
Kurios finde ich, dass die Sonne als einziges Symbol angezeigt wird.

Es wird nicht nur die Sonne dargestellt. Neben der Sonne habe ich hier noch eine Wolke. Aber andere Symbole fehlen trotzdem.
conky.text = [[
${font DejaVu Sans:size=24}
${curl de.wttr.in/hademstorf_Niedersachsen?format=+%c+%C+%t+%w+%P+%h 15}
]];

Eine weitere Option ist, die Wettersymbole lokal vorzuhalten, das textuelle Wetter auszuwerten und das passende lokale Wettersymbol an Conky auszuspielen.
« Letzte Änderung: 27.02.2021, 10:11:26 von pinky »

Zitat
Eine weitere Option ist, die Wettersymbole lokal vorzuhalten, das textuelle Wetter auszuwerten und das passende lokale Wettersymbol an Conky auszuspielen.
... und da bin ich am Ende meiner Kenntnisse...