Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
24.07.2021, 22:35:50

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25776
  • Letzte: joba48
Statistiken
  • Beiträge insgesamt: 746689
  • Themen insgesamt: 60054
  • Heute online: 375
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

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

0 Mitglieder und 1 Gast betrachten dieses Thema.

Eine weitere Option ist, die Wettersymbole lokal vorzuhalten, das textuelle Wetter auszuwerten und das passende lokale Wettersymbol an Conky auszuspielen.

Genial.

Man lege sich eine Bildchensammlung an, z.B. "Leicht Bewölkt.gif", "Leichter Nieselregen.gif", u.s.w. (als Namen den Text aus der Wetterseite benutzen), gerne animiert.

Dann in einem Skript die Wetterdaten laden, in der ersten Zeile den Text für den Bildnamen (und noch die überflüssigen Leerzeichen rausfiltern):
wget -qO- 'de.wttr.in/hademstorf_Niedersachsen?format=+%C\n+%t+%w+%P+%h\n' | sed 's|^ *||;s| *$||' >Wetter.txt
Noch einen Link auf das passende Bildchen erzeugen (das Fehlerhandling spare ich mir jetzt mal):
ln -sf "$(sed -n '1p' Wetter.txt).gif" Wetter.gif
Jetzt kann der Conky immer "Wetter.gif" anzeigen, dass ja ein Link auf das passende Bildchen ist.

Als Fehlerhandling (kein passendes Wetterbildchen vorhanden) könnte man einen Link auf einen transparenten Punkt benutzen, so dass der Conky hier scheinbar nichts anzeigt.

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...

Hier ein Ansatz, der den JSON Response auswertet. Du benötigst lokal auf deiner Platte Bilder für die weatherCode Werte und auch für die winddir16Point Werte. Letzteres - die Windrichtung - kannst du gerne auch direkt ausgeben. Entweder hast du Bilder für alle Werte vorliegen, oder du musst die Werte auf deine verfügbaren Bilder "umrechnen" bzw. "mappen". Ich habe das nur angedeutet und nicht zu Ende geführt. Zur Orientierung über die möglichen Werte siehe https://github.com/chubin/wttr.in/blob/master/lib/constants.py. Außerdem musst du die Ausgabe für dein Conky wieder selbst gestalten.

Das Python Skript kannst du ohne Conky im Terminal ausführen.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# wetter.py

# pylint: disable=missing-docstring
# pylint: disable=invalid-name

import urllib.request
import json

def get_weather_image(weather_code):
    # FIXME Wettercodes auf Bilder "mappen"
    if weather_code in {"182", "185", "281", "284", "311", "314", "317", "350", "377"}:
        return "LightSleet.png"
    if weather_code in {"266", "293", "296"}:
        return "LightRain.png"
    return "Unknown.png"

def get_winddir_image(winddir_code):
    # FIXME Windrichtung auf Bilder "mappen"
    if winddir_code in {"N", "E", "S", "W", "NE", "NW", "SE", "SW", "NNE", "NNW", "SSE", "SSW", "ENE", "ESE", "WNW", "WSW"}:
        return winddir_code + ".png"
    return "Unknown.png"

response = None
try:
    response = urllib.request.urlopen("http://de.wttr.in/hademstorf_Niedersachsen?format=j1")
    weather = json.loads(response.read())
    #print(json.dumps(weather, indent=4))

    weatherCode = weather.get("current_condition")[0].get("weatherCode")
    temp_C = weather.get("current_condition")[0].get("temp_C")
    winddir16Point = weather.get("current_condition")[0].get("winddir16Point")
    windspeedKmph = weather.get("current_condition")[0].get("windspeedKmph")
    pressure = weather.get("current_condition")[0].get("pressure")
    humidity = weather.get("current_condition")[0].get("humidity")

    #print(weatherCode)
    print("${image ~/.conky/weather_images/" + get_weather_image(weatherCode) + " -p 0,8 -s 16x16}")
    print(temp_C + chr(176) + "C")
    #print(winddir16Point)
    print("${image ~/.conky/winddir_images/" + get_winddir_image(winddir16Point) + " -p 0,32 -s 16x16}")
    print(windspeedKmph + "km/h")
    print(pressure + "hPa")
    print(humidity + "%")
