Modul für Pushover

Begonnen von Johannes_B, 07 November 2013, 13:28:08

Vorheriges Thema - Nächstes Thema

maddhin

#420
Hallo, ich habe das Pushover Modul installiert und es ging genau eine Nachricht, aber jetzt habe ich das im Log:

2015.11.09 16:14:48 4: FHEMWEB:192.168.1.37:12670 POST /fhem&detail=Pushover1&dev.setPushover1=Pushover1&cmd.setPushover1=set&arg.setPushover1=msg&val.setPushover1=%27test%27; BUFLEN:0
2015.11.09 16:14:48 5: Cmd: >set Pushover1 msg 'test'<
2015.11.09 16:14:48 4: Pushover Pushover1: Found 1 argument(s)
2015.11.09 16:14:48 4: Pushover Pushover1: message='test'
2015.11.09 16:14:48 5: Pushover Pushover1: called function Pushover_SendCommand()
2015.11.09 16:14:48 4: Pushover Pushover1: REQ messages.json/title=Information&message=test&priority=0&token=axxxxxxxxxxxxxxxnTaumVAxsF&user=uSxxxxxxxxxxxeZj
2015.11.09 16:14:48 5: Pushover Pushover1: GET https://api.pushover.net:443/1/messages.json (POST DATA: title=Information&message=test&priority=0&token=abPbxxxxxxxxxxAxsF&user=uSnFVxxxxxxxxxxeZj, noshutdown=1)
2015.11.09 16:14:48 4: HttpUtils url=https://api.pushover.net:443/1/messages.json
2015.11.09 16:14:48 5: Triggering Pushover1 (1 changes)
2015.11.09 16:14:48 5: Notify loop for Pushover1 msg 'test'
2015.11.09 16:14:48 4: FHEMWEB:192.168.1.37:12670 GET /fhem?detail=Pushover1; BUFLEN:0
2015.11.09 16:14:48 4: name: /fhem?detail=Pushover1 / RL:2579 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2015.11.09 16:14:51 5: Pushover Pushover1: Received HttpUtils callback:

PARAM:
$VAR1 = {
          'hu_blocking' => 0,
          'callback' => sub { "DUMMY" },
          'displayurl' => 'https://api.pushover.net:443/1/messages.json',
          'noshutdown' => 1,
          'sslargs' => {},
          'NAME' => '',
          'path' => '/1/messages.json',
          'type' => {
                      'priority' => 0,
                      'title' => 'Information',
                      'action' => '',
                      'retry' => '',
                      'url_title' => '',
                      'expire' => '',
                      'sound' => '',
                      'device' => '',
                      'message' => 'test'
                    },
          'cmd' => 'title=Information&message=test&priority=0&token=axxxxxxxxxxsF&user=uSxxxxxxxxxxxxxxeZj',
          'redirects' => 0,
          'data' => 'title=Information&message=test&priority=0&token=axxxxxxxxxxxxxxxsF&user=uSxxxxxxxxxxxxxxxxxxeZj',
          'addr' => 'https://api.pushover.net:443',
          'loglevel' => 4,
          'timeout' => 3,
          'protocol' => 'https',
          'service' => 'messages.json',
          'url' => 'https://api.pushover.net:443/1/messages.json',
          'hash' => {
                      'VALIDATION_TIMER' => '1447057174.25499',
                      'NAME' => 'Pushover1',
                      'STATE' => 'disconnected',
                      'DEF' => 'axxxxxxxxxxxxxxxxxxxxxxsF uxxxxxxxxxxxxxxxxxxxxxxxxxxeZj',
                      'USER_KEY' => 'uxxxxxxxxxxxxxxxxxxxxxxxxxxxeZj',
                      'APP_TOKEN' => 'axxxxxxxxxxxxxxxxxxxxxxxxxxxxsF',
                      'READINGS' => {
                                      'available' => {
                                                       'TIME' => '2015-11-09 16:14:18',
                                                       'VAL' => '0'
                                                     },
                                      'state' => {
                                                   'TIME' => '2015-11-09 16:14:18',
                                                   'VAL' => 'disconnected'
                                                 }
                                    },
                      'NR' => 95,
                      'TYPE' => 'Pushover'
                    },
          'host' => 'api.pushover.net',
          'conn' => undef
        };


