Neues Modul: Signalbot (Integration für den Signal Messenger) via signal-cli

Begonnen von Adimarantis, 31 Januar 2021, 19:16:19

Vorheriges Thema - Nächstes Thema

holoarts

Hi Chris,

freut mich, dass du meine Erweiterung brauchen kannst.

Da das original fhem/fhem Image x86 kann, ist vermutlich nur in meinem Dockerfile der Link https://github.com/bublath/FHEM-Signalbot/raw/main/armhf-glibc2.31-0.10.9/libsignal_jni.so durch https://github.com/bublath/FHEM-Signalbot/raw/main/amd64-glibc2.28-0.10.9/libsignal_jni.so. Das hast du vermutlich ohnehin schon gemacht.

Ich habe leider kein Testenvironment dafür zur Verfügung.

Zu Truenas Scale kann ich leider nichts beitrage.

LG Michael
FHEM Nutzer seit 2007

Flachzange

Ja, genau ich habe nur die Library getauscht (auch wenn ich natürlich erstmal die falsche Version gegriffen hatte). Der Container läuft jetzt auch und Signal sendet auch fleißig. Mir war nur erstmal gar nicht klar, wie ich da jetzt meinen eigenen Container bauen muss, aber das war eine vergleichsweise flache Lernkurve!

Danke nochmal. Das hat meinen Umstieg auf Docker massiv erleichert.

Danke natürlich an dieser Stelle nochmal an Jörg für das super Plugin, was hier seit Monaten gute Dienste verrichtet.

Adimarantis

Zitat von: Adimarantis am 08 August 2022, 18:29:27
Ich hab das auch gerade mal probiert und testweise ein "addDevice" in Signalbot eingebaut.
...
- Die gelinkte Instanz kann nur senden aber nicht empfangen
Das scheint bei mir nach einem sauberen reinit jetzt doch zu funktionieren. Gruppeninfos ist wohl ein bekanntes Problem.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Update 3.10:

Neue Funktionen (nur unter signal-cli 0.10+)
set addDevice : Fügt eine andere (FHEM) Instanz als "Mitbenutzer" zur aktuellen Nummer hinzu. Der URI Code dazu wird auf der anderen Device mit "set link" erzeugt. Die zweite Device kann sowohl senden als auch empfangen, was bei der Event Bearbeitung zu beachten ist, damit es kein Durcheinander gibt.
set removeDevice: Entfernt eine "linked device". Argument ist die Device ID die man über "get devices" erhält.
get devices: Listet all gelinkten Devices auf, wobei #1 üblicherweise die Hauptdevice ist

Geänderte Funktionen:
set link : Hat nun einen optionalen Parameter um einen Namen festzulegen (der dann bei "get devices") sichtbar wird.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Gisbert

Hallo Adimarantis,

ich halte den Signalbot immer auf dem laufenden Stand und ich erinnere mich, dass es diese Woche auch noch lief.

Durch deine Ankündigung von gestern abend habe ich in das Device reingeschaut und folgendes gesehen:
signal-cli v0.9.0+ required.
Please use installer to install or update
Note: The installer only supports Debian based Linux distributions like Ubuntu and Raspberry OS
and X86 or armv7l CPUs

You can download the installer here or your www/signal directory and run it with
sudo ./signal_install.sh

Hinweis: der link unter "here" funktioniert nicht.

Ich hab die Installationsdatei runtergeladen: https://svn.fhem.de/fhem/trunk/fhem/contrib/signal/ und ausgeführt.
Ich erhalte folgende Fehlermeldung:
Checking system Java version ... Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Installing openjdk-17-jre-headless...Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
failed


Warum hat das noch kürzlich laufende Device/Modul seinen Geist aufgegeben und warum funktioniert der Installer nicht?

Grund gefunden.
Wegen des Unifi-Controllers muss ich Java 8 benutzen. Ich benötige für Signal aber Java 17. Aus einem Grund, den ich nicht weiß, wurde die primäre Java-Installation auf die Version 8 gesetzt:
java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-1~deb9u1-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Java 17 ist aber installiert:
sudo  update-java-alternatives --list
java-1.17.0-openjdk-amd64      1711       /usr/lib/jvm/java-1.17.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

Mit folgendem Befehl wird Java 17 die primäre Version:
sudo update-java-alternatives --auto
java -version
openjdk version "17.0.4" 2022-07-19
OpenJDK Runtime Environment (build 17.0.4+8-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 17.0.4+8-Debian-1deb11u1, mixed mode, sharing)


Damit läuft die Signal-Installation sauber durch und Signal funktioniert wieder  :) :) :)

Noch eine kleine Ergänzung für Unifi-Controller Geschädigte:
Man muss in der .bashrc (liegt im Home-Verzeichnis des Users) in der 1. Zeile folgendes ergänzen:
export JAVA_HOME=
Damit wird kein Pfad für Java angegeben. Unifi kommt damit anscheinend zurecht, da Java 8 dort hardgecodet ist.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

pcjogi

Hallo, erst einmal Danke für die Implementierung der Funktion AddDevice

ICH WAR DER FEHLER!!  Copy Paste hat nicht funktioniert. Das Modul funktioniert!


Ich habe das versucht zu nutzen, bin aber auf einen Fehler gestoßen.

Auf dem System auf dem ich addDevice durchführen will bekomme ich den Fehler: Error in addDevice:Failure: NotFoundException Add device link failed. [404] Not found

Im verbose 5 Log bekomme ich das folgende

2022.08.23 10:12:36 3: CORESECURE.SIGNAL: AddDevice for sgnl://linkdevice?uuid=XXX&pub_key=YYY returned:
2022.08.23 10:12:58 5: CORESECURE.SIGNAL: Dbus Call sync:1 addDevice(s) /org/asamk/Signal/_49999999 Args:sgnl://linkdevice?uuid=XXX&pub_key=YYY
2022.08.23 10:12:58 4: CORESECURE.SIGNAL: Dbus Error for: addDevice (details in reading lasterr)
2022.08.23 10:12:58 3: CORESECURE.SIGNAL: AddDevice for sgnl://linkdevice?uuid=XXX&pub_key=YYY returned:


Bin ich der Fehler, oder gibt es eine Idee.

Danke
Haupt-Fhem (Docker auf Synology), Sub-Fhem (433Mhz und 833Mhz) auf RasPi, Sub-Fhem (Heizungssteuerung) auf RasPi, Sub_Fhem (System) auf RasPi, IoBroker zur Darstellung (Docker auf Synology), alles verbunden über einen MQTT Broker, insgesamt ca. 100 Sensoren/Aktoren

oelkanne

Guten Abend,

Ich möchte auf meiner Raspberry von SISI auf Signalbot umsteigen. Muss ich dafür irgendwas von SISI erst entfernen, bevor ich das Sognalbot script zur Neuinstallation ausführe?

tomcat.x

@oelkanne: Ich bin nach der Anleitung unter Punkt "Umstieg von SiSi" im Wiki vorgegangen ...

https://wiki.fhem.de/wiki/Signalbot
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

oelkanne

@tomcat.x
In der WIKI wird von einer einfachen Migration abgeraten. Deshalb wollte ich SIGNALBOT "frisch" installieren (mit dem Script). Unklar ist mir jedoch, ob oder wie ich das alte SISI vorher entfernen kann.

Adimarantis

Die alte Registrierung in der Uralt-Version von signal-cli die SiSi verwendet ist nicht mehr kompatibel. Daher solltest du die Nummer von vorne registrieren.

Im Prinzip überschreibt die Signalbot Installation alle aktiven Komponenten von SiSi, so dass eine händische Deinstallation nicht notwendig sein sollte. Nur das SiSi Device in FHEM muss vorher manuell gelöscht werden.
Du kannst ja mal berichten ob du Probleme hattest.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tomcat.x

Mir fällt dabei wieder ein, dass ich vor kurzem die Nummer neu registrieren musste und dann darüber gestolpert bin, dass sowohl beim Link als auch in der Registry-Datei für Windows die IP-Adresse (statt Servername) und "http" stand, was nicht so gut funktioniert, wenn fhem nur über https erreichbar ist ;-). Gestartet habe ich das im Browser, wo ich fhem mit https über den Namen aufrufe. Wird das von irgendwo gezogen, wo ich es ändern könnte?
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Adimarantis

Also das reg file kannst du ja editieren bevor du es in Windows einliest.
Mit den http vs https hast du wohl recht. Ich gehe mal davon aus, dass dazu das Attribut HTTPS in FHEMWEB auf 1 gesetzt wird.
Das kann ich abfragen und entsprechend http oder https verwenden.
Natürlich könnte ich statt der IP auch den Hostname verwenden, aber das setzt voraus, dass der im lokalen Netz überall bekannt ist, wovon ich nicht zwingend ausgehen kann, daher nehme ich hier lieber die IP.
Das führt dann mit https wahrscheinlich zu einer "unsicheren Verbindung", aber das kann mal ja hier einmalig ignorieren (oder wie gesagt eben das reg file editieren).
Oder kann ich im https Fall davon ausgehen dass "hostname -f" mir den korrekten Namen gibt und dass dann immer funktionert?

Mein FHEM Setup ist im lokalen Netz ohne HTTPS - bei mir ist nginx vorgeschaltet und der übernimmt die ganze Absicherung, daher bin ich auf das Problem noch nicht gestossen.

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tomcat.x

Zitat von: Adimarantis am 04 September 2022, 19:26:18
Also das reg file kannst du ja editieren bevor du es in Windows einliest.

Ja, klar. Im Browser fällt einem das halt direkt auf, in der Reg-Datei nur, wenn man sich die mal anschaut.

Zitat von: Adimarantis am 04 September 2022, 19:26:18
Ich gehe mal davon aus, dass dazu das Attribut HTTPS in FHEMWEB auf 1 gesetzt wird.
Ja, genau.

Zitat von: Adimarantis am 04 September 2022, 19:26:18
Das führt dann mit https wahrscheinlich zu einer "unsicheren Verbindung", aber das kann mal ja hier einmalig ignorieren
Je nach Browser muss man eine Ausnahme definieren, wobei ich damit glaube ich auch schon bei manchen Browser Probleme hatte. Also besser Adresse und reg Datei manuell anpassen.

Zitat von: Adimarantis am 04 September 2022, 19:26:18
Oder kann ich im https Fall davon ausgehen dass "hostname -f" mir den korrekten Namen gibt und dass dann immer funktionert?

Hm, also bei mir wohl nicht ;-) Muss ich mal schauen, die Domain fehlt.

Also insgesamt nicht so einfach das mal schnell umzusetzen. Braucht man ja auch nicht ständig.

Danke.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Adimarantis

ZitatJa, klar. Im Browser fällt einem das halt direkt auf, in der Reg-Datei nur, wenn man sich die mal anschaut.
Jetzt steh' ich bisschen auf dem Schlauch. Das mit der reg Datei ist klar, da hab ich schon einen Patch der je nach Setting in FHEMWEB http oder https macht, aber was meinst du mit "Browser"?

"hostname -f" sollte ja eben den "fully qualified" hostname ausgeben, aber das muss eben sauber konfiguriert sein. Bei unseren Kisten in der Arbeit passt das, aber bei selbstkonfigurierten Systemen ist das eher nicht der Fall.
Dazu kommt, dass bei der Verschlüsselung ja der Name ausschlaggebend ist, der im Zertifikat vergeben ist. Bei meiner Nginx Konfiguration hat das mit dem eigentlichen Hostnamen gar nichts zu tun (und nutzt noch dazu andere Ports).
Einzig halbwegs praktikable Lösung wäre mich also das in einem Attribut zu definieren - aber das machst du auch erst, wenn es zum ersten Mal schiefgegangen ist, und ob du dann die reg Datei editierst oder das Attribut setzt ist fast schon egal.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tomcat.x

Puh, ist schon wieder ein Momentchen her, aber im Verlauf der Registrierung wird doch ein Link angezeigt, auf den man Klicken muss und die reg Datei sorgt dann nur dafür, dass dabei das richtige passiert, nämlich die PowerShell aufgerufen wir (oder so ;-)

Der Hostname passt bei mir zum Zertifikat, nur am Ergebnis von "hostname -f" bin ich noch dran. Wird auch mit "hostname" gesetzt, aber das will ich in einer ruhigen Minute machen, falls danach was nicht funktioniert.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo