Ankündigung

Einklappen
Keine Ankündigung bisher.

Squeezebox TTS

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

    #16
    Ja, PB cached wenn der Adressat nicht Online ist. Das ist gut und Fluch zu gleich. Ich hatte tw. mit Meldungen > 1000 zu kämpfen, das zog sich bis die gelöscht waren (tw. über 1/2 Jahr alt).

    Ich versuchs mal indem ich das wesentliche aus der Logik herausziehe... Der Empfänger wird als Value aus einem Item ausgelesen und dann wird unterschieden ob es sich um einen oder um mehrere Empfänger handelt (kann man sicher cleverer machen als meine simple Code-Duplizierung). Weiter führe ich im jeweiligen Item ein Value "Last_IDENT" mit. Dort steht dann eben eine ID drinnen (es wurde schon mal was ausgelöst) oder ist noch jungfräulich.
    Code:
    PBEmpfaenger = EmailAlertItem.conf['pushbulletrecipient']
    # Abarbeitung Pushbullet für singularen Empfänger
    if isinstance(PBEmpfaenger, str):
        response = sh.pushbullet.note(EmailBetreff, EmailBody + EmailSignature, PBEmpfaenger)
        iden = response['iden']
        title = response['title']
        #Setzen der Iden in Variable zur späteren Verwendung bei der Stornierung der Message
        if len(sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT()) != 0:
            sh.pushbullet.delete(sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT())
        else:
            logger.debug(": Keine Löschung der PB-Nachricht, da Last_IDENT leer war")
        sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT(iden)
    # Abarbeitung Pushbullet für multiple Empfänger
    if isinstance(PBEmpfaenger, list):
        for entry in PBEmpfaenger:
            response = sh.pushbullet.note(EmailBetreff, EmailBody + EmailSignature, str(entry))
            iden = response['iden']
            title = response['title']
            if len(sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT()) != 0:
                sh.pushbullet.delete(sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT())
            sh.return_item(TriggerItem).Emailalert.Pushbullet.Last_IDENT(iden)
    Zusätzlich lasse ich jede Nacht ein ID-Clearing-Script laufen, welches IDs, welche älter als 2 Tage sind, identifiziert und dann entsprechend an PB als Löschung meldet.

    Code:
    DeleteAge = 172800 # in Sekunden (172800=48Std)
    logger.info(": Starting Deletion of outdated Pushbullet messages")
    # Suchen aller LAST_IDENTs
    for item in sh.match_items('*.Last_IDENT$'):
        #Prüfen des Alters ob Älter als DeleteAge und ungleich Leer
        if item.age() > DeleteAge and len(item()) > 5:
            #Löschen des Eintrages anhand der ID des Feldes Last_IDENT$
            logger.info(": DEBUG> Item ({0}) mit Alter({1}) hat Message-ID ({2})".format(item, item.age(), item()))
            item("")
            sh.pushbullet.delete(item())
            logger.info(": Löschung für Item ({0}) an Pushbullet versendet ({1})".format(item, item()))
        #else:
            #logger.info(": Keine Löschung der PB-Nachricht, da Last_IDENT von ({0}) zu neu oder leer war".format(str(item)))
    logger.info(": Ending Deletion of outdated Pushbullet messages")
    Und hier zum besseren Verständnis ein Beispiel eines Items, hier der Status des Gartentors. Oben jeweils immer das "Hauptitem" und darunter dann, wenn gewünscht, ein indiv. Item für email und darunter PB (Der Grund warum PB ein Unteritem von Email ist rein historisch bedingt).
    Code:
            [[[Oeffnungsstatus]]]
                name = Aussenbereich-Tor
                type = bool
                knx_dpt = 1
                knx_cache = x/x/x
                cache = yes
                [[[[Emailalert]]]]
                    type = bool
                    cache = yes
                    email_recipient = xxx@xyz.de
                    pushbulletrecipient = xxx@xyz.de
                    [[[[[Pushbullet]]]]]
                        type = bool
                        cache = yes
                        [[[[[[Last_IDENT]]]]]]
                            type = str
                            cache = yes
    Hoffe das hilft für den Einstieg, ansonsten einfach melden.

    Cheers,
    Oliver

    Kommentar


      #17
      Danke, werde das mal testen. Ich melde mich wieder

      Viele Grüsse

      Kommentar


        #18
        Hallo,

        Gibt es schon etwas Neues bezüglich TTS oder verfolgt Ihr einen anderen Weg?

        Kommentar

        Lädt...
        X