Neues Modul: PushBullet

Begonnen von fhainz, 06 August 2014, 01:19:13

Vorheriges Thema - Nächstes Thema

Tom3011

Hallo zusammen
habe das Modul installiert, funzt einwandfrei. Aber ich habe es über ein notify an eine Schalterstellung gekoppelt, jetzt bekomme ich bei jeder prüfung eine Mail.
Ich wollte das ich aber nur eine bekomme. Geht das irgendwie!???!!

Motivierte linke Hände

Ohne Code muss ich ziemlich raten, aber ich denke, Du möchtest verhindern, dass das notify so oft auslöst? Dazu könntest Du die Anzahl an Events beschränken, z.B. mit event-on-change-reading oder so - oder das Ganze mit einem Wagchdog koppeln. Hat aber wohl nichts mit PushBullet zu tun, dh wäre wohl woanders besser aufgehoben.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

HolyMoly

Bekomme des öfteren folgende Fehlermeldung:

2015.02.11 12:08:46 3: pushbullet: deviceIden konnte nicht eingelesen werden.

Die message ist aber angekommen. Woran könnte das liegen?

Hier ein list:

Internals:
   DEF        xxx
   LAST_PUSH  2015-02-11 12:08:46
   NAME       pushbullet
   NR         25
   STATE      Initialized
   TYPE       Pushbullet
   CHANGETIME:
   Helper:
     Dblog:
       State:
         Dblog:
           TIME       1423652926.69265
           VALUE      message Rufumleitung Lilly deaktiviert
   Readings:
     2015-02-10 11:07:13   state           Initialized
     2015-02-10 06:13:28   xxx_email xxx
     2015-02-10 06:13:28   xxx_name xxx
     2015-02-10 06:13:28   xxx_name xRetinaMacbookPro
     2015-02-10 06:13:28   xx_name xiPhone
   Helper:
     key        ccc
Attributes:
   defaultDevice xxx, xxx
   defaultTitle xxx
   room       xxx
FHEM auf Raspi2 & Radxa Rock

fhainz

Zitat von: HolyMoly am 11 Februar 2015, 12:35:02
Die message ist aber angekommen. Woran könnte das liegen?
Kann ich so nicht sagen.
Kommt die Nachricht dann an alle Devices? Wie wird die Nachricht gesendet? Per Hand, at oder notify? Triggert das notify, wenn dadurch ausgelöst, vielleicht mehrmals?

Bitte verbose 5 setzen und mal das drumherum genauer erklären.


Grüße

frankbatzen

#184
Hallo,

erstmal schönen Dank für das Modul! Ich versuche es seit heute Morgen zum Laufen zu bringen, bislang klappt es leider noch nicht.
Die Situation ist wie folgt:

1. JSON ist installiert (Version 2.90).
2. 70_Pushbullet.pm ist aktuell von heute.
3. Pushbullet ist eingerichtet. Es werden keine Devices angezeigt. Das einzige Reading ist "Status initialized 2015-02-15 13:52:16"
4. ein "get pushbullet devices" ergibt folgende Einträge im FHEM-Log (Loglevel 5):

2015.02.15 14:17:49 5: HASH: $VAR1 = undef;

2015.02.15 14:17:50 4: JSON -> Pushbullet:$VAR1 = undef;

2015.02.15 14:17:50 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 14:17:50 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices: empty answer received
2015.02.15 14:17:50 5: $method: GET
2015.02.15 14:17:50 5: $url: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices
2015.02.15 14:17:50 5: $data:
2015.02.15 14:17:50 4: pushbullet: Es wurden 0 Endgeraete neu eingelesen.
2015.02.15 14:17:50 5: HASH: $VAR1 = undef;

2015.02.15 14:17:50 4: JSON -> Pushbullet:$VAR1 = undef;

2015.02.15 14:17:50 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 14:17:50 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts: empty answer received
2015.02.15 14:17:50 5: $method: GET
2015.02.15 14:17:50 5: $url: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts
2015.02.15 14:17:50 5: $data:
2015.02.15 14:17:50 4: pushbullet: Es wurden 0 Kontakte neu eingelesen.

Wenn ich https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices im Browser eingebe, sehe ich folgendes:
{"accounts":[],"aliases":[],"channels":[],"clients":[],"contacts":[],"devices":[{"active":true,"iden":"HIERSTANDEINKEY","created":1.423991080599047e+09,"modified":1.4240012748979058e+09,"type":"ios","kind":"ios","nickname":"HIERSTANDDERTELEFONNAME","manufacturer":"Apple","model":"iPhone 5 (Global)","app_version":5708,"push_token":"production:HIERSTANDEINLANGERKEY","pushable":true}],"grants":[],"pushes":[],"subscriptions":[]}

Es sollte also eigentlich Information über das iPhone im Modul ankommen. Es wird aber kein Device angelegt.

5. Pushbullet funktioniert prinzipiell.
         a) Ich kann von www.pushbullet.com Nachrichten auf mein iPhone schicken.
         b) Ich kann in FHEM den folgenden Befehl absetzen, und bekomme sofort die Nachricht auf das iPhone:

curl -u HIERSTANDDERTOKEN: -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "TEST", "body": "Testnachricht"}'

Dieser Befehl führt zu folgendem Eintrag im Logfile:

{"active":true,"iden":"HIERSTANDEINKEY","created":1.424005987298801e+09,"modified":1.4240059872988088e+09,"type":"note","dismissed":false,"sender_iden":"HIERSTANDEINKEY","sender_email":"HIERSTANDEINEEMAILADRESSE","sender_email_normalized":"HIERSTANDDIEEMAILADRESSE","sender_name":"HIERSTANDDERNAME ","receiver_iden":"HIERSTANDEINKEY","receiver_email":"HIERSTANDEINEEMAILADRESSE","receiver_email_normalized":" HIERSTANDEINEEMAILADRESSE","title":"TEST","body":"Testnachricht"}

Habt Ihr vielleicht eine Idee, was ich versuchen kann?

Gruß
frankbatzen

frankbatzen

Hallo,

könnte es sein, dass das von Pushbullet zurück gegebene "model":"iPhone 5 (Global)" das Modul durcheinander bringt? Es gab ja glaube ich Probleme mit Leer- und Sonderzeichen. Den Modellnamen kann ich soweit ich weiß auf Pushbullet nicht ändern.

Gruß
frankbatzen

fhainz

Hallo!

Warum bei dir das model mit iPhone 5 (Global) angegeben wird weiß ich nicht. Hatte vorher auch ein 5er und bin mir fast sicher das ich kein (Global) hatte. Auch jetzt mit dem 6er nicht. Da steht iPhone 6. Kann mir auch nicht vorstellen das das Probleme verursacht, das model verwende ich nicht.

Zitat von: frankbatzen am 15 Februar 2015, 14:28:06
Wenn ich https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices im Browser eingebe, sehe ich folgendes:
{"accounts":[],"aliases":[],"channels":[],"clients":[],"contacts":[],"devices":[{"active":true,"iden":"HIERSTANDEINKEY","created":1.423991080599047e+09,"modified":1.4240012748979058e+09,"type":"ios","kind":"ios","nickname":"HIERSTANDDERTELEFONNAME","manufacturer":"Apple","model":"iPhone 5 (Global)","app_version":5708,"push_token":"production:HIERSTANDEINLANGERKEY","pushable":true}],"grants":[],"pushes":[],"subscriptions":[]}
Mich würde der nickname interessieren den du überschrieben hast.

Zitat von: frankbatzen am 15 Februar 2015, 14:28:06
Dieser Befehl führt zu folgendem Eintrag im Logfile:

{"active":true,"iden":"HIERSTANDEINKEY","created":1.424005987298801e+09,"modified":1.4240059872988088e+09,"type":"note","dismissed":false,"sender_iden":"HIERSTANDEINKEY","sender_email":"HIERSTANDEINEEMAILADRESSE","sender_email_normalized":"HIERSTANDDIEEMAILADRESSE","sender_name":"HIERSTANDDERNAME ","receiver_iden":"HIERSTANDEINKEY","receiver_email":"HIERSTANDEINEEMAILADRESSE","receiver_email_normalized":" HIERSTANDEINEEMAILADRESSE","title":"TEST","body":"Testnachricht"}
Hast du noch ein zweites (kontakt) device definiert? Mach mal bitte ein list auf das Pushbullet device.

Grüße

frankbatzen

Hallo fhainz,

der überschriebene nickname lautet jetzt einfach "iphone".

Als zweites Device habe ich jetzt Safari definiert. Das wird vom Modul auch nicht gefunden, taucht aber ebenso unter den Devices auf, wenn ich https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices im Browser verwende.

ein get pushbullet list iphone bringt folgende Logeintrag:
2015.02.15 20:04:43 4: iPhone
2015.02.15 20:04:43 4: pushbullet: 0:iPhone
2015.02.15 20:04:43 4: pushbullet_checkArgs: cmd:list Args:1 arg0:iPhone arg1:FHEM deviceNick: deviceIden: email:
2015.02.15 20:04:43 5: HASH: $VAR1 = {
          'device_iden' => '',
          'title' => 'FHEM',
          'type' => 'list',
          'items' => [
                       'iPhone'
                     ]
        };

2015.02.15 20:04:43 4: JSON -> Pushbullet:$VAR1 = '{"device_iden":"","title":"FHEM","type":"list","items":["iPhone"]}';

