Neues Modul: PushBullet

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

Vorheriges Thema - Nächstes Thema

Benni

Hallo,

eben nochmal getestet.

Also das Anlegen mit

define User123.Pushbullet.Default Pushbullet <hier war der API-Key> klappt noch,

aber beim 1. Abruf der devices mit

get devices

Schmiert FHEM einfach direkt und kommentarlos ab.

Hier mal der Log-Auszug vom define bis zum Abschmieren:
(Div. Meldungen von anderen Devices, wie Thermostaten und HMLANs ... habe ich mal entfernt und den API-Key, sowie die Device-Ids unkenntlich gemacht)


2015.01.20 21:30:38 5: Cmd: >define User123.Pushbullet.Default Pushbullet <hier war der API-Key><
2015.01.20 21:30:38 5: User123.Pushbullet.Default: define Funktion aufgerufen
2015.01.20 21:30:38 4: HttpUtils url=https://<hier war der API-Key>: @api.pushbullet.com/v2/users/me
2015.01.20 21:30:38 4: https://<hier war der API-Key>: @api.pushbullet.com/v2/users/me: HTTP response code 200
2015.01.20 21:30:38 4: HttpUtils https://<hier war der API-Key>: @api.pushbullet.com/v2/users/me: Got data, length: 309
2015.01.20 21:30:38 4: User123.Pushbullet.Default: data:$VAR1 = '{"iden":"ujvAwuc2WpU","created":1.421595951326064e+09,"modified":1.421784876924412e+09,"email":"saUser123.battran@gmail.com","email_normalized":"saUser123battran@gmail.com","name":"SaUser123 Battran","google_userinfo":{"name":"SaUser123 Battran"},"preferences":{"onboarding":{"app":true,"extension":true,"friends":true}}}';

2015.01.20 21:30:38 4: User123.Pushbullet.Default: json:$VAR1 = undef;

