Modul für Pushover

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

Vorheriges Thema - Nächstes Thema

Thyraz

Ok, danke für die Info. :)

Wir haben hier z.B. Erinnerungen für Wäsche und Trockner.
Fand die Idee ganze nett, dass die Notification bei meiner Frau auf dem Handy verschwindet wenn ich zuerst heimkomme und die Wäsche schon geholt habe.

Oder das selbe bei Erinnerungen an offene Fenster.
Damit könnte man ja sowohl die Erinnerung killen, als auch die Badge an der App wieder reduzieren/löschen.

Man ist gefühlt doch recht oft am Löschen alter Benachrichtigungen. ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Phiolin

#736
Ich habe gerade mal ein bisschen mit Actions getestet und bin dabei auf einen Stolperstein gestoßen:

set pushmsg msg Test-Text device="meinDevice" title="Test!" priority=2 retry=30 expire=900 url_title="Abbrechen" action="set device reading 1"

2018-06-07 13:00:31 Pushover pushmsg apiRemaining: 7444
2018-06-07 13:00:31 Pushover pushmsg lastTitle: Test!
2018-06-07 13:00:31 Pushover pushmsg lastMessage: Test-Text
2018-06-07 13:00:31 Pushover pushmsg lastPriority: 2
2018-06-07 13:00:31 Pushover pushmsg lastAction: set device reading 1
2018-06-07 13:00:31 Pushover pushmsg lastDevice: meinDevice
2018-06-07 13:00:31 Pushover pushmsg lastRequest: e3cd8f35-66be-42b7-a3d4-8d4a50a475c2
2018-06-07 13:00:31 Pushover pushmsg cbTitle_1528370130: Test!
2018-06-07 13:00:31 Pushover pushmsg cbMsg_1528370130: Test-Text
2018-06-07 13:00:31 Pushover pushmsg cbPrio_1528370130: 2
2018-06-07 13:00:31 Pushover pushmsg cbAck_1528370130: 0
2018-06-07 13:00:31 Pushover pushmsg cbDev_1528370130: meinDevice
2018-06-07 13:00:31 Pushover pushmsg cb_1528370130: r1vpmeyruj7yzcso4w1o7wty23fx5j
2018-06-07 13:00:31 Pushover pushmsg cbAct_1528370130: set device reading 1
2018-06-07 13:00:31 Pushover pushmsg lastResult: ok


Wird also ordentlich verschickt und kommt auch auf dem Handy an.
Klicke ich nun auf den Link "Abbrechen" gemäß url_title, bekomme ich aber einen Fehler beim Callback:

NOK unable to find existing receipt 1528370130


Klicke ich dagegen in der Pushover App auf "Acknowledge", kommt der Callback im FHEM sauber an:

2018-06-07 13:01:20 Pushover pushmsg cbAck_1528370130: 1
2018-06-07 13:01:20 Pushover pushmsg cbAckBy_1528370130: ub5d6zeji124hith7wyp23yew2vyoj
2018-06-07 13:01:20 Pushover pushmsg cbAckAt_1528370130: 1528369279
2018-06-07 13:01:20 Pushover pushmsg cbAct_1528370130: executed: set device reading 1


D.h. der Callback funktioniert, aber der Link in der Push-Nachricht irgendwie nicht. Trotzdem ist aber url_title ein Pflichtattribut, sobald ich auch "action" benutze. Mir würde ja das reine Acknowledge ausreichen, aber warum muss ich dann noch url_title angeben, zudem wenn der Link dann auch nicht funktioniert. Das kann ich ja niemandem hier im Haus beibringen, dass da zwar ein Link ist, der aber nicht benutzt werden soll...
Mit Verbose 5 sieht man beim Aufruf des Links aus der Nachricht folgendes im Log:

Pushover pushmsg callback: link='/cbPushover' URI='acknowledged=1&acknowledged_by=ub5d6zeji123hith1wyp97yew2vyoj&FhemCallbackId=1528370658&cbNr=1528370658'


Beim Anklicken von "Acknowledge" wird dagegen folgender Link aufgerufen:

Pushover pushmsg callback: link='/cbPushover' URI='receipt=rumn44kno2jxdbptisjzbhwhybnkqk&acknowledged=1&acknowledged_at=1528369841&acknowledged_by=ub5d6zeji123hith1wyp97yew2vyoj&acknowledged_by_device= meinDevice'


Der springende Punkt im Code ist wohl der hier:

        if ( defined( $webArgs->{receipt} ) ) {
            $receipt = $webArgs->{receipt};
        }
        elsif ( defined( $webArgs->{FhemCallbackId} ) ) {
            $receipt = $webArgs->{FhemCallbackId};
        }
        else {
            return ( "text/plain; charset=utf-8",
                "NOK missing argument receipt or FhemCallbackId" );
        }

        # search for existing receipt
        keys %{ $hash->{READINGS} };
        while ( my ( $key, $value ) = each %{ $hash->{READINGS} } ) {
            $revReadings{ $value->{VAL} } = $1
              if ( defined( $value->{VAL} ) && $key =~ /^cb_(\d+)$/ );
        }

        if ( defined( $revReadings{$receipt} ) ) {


Offenbar wird hier bei übergebener FhemCallbackId Variable das passende Reading nicht gefunden. Übergibt man direkt ein receipt, das ja in cb_<FhemCallbackId> gespeichert ist, klappt das.

db

Hallo zusammen,

ich nutze das Modul schon seit einer Weile und bin gerade dabei Attachments anhängen zu wollen.
Das funktioniert nur noch nicht so ganz wie ich es mir vorstelle.
Im Detail: Anhänge aus dem Verzeichnis von FHEM funktionieren. D.h. wenn die Datei in /opt/fhem liegt, dann kann ich mit dem Parameter attachment arbeiten.
Nun liegen meine Dateien aber nicht dort und das Verzeichnis ist auch kein Unterverzeichnis davon.
Theoretisch sollte ich mit dem Attribut storage den Ablageort der Dateien angeben können.
Das funktioniert aber nicht, weil das Modul das Attribut storage nicht kennt:
pushmsg: unknown attribute storage. Type 'attr pushmsg ?' for a detailed list.
Mit modpath mag ich nicht arbeiten, weil mir das andere Dinge kaputtmacht.
Mein Workaround ist die Angabe des Pfades mit führendem "../../", um auf das Rootverzeichnis zu kommen und von dort in den Pfad einzusteigen. Nicht schön, aber geht.

Hat jemand einen anderen Tipp?

Wuppi68

Zitat von: db am 06 Juli 2018, 21:44:21
Hallo zusammen,

ich nutze das Modul schon seit einer Weile und bin gerade dabei Attachments anhängen zu wollen.
Das funktioniert nur noch nicht so ganz wie ich es mir vorstelle.
Im Detail: Anhänge aus dem Verzeichnis von FHEM funktionieren. D.h. wenn die Datei in /opt/fhem liegt, dann kann ich mit dem Parameter attachment arbeiten.
Nun liegen meine Dateien aber nicht dort und das Verzeichnis ist auch kein Unterverzeichnis davon.
Theoretisch sollte ich mit dem Attribut storage den Ablageort der Dateien angeben können.
Das funktioniert aber nicht, weil das Modul das Attribut storage nicht kennt:
pushmsg: unknown attribute storage. Type 'attr pushmsg ?' for a detailed list.
Mit modpath mag ich nicht arbeiten, weil mir das andere Dinge kaputtmacht.
Mein Workaround ist die Angabe des Pfades mit führendem "../../", um auf das Rootverzeichnis zu kommen und von dort in den Pfad einzusteigen. Nicht schön, aber geht.

Hat jemand einen anderen Tipp?

ersetze mal ../../ mit / dann geht es sofort Absolut im root los
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

db

Danke für die Antwort.
Leider funktioniert die absolute Pfadangabe nicht. Das habe ich vorher schon probiert. Bis zur Verzweiflung.

Depechem

Hat schon mal jemand versucht über die Tablet UI Oberfläche eine Pushover Nachricht zu erstellen? Falls ja, könnte ihr mir bitte eine Hilfestellung geben.
Ich möchte eine individuelle Nachricht an einzelne Benutzer senden können(am besten noch auswählen können wer diese Nachricht alles erhält.
EIne IOS App zum erstellen einer Pushover Nachricht würde mir auch ausreichen. Leider habe ich da nix gefunden.
VG Thomas
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Persuasiv

#741
Wie kann man Readings via Pushover verschicken? Ich verstehe die Syntax noch nicht wirklich ... Ich habe es testweise mit folgendem probiert:

set pushmsg msg title=Test priority=-1 get ReadingsVal(KeyValueProtocol_BME_2","Temperatur","")

Das funktioniert aber nicht. In der FHEM Referenz wird kein derartiges Beispiel besprochen.


EDIT: So geht es:

set pushmsg msg title=Messwerte priority=-1 'Temperatur' [KeyValueProtocol_BME_2:Temperatur]

Persuasiv

#742
Wenn ich <b>Test</b> zur Textformatierung nutze, dann wird in der Pushover App alles richtig angezeigt. In den Notification werden aber die Zeilenumbrüche nicht mehr erkannt. Woran liegt das? Kann man das umgehen?

EDIT: Scheint eine Limitierung seitens Android zu sein -> https://pushover.net/api Kann man die Umwandlung von /n in <br> verhindern?

Brockmann

#743
Zitat von: Persuasiv am 05 August 2018, 17:33:52
Wie kann man Readings via Pushover verschicken? Ich verstehe die Syntax noch nicht wirklich ... Ich habe es testweise mit folgendem probiert:

set pushmsg msg title=Test priority=-1 get ReadingsVal(KeyValueProtocol_BME_2","Temperatur","")

Das funktioniert aber nicht. In der FHEM Referenz wird kein derartiges Beispiel besprochen.


EDIT: So geht es:

set pushmsg msg title=Messwerte priority=-1 'Temperatur' [KeyValueProtocol_BME_2:Temperatur]
So geht es aber nur in einem DOIF (weil nur da die [Device:Reading]-Syntax funktioniert.
Alternativ hätte es vermutlich so lauten müssen:
set pushmsg msg title=Test priority=-1 {ReadingsVal("KeyValueProtocol_BME_2","Temperatur","")}
(ungetestet und ohne Gewähr)

Amenophis86

Das stimmt nicht, set magic ist seit 5.7 (meine ich) allgemein gültig. Schau mal in der CommandRef unter set.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Loredo

Allgemein gültig wäre ich vorsichtig, aber ja, es gibt eine zentrale Funktion und diese nutzt die aktuelle Pushover Version auch, zumindest wenn man von der Legacy set Variante die Finger lässt.
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

Nestor

There was a network upgrade in my neighbourhood, so my cable modem would be intermittently offline.
Pushover messages would block the main event loop for a long time and other events (EnOcean, local MQTT) would not be processed anymore.

I noticed in the Pushover module source that the HTTP requests are non-blocking and timeout after 3 seconds.
So why did this still block ?

2908:2018.11.20 08:09:07 3: [Freezemon] Long function call detected SetFn:Pu_Lr - 240.051553 seconds
2909:2018.11.20 08:09:07 3: [Freezemon] Long running Command detected set Pu_Lr msg "[REDACTED]" sound=bugle:Command - 240.05215 seconds
2910:2018.11.20 08:09:07 3: [Freezemon] Long function call detected NotifyFn:Ntf_Front_Door_Closed - 240.052615 seconds
2911:2018.11.20 08:09:08 3: [Freezemon] Long function call detected ReadFn:Mosquitto - 240.149559 seconds
2912:2018.11.20 08:09:08 1: [Freezemon] freezemon: possible freeze starting at 08:05:08, delay is 240.032 possibly caused by: cmd-set Pu_Lr msg "[REDACTED]" sound=bugle(Command) fn-SetFn(Pu_Lr) fn-NotifyFn(Ntf_Front_Door_Closed) fn-ReadFn(Mosquitto) tmr-ModbusLD_GetUpdate(N/A)
2913:2018.11.20 08:13:08 3: [Freezemon] Long function call detected SetFn:Pu_Lr - 240.094297 seconds
2914:2018.11.20 08:13:08 3: [Freezemon] Long running Command detected set Pu_Lr msg "[REDACTED]" sound=bugle:Command - 240.094805 seconds
2915:2018.11.20 08:13:08 3: [Freezemon] Long function call detected NotifyFn:Ntf_Front_Door_Closed - 240.095177 seconds
2916:2018.11.20 08:13:08 3: [Freezemon] Long function call detected ReadFn:Mosquitto - 240.197343 seconds

Loredo

My best guess is DNS lookup would block the request.
You may want to have a look to the dnsServer attribute on the global device to explicitly set your DNS resolver IP. CommandRef states that DNS will only be non-blocking if this attribute was set.
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

hanami

Hallo Zusammen,

ich habe ein GPS Device welches mir nebst den GPS Daten auch ein reading für einen HTML Link zu Google Maps liefert.
Nun ist es ja möglich der Pushnachricht eine URL mitzugeben.
Ist es möglich das Reading abzugreifen und als URL mit in die Pushover Nachricht zu geben?
Habe schon einiges versucht, jedoch will es leider nicht.

Stelle mir das so vor:

set Push msg title="Standort Camper" message="Für den aktuellen Standort klicke bitte auf den Link." action="[KastenGPS:link] url_title="GoogleMaps Standort Camper" expire=3600

Ist es möglich dies umzusetzen, und wenn ja, wer kann den Wald vor lauter Bäumen für mich fällen?

Vielen Dank vorab.
beste Grüße Patrick



Loredo

Dir fehlt beim Action Parameter das schließende Gänsefüßchen oben.
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