except IOError:
    print("Wetter nicht verfügbar")
finally:
    response.close()


In Conky dann:
# conky.text = [[
${execpi 900 ~/.conky/wetter.py}
]];

Diesmal im Prinzip vollständig. Alle weatherCodes sind "gemappt". "Fehlendes" + Zeichen vor der Temperatur ergänzt. Windrichtung ist "lediglich" übersetzt - sofern man das braucht. Du musst alle 19 genannten Bilder bereitstellen! Und vmtl. die Ausgabe positionieren.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
""" reads weather data from wttr.in - see https://github.com/chubin/wttr.in """

# pylint: disable=missing-function-docstring
# pylint: disable=invalid-name

import urllib.request
import json


def get_weather_image(weather_code):
    if weather_code in {"113"}:
        return "Sunny.png"
    if weather_code in {"116"}:
        return "PartlyCloudy.png"
    if weather_code in {"119"}:
        return "Cloudy.png"
    if weather_code in {"122"}:
        return "VeryCloudy.png"
    if weather_code in {"143", "248", "260"}:
        return "Fog.png"
    if weather_code in {"176", "263", "353"}:
        return "LightShowers.png"
    if weather_code in {"179", "362", "365", "374"}:
        return "LightSleetShowers.png"
    if weather_code in {"182", "185", "281", "284", "311", "314", "317", "350", "377"}:
        return "LightSleet.png"
    if weather_code in {"200", "386"}:
        return "ThunderyShowers.png"
    if weather_code in {"227", "320"}:
        return "LightSnow.png"
    if weather_code in {"230", "329", "332", "338"}:
        return "HeavySnow.png"
    if weather_code in {"266", "293", "296"}:
        return "LightRain.png"
    if weather_code in {"299", "305", "356"}:
        return "HeavyShowers.png"
    if weather_code in {"302", "308", "359"}:
        return "HeavyRain.png"
    if weather_code in {"323", "326", "368"}:
        return "LightSnowShowers.png"
    if weather_code in {"335", "371", "395"}:
        return "HeavySnowShowers.png"
    if weather_code in {"389"}:
        return "ThunderyHeavyRain.png"
    if weather_code in {"392"}:
        return "ThunderySnowShowers.png"
    return "Unknown.png"


WINDDIR_CODE_DICT = {"N": "N", "E": "O", "S": "S", "W": "W",
                     "NE": "NO", "NW": "NW", "SE": "SO", "SW": "SW",
                     "NNE": "NNO", "NNW": "NNW", "SSE": "SSO", "SSW": "SSW",
                     "ENE": "ONO", "ESE": "OSO", "WNW": "WNW", "WSW": "WSW"}


def get_winddir_de(winddir_code):
    if winddir_code not in WINDDIR_CODE_DICT:
        return "???"
    return WINDDIR_CODE_DICT[winddir_code]


response = None
try:
    response = urllib.request.urlopen(
        "http://de.wttr.in/hademstorf_Niedersachsen?format=j1")
    weather = json.loads(response.read())
    # print(json.dumps(weather, indent=4))

    weatherCode = weather.get("current_condition")[0].get("weatherCode")
    temp_C = weather.get("current_condition")[0].get("temp_C")
    winddir16Point = weather.get("current_condition")[0].get("winddir16Point")
    windspeedKmph = weather.get("current_condition")[0].get("windspeedKmph")
    pressure = weather.get("current_condition")[0].get("pressure")
    humidity = weather.get("current_condition")[0].get("humidity")

    # print(weatherCode)
    out = "${image ~/.conky/weather_images/" + \
        get_weather_image(weatherCode) + " -p 0,16 -s 16x16}${goto 24}"
    if not temp_C.startswith(("+", "-")):
        temp_C = "+" + temp_C
    out += temp_C + chr(176) + "C "
    # print(winddir16Point)
    out += windspeedKmph + "km/h aus " + get_winddir_de(winddir16Point) + " "
    out += pressure + "hPa "
    out += humidity + "%"
    print(out)
except IOError:
    print("Wetter nicht verfügbar")
finally:
    response.close()


Danke für eure Hilfe. Ich werde das probieren.