ERROR:
$VAR1 = 'https://api.pushover.net:443/1/messages.json: Can\'t connect(2) to https://api.pushover.net:443:  SSL wants a read first';


DATA:
$VAR1 = '';

2015.11.09 16:14:51 4: Pushover Pushover1: RCV TIMEOUT messages.json/title=Information&message=test&priority=0&token=axxxxxxxxxxxxxxxxxxxxsF&user=uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxeZj
2015.11.09 16:14:51 4: FHEMWEB:192.168.1.37:12670 GET /fhem?cmd={ReadingsVal(%22Pushover1%22,%22msg%22,%22%22)}&XHR=1; BUFLEN:0
2015.11.09 16:14:51 5: Cmd: >{ReadingsVal("Pushover1","msg","")}<
2015.11.09 16:14:51 4: name: /fhem?cmd={ReadingsVal(%22Pushover1%22,%22msg%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.11.09 16:14:51 4: Connection accepted from FHEMWEB:192.168.1.37:12678
2015.11.09 16:14:51 4: Connection closed for FHEMWEB:192.168.1.37:12670: EOF
2015.11.09 16:14:51 4: Connection accepted from FHEMWEB:192.168.1.37:12679
2015.11.09 16:14:51 4: FHEMWEB:192.168.1.37:12678 GET /fhem?cmd={AttrVal(%22Pushover1%22,%22room%22,%22%22)}&XHR=1; BUFLEN:0
2015.11.09 16:14:51 5: Cmd: >{AttrVal("Pushover1","room","")}<
2015.11.09 16:14:51 4: name: /fhem?cmd={AttrVal(%22Pushover1%22,%22room%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.11.09 16:14:51 4: Connection closed for FHEMWEB:192.168.1.37:12678: EOF
2015.11.09 16:14:51 4: Connection accepted from FHEMWEB:192.168.1.37:12683
2015.11.09 16:14:51 4: FHEMWEB:192.168.1.37:12679 GET /fhem?XHR=1&inform=type=status;filter=Pushover1;since=1447056887;fmt=JSON×tamp=1447056889422; BUFLEN:0
2015.11.09 16:14:51 4: FHEMWEB:192.168.1.37:12683 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-11.log; BUFLEN:0
2015.11.09 16:14:57 4: Connection closed for FHEMWEB:192.168.1.37:12679: EOF


"SSL wants to read first" scheint die entscheidende Fehlermeldung zu sein. Hat jemand eine Idee was das Problem sein könnte? Meine Linux/FHEM Kenntnisse reichen nicht aus zu versehen wo ich was falsch gemacht habe. Neben dem 'define' in FHEM habe ich noch

sudo apt-get install libio-socket-ssl-perl
sudo apt-get install libjson-perl
cpan -i IO::Socket::SSL


auf dem RPI ausgeführt. Habe ich etwas vergessen?


EDIT:

Nach etwas Rumprobieren kann ich sagen, es funktioniert "manchmal". Hier scheint es irgendein Verbindungs-/Time out Problem zu geben? Prowl & Internet funktionieren problemlos, das muss also an Pushover liegen.

Loredo

#421
Ich vermute IO::Socket::SSL verhält sich etwas komisch je nach Plattform, Version etc.
Wenn dann müsste etwas in den HttpUtils von FHEM geändert werden, welche das Pushover Modul nutzt.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Kann jemand helfen den Fehler zu reproduzieren?
"manchmal" ist leider nicht hilfreich, um einen Fehler zu korrigieren  :-\
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

maddhin

Ja, "manchmal" ist bescheiden - aber ich sehe keine weiter hilfreichen Fehlermeldungen.

Ggf. funktioniert die erste Message nach dem Neustart immer oder Messages nach einer gewissen Zeit (10min?) - kurzfristig habe ich noch keine zwei Nachrichten rausbekommen.


Gesendet von iPhone mit Tapatalk

jago

Hallo,

nach dem Update auf -- 70_Pushover.pm - Rev. 9960 (Fhem 5.7) -- funktioniert bei mir der Zeilenumbruch mit folgendem Code nicht mehr:

{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1\nZeile2' 'android_01' 0 ''")}

Mit Version -- 70_Pushover.pm - Rev. 9384 (Fhem 5.6) -- funktioniert es.

Habe ich was übersehen?


Gruß
Jan

Loredo

Zitat von: jago am 26 November 2015, 09:54:02
nach dem Update auf -- 70_Pushover.pm - Rev. 9960 (Fhem 5.7) -- funktioniert bei mir der Zeilenumbruch mit folgendem Code nicht mehr:

{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1\nZeile2' 'android_01' 0 ''")}

Mit Version -- 70_Pushover.pm - Rev. 9384 (Fhem 5.6) -- funktioniert es.


Es gab seit 9384 keinerlei Änderung an der Nachrichtenverarbeitung. Der Nachrichtentext wird auch nicht abgeändert ä.o.
Schau doch mal ins Log bei verbose=5 ...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

volschin

Das das aktuell nicht funktioniert, kann ich bestätigen. Dürfte aber auch mit 9834 eigentlich nicht mehr gehen. Hatten wir meiner Meinung nach hier im Thread. Nimm stattdessen dein br-Tag.
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Loredo

Ich habe gerade einen Patch eingecheckt, der \n als %0a überträgt und somit von Pushover dann als Newline interpretiert wird.
Wer wirklich ein \n übertragen will, kann es mit \\n escapen.


Ab morgen per Update.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

jago

Danke!
Habe die Rev 10043 installiert, jetzt folgendes Verhalten:

{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1\nZeile2' 'android_01' 0 ''")}
Zeilenumbruch wird NICHT erkannt.

{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1\\nZeile2' 'android_01' 0 ''")}
Zeilenumbruch wird erkannt.

{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1<br>Zeile2' 'android_01' 0 ''")}
Zeilenumbruch mit br-Tag wird NICHT erkannt.

{fhem("set pushmsg msg 'PUSHOVER Test' '<font color='black'>Zeile1<br>Zeile2</font>' 'android_01' 0 ''")}
Zeilenumbruch wird, eingebettet in einen font-Tag, erkannt.

Irgendwie stehe ich jetzt auf dem Schlauch, sollte das bei Beispiel 1 und 2 nicht umgekehrt sein?
Kann jemand das Verhalten bestätigen oder was zu meiner (evtl. falschen) Syntax sagen?


Gruß
Jan

Loredo

Zitat von: jago am 01 Dezember 2015, 12:45:16
{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1\nZeile2' 'android_01' 0 ''")}
Zeilenumbruch wird NICHT erkannt.


Perl/FHEM Grundlagenkurs:
Kann auch nicht, denn du schreibst in Perl Code und dort bedeutet \n alleine schon etwas.
Also musst du im Perl Code selbst schon escapen, sprich \\n, damit als nicht-Perl Code hinterher beim Modul auch tatsächlich \n ankommt.
Also wie in deinem zweiten Beispiel, deshalb funktioniert es dort auch.


Die Frage, ob du hier wirklich {fhem("set...")} schreiben musst statt "set ...", kannst nur du beantworten. Dort gälte dann ein einfaches \n.


Zitat von: jago am 01 Dezember 2015, 12:45:16
{fhem("set pushmsg msg 'PUSHOVER Test' 'Zeile1<br>Zeile2' 'android_01' 0 ''")}
Zeilenumbruch mit br-Tag wird NICHT erkannt.

{fhem("set pushmsg msg 'PUSHOVER Test' '<font color='black'>Zeile1<br>Zeile2</font>' 'android_01' 0 ''")}
Zeilenumbruch wird, eingebettet in einen font-Tag, erkannt.


Das ist auch korrekt so. Nur für einen Zeilenumbruch HTML zu senden macht keinen Sinn, daher wird das ganze auch nur als HTML interpretiert, wenn du einen Formatierungsgrund mitlieferst.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Update eingecheckt:


- <br> oder <br /> führen auch zu HTML formatierter Nachricht
- \n wird automatisch in <br /> konvertiert, wenn HTML Tags erkannt wurden (a, b, i, u, font, br)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

jago

Hallo Loredo,

Danke für Erklärung und Update.


Zitat- <br> oder <br /> führen auch zu HTML formatierter Nachricht

Werde dann mit <br> arbeiten.

Gruß
Jan

mi.ke

Zitat von: Loredo am 14 September 2015, 10:58:10
Zum Thema "Wofür ist Priority/Emergency Callback gut", siehe Pushover API Doku. Es geht dabei darum den Alarm zu bestätigen und die wiederholte Erinnerung zu beenden. Diese Bestätigung erhält auch FHEM als Event zurück.

Hi Loredo.

Könntest Du mir kurz einen Hinweis geben, wie ich diese Bestätigung auswerten kann?

Danke und cheers
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Loredo

#433
Zitat von: mi.ke am 22 Dezember 2015, 09:38:34
Könntest Du mir kurz einen Hinweis geben, wie ich diese Bestätigung auswerten kann?


Wenn eine Prio 2 Nachricht verschickt wird, werden dazu diese Callback-Readings angelegt:



cbAck_1450778325 0
cbDev_1450778325 iPhone
cbMsg_1450778325 Security%20issue%20in%20living%20room%2e
cbPrio_1450778325 2
cbTitle_1450778325 Emergency
cb_1450778325 rmXFi5u2GkLewZmu5BQLFDRNghHLu3



Bei Nutzung der URL-Funktion gibt es noch das Reading cbAct_*, welches dann entweder den auszuführenden FHEM-Befehl oder die zu verlinkende URL enthält (beides wird nicht an Pushover übertragen und bleibt nur in FHEM selbst).
Die Zahl hinten an den Readings entspricht dem Unix Timestamp, an dem die Gültigkeit der Nachricht ausläuft (basierend auf dem mit der Nachricht übergebenen Expire-Wert). Es kann also mehrere Nachrichten/Reading-Gruppen parallel geben.
Die Readings werden nach Ende ihrer Gültigkeit bzw. nach Bestätigung automatisch aufgeräumt (jedoch immer nur, wenn eine Nachricht verschickt wird, also nicht sofort sondern "bei Gelegenheit").


Sofern das Attribut callbackUrl richtig gesetzt wurde (also z.B. auf https://meinedynip.example.com/webhook/pushCallback1), wird dann, sobald ein Gerät diese Nachricht über "acknowledge" bestätigt, eine Rückmeldung über die Pushover Server ausgelöst, so dass das Reading cbAck_* dann auf 1 wechselt. Du kannst also ein Notify oder Watchdog auf cbAck_.* triggern lassen. Wenn du dabei noch mehr auswerten möchtest, musst du die wohl über den Reading-Namen zunächst noch den Unix Timestamp herausholen, um auf die anderen Readingnamen schließen zu können und diese entsprechend auswerten zu können.


Das geht bisher nicht eleganter, weil nicht klar ist, wie genau der Callback verwendet wird und ich ihn selbst auch nicht verwende. Hier kann es also durchaus Optimierungsbedarf geben, sowohl was die Reading-Namen als auch was Trigger bzw. die Auswertung dieser angeht.






Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

mi.ke

Hallo Julian.

Vielen Dank für die ausfürliche Erklärung.

Nun weiss ich zumindest, warum das cbAck_* bei mir immer auf 0 bleibt, da ich keine callbackUrl gesetzt habe, da mein System von aussen nur per VPN erreichbar ist.

Schade, denn der Plan ist:
Ich lasse mich per Pushover alle 6 Std an Medikamente erinnern.
Die Erinnerung ist 1-2 Std gültig (alle 10 min) .
Die Verzögerungszeit, also wenn ich die Einnahme bestätige, soll dann auf die 6 Stunden dazugerechnet werden.

Leider bin ich ein Lamer was Programmieren betrifft, somit kann ich leider nicht aktiv an der Moduloptimierung mitwirken.

Cheers
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara