Posts by simonz

    Wenn der GPIO auf High reagieren soll, dann würde ich schon fast initial den internen Pullup auf False setzen oder auf None und den active_state angeben.

    https://gpiozero.readthedocs.io/en/stable/api_…italinputdevice

    Aber das ändert doch nichts daran, dass erst ein Wechsel des Zustands den Callback auslöst, oder? :conf:

    Quote

    when_activated

    The function to run when the device changes state from inactive to active.

    Gipo natürlich, den eintrag in der Userconfig ist auf dem Bild zusehen.

    Das Bild habe ich gesehen. Meine Frage war, ob der Draht am korrekten Pin steckt(e).
    Aufgrund der unterschiedlichen Nummerierungen gibt es da gerne mal Fehler...

    die auch im Plugin gelistet ist

    Da wäre dann wohl eher das Forum von Volumio bzw. dem verwendeten Plugin der richtige Ansprechpartner!

    Da hab ich den Standartpin 25 genommen

    Welchen Pin 25? Pin 25 oder GPIO25?



    Und nebenbei: In der Doku steht GPIO18 als Standard.

    Probieren würde ich es allerdings auch einmal (per Editieren der Datei) mit:

    Code
    [Desktop Entry]
    Type=Application
    Name=KeePassXC
    Icon=keepassxc
    Exec=/usr/bin/keepassxc --platform xcb %f

    Vielleicht erspart Dir das den Umweg über die Skript-Datei...


    Edit: Type=Application

    Edit2: Und wenn die Zeile "URL=..." raus ist, wird auch im Kontext-Menü "Eigenschaften - .desktop" der korrekte Inhalt des Befehls angezeigt...

    Beispiel mit KeepassXC:

    ~/Desktop/org.keepassxc.KeePassXC.desktop enthält nach Erzeugung wie oben beschrieben:

    Code
    [Desktop Entry]
    Type=Link
    Name=KeePassXC
    Icon=keepassxc
    URL=/usr/share/applications/org.keepassxc.KeePassXC.desktop

    Nach einer Änderung über die Einstellungen zum Nutzen eines eigenem Aufrufscripts (als Beispiel!):

    Code
    [Desktop Entry]
    Type=Link
    Name=KeePassXC
    Icon=keepassxc
    URL=/usr/share/applications/org.keepassxc.KeePassXC.desktop
    Exec=/home/pi/bin/keepassxc.sh

    Das neu hinzugekommene "Exec=" hat Vorrang vor der ursprünglichen Zeile "URL=", die auf die Auslieferungs-Desktop-Datei von KeepassXC verweist.

    Wo befindet sich die Datei .desktop?

    Die muss angelegt werden.

    1. Im Applikationsmenu das gewünschte Programm auswählen und mit rechter Maustaste darauf klicken
    2. "Zur Arbeitsfläche hinzufügen" anklicken
    3. Damit wird
      • ein Icon auf dem Desktop
      • und eine Datei programmname.desktop im Verzeichnis ~/Desktop/ angelegt
    4. das Icon kann in gewissen Grenzen über sein Kontextmenü "Eigenschaften" modifiziert werden...
    5. ... und die .desktop Datei kann editiert werden.

    Du könntest ein Script schreiben, welches die gewünschten Optionen enthält, z.B. keepassxc.sh:

    Bash
    #!/usr/bin/bash
    /usr/bin/keepassxc --platform xcb %f

    und dieses dann in der .desktop Verknüpfung eintragen/aufrufen.

    Nachtrag: Eventuell muss das %f noch ausgetauscht werden durch $1. Oder durch die verwendete DB-Datei.

    z.B.:

    Bash
    #!/usr/bin/bash
    kdb=${1:-~/meine-keepass-default.kdbx}
    /usr/bin/keepassxc --platform xcb "$kdb"

    Und Flameshot läuft nicht unter Wayland!

    Bash
    pi@pi5:~ $ flameshot 
    QStandardPaths: wrong permissions on runtime directory /run/user/1000, 0770 instead of 0700
    flameshot: error: Unable to detect desktop environment (GNOME? KDE? Sway? ...)
    flameshot: error: Hint: try setting the XDG_CURRENT_DESKTOP environment variable.
    flameshot: error: Kann Bereich nicht aufnehmen
    flameshot: error: Bereich kann nicht erfasst werden
    qt.qpa.wayland: Wayland does not support QWindow::requestActivate()

    Zumindest noch nicht. Siehe z.B. https://github.com/flameshot-org/flameshot/issues/2872

    das letzte habe ich nicht getestet, da mir die Bedeutung von -ff nicht klar ist und auch nix im Netz gefunden habe

    Dafür gibt es die man pages!

    Das hatte ich auch nicht als Vorwurf verstanden.

    Meiner Meinung nach gibt es da nichts zu "beobachten", sondern nur zu klären bzw. definieren.
    Die Code-Variationen machen jeweils genau das programmierte.

    Aber solange Du nicht klar schreibst, was Du genau mit "morgen um 12" meinst, kommen halt unterschiedliche Lösungen raus.
    Das habe ich aber nun schon zum dritten oder vierten Mal erklärt. Bald habe ich keine Lust mehr...

    Noch eine Ergänzung. (Ich habe mich animieren lassen und spiele heute auch mit der API rum.)

    Meine Begründung in #32 war "nicht ganz ok", aber das  + timedelta(days=1) in

    Python
           if (DateTime.utcfromtimestamp(day["dt"]) + timedelta(days=1)).hour == 12:   # UTC

    ist unnötig bzw. macht keinen Unterschied bei dieser Art der Ermittlung des passenden Datensatzes in einer Schleife.
    Jedenfalls drückt es so nicht "morgen" aus.

    Die Schleife läuft durch die Timestamps aus day["dt"] in 3-Stunden-Mess-Intervallen, bis der Erste mit 12:00 Uhr UTC gefunden wird.
    Und das ist der nächste 12:00Uhr-Eintrag, egal, ob es jetzt um 22:00 Uhr dann der morgen Mittag ist, oder ob morgen um 11:00 Uhr geprüft wird und es die 12:00 Uhr nur eine Stunde später, also "heute" ist. Es ist derselbe Termin.

    Jedenfalls sieht meine Schleife nun so aus:

    Python
    def get_forcast_index(response):
        for index, day in enumerate(response):
            dt = DateTime.fromtimestamp(day["dt"], tz=timezone.utc) 
            # print(dt)
            if dt.hour == 12:
                return index

    Zwei Kommentare zum Code aus #28 und Fehler aus #29:

    Erstens machen sich die unterschiedlichen Zeitzonen bemerkbar. OpenWeather ist UTC, wie Dennis89 schon schrieb, also 13:00 Uhr abfragen.

    Zweitens macht es doch Sinn, den nächsten Treffer auf 12:00/13:00 Uhr abzufragen, und nicht den von morgen 12:00. Denn dann würde eine Abfrage kurz nach Mitternacht zu weit vorgreifen. Zum Beispiel, wenn man jetzt gerade testet... ;)

    Also:

    Python
            if (DateTime.fromtimestamp(day["dt"])).hour == 13: