Alternativen für Push-Mitteilungen (Ideensammlung)

Begonnen von balli1187, 18 August 2020, 11:55:46

Vorheriges Thema - Nächstes Thema

balli1187

Vorgeschichte
Viele von euch lassen sich Nachrichten aus ihrer FHEM-Instanz per Push aufs Handy schicken und nutzen dafür die bekannten Wege, wie Pushover, Pushbullet oder Telegram.

Ab und an befasse ich mich auch immer mal wieder damit, da es manchmal ganz hilfreich sein kann. Ich habe mich dann aber immer gefragt ob ich nicht ein System nutzen kann, was ich eh schon laufen habe anstatt eine weitere App aufs Telefon zu werfen (und die Frau davon zu überzeugen).
Ich würde hier gern 2 "Alternativen" zeigen, die ich mir bisher angeschaut habe. Vielleicht hilft es ja jemandem...
Weitere exotische Ideen sind ausdrücklich willkommen.

1. Amazons Alexa
Das echoDevice-Modul bietet die Möglichkeit Echo-Geräte aus FHEM heraus zu steuern. Seit einiger Zeit gibt es die Funktion "mobilemessage" am Account Device. Mit set <echoDevice> mobilemessage <Nachricht> wird darüber eine Push-Nachricht an die Alexa Smartphone App gesendet.
Der Haken daran ist, dass es an alle Geräte gesendet wird, die mit dem gleichen Account angemeldet sind bzw. nur ein Account im echoDevice Modul hinterlegt wird. Inwiefern die Installation mehrerer Instanzen in FHEM Problem hervorruft kann ich nicht sagen. Wir nutzen jedenfalls nur einen Account, wodurch hier nur ein Broadcast möglich ist.

2. Nextcloud
Für Kalender, Kontakte und File-sharing habe ich eine Nextcloud auf meinem Server laufen und natürlich Apps auf den mobilen Geräten. Da der NC-Server push-Nachrichten verschicken kann, kann man den ja auch missbrauchen :-)
Die Cloud hat eine Console, über die notifications getriggert werden können. sudo -u www-data php /var/www/nextcloud/occ notification:generate <User> "<Nachricht>"
Damit kann an jeden Benutzer eine Nachricht geschickt werden.
Leider habe ich hier noch Probleme dies aus FHEM heraus zu nutzen, da die NC und FHEM jeweils in eigenen Docker-Containern laufen und mir noch nicht klar ist, wie ich von einem Container in den nächsten komme (zumal die beiden nicht in einem Netzwerk sind.

VG, Stephan
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

PatrickR

Hi!

Zitat von: balli1187 am 18 August 2020, 11:55:46
2. Nextcloud
Für Kalender, Kontakte und File-sharing habe ich eine Nextcloud auf meinem Server laufen und natürlich Apps auf den mobilen Geräten. Da der NC-Server push-Nachrichten verschicken kann, kann man den ja auch missbrauchen :-)
Die Cloud hat eine Console, über die notifications getriggert werden können. sudo -u www-data php /var/www/nextcloud/occ notification:generate <User> "<Nachricht>"
Damit kann an jeden Benutzer eine Nachricht geschickt werden.
Weißt Du Genaueres, wie die Pushnachricht z. B. auf einem iOS-Gerät landet bzw. hast Du das praktisch mal ausprobiert? Ich kannte bisher nur Pull.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

balli1187

Zitat von: PatrickR am 18 August 2020, 12:26:16
Hi!
Weißt Du Genaueres, wie die Pushnachricht z. B. auf einem iOS-Gerät landet bzw. hast Du das praktisch mal ausprobiert? Ich kannte bisher nur Pull.

Patrick
Ich habe da bei mir über die Konsole getestet und die Nachricht kommt ganz normal mit Banner, etc. am iPhone an. Wie der Mechanismus genau funktioniert kann ich jedoch nicht sagen aber das wird ja für die Originalfunktionen, wie Kalendererinnerungen und sonstige Benachrichtigungen (ich habe das z.B. als Teil der 2FA eingestellt), auch genutzt. So kam ich auch auf den Trichter....
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

balli1187

#3
ich hab mittlerweile herausgefunden, wie man die Nextcloud (bzw. den integrierten push proxy) für andere Zwecke missbrauchen kann.

Hierzu wird in der Nextcloud die App "admin_notification" benötigt. Diese ist dafür gedacht, dass Cloud-admins nachrichten an die User schicken können. Benötigt wird dafür ein Username (Nextcloud-User) und die Nachricht selbst.
Um dies von außen zu triggern, gibt es die "open collaboration service" API (kurz OCS). letzlich ist es nichts weiter als ein simpler url-Aufruf.

Ich habe mir eine kleine Funktion für die 99_myUtils gebastelt.

use XML::LibXML;

sub ncMsg($$) {
my (@users) = split(/-/,$_[0]);
my ($msg) = $_[1];
my $admin = <admin user>;
my $pw = <admin password>;
my $url = <Nextcloud URL>;

foreach(@users) {
my $back = qx(curl -H "OCS-APIREQUEST: true" -u $admin:$pw -X POST https://$url/ocs/v2.php/apps/admin_notifications/api/v1/notifications/$_ -d "shortMessage=$msg");

my $dom = XML::LibXML->load_xml(string => $back);
my $status = ($dom->findnodes('/ocs/meta/status'));
my $code = ($dom->findnodes('/ocs/meta/statuscode'));

fhem("setReading globalMsg ncMsg_statuscode $code");
fhem("setReading globalMsg ncMsg_status $status");

if ($code = 200) {
Log3 'globalMsg', 3, "[Nextcloud Push succesful] $_ : $msg";
}
else {
Log3 'globalMsg', 2, "[Push Error] Code $code: $status";
}
}
}


Zu anfang war es so gedacht, dass man über die Funktion eine nachricht an mehrere user schicken kann allerdings wird das auch durch das msg-Modul erbracht also hab ich es nicht weiter verfeinert.
Vielleicht hilft es ja jemandem. Sollte jemand Verbesserungsvorschläge für den Code haben, nur zu. meine Perl-Kentnisse sind recht rudimentär  ;)
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero