Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Pushbullet

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

    Neues Plugin: Pushbullet

    Hallo zusammen,

    ich habe gerade einen Pull-Request für den Development Stand gestellt, welcher ein neues Plugin integrieren soll. https://github.com/mknx/smarthome/pull/112

    Da mir das Notify my Android Plugin mit dem Limit von 5 Meldungen pro Tag "zu wenig" war bin ich im Play-Store auf "Pushbullet" (https://www.pushbullet.com/) gestoßen.

    Das Prinzip von Pushbullet ist im Grunde das gleiche wie NMA, erlaubt aber auch den Versand von anderen Notifications (wie z.B. Dateien, Links, Adressen).
    Wie auch bei NMA wird ein API-Key benötigt, den es kostenlos nach der Registrierung gibt.

    Die Push-Funktionen sind soweit durchgetestet, was ich nicht implementiert habe ist die Abfrage der registrierten Devices. Das könnte man evtl. noch mal zusätzlich aufnehmen, hier hatte ich aber bisher keine Notwendigkeit, da ich aktuell nur an 1 Device versende und keine Auswahl brauche.


    Wer es ausprobieren will kann sich auch meinen Smarthome-Dev Stand auschecken und im Plugin-Ordner den "pushbullet" Ordner in seine Installation übernehmen. (https://github.com/lbernau/smarthome/tree/develop)


    Feedback wird gern entgegen genommen.

    Grüße,

    Lars


    Hier schon mal der Inhalt der "Readme.md" als Anleitung:

    https://github.com/lbernau/smarthome...llet/README.md
    Code:
    Pushbullet
    Requirements
    
    Python libraries
    
    requests - http://docs.python-requests.org/en/latest/user/install/#install
    Other
    
    Pushbullet API-KEY - get it from here for free
    Configuration
    
    plugin.conf
    
    [pushbullet]
        class_name = Pushbullet
        class_path = plugins.pushbullet
    #   deviceid = 
    #   apikey = 
    Description of the attributes:
    
    apikey: set api-key globally so you do not have to set it in the function calls
    deviceid: set deviceid globally so it will be used as defaul target, you can override this on each call
    Functions
    
    Pass a 'deviceid' if no set globally or if you want to send to another device.
    Add 'apikey' if not set globally.
    
    sh.pushbullet.note(title, body [, deviceid] [, apikey])
    
    Send a note to your device.
    
    Parameters
    
    title: The title of the note
    body: The note's body
    Example
    
    #send simple note to default device
    sh.pushbullet.note("Note to myself.", "Call my mother.")
    sh.pushbullet.link(title, url [, deviceid] [, apikey])
    
    Send a link to your device.
    
    Parameters:
    
    title: The title of the page linked to
    url: The link url
    Example
    
    # send link to device with id: x28d7AJFx13
    sh.pushbullet.link("Pushbullet", "http://www.pushbullet.com", "x28d7AJFx13")
    sh.pushbullet.address(name, address [, deviceid] [, apikey])
    
    Send a address to your device.
    
    Parameters:
    
    name: The name of the place at the address
    address: The full address or Google Maps query
    Example
    
    # send address of "Eifel Tower" to default device
    sh.pushbullet.address("Eifel Tower", "https://www.google.com/maps/place/Eiffelturm/@48.85837,2.294481,17z/data=!3m1!4b1!4m2!3m1!1s0x47e66e2964e34e2d:0x8ddca9ee380ef7e0")
    sh.pushbullet.list(title, title [, deviceid] [, apikey])
    
    Send a list of items to your device.
    
    Parameters:
    
    title: The title of the list
    items: The list items
    Example
    
    #send a shopping list to default device
    sh.pushbullet.list("Shopping list", ["Milk", "Eggs", "Salt"])
    sh.pushbullet.file(filepath [, deviceid] [, apikey])
    
    Send a file to your device.
    
    Parameters:
    
    filepath: absolute path to the file to push
    Example
    
    #send smarthome log file to default device
    sh.pushbullet.note("/usr/local/smarthome/var/log/smarthome.log")

    #2
    Sehr schöne Lösung. Zumal Pushbullet sowohl unter iOS als auch Android funktioniert. Hatte zunächst Boxcar probiert. Für die aktuelle Version scheint es derzeit aber keine API-Keys zu geben. Prowl als weitere Alternative ist schon ein wenig angegraut und nur unter iOS lauffähig.

    Als Python-Neuling musste ich erst einmal herausfinden, wie man requests installiert. Funktioniert hat es mit:

    Code:
    git clone git://github.com/kennethreitz/requests.git
    cd requests
    sudo python3 setup.py install

    Kommentar


      #3
      Danke für den Hinweis, ich hab in der "readme.md" den Link zu Requests angepasst. Hier wird jetzt direkt auf die "Install Instructions" verwiesen.

      Bei mir hat "pip install requests" gereicht.

      Kommentar


        #4
        Gestern hat Pushbullet übrigens ne neue API rausgebracht die schon ein paar interessante Dinge kann, u.a. auch sich auf nen Stream zu verbinden, der bei neuen Pushes benachrichtigt.
        Könnte man dann in nen Item schreiben und in der Visu darstellen, oder sogar über einen Push ne Logik antriggern...

        Da das Wetter aber nu erst mal zur Sonne neigt ruft vorerst der Garten ;-)

        Kommentar


          #5
          Sehr sehr coole Sache. Vielen Dank schon mal für die bisherige Arbeit!

          Bin schon gespannt auf die weiteren Möglichkeiten..

          Kommentar


            #6
            Hallo,

            wurdere mich seit einigen Tagen warum ich keine Benachrichtigung mehr bekomme.
            Habe im Log nun folgendes festgestellt:
            Code:
            2014-06-22 20:17:38,558 INFO     Main         Starting new HTTPS connection (1): api.pushbullet.com -- connectionpool.py:_new_conn:657
            2014-06-22 20:17:39,368 DEBUG    Main         "POST /api/pushes HTTP/1.1" 400 None -- connectionpool.py:_make_request:350
            2014-06-22 20:17:39,381 WARNING  Main         Pushbullet returns: Bad Request - Often missing a required parameter. -- __init__.py:_push:73
            plugin.conf
            Code:
            [pushbullet]
                class_name = Pushbullet
                class_path = plugins.pushbullet
                deviceid = Samsung GT-I9300
                apikey = Accsess Token (api)
            und im logic-file rufe ich wie folgt auf
            Code:
            sh.pushbullet.note("Anwesenheit.", "Das Haus wurde ausgeschalten.")
            Hat hier pushbullet was geändert woran kann es liegen???

            Gruß Grisu

            Kommentar


              #7
              Hey,

              ich habe gerade mal fix über n einfachen Rest Client versucht nen Push zu schicken, da geht es noch und auch mein "Klingel" Trigger lief (vor 5 Minuten) problemlos durch.

              - DeviceId und AccessToken haben sich nicht zufällig geändert?


              Mehr Ideen warum es bei Dir auf einmal nicht funktioniert habe ich aktuell nicht.


              PS: Ich bin bereits in der Entwicklung um das Plugin auf die API 2.0 umzustellen, Code ist primär fertig bin aber noch nicht wirklich zum Testen gekommen. Hier hoffe ich im Laufe der Woche die neue Version fertig zu haben (noch ohne neue Features, nur mit neuem Endpoint). Gerade der File-Transfer hat sich doch gravierend verändert.


              Grüße,

              Lars

              Kommentar


                #8
                Hatte es auch schon versucht indem ich smarthome.py mit der Option -i gestartet habe und dann alles wie nach Anleitung eingegeben habe.

                sh.pushbullet.note("Text", "Nachricht", "Samsung GT-I9300", "Access Token")

                im Log war die gleiche Fehlermeldung zu sehen.

                Mit "Reset Access Token" müsste doch ein neuer apikey erstellt werden oder? Vielleicht hilft ja das?

                Grisu911

                Kommentar


                  #9
                  Also hier funktioniert noch alles ...

                  Kommentar


                    #10
                    Hallo Lars,

                    bei mir leider auch das gleiche Problem mit der gleichen Fehlermeldung:
                    Code:
                    Pushbullet returns: Bad Request - Often missing a required parameter.
                    Letzte erfolgreiche Pushnachricht war von 3 Tagen...

                    Ich teste mal weiter!

                    Gruß, Waldemar

                    Kommentar


                      #11
                      Moin,

                      "Samsung GT-I9300" - ist vermutlich nur ein Platzhalter für die Device-ID, oder?
                      Diese ist ja eigentlich ne "wilde" Kette aus Buchstaben. Bsp: "ujjuzwaysiOdjzHASWDzOK"

                      Merkwürdig ist das es wohl Fälle gibt wo es weiterhin geht und andere wo der Fehler auftritt.

                      Könntet Ihr testweise mal von der Konsole aus folgendes ausführen?

                      Wichtig ist der ":" hinter dem access token.

                      Code:
                      curl -u <access token>: https://api.pushbullet.com/api/pushes -d type=note -d title="Testnotiz" -d body="Inhalt der Nachricht" -d device_iden=<deviceId>
                      Damit solltet Ihr ebenfalls n Push an das Gerät schicken können.

                      Falls dort die selbe Fehlermeldung zurück kommt, so wäre könnte es helfen mal die Ausgabe zu sehen.


                      Grüße,

                      Lars

                      Kommentar


                        #12
                        Kurzes Update:

                        Wer möchte kann die API-V2 Anbindung ausprobieren.
                        Die aktualisierte "__init__.py" liegt aktuell noch in meinem Github, ist aber soweit durchgetestet.

                        Es wird nun zusätzlich "python-magic" benötigt, das lässt sich einfach mit "pip install python-magic" installieren.


                        https://github.com/lbernau/smarthome...et/__init__.py


                        Neu in der API sind unter anderem die "body" Parameter für "file" und "link", damit bestehende Logiken kompatibel bleiben, habe ich diese als optionalen Parameter hinten hinzugefügt, das bedeutet wer keinen API-Key oder Device-Id im Aufruf sendet muss die Nachricht folgendermaßen (explizit) hinzufügen

                        Code:
                        sh.pushbullet.link("Pushbullet", "http://www.pushbullet.com", body="Hier gehts zu Pushbullet.com")

                        Viel Spaß damit.

                        Bei Problemen einfach melden.

                        Grüße,

                        Lars

                        Kommentar


                          #13
                          Ich habe das notify my android Problem durch "kaufen" gelöst
                          Weiss einer, wie sich pushbullet finanziert?

                          Die Taskterintergration klingt spannend.
                          Derzeit zwischen Kistenauspacken und Garten anlegen.
                          Baublog im Profil.

                          Kommentar


                            #14
                            Hi,

                            hab jetzt mal das Plugin V2 ausprobiert - damit klappen es wieder.
                            Danke für Deine Mühen,

                            Gruß, Waldemar

                            Kommentar


                              #15
                              Schön zu hören das es wieder läuft, vermutlich haben sie doch was an der alten API gedreht.
                              Ich habe die Änderungen für die v2 Api jetzt zum Pull-Request gestellt, vermute mal das diese in absehbarer Zeit dann auch im Smarthome-Development Stand landen.

                              @greentux
                              Wie das Projekt finanziert wird weiß ich nicht.

                              Was ich an Pushbullet (neben dem nicht vorhandenen Preis) praktischer fand als bei NMA waren die verschiedenen Note-Types und das Mirroring zwischen Chromebrowser und Telefon ist wirklich gut. Selbst bei lautlosem Telefon sieht man direkt nen Anruf oder ne WhatsApp als Nachricht im Browser - top!

                              Als Idee schwirrt mir noch im Kopf rum beim drücken der Klingel nen Foto vom Besucher zu pushen, dann weiß man direkt ob sich das Aufmachen lohnt - falls mal die Schwiegereltern vorbeischauen ;-)

                              Grüße

                              Lars

                              Kommentar

                              Lädt...
                              X