2015.02.15 20:04:43 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 20:04:43 5: $err: https://HIERSTANDDERTOKEN: @api.pushbullet.com/v2/pushes: empty answer received
2015.02.15 20:04:43 5: $method: POST
2015.02.15 20:04:43 5: $url: https://HIERSTANDDERTOKEN: @api.pushbullet.com/v2/pushes
2015.02.15 20:04:43 5: $data:


ein get pushbullet Safari bringt folgenden Logeintrag:

2015.02.15 20:06:32 4: Safari
2015.02.15 20:06:32 4: pushbullet: 0:Safari
2015.02.15 20:06:32 4: pushbullet_checkArgs: cmd:list Args:1 arg0:Safari arg1:FHEM deviceNick: deviceIden: email:
2015.02.15 20:06:32 5: HASH: $VAR1 = {
          'device_iden' => '',
          'title' => 'FHEM',
          'type' => 'list',
          'items' => [
                       'Safari'
                     ]
        };

2015.02.15 20:06:32 4: JSON -> Pushbullet:$VAR1 = '{"device_iden":"","title":"FHEM","type":"list","items":["Safari"]}';

2015.02.15 20:06:32 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 20:06:32 5: $err: https://HIERSTANDDERTOKEN: @api.pushbullet.com/v2/pushes: empty answer received
2015.02.15 20:06:32 5: $method: POST
2015.02.15 20:06:32 5: $url: https://HIERSTANDDERTOKEN: @api.pushbullet.com/v2/pushes
2015.02.15 20:06:32 5: $data:

Gruß
frankbatzen

fhainz

#188
Zitat von: frankbatzen am 15 Februar 2015, 20:08:54
der überschriebene nickname lautet jetzt einfach "iphone".
Und vorher? War da ein Sonderzeichen enthalten? Hast du anschließend die Device Liste neu eingelesen?

Nein, das hast etwas falsch verstanden. Ich will ein
list pushbullet

Zitat von: frankbatzen am 15 Februar 2015, 20:08:54
ein get pushbullet list iphone bringt folgende Logeintrag:
Zitat von: frankbatzen am 15 Februar 2015, 20:08:54
ein get pushbullet Safari bringt folgenden Logeintrag:
Das kann so nicht sein, da bekommst du diese Fehlermeldung.
Unknown argument list, choose one of devices:noArg

Du kannst nur ein
get pushbullet devices
absetzten. Schau dir bitte nochmals die command ref bzw Wiki Artikel zu Pushbullet an.


frankbatzen

#189
Hallo,

das habe ich allerdings falsch verstanden und auch nicht ganz verstanden, wo es hinführen soll :-). Die Logeinträge entstehen aber reproduzierbar genau so wie angegeben.

Vorher war der Nick "Franks iPhone". Also mit Leerzeichen, ohne Apostroph. Das habe ich auf www.pushbullet.com dann auf nur "iPhone" geändert. Und danach immer wieder mit "get pushbullet devices" aktualisiert.

Ein "list pushbullet" ergibt:

Internals:
   DEF        HIERSTANDDERTOKEN
   LAST_POLL  2015-02-15 20:42:53
   LAST_PUSH  2015-02-15 20:38:53
   NAME       pushbullet
   NR         19
   STATE      Initialized
   TYPE       Pushbullet
   Readings:
     2015-02-15 20:42:53   state           Initialized
   Helper:
     key        HIERSTANDDERTOKEN
Attributes:
   room       Push
   verbose    5


Gruß
frankbatzen

fhainz

Könntest du bitte, wegen den neuen devices nochmals ein
get pushbullet devices
mit verbose 5 absetzen und den log posten?

frankbatzen

Natürlich, im Log steht dann folgendes:

2015.02.15 21:02:14 5: HASH: $VAR1 = undef;

2015.02.15 21:02:14 4: JSON -> Pushbullet:$VAR1 = undef;

2015.02.15 21:02:14 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 21:02:14 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices: empty answer received
2015.02.15 21:02:14 5: $method: GET
2015.02.15 21:02:14 5: $url: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices
2015.02.15 21:02:14 5: $data:
2015.02.15 21:02:14 4: pushbullet: Es wurden 0 Endgeraete neu eingelesen.
2015.02.15 21:02:14 5: HASH: $VAR1 = undef;

2015.02.15 21:02:14 4: JSON -> Pushbullet:$VAR1 = undef;

2015.02.15 21:02:14 4: Pushbullet -> FHEM: $VAR1 = '';

2015.02.15 21:02:15 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts: empty answer received
2015.02.15 21:02:15 5: $method: GET
2015.02.15 21:02:15 5: $url: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts
2015.02.15 21:02:15 5: $data:
2015.02.15 21:02:15 4: pushbullet: Es wurden 0 Kontakte neu eingelesen.

Kontakte habe ich in Pushbullet auch keine angelegt, falls das mit "contacts" gemeint ist.

Gruß
frankbatzen

fhainz

#192
Könntest du bitte das einlesen mit dieser Version nochmal versuchen dieses mal aber mit
attr global verbose 5

BTW: code-tags erleichtern das lesen von code ungemein ;)

frankbatzen

Mit der neuen 70_Pushbullet.pm: get pushbullet devices

Logfile mit global verbose 5:
2015.02.15 21:48:39 4: HTTP FHEMWEB:192.168.1.31:51199 GET /fhem&detail=pushbullet&dev.getpushbullet=pushbullet&cmd.getpushbullet=get&arg.getpushbullet=devices&val.getpushbullet=
2015.02.15 21:48:39 5: Cmd: >get pushbullet devices<
2015.02.15 21:48:39 5: Triggering pushbullet (1 changes)
2015.02.15 21:48:39 5: Notify loop for pushbullet Initialized
2015.02.15 21:48:39 4: eventTypes: Pushbullet pushbullet Initialized -> Initialized
2015.02.15 21:48:39 4: eventTypes: Pushbullet pushbullet state: Initialized -> state: Initialized
2015.02.15 21:48:39 4: HttpUtils url=https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices
2015.02.15 21:48:39 4: Can't locate IO/Socket/SSL.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at (eval 136) line 2.
BEGIN failed--compilation aborted at (eval 136) line 2.

2015.02.15 21:48:39 4: FHEM -> Pushbullet.com:
2015.02.15 21:48:39 4: Pushbullet.com -> FHEM:
2015.02.15 21:48:39 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/devices: empty answer received
2015.02.15 21:48:39 5: $method: GET
2015.02.15 21:48:39 4: pushbullet: Es wurden 0 Endgeraete neu eingelesen.
2015.02.15 21:48:39 4: HttpUtils url=https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts
2015.02.15 21:48:39 4: Can't locate IO/Socket/SSL.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at (eval 137) line 2.
BEGIN failed--compilation aborted at (eval 137) line 2.

2015.02.15 21:48:39 4: FHEM -> Pushbullet.com:
2015.02.15 21:48:39 4: Pushbullet.com -> FHEM:
2015.02.15 21:48:39 5: $err: https://HIERSTANDDERTOKEN:%20@api.pushbullet.com/v2/contacts: empty answer received
2015.02.15 21:48:39 5: $method: GET
2015.02.15 21:48:39 4: pushbullet: Es wurden 0 Kontakte neu eingelesen.
2015.02.15 21:48:41 4: HTTP FHEMWEB:192.168.1.31:51199 GET /fhem?detail=pushbullet
2015.02.15 21:48:41 4: 2311:FHEMWEB:192.168.1.31:51199: /fhem?detail=pushbullet / RL:2637 / text/html; charset=UTF-8 / Content-Encoding: gzip

2015.02.15 21:48:41 4: HTTP FHEMWEB:192.168.1.31:51202 GET /fhem?cmd={ReadingsVal(%22pushbullet%22,%22clear%22,%22%22)}&XHR=1
2015.02.15 21:48:41 5: Cmd: >{ReadingsVal("pushbullet","clear","")}<
2015.02.15 21:48:41 4: 2311:FHEMWEB:192.168.1.31:51202: /fhem?cmd={ReadingsVal(%22pushbullet%22,%22clear%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.02.15 21:48:41 4: HTTP FHEMWEB:192.168.1.31:51199 GET /fhem?cmd={AttrVal(%22pushbullet%22,%22room%22,%22%22)}&XHR=1
2015.02.15 21:48:41 5: Cmd: >{AttrVal("pushbullet","room","")}<
2015.02.15 21:48:41 4: 2311:FHEMWEB:192.168.1.31:51199: /fhem?cmd={AttrVal(%22pushbullet%22,%22room%22,%22%22)}&XHR=1 / RL:25 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.02.15 21:48:41 4: HTTP FHEMWEB:192.168.1.31:51199 GET /fhem?XHR=1&inform=type=status;filter=pushbullet;since=1424033320;fmt=JSON×tamp=1424033320898

/


Das klingt ja schonmal interessant:
"Can't locate IO/Socket/SSL.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at (eval 137) line 2.
BEGIN failed--compilation aborted at (eval 137) line 2."
Wenn ich nur wüsste, was es zu bedeuten hat.

Gruß
frankbatzen

fhainz

Versuch das Paket perl-IO-Socket-SSL nach zu installieren. Auf einem pi zb

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install perl-IO-Socket-SSL