Ankündigung

Einklappen
Keine Ankündigung bisher.

Müllkalender in RGB LED

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Müllkalender in RGB LED

    Hallo zusammen,

    Ich habe an meiner Treppe entlang einen RGB LED Streifen platziert. Diesem würde ich gerne ein Upgrade verpassen indem ich ihn einen Tag vor der Leerung der Mülltonne in der Farbe der Mülltonne leuchten lasse. Die Leds würde ich über ein Python Skript ansteuern. Die Frage ist jetzt wie ich am schlausten die Kalendereinträge einlese. Bislang sehe ich drei Optionen:

    1) Kalenderdaten von Hand in python Skript reinhacken #jährlicher Aufwand
    2) Eine Fertige ICS einlesen #elegant da jährlicher Aufwand gering. Dafür mehr einmaliger Programmieraufwand.
    3) Den bereits vorhandenen (icloud) Müllkalender meiner smartvisu anzapfen #weiß jemand ob das geht?

    ich freue mich über Rückmeldung wie ich den Kalender am besten integriere, sowie Räder und Funktionen, die bereits erfunden wurden und bei dem Vorhaben nützlich sein könnten.

    Das fertige Skript stelle ich dann natürlich hier zur Vefügung sofern mir das Vorhaben gelingt.

    Grüße
    Simon

    #2
    Hallo Simon

    Warum nimmst du nicht das ical-plugin??

    Kommentar


      #3
      Warum nimmst du nicht das ical-plugin??
      Perfekt, ich glaub genau das habe ich gesucht. Danke Dir

      Kommentar


        #4
        So hab jetzt mal angefangen das Skrip zu schreiben. Funktioniert aber leider noch nicht. Kann mir einer helfen, wie ich meine python Skripe debuggen kann? Würde mir gerne mal Zwischenwerte anschauen, oder prüfen, ob eine if Funktion aufgerufen wird.

        Folgendes habe ich versucht um mein Skript zu debuggen:

        1) Mit python3 smarthome.py -d
        2) Mit der Shell (Putty) das Skript starten. Dabei bekomme ich die Fehlermeldung "NameError: name 'sh' is not defined"

        Hier noch der Code soweit:

        Code:
        #!/usr/bin/env python3
        # muellkalender_rgb.py
        
        Muellcheck = sh.ical('http://lubiag.de/Downloads/Abfuhrkalender-Gaissach-2019.ics',delta = 3, offset = 1)
        
        Papier = 'Papierabfall'
        Restmuell = 'Restabfall'
        
        if Papier in Muellcheck:
            sh.EG.Wohnkueche.Licht.RGB.R(0)
            sh.EG.Wohnkueche.Licht.RGB.G(255)
            sh.EG.Wohnkueche.Licht.RGB.B(0)
            
        if Restmuell in Muellcheck:
            sh.EG.Wohnkueche.Licht.RGB.R(255)
            sh.EG.Wohnkueche.Licht.RGB.G(0)
            sh.EG.Wohnkueche.Licht.RGB.B(0)
            
        if len(Muellcheck) == 0:
            sh.EG.Wohnkueche.Licht.RGB.R(0)
            sh.EG.Wohnkueche.Licht.RGB.G(0)
            sh.EG.Wohnkueche.Licht.RGB.B(255)
        Indem Fall würde ich einfach mal gerne wissen, was in der Variablen "Muellcheck" steht. Wie kann ich mir den Inhalt am einfachsten anzeigen lassen?


        Kommentar


          #5
          Du kannst ganz einfach "print(Muellcheck)" an die entsprechenden Stellen schreiben. Das schreibt den Inhalt ganz simple auf die Console.

          Kommentar


            #6
            Zitat von thesing Beitrag anzeigen
            Du kannst ganz einfach "print(Muellcheck)" an die entsprechenden Stellen schreiben. Das schreibt den Inhalt ganz simple auf die Console.
            Genau das wäre perfekt. Wenn ich aktuell versuche das Skript über die Konsole (Putty) laufen zu lassen, wird das Objekt sh nicht gefunden. Vermutlich mache ich da was falsch. Ich gebe "python3 muellkalender_rgb.py" in die Konsole ein und erhalte:
            Code:
            Name_Error: name 'sh' is not definded
            Über das smarthome NG backend kann ich das Skript zumindest laufen lassen aber da erhalte ich eben keine print Werte
            Zuletzt geändert von Simml; 22.01.2019, 07:22.

            Kommentar


              #7
              Du musst es in shng laufen lassen. Mach dort statt print ein logger.info, dann bekommst du die Rückmeldung im smarthome-details.log
              Falls nicht, füg noch ein
              Code:
              logics.muellkalender_rgb:
                      handlers: [shng_details_file]
                      level: DEBUG
              ins etc/logging.yaml

              Der Logikname muss natürlich muellkalender_rgb sein. Am besten ist, du fügst das gleich in etc/logics.yaml:
              Code:
              muellkalender_rgb:
                  filename: muellkalender_rgb.py

              Kommentar


                #8
                Ich starte für zum Debuggen shNG immer mit -d auf der console. Dann sieht man auch die print()-Anweisungen.

                Kommentar


                  #9
                  Smarthome.py -d ist ein möglicher Weg zum Debugging, aber bei weitem nicht der Beste. Über eine Konfiguration im loggin.yaml kann man sehr filigran einstellen, aus welchen Plugins, Logiken oder auch libs Debug Einträge geloggt werden sollen. Dann gehen die gesuchten Informationen nicht in der gesamten Flut der Debug Ausgaben unter.
                  Viele Grüße
                  Martin

                  Kommentar


                    #10

                    Danke für die Rückmeldungen.
                    Konnte Dank eurer Hilfen große Fortschritte erzielen. Der erste Test war erfolgreich. Morgen wird bei uns Papier geleert und siehe da, die LEDs leuchten grün.
                    Hier wie versprochen der Code dazu:

                    #!/usr/bin/env python3
                    # muell_to_rgb.py
                    if sh.EG.Eingang.Licht() == 1:
                    Muellcheck = sh.ical('http://lubiag.de/Downloads/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                    print("Beginn Müllcheck")
                    StringMuellcheck = str(Muellcheck)
                    sh.EG.Eingang.RGB.R
                    if "Papier" in StringMuellcheck:
                    #Farbe grün
                    print('Papierabfall')
                    sh.EG.Eingang.RGB.R(0)
                    sh.EG.Eingang.RGB.G(255)
                    sh.EG.Eingang.RGB.B(0)

                    if "Restabfall" in StringMuellcheck:
                    #Farbe weiss
                    print('Restmüll')
                    sh.EG.Eingang.RGB.R(255)
                    sh.EG.Eingang.RGB.G(255)
                    sh.EG.Eingang.RGB.B(255)

                    if "Bioabfall" in StringMuellcheck:
                    #Farbe braun
                    print('Bioabfall')
                    sh.EG.Eingang.RGB.R(87)
                    sh.EG.Eingang.RGB.G(37)
                    sh.EG.Eingang.RGB.B(4)

                    if "Verpackungstonne" in StringMuellcheck:
                    #Farbe gelb
                    print('Verpackungstonne')
                    sh.EG.Eingang.RGB.R(255)
                    sh.EG.Eingang.RGB.G(255)
                    sh.EG.Eingang.RGB.B(0)

                    if len(Muellcheck) == 0:
                    #Farbe Rosa
                    print('Keine Müllabfuhr morgen')
                    sh.EG.Eingang.RGB.R(255)
                    sh.EG.Eingang.RGB.G(0)
                    sh.EG.Eingang.RGB.B(255)

                    if sh.EG.Eingang.Licht() == 0:
                    #Ausschalten wenn keiner da!
                    sh.EG.Eingang.RGB.R(0)
                    sh.EG.Eingang.RGB.G(0)
                    sh.EG.Eingang.RGB.B(0)
                    Muellanzeige_RGB.JPG


                    Kommentar


                      #11
                      Eine Sache würde ich gerne noch optimieren. Und zwar ziehe ich mir die ics Datei aktuell von einem eigenen Webserver wie folgt herunter:
                      Code:
                      [Muellcheck = sh.ical('http://lubiag.de/Downloads/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                      Es wäre mir aber lieber, wenn ich die Datei lokal abspeichern und aufrufen könnte. Ich habe das wie folgt versucht, kann aber auf die Datei nicht zugreifen:
                      Code:
                      Muellcheck = sh.ical('/usr/local/smarthome/etc/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                      Hier scheint wohl einer das selbe Problem zu haben.
                      https://knx-user-forum.de/forum/supp...36#post1309436

                      Hat eine Idee wie man die Datei lokal einbinden könnte?
                      Zuletzt geändert von Simml; 23.01.2019, 20:13.

                      Kommentar


                        #12
                        Zitat von Simml Beitrag anzeigen
                        Es wäre mir aber lieber, wenn ich die Datei lokal abspeichern und aufrufen könnte. Ich habe das wie folgt versucht, kann aber auf die Datei nicht zugreifen:
                        Ich wollte genau das auch lösen, allerdings bin ich bisher nur zum kopieren das Kalenders gekommen .... :-) Insofern echt großartig!!!

                        Müsste laut Dokumentation delta = 1, sein und offset = 0, damit das wirklich funktioniert?

                        Kommentar


                          #13
                          Zitat von Cannon Beitrag anzeigen

                          Ich wollte genau das auch lösen, allerdings bin ich bisher nur zum kopieren das Kalenders gekommen .... :-) Insofern echt großartig!!!

                          Müsste laut Dokumentation delta = 1, sein und offset = 0, damit das wirklich funktioniert?
                          Ich wollte eigentlich, dass er nur den morgigen Tag einließt. Aber irgendie ließt der auch mit delta = 0 zwei Tage ein. Ich schmeiss seit neuestem den aktuellen Tag wie folgt wieder raus:

                          Code:
                          heute = sh.now().date()
                              Muellcheck = sh.ical('http://lubiag.de/Downloads/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                              #Muellcheck = sh.ical('/logics/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                              if heute in Muellcheck:
                                  del Muellcheck[heute]
                          den Kalender lokal auf meinem Raspberry abzurufen gelingt mir leider immer noch nicht.

                          Kommentar


                            #14
                            Ich hab nicht geschaut, wie ical den Kalender abruft, aber hast du schon mal mit
                            file:///usr/local/smarthome/logics/Abfuhrkalender-Gaissach-2019.ics
                            probiert? Oder generell halt dem absoluten Pfad?

                            Kommentar


                              #15
                              Zitat von Onkelandy Beitrag anzeigen
                              Ich hab nicht geschaut, wie ical den Kalender abruft, aber hast du schon mal mit
                              file:///usr/local/smarthome/logics/Abfuhrkalender-Gaissach-2019.ics
                              probiert? Oder generell halt dem absoluten Pfad?
                              Ja habe ich probiert, geht leider auch nicht. Eine Möglichkeit sehe ich noch darin, es auf dem eignen (bei mir am Raspbery) laufenden Webserver abzurufen. Hab das mal mit

                              Code:
                               sh.ical('http://192.168.178.40/smartVISU2.9/Abfuhrkalender-Gaissach-2019.ics',delta = 0, offset = 1)
                              versucht. Funktionierte aber leider auch nicht. Gibts vielleicht noch einen anderen Webserver der auf dem Raspberry läuft, den man dafür verwenden könnte?

                              Kommentar

                              Lädt...
                              X