Modul für Pushover

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

Vorheriges Thema - Nächstes Thema

lapidu

Hallo,

ein Problem hab ich noch.
Wenn ich die Temperatur an der Heizung ändere, kommt die Push Meldung ans Handy.
Nur kommt sie alle 3-5min immer wieder.

So sieht der befehl aus

Zitatdefine Tempcheck notify Heizung.2OG.Bad.*desired-temp.* set pushmsg msg 'Temperaturverstellung' 'Heizung xy wurde auf %EVTPART1 °C gedreht' '' 0 ''

Motivierte linke Hände

Das liegt daran, dass Du kein event-on-change-reading für das Thermostat gesetzt hast. Damit erzeugt die regelmäßige Statusmeldung des Thermostats einen Event, auf den Dein Notify anspringt.

Ein event-on-change-reading .* auf die betroffenen Thermostate sollte Dein Problem beheben und Deine Logfiles verkleinern.
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.

lapidu

#317
wie mach ich das genau?

Edit: Habs gefunden. Scheint zu funktionieren. Danke erstmal

lapidu

So nächstes Problem.

Ich habe ein HM-LC-SW1-FM Relais mit dem ich das Licht schalte.
Ich möchte jeweils wenn das Licht aus oder an geschaltet wird, über Pushover benachrichtigt werden.
Hat jemand eine Idee wie das aussehen könnte?

Vielen Dank.

Lapidu

Motivierte linke Hände

Ein notify auf den State des Schalters, und auch diesen Schalter mit event-on-change .* oder gleich event-on-change state belegen.

Das ist aber langsam ein wenig Offtopic hier und gehört wohl eher ins Homematic-Forum - auch wenn Du dort auf solche Fragen sicher in erster Linie den Hinweis bekämst, dass Du Dir mal die Einführung in fhem durchlesen solltest. (http://fhem.de/Heimautomatisierung-mit-fhem.pdf)
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.

volschin

Ich habe gerade festgestellt, dass ein Prozentzeichen im Text das Modul aus dem Trab bringt.

set pushmsg msg 'Entwarnung Lueftung.Kueche' 'Luftfeuchte: 55%, Taupunkt innen: 14,3°C'

Fehler: no response

set pushmsg msg 'Entwarnung Lueftung.Kueche' 'Luftfeuchte: 55, Taupunkt innen: 14,3°C'

Alles OK. Andere Umlaute scheinen kein Problem zu sein.
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

volschin

Ich habe mir gerade die API-Erweiterungen von Pushover angeschaut, die HTML-Style betreffen. Eigentlich ziemlich cool.

Dafür bräuchte das Modul ein zusätzliches Attribut html, dass wenn es auf 1 gesetzt wird, dass als Parameter für die Messages mitgibt. Aus meiner Sicht wäre es ausreichend, dass global für alles Messages im Modul zu regeln und nicht für jede Message separat.

Was denkt Ihr?
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

volschin

#322
Ich habe das jetzt mal testweise eingebaut. Funktioniert bei mir super. Hier die API-Info, zu dem was aktuell möglich ist.

Gleichzeitig habe ich die möglichen Werte für priority um 2 und -2 erweitert.

Datei angehängt.
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

rapster

@volschin,
- da ich das momentane Pushover Fhem Modul allgemein für recht unflexibel halte, es wird nunmal einfach nur eine bestimmte Auswahl an Parametern unterstützt, z.B. fehlt auch der coole Paramter 'url=' womit man Fhem-Aktionen aufgrund eine PushMsg ausführen könnte.
- Und da das Modul mit BlockingGet arbeitet und somit bei jeder Pushmsg Fhem im besten fall für eine knappe Sekunde komplett lahmlegt, was besondern HM-Devices nicht mögen.

Habe ich mir ein myUtils-Ersatz dafür gebastelt, welcher NonBlocking arbeitet und alle Standard-Pushover-Api Parameter/Funktionen (bis auf die priority=2, receipts-API Funktionen) unterstützt.

use HttpUtils;

sub pushMsg($$@) {
    my ($title,$message,$otherParams) = @_;
my $config = {
url => 'https://api.pushover.net/1/messages.json',
token => 'asfsdagsdfjsadkfjlasdkfjlsadkfjlsadf',
user => 'asdklfjsakljfklasdjflksdjafsdf',
defaultTitle => 'FHEM!',
        accountDescription => 'Hauptaccount1'
};
pushMsgHttpGet($config,$title,$message,$otherParams);
}

sub pushMsg2ndAccount($$@) { 
    my ($title,$message,$otherParams) = @_;
    my $config = {
url => 'https://api.pushover.net/1/messages.json',
token => 'sadflksdjaflkajsdklfjklasdjflkasdf',
user => 'askdlfjklasdjflkasdjflkjlkasdjflkasdf',
defaultTitle => 'FHEM!',
        accountDescription => 'meinZweiterAccount'
};
pushMsgHttpGet($config,$title,$message,$otherParams);
}

sub pushMsgHttpGet($$$@) {
my ($config,$title,$message,$otherParams) = @_;
my $param = {
config => $config,
url => $config->{url},
timeout => 15,
noshutdown => 0,
loglevel => 5, #to debug set loglevel to 1
errorLoglevel => 1,
method => 'POST',
        data => 'token='.$config->{token}.'&user='.$config->{user}.'&message='.$message.'&timestamp='.int(time()).'&title='.(($title)?$title:$config->{defaultTitle}).(($otherParams)?'&'.$otherParams:''),
header => "Content-Type: application/x-www-form-urlencoded",
callback => \&pushMsgHttpResponse
};
    HttpUtils_NonblockingGet($param);
}

sub pushMsgHttpResponse($) {
my ($param, $err, $data) = @_;
if($err ne "") {
    Log $param->{errorLoglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." -  Error while requesting ".$param->{url}." - $err";
}
elsif($data ne "") {
Log $param->{loglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." - url ".$param->{url}." returned: $data";
if ($data =~ /"status":(.*),/) {
if ($1 eq "1" && $param->{code} == 200) {
Log $param->{loglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." - Pushover successful received and queued";
}
elsif ($data =~ /"errors":\[(.*)\]/) {
Log $param->{errorLoglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." - Error: $1";
}
else {
Log $param->{errorLoglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." - Error: $data - HTTP-Status: ".$param->{code};
}
} else {
Log $param->{errorLoglevel}, "pushMsgHttpResponse - ".$param->{config}->{accountDescription}." - Error, no known response: $data";
}
}
}


ZitatAufruf (perl):
{ pushMsg(0,"message") }    # simple Pushover Message
{ pushMsg("myTitle","message") }    # mit abweichendem Titel vom default
{ pushMsg("myTitle","message","priority=1&sound=siren&url=http://www.fhem.de/tuEtwas&device=iPhone2") }    # Ausnutzen weiterer API Parameter => https://pushover.net/api

Damit will ich das Modul keinesfalls schlechtreden, denn es tut ja generell das was versprochen wird!

Grüße

Loredo

Wird das Modul noch von Johannes_B gepflegt?


Ich habe ebenfalls eine veränderte Version (siehe Anhang).
Dort habe ich die Callback API Funktion mit eingebaut, um bei der Bestätigung von Emergency Nachrichten ein Event in FHEM zu generieren.


Ich hatte auch noch vor es auf Non-Blocking umzuschreiben und die URLs zu unterstützen. Beides kein großartiger Aufwand, aber jetzt fallen mir die Augen zu...




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

P.A.Trick

Zitat von: Loredo am 10 August 2015, 05:01:16
.....

Ich hatte auch noch vor es auf Non-Blocking umzuschreiben und die URLs zu unterstützen. Beides kein großartiger Aufwand, aber jetzt fallen mir die Augen zu...


Lieber Julian, das wäre der Hit in Tüten! ,-)
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

andiw

Zitat von: Loredo am 10 August 2015, 05:01:16
Ich hatte auch noch vor es auf Non-Blocking umzuschreiben und die URLs zu unterstützen. Beides kein großartiger Aufwand, aber jetzt fallen mir die Augen zu...

au ja !!!

Loredo

Hier anbei jetzt eine Version mit folgenden Verbesserungen gegenüber der Standardversion:






# -> Rewrite for Non-Blocking HttpUtils
# -> much more readings
# -> Support for emergency callback via push (see documentation below)
# -> Support for supplementary URLs incl. push callback (e.g. for priority < 2)
# -> Added readingFnAttributes to AttrList
# -> Added support for HTML formatted text
# -> Added user/group token validation


Was noch fehlt:


- Pulling für Emergency Callbacks
- Storno von Emergency Callbacks
- Mischfall Priority=2 und URL Push-Callback löst ggf. die Events nicht wie erwartet aus (Emergency Callback und URL Callback überschneiden sich)
- FhemCallbackId sollte mehr zufällig generiert werden (analog Pushover Receipt)
- Doku


Die Syntax ist soweit gleich geblieben und wurde hinten nur erweitert (mir ist grad auch nix besseres eingefallen).


Die Push-Callbacks lassen sich analog zum Modul GEOFANCY einrichten (dazu gibt es auch einen langen Artikel im Wiki).


Einige simple HTML Tags können direkt zum Formatieren von Text genutzt werden. Wer diese Tags explizit angezeigt haben möchte, stellt vorne an seinem Text ein nohtml: voran.


Über die Supplementary URL kann man entweder eine URL mitschicken oder aber einen (oder mehrere) FHEM Befehl, der dann beim klick auf den Link ausgeführt wird.
Der FHEM Befehl wird dabei nicht mit auf das Gerät übertragen, sondern bleibt intern gespeichert. Auch die Supplementary Callbacks haben einen Timeout, weshalb er auch zwingend angegeben werden muss (wie bei den Prio2 Nachrichten auch). HTTP-URLs werden dazu über FHEM redirected, sofern das Attribut callbackUrl definiert ist. Ansonsten funktioniert das Timeout natürlich nicht. URLs sind nur einmal innerhalb der Gültigkeit aufrufbar, ansonsten gibt es eine Fehlermeldung.
Andere URLs als http/https sind nicht mit einem Timeout versehen und werden auch nicht im Reading getrackt, sondern direkt auf dem Gerät ausgeführt (z.B. Links in andere iOS Anwendungen).
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

P.A.Trick

Cool die Grundfunktionen habe ich eben erfolgreich getestet!

PS: State wurde von opened auf connected verändert! <-- finde ich gut!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Loredo

Es gab vorher kein state ;)
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