2015.01.20 21:30:38 5: Triggering global (1 changes)
2015.01.20 21:30:38 5: Notify loop for global DEFINED User123.Pushbullet.Default
...
2015.01.20 21:30:38 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem?detail=User123.Pushbullet.Default
2015.01.20 21:30:38 5: User123.Pushbullet.Default: Set Funktion aufgerufen
2015.01.20 21:30:38 4: 13915:FHEMWEB:192.168.178.54:62006: /fhem?detail=User123.Pushbullet.Default / RL:3633 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2015.01.20 21:30:38 4: Connection closed for FHEMWEB:192.168.178.54:61993: EOF
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:61988 GET /fhem/pgm2/fhemweb_colorpicker.js
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:61989 GET /fhem/pgm2/jquery-ui.min.css
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem/pgm2/style.css
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem/pgm2/darkstyle.css
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem/pgm2/dashboard_darkstyle.css
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem?cmd={ReadingsVal(%22User123.Pushbullet.Default%22,%22clear%22,%22%22)}&XHR=1
2015.01.20 21:30:39 5: Cmd: >{ReadingsVal("User123.Pushbullet.Default","clear","")}<
2015.01.20 21:30:39 4: 13915:FHEMWEB:192.168.178.54:62006: /fhem?cmd={ReadingsVal(%22User123.Pushbullet.Default%22,%22clear%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:61989 GET /fhem?cmd={AttrVal(%22User123.Pushbullet.Default%22,%22room%22,%22%22)}&XHR=1
2015.01.20 21:30:39 5: Cmd: >{AttrVal("User123.Pushbullet.Default","room","")}<
2015.01.20 21:30:39 4: 13915:FHEMWEB:192.168.178.54:61989: /fhem?cmd={AttrVal(%22User123.Pushbullet.Default%22,%22room%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.01.20 21:30:39 4: HTTP FHEMWEB:192.168.178.54:61989 GET /fhem?XHR=1&inform=type=status;filter=User123.Pushbullet.Default;since=1421785837;fmt=JSON×tamp=1421785835580

2015.01.20 21:30:42 5: EG.XX.RG.Heizung: not on any display, ignoring notify
2015.01.20 21:30:46 4: HTTP FHEMWEB:192.168.178.54:62006 GET /fhem&detail=User123.Pushbullet.Default&dev.getUser123.Pushbullet.Default=User123.Pushbullet.Default&cmd.getUser123.Pushbullet.Default=get&arg.getUser123.Pushbullet.Default=devices
2015.01.20 21:30:46 5: Cmd: >get User123.Pushbullet.Default devices<
2015.01.20 21:30:46 5: Triggering User123.Pushbullet.Default (1 changes)
2015.01.20 21:30:46 5: Notify loop for User123.Pushbullet.Default Initialized
2015.01.20 21:30:46 5: rain_notify: devname=User123.Pushbullet.Default rainname=HG.XX.RN.Wetter.Rain, dev=User123.Pushbullet.Default, dev_regex=HG.XX.WS.Wetter rain_name=rain israining_name=isRaining
2015.01.20 21:30:46 4: Attribut matchs TimeCode DayChangeTime='00:00'
2015.01.20 21:30:46 4: eventTypes: Pushbullet User123.Pushbullet.Default Initialized -> Initialized
2015.01.20 21:30:46 4: eventTypes: Pushbullet User123.Pushbullet.Default state: Initialized -> state: Initialized
2015.01.20 21:30:46 5: User123.Pushbullet.Default: Set Funktion aufgerufen
2015.01.20 21:30:46 4: HttpUtils url=https://<hier war der API-Key>: @api.pushbullet.com/v2/devices
2015.01.20 21:30:47 4: https://<hier war der API-Key>: @api.pushbullet.com/v2/devices: HTTP response code 200
2015.01.20 21:30:47 4: HttpUtils https://<hier war der API-Key>: @api.pushbullet.com/v2/devices: Got data, length: 457
2015.01.20 21:30:47 4: User123.Pushbullet.Default: data:$VAR1 = '{"aliases":[],"channels":[],"clients":[],"contacts":[],"devices":[{"active":true,"iden":"<hier war Device-ID>","created":1.4215959530132349e+09,"modified":1.421595953013241e+09,"type":"ios","kind":"ios","nickname":"User123's iPhone","manufacturer":"Apple","model":"iPhone 5s (Global)","app_version":3671,"push_token":"production:4173ae8df2d67182e32e6a8204bc2be15bb4c0b3bce1c3dbaaa5b4c0757843f7","pushable":true}],"grants":[],"pushes":[],"subscriptions":[]}';

2015.01.20 21:30:47 4: User123.Pushbullet.Default: json:$VAR1 = undef;

2015.01.20 21:30:47 5: Triggering User123.Pushbullet.Default (1 changes)
2015.01.20 21:30:47 1: PERL WARNING: Wide character in print at fhem.pl line 775.
2015.01.20 21:30:47 5: Notify loop for User123.Pushbullet.Default <hier war Device-ID>_name: User123's iPhone
2015.01.20 21:30:47 5: rain_notify: devname=User123.Pushbullet.Default rainname=HG.XX.RN.Wetter.Rain, dev=User123.Pushbullet.Default, dev_regex=HG.XX.WS.Wetter rain_name=rain israining_name=isRaining
2015.01.20 21:30:47 4: Attribut matchs TimeCode DayChangeTime='00:00'

2015.01.20 21:30:47 4: eventTypes: Pushbullet User123.Pushbullet.Default <hier war Device-ID>_name: User123's iPhone -> <hier war Device-ID>_name: User123's iPhone
2015.01.20 21:30:47 5: User123.Pushbullet.Default: Set Funktion aufgerufen
2015.01.20 21:30:47 4: User123.Pushbullet.Default: Es wurden 1 Endgeraete neu eingelesen.
2015.01.20 21:30:47 4: HttpUtils url=https://<hier war der API-Key>: @api.pushbullet.com/v2/contacts
2015.01.20 21:30:48 4: https://<hier war der API-Key>: @api.pushbullet.com/v2/contacts: HTTP response code 200
2015.01.20 21:30:48 4: HttpUtils https://<hier war der API-Key>: @api.pushbullet.com/v2/contacts: Got data, length: 111
2015.01.20 21:30:48 4: User123.Pushbullet.Default: data:$VAR1 = '{"aliases":[],"channels":[],"clients":[],"contacts":[],"devices":[],"grants":[],"pushes":[],"subscriptions":[]}';

2015.01.20 21:30:48 4: User123.Pushbullet.Default: json:$VAR1 = undef;

2015.01.20 21:30:48 4: User123.Pushbullet.Default: Es wurden 0 Kontakte neu eingelesen.


mehr habe ich im Moment leider nicht.

Gruß Benni.

irqnet

#151
Hallo liebe Gemeinde ;)

Ich habe meinen Raspberry noch nicht neu aufgesetzt und laufe jetzt auf das gleiche Problem, wenn ich die Devices abholen will:

Hier hab ich den Verbose Level auf 5 gesetzt

2015.01.22 13:39:40 5: irqnetpush: Set Funktion aufgerufen
2015.01.22 13:39:40 5: irqnetpush: Set Funktion aufgerufen
2015.01.22 13:39:47 5: irqnetpush: Set Funktion aufgerufen


und hier hab ich versucht die Devices abzurufen:
get irqnetpush devices

2015.01.22 13:39:47 4: irqnetpush: data:$VAR1 = undef;
2015.01.22 13:39:47 4: irqnetpush: json:$VAR1 = undef;
2015.01.22 13:39:47 4: irqnetpush: Es wurden 0 Endgeraete neu eingelesen.
2015.01.22 13:39:47 4: irqnetpush: data:$VAR1 = undef;
2015.01.22 13:39:47 4: irqnetpush: json:$VAR1 = undef;
2015.01.22 13:39:47 4: irqnetpush: Es wurden 0 Kontakte neu eingelesen.
2015.01.22 13:39:47 5: irqnetpush: Set Funktion aufgerufen
2015.01.22 13:39:48 5: irqnetpush: Set Funktion aufgerufen


Was hab ich schon probiert?:

- Devices über die Pushbullet Webseite gelöscht
- Access Token neu generiert und ausgetauscht
- apt-get update / upgrade sowie JSON neu installiert

Fehler bleibt bestehen - ich hätte jetzt zwar noch einen zweiten Raspberry zum Test, aber der Fehler scheint ja öfter aufzutreten und mich würde interessieren, woran es liegt.

Was einwandfrei funktioniert ist das Senden von Pushbullet über Browser zum Handy, aber auch via ssh auf dem Raspberry direkt via curl über die Pushbullet API.

Vielen Dank schon mal für die Geduld ;)

Gruß

Christoph

oliverk


Sonderzeichen im Devicenamen ?
Ich hatte ein Apostroph im Namen. Auf der Pushbullet Seite geändert und danach lief das einlesen ohne Probleme...

Oliver
Fhem: 5.7 auf RaspPi / Fhem: 5.7 auf Cubie
ca. 80 net4home Buskomponenten
zum Spielen diverse FS20, HomeMatic, EnOcean, hue Geräte, Fritz!Box 7490, Fritz!Dect 200, netatmo, eve

irqnet

Nein, alles ohne Sonderzeichen oder Leerzeichen

(http://abload.de/img/pushbulletkijmk.jpg)

Benni

ZitatSonderzeichen im Devicenamen ?

Danke Oliver! Das war's!

Das eine Gerät des zweiten Accounts war ein iPhone mit Standardnamen: "User's iPhone".
Apostroph und Leerzeichen rausgenommen. Jetzt wuppt das!

Mein Problem ist damit gelöst!

fhainz

#155
Hallo!

Den Umlaut fix hab ich eingebaut, danke!

Leider kann ich das mit den ' im Namen nicht nachstellen. Bei mir klappt das einlesen mit User's iPhone auf dem Pi und auf dem Mac. Senden funktioniert aber wegen dem ' nicht deswegen hab ich eine Abfrage eingebaut die einen Log Eintrag schreibt.

Bitte testet mal die angehängte Version.

Grüße

irqnet

Zitat von: fhainz am 23 Januar 2015, 11:36:36

Bitte testet mal die angehängte Version.

Grüße

Den Umlaut Fix konnte ich natürlich noch nicht testen, weil es mit dem "get devices" schon nicht funktioniert bei mir. Ich ziehe jetzt mal ne parallele Installation auf - wenn leider nur das hilft dann muss es wohl so sein. Vielleicht finden wir aber noch die Ursache.

VG

Christoph

fhainz

Spiel mal bitte die oben angehängte Version ein, setze verbose auf 5 und poste den Log.

irqnet

Hatte ich gerade schon getestet, der Output im Log bleibt derselbe:

2015.01.23 11:41:44 4: irqnetpush: data:$VAR1 = undef;

2015.01.23 11:41:44 4: irqnetpush: json:$VAR1 = undef;

2015.01.23 11:41:44 4: irqnetpush: Es wurden 0 Endgeraete neu eingelesen.
2015.01.23 11:41:44 4: irqnetpush: data:$VAR1 = undef;

2015.01.23 11:41:44 4: irqnetpush: json:$VAR1 = undef;

2015.01.23 11:41:44 4: irqnetpush: Es wurden 0 Kontakte neu eingelesen.
2015.01.23 11:41:44 5: irqnetpush: Set Funktion aufgerufen
2015.01.23 11:41:45 5: irqnetpush: Set Funktion aufgerufen

fhainz

Hast du FHEM neugestartet?

irqnet

Zitat von: fhainz am 23 Januar 2015, 11:50:23
Hast du FHEM neugestartet?

Bekomme beim Start von FHEM in der bash jetzt folgende Info:

pi@servicepi ~ $ sudo /etc/init.d/fhem start
Starting fhem...
Use of uninitialized value $data in concatenation (.) or string at ./FHEM/70_Pushbullet.pm line 470.
Use of uninitialized value $data in pattern match (m//) at ./FHEM/70_Pushbullet.pm line 472.
Use of uninitialized value $data in pattern match (m//) at ./FHEM/70_Pushbullet.pm line 473.


Aber der Fehler im Log wird jetzt eindeutig:

2015.01.23 11:54:17 5: HASH: $VAR1 = undef;

2015.01.23 11:54:17 4: JSON -> Pushbullet:$VAR1 = undef;

2015.01.23 11:54:17 4: Pushbullet -> FHEM: $VAR1 = undef;

2015.01.23 11:54:17 5: $err: https://APIKEYMUSSHIERREIN:%20@api.pushbullet.com/v2/contacts: Can't connect(2) to https://api.pushbullet.com:443:  SSL Version SSLv2 not supported error:00000000:lib(0):func(0):reason(0)
2015.01.23 11:54:17 5: $method: GET
2015.01.23 11:54:17 5: $url: https://APIKEYMUSSHIERREIN:%20@api.pushbullet.com/v2/contacts
2015.01.23 11:54:17 5: $data:
2015.01.23 11:54:17 4: irqnetpush: Es wurden 0 Kontakte neu eingelesen.


Den Key hab ich extra unkenntlich gemacht, aber scheinbar ist es ein SSLv2 Problem.

fhainz

Die Warnings kommen durch die Logs. Sollten jetzt ausgeblendet sein.

Ja, du hast das selbe Problem wie Invers (ab hier: http://forum.fhem.de/index.php/topic,29796.msg246741.html#msg246741). Ich kann das aber nicht nachstellen und googlen hat mich dann auf die Idee gebracht das das Betriebsystem alt ist (ob das stimmt weiß ich nicht, nur eine idee).

irqnet

Kann es denn sein das die installierte JSON Version kein SSLv2 unterstützt? Der Aufruf funktioniert auf der shell mit curl -u ja wunderbar.

fhainz

Ich denke das Pushbullet kein SSLv2 akzeptiert (weil veraltet) dein raspi/apache/json/was auch immer den aufruf aber mit sslv2 richtung pushbullet öffnet.

Versuch mal das aus Beitrag 2:
sudo apt-get update
sudo apt-get dist-upgrade


Ein sudo apt-get update && sudo apt-get upgrade kann auch nicht schaden.

Damit sollte dein Weezy upgedatet werden. Vielleicht hilfts ja.

irqnet

Das hatte ich vorab schon gemacht, hatte ich glaube ich in meinem ersten Beitrag erwähnt.
Ich update aber mit cpan gerade mal IO::Socket::SSL und Net::SSLeay, mal gucken ob das was bringt.