Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Pushbullet

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

    #46
    Hi Oliver,

    es gibt doch listartige Attribute, die Listeinträge werden mit '|' getrennt.
    Code:
                            emailrecipient = xxx@xxx.xx | yyy@yyy.yy
                            pushbulletrecipient = zzz@zzz.zz | fff@fff.ff
    Ich habe allerdings noch nicht in Logiken darauf reagiert, deswegen weiß ich nicht, ob die wirklich als Liste ankommen.
    Ich dachte allerdings, dass diese Notation vom .conf-Parser verstanden wird und aus dem Attribut dann eine Liste macht.

    So solltest Du um das Parsen rumkommen können...

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #47
      Hi Waldemar,

      ok, gut zu wissen, das werde ich testen, denn dann wäre auch das Trennzeichen unabhängig von irgendwelchen Sonderzeichen (ok, die sind in Email eh nicht zugelassen) und klar, no Parsing.

      THX. Werde ich testen und berichten.

      Cheers,
      Oliver

      BTW: Das mit den 3K Items sollte kein protzen sein sondern etwas was mir so langsam Sorgen bereitet. Von den 2979 Items sind nur 1212 KNX-items, der Rest sind Hilfs- und Sonstige Items. Ich muß da dringend optimieren, daher auch der Punkt nicht noch ein List-Item zus. miteinzuführen, was dann wieder rund 400 Items für das Alerting nachziehen würde. Daher ist der Punkt mit dem List klasse.

      Kommentar


        #48
        Läuft!

        So, kurze Rückmeldung...
        Habe heute mal einige Tests bzgl. der multiplen Versendung gemacht und nun auch eine Lösung gefunden, welche mir aber irgendwie nicht ganz logisch erscheint.
        Problemstellung: Es gibt Attribute mit Einzeleinträgen und welche mit Mehrfacheinträgen (mit | als Trennzeichen). Wenn ich nun die Einträge in eine Liste packe wird der Einzeleintrag zeichenweise abgearbeitet.

        Habe das nun durch eine Abfrage "if isinstance(PBEmpfaenger, str)" und "if isinstance(PBEmpfaenger, list)" umschifft. Ob man das Eleganter machen kann, i don't know...

        Code:
        if 'pushbulletrecipient' in EmailAlertItem.conf:
            PBEmpfaenger = EmailAlertItem.conf['pushbulletrecipient']
            if isinstance(PBEmpfaenger, str):
                sh.pushbullet.note(Betreff, Body, PBEmpfaenger)
                logger.debug("Pushbullet versendet an " + str(PBEmpfaenger))
            if isinstance(PBEmpfaenger, list):
                for entry in PBEmpfaenger:
                    sh.pushbullet.note(Betreff, Body, str(entry))
                    logger.debug("Pushbullet versendet an " + str(entry))
        Vielleicht hilft es ja jemanden oder aber irgendwer hat noch eine bessere Idee....

        Cheers,
        Oliver

        Kommentar


          #49
          Hey Oliver,

          Wie sieht denn die Konfiguration das aus?
          Prinzipiell würde ich sagen das Python das richtig macht. Wenn man über einen String iteriert dann passiert das tatsächlich
          Zeichenweise.

          Ich vermute das Smarthome.py bei Einträgen ohne das Trennzeichen auch wirklich nur einen String liefert, bei welchen mit Trennzeichen entsprechend eine Liste.

          Deine Lösung mit der Typ Prüfung ist daher wohl notwendig. Eine Prüfung auf beide Fälle ist robuster, du könntest es vermutlich micro-optimieren wenn du z.B. Nur auf Liste prüfst und n else nimmst. Die Typ Prüfung ist vermutlich marginalst langsamer ;-)

          Grüße Lars

          Kommentar


            #50
            Hi Lars,

            danke für das schnelle Feedback. Yo, ich lass das dann mal so. Config hatte ich ja schon mal ein paar Posts vorher gepasted...

            Das läuft jetzt alles wie es sein soll, einfach Spitze und ich mache die Prüfung einfach in der Emaillogik direkt, ist flexibler und passt nun.

            Damit habe ich nun knapp 400 Items in der Email/PB-Überwachung.

            Eine Sache ist mir aber heute noch aufgefallen die ich gerne noch wegbringen würde.... Kann man den Logientrag: "Starting new HTTPS connection (1): api.pushbullet.com" noch irgendwie wegbekommen bzw. auf logger.debug bekommen? Im Plugin selbst habe ich dazu erst mal auf die Schnelle keinen Eintrag gefunden...

            Any idea?

            Cheers,
            Oliver

            Kommentar


              #51
              Moin Oliver,

              Offenbar kommt die Logzeile aus dem Requests Modul, daher hilft vermutlich das weiter:

              python - How do I disable log messages from the Requests library? - Stack Overflow

              Ich hab es noch nicht ausprobiert, da ich gerade nur mobil im Forum unterwegs bin, würde aber folgendes versuchen:

              In der PB-Plugin "__init__.py", oben bei den Imports (Zeile 29) einfach:

              Code:
              import logging
              und in der "init" Funktion (Zeile 37) dann

              Code:
              logging.getLogger("requests").setLevel(logging.WARNING)


              Grüße,

              Lars

              Kommentar


                #52
                Hi Lars,

                perfekter Remotesupport! Hätte da ja auch mal bzgl. "Requests" googlen können

                "import logging" war schon vorhanden und wie Du geschrieben hast durch das Einfügen in Zeile 37 von
                Code:
                logging.getLogger("requests").setLevel(logging.WARNING)
                wird die Meldung nun sauber unterdrückt.

                Perfekt!

                Cheers,
                Oliver

                Kommentar


                  #53
                  Hi,

                  erstmal vielen Dank für das Plugin!!!

                  Ich habe magic ebenfalls nachinstalliert:
                  Code:
                   
                   git clone git://github.com/ahupp/python-magic.git cd python-magic sudo python3 setup.py install
                  jetzt bekomme ich allerdings folgende Fehlermeldung:
                  Code:
                   Plugin pushbullet exception: invalid syntax (__init__.py, line 4) -- plugin.py:__init__:57
                  Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/plugin.py", line 53, in __init__
                      plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
                    File "/usr/local/smarthome/lib/plugin.py", line 79, in __init__
                      exec("import {0}".format(classpath))
                    File "<string>", line 1, in <module>
                    File "/usr/local/smarthome/plugins/pushbullet/__init__.py", line 4
                      <!DOCTYPE html>
                      ^
                  SyntaxError: invalid syntax
                  Vielleicht kann mir jemand weiter helfen.

                  Was mir auch nicht wirklich klar ist, welchen Wert ich bei "apikey" setzen muß.

                  Vielen Dank für Eure Hilfe!

                  Kommentar


                    #54
                    Schuß ins Blaue... Dein Plugin ist kein Text/Plugincode sondern die HMTL-Seite vom GIT, sprich schau mal die __init__ Datei mit einem Notepad oder ähnlichem an...

                    Kommentar


                      #55
                      Hi, Ich habe gestern meine Android App auf die Version 16.1.2 upgedated und seit dem bekomme ich keine pushnachrichten von sh.py geliefert. Hat noch jemand diese Probleme?

                      Kommentar


                        #56
                        Hey,

                        ich hab das gerade mal ausprobiert und bei mir funktioniert das weiterhin ohne Probleme.
                        Ich hab allerdings auch gerade das Update gemacht, da steht in den Release Notes "Fixed a notification bug when sending messages to yourself"

                        Eventuell gab es einen Bug in der App.

                        Kommentar


                          #57
                          Ok nach dem neuen Update gehts auch wieder, jedoch gibt es scheinbar nur noch Notizen und keine Listen mehr. Ich verwende viele Mehrzeilige Pushnachrichten. :-(

                          Kommentar


                            #58
                            Also bei mir läuft noch alles einwandfrei, eigentlich zu gut , denn ich schicke tw. tonnenweise Nachrichten die es dann irgendwann zu löschen gilt.
                            @Lars: Hast Du Erfahrungswerte wie man eine Lifetime der Meldungen setzen kann oder wie man eine Nachricht auf "hinfällig" setzen kann? Soweit ich das mal kurz in der API überflogen habe geht das unter Referenzierung auf die alte ID. Die müßte dann aber abgegriffen werden.... Damit könnte ich einige Meldungen eliminieren sobald bspw. ein Alarm wieder aufgehoben ist.

                            Cheers,
                            Oliver

                            Kommentar


                              #59
                              Also bei mir kommen sh.pushbullet.list Pushnachrichten als Einzeiler an. Verwendet sonst niemand die Listenfunktion?

                              Kommentar


                                #60
                                Moin,


                                ich hab mal in die API gesehen und festgestellt das es die Listen-Funktion nicht mehr gibt.
                                Offenbar wurde das Featureset auf Notiz, Link und File reduziert. Der Typ "list" wird nicht mehr aufgeführt. - Interessanterweise ist es allerdings über die API noch möglich einzelne List-Items zu aktualisieren.

                                Lassen sich Listen bzw. Mehrzeiler evtl. über "\n" im Text versenden?


                                @Oliver
                                Mit der Lifetime hab ich mich bisher nicht beschäftigt. Ich lösch alte Nachrichten meist per Hand. ;-)
                                Theoretisch erlaubt die API ja ein Löschen, das wäre vermutlich am einfachsten zu realisieren wenn man sich die History abruft und dann z.B. übers Frontend n Löschbefehl schickt.

                                Aufwendiger, aber ggfs. denkbar wäre es beim Push den Response zu nehmen und sich den Parameter "iden" zwischenzuspeichern. Bei einer negierenden Nachricht müsste man dann auf den Wert zurückgreifen und n Delete senden. Das wäre dann sicherlich in einer Logik zu machen - würde es helfen wenn das Plugin beim erfolgreichen push den "identifier" des Pushes zurückliefert? Oder den ganzen JSON-Response?


                                Grüße,

                                Lars


                                PS: Bin jetzt wohl erst mal ein wenig im Urlaub - wird also kurzfristig nix angepasst werden ;-)

                                Kommentar

                                Lädt...
                                X