Hallo,
ich benötige schon wieder eure Hilfe. Im Corona-Heidekreis.sh Script (Antwort 470) werden seit ein paar Tagen keine Werte für die 7-Tage-Inzidenz für Deutschland angezeigt.
Bei Ausführung im Terminal erhalte ich folgenden Fehler:
heidekreis.sh: Zeile 53: printf:                 </b></p>: Ungültige Zahl.
7-Tage-Inzidenz [alt]   17,1 [ 20,6]   60,1 [62,2]    0,0 [  0,0]
Alle anderen Zahlen stimmen. Ich sage schon mal Danke!

[...] 7-Tage-Inzidenz für Deutschland [...]
Der Seitenquelltext hat sich geändert. Du hattest ursprünglich selbst wie folgt, die Zahl aus der Seite gelesen. Das kannst du wieder einsetzen.
DE_inzidenz=$(curl -s https://www.corona-in-zahlen.de/weltweit/deutschland/ | sed -n '234p' | cut -c 25-29)

Danke! Das war es.

Conky zeigte mir immer zu hohe und unterschiedliche Werte bei der Speichernutzung an zwischen free und mem (conky)
Obwohl schon no_buffers = true aktiviert war, auf "false" gesetzt war der Wert nochmal viel zu hoch inklusive Buffer.
Ich habe die Zeile in Conky jetzt geändert bzw. ersetzt von $mem in:
${exec free -h | grep 'Speicher' | cut -c 28-32} Jetzt wird alles korrekt angezeigt bei mir.
« Letzte Änderung: 18.03.2021, 23:08:18 von Hollex »

Conky Anzeige des Speicherbedarf der SWAP-Datei unter LM 19 und höher:

Habe mit Conky bisher die Speicherauslastung von /, /home und SWAP unter LM 18.3 angezeigt (siehe Bild).
Seit LM 19 benötigt man ja keine SWAP Partition mehr. Die wird durch eine SWAP Datei ersetzt.
Kann man unter Conky trozdem die Größe der SWAP-DATEI und deren Auslastung anzeigen lassen?
« Letzte Änderung: 21.03.2021, 12:53:23 von Benny136 »

Hallo,
meine alten Conky Daten wollen nicht mehr weil der neue Syntax gefordert wird.
Ich hatte immer eine "if" Abfrage laufen aber jetzt wird ein falsches Zeichen moniert.
TEXT
# Netzwerk
${font Ubuntu:size=12}${color1}Netzwerk$color$font --
${if_existing /proc/net/route eno1}#Anzeige Kabel
${downspeedgraph eno1 25,70 009bf9 e49c16}${alignr}${upspeedgraph eno1 25,70 009bf9 e50c16}
Down >> ${color1}${downspeed eno1}${alignr}${upspeed eno1}$color << Up
IPv4 (Extern)${alignr}${color2}${execi 300 wget http://checkip.dyndns.org/ -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'}$color
IPv4 (Intern LAN)${alignr}${color2}${addr eno1}$color
${else}
${if_existing /proc/net/route wls1}#Anzeige WLAN
${downspeedgraph wls1 25,70 009bf9 e49c16}${alignr}${upspeedgraph wls1 25,70 009bf9 e50c16}
Down >> ${color1}${downspeed wls1}${alignr}${upspeed wls1}$color << Up
IPv4 (Extern)${alignr}${color2}${execi 300 wget http://checkip.dyndns.org/ -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'}$color
IPv4 (Intern WLAN)${alignr}${color2}${addr wls1}$color
${else}${endif}${endif}
${execi 3600 speedtest-cli --simple}
wie muss das jetzt aussehen um mit der neuen Schreibweise
conky.text = [[
]];
hinzukommen. Irgendwie wird das If elseif endif nicht mehr akzeptiert. Hab auch bei Tante Google nichts gefunden. Den oberen Teil hab ich erfolgreich umgeschrieben, der der für das Aussehen verantwortlich ist, also das passt.
Gruß


Jo das geht irgendwie nicht.
bash: ./convert.lua: /usr/bin/lua: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

Du wirst Lua wohl noch installieren müssen:
https://wiki.ubuntuusers.de/Lua/

Danke das wars.  8)
Geht nun alles wieder. Schöne Ostern noch.