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

Adimarantis

Und ich habe jetzt eine Version (3.21) eingecheckt, die Nachrichten an sich selbst korrekt in Readings übertragen sollte.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

KarlikKH

Ich habe tatsächlich mit Hilfe deiner Anleitung meine Festnetznummer wiederbekommen.
Leider gibt es doch noch ein Problem.
Nachrichten werden empfangen.
Journalctl zeigt:

Nov 27 19:51:28 raspberrypi signal-cli[1020]: Envelope from: "signal account" +49171xxxxxxx (device: 1) to +49xFestnetzx
Nov 27 19:51:28 raspberrypi signal-cli[1020]: Timestamp: 1732733488367 (2024-11-27T18:51:28.367Z)
Nov 27 19:51:28 raspberrypi signal-cli[1020]: Server timestamps: received: 1732733488501 (2024-11-27T18:51:28.501Z) delivered: 1732733488502 (2024-11-27T18:51:28.502Z)
Nov 27 19:51:28 raspberrypi signal-cli[1020]: Sent by unidentified/sealed sender
Nov 27 19:51:28 raspberrypi signal-cli[1020]: Message timestamp: 1732733488367 (2024-11-27T18:51:28.367Z)
Nov 27 19:51:28 raspberrypi signal-cli[1020]: Body: Testnachricht
Nov 27 19:51:28 raspberrypi signal-cli[1020]: With profile key

Nachrichten senden geht nicht.
Journalctl zeigt keinen Eintrag, FHEM-log auch nicht.
Ich sehe allerdings im Signalbot bei den Identities das die Sicherheitnummern von Handy -Festnetznummer vertauscht sind.
Ich vermute das dieser Fehler noch durch die vorherige Registrierung mit "link" entstanden ist.
Mir gelingt es allerdings nicht mehr diese Nummern richtig einzugeben.
Unter "set identities" wir die Festnetznummer nicht mehr angeboten.



KarlikKH


Adimarantis

Also Reste vom "Link" sollte es seitens FHEM nicht mehr geben, wenn du die Registrierung mit deiner alten Festnetzversion überschrieben hast. Kannst FHEM auf jeden Fall auch noch aus den verknüpften Geräten im Handy löschen.
Sonst hätte ich gesagt nach einem FHEM Neustart oder "set reinit" sollten spätestens nach folgenden Schritten alles da sein
- von beiden Seiten einen Testnachricht schicken
- get contacts
- Spätestens jetzt sollte die Nummer bei get identityDetails als Auswahl auftauchen
- Entsprechend noch mit dem QR den Trust herstellen
- Auf FHEM Seite "set trust" oder sogar "set trustVerified"
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

KarlikKH

Es war nach deiner vorgeschlagenen Vorgehensweise tatsächlich wieder alles da.
Die Nummern tauchen wieder auf.
Es gelingt mir aber nicht eine Sicherheitsnummern einzugeben.
Bei der Eingabe stürzt FHEM an. Nach Stop -Start-FHEM läuft FHEM wieder.
Wahrscheinlich muss ich Signal neu installieren und eventuell danach die alte Registrierung übernehmen.
Erstaunlich ist auch, daß ich zwar den alten Handy-Kontakt löschen kann. Unteren Identities bleibt er aber.
In Signal ist das ehemals gekoppelte Gerät gelöscht.



Adimarantis

Wenn FHEM abstürzt ist das schlecht und eher ein Fehler im Modul. Ich glaube nicht dass das an signal-cli oder dessen Registrierung liegt.
Kannst du das provozieren und mit verbose=5 ein Logfile produzieren?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

KarlikKH

Was kann ich nachvollziehen:
Ich gebe mit "set trustVerified die Festnetznummer - Leerzeichen- Safetynumber ein.
Versuche ich die Safetynummer einzugeben die in der Handy Signalapp unter der Festnetznummer angezeigt wird, stürzt FHEM ab.

Logfile:024.11.29 11:31:58 5: signal: Init: signal Signalbot
2024.11.29 11:31:58 4: signal: Protocol::DBus version found 0.22
2024.11.29 11:31:58 5: signal Using number +49Festnetz
2024.11.29 11:31:58 0: Featurelevel: 6.3
2024.11.29 11:31:58 0: Server started with 318 defined entities (fhem.pl:29222/2024-10-11 perl:5.032001 os:linux user:fhem pid:39949)
???2024.11.29 11:31:58 3: m2s: port 1883 opened
???2024.11.29 11:31:59 3: telnetForBlockingFn_1732876319.24082: port 36075 opened
???2024.11.29 11:31:59 3: Anrufliste device opened
2024.11.29 11:31:59 5: signal: Dbus Call sync:1 version() /org/asamk/Signal Args:empty
2024.11.29 11:31:59 5: signal: Dbus Call sync:1 listAccounts() /org/asamk/Signal Args:empty
2024.11.29 11:31:59 5: signal Found +49Festnetz
2024.11.29 11:31:59 5: signal: Dbus Call sync:1 getContactName(s) /org/asamk/Signal/_49Festnetz Args:+49Festnetz
2024.11.29 11:31:59 5: signal: Dbus Call sync:0 listNumbers() /org/asamk/Signal/_49Festnetz Args:empty
2024.11.29 11:31:59 5: signal: Dbus Call sync:0 listIdentities() /org/asamk/Signal/_49Festnetz Args:empty
2024.11.29 11:32:02 5: signal: DBus callback: listNumbers Args:Protocol::DBus::Type::Array=ARRAY(0x55c3145d40)
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 getContactName(s) /org/asamk/Signal/_49Festnetz Args:+49Festnetz
2024.11.29 11:32:02 5: signal: DBus callback: listIdentities Args:Protocol::DBus::Type::Array=ARRAY(0x55c313b8f0)
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 GetAll(s) /org/asamk/Signal/_49Festnetz/Identities/_49176HandyNrKennichnicht_1c784d1e_cbd4_445d_a32b_f3af3322cf47 Args:org.asamk.Signal.Identity
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 GetAll(s) /org/asamk/Signal/_49Festnetz/Identities/_49171MeinHandy_4647baa6_cb84_4dbc_ac9b_b17b8ac9f395 Args:org.asamk.Signal.Identity
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 GetAll(s) /org/asamk/Signal/_49Festnetz/Identities/_49Festnetz_de2fe555_b1db_406c_8878_54eaaedd2ec4 Args:org.asamk.Signal.Identity
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 getContactName(s) /org/asamk/Signal/_49Festnetz Args:+49171MeineHandyNr
2024.11.29 11:32:02 5: signal: Dbus Call sync:1 getContactName(s) /org/asamk/Signal/_49v Args:+49176HandyNrKennichnicht

Die 3 Zeilen mit dem Fragezeichen kommen reproduzierbar beim Event. Ich habe ein Modul "Anruf bei Abwesenheit-Mitteilung an Signal" ???!!!

Zur Info:
+49Festnetz hat die Safetynumber xxxxxxxxxxxxxxxx01 und ist trust verified
+49MeinHandy hat die Safetynummer xxxxxxxxxxxxxxx02 und ist untrusted verified -> diese Nummer zeigt mir aber Signal unter dem +49Festnetz-account an.
Irgendwie vertauscht, ich kann die Nummern nicht ändern.


BAfH

Guten Morgen,
ich nutze Signal unter anderen auch, um mein Tor zu öffnen. Gestern Abend ging es nicht.
Heute morgen geprüft, und siehe da mein Signal Bot läuft nicht. Die unten aufgeführte Fehlermeldung kommt.
Nach Prüfung der Logs sieht es so aus, am 10.12.2024 ist meine VM Maschine (Ubuntu mit Docker) auf Proxmox abgestürzt, Out of memory, war mein Fehler :-(.
Seit diesem Absturz läuft Signal nicht mehr.
Vergessen: Signal Version 3.21
Starting signal_cli
2024.12.13 09:04:31.089 2: Signal Define: Signal Signalbot
2024.12.13 09:04:49.755 5: Signal: Init: Signal Signalbot
2024.12.13 09:04:49.755 4: Signal: Protocol::DBus version found 0.22
2024.12.13 09:04:49.755 5: Signal Using number +49Festnetz
2024.12.13 09:05:02.099 5: Signal: Dbus Call sync:1 version() /org/asamk/Signal Args:empty
2024.12.13 09:05:02.161 4: Signal: Dbus Error for: version (details in reading lasterr)
2024.12.13 09:05:02.166 5: Signal: Error message: Error in version:Launch helper exited with unknown return code 1
2024.12.13 09:05:02.166 3: Signal: Could not init signal-cli - retry 1 in 10 seconds
2024.12.13 09:05:12.238 5: Signal: Dbus Call sync:1 version() /org/asamk/Signal Args:empty
2024.12.13 09:05:12.248 4: Signal: Dbus Error for: version (details in reading lasterr)
2024.12.13 09:05:12.251 5: Signal: Error message: Error in version:Launch helper exited with unknown return code 1
2024.12.13 09:05:12.251 3: Signal: Could not init signal-cli - retry 2 in 10 seconds
2024.12.13 09:05:22.328 5: Signal: Dbus Call sync:1 version() /org/asamk/Signal Args:empty
2024.12.13 09:05:22.337 4: Signal: Dbus Error for: version (details in reading lasterr)
2024.12.13 09:05:22.341 5: Signal: Error message: Error in version:Launch helper exited with unknown return code 1
2024.12.13 09:05:22.341 3: Signal: Could not init signal-cli - retry 3 in 10 seconds
2024.12.13 09:05:32.413 5: Signal: Dbus Call sync:1 version() /org/asamk/Signal Args:empty
2024.12.13 09:05:32.422 4: Signal: Dbus Error for: version (details in reading lasterr)
2024.12.13 09:05:32.426 5: Signal: Error message: Error in version:Launch helper exited with unknown return code 1
Was kann ich machen?  Eine komplette Neuregistrierung?
Hat jemand eine andere Idee?
Danke
Gruß Thorben
mit sonnige Grüße aus Schönow

Adimarantis

FHEM-Seitig bedeutet das "nur" das signal-cli nicht läuft.
D.h. du musst etwas tiefer nach der Ursache graben, z.B. ins syslog schauen warum der Service nicht hochkommt.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

BAfH

Guten Morgen,

danke für den Tipp.
Ich habe die Chance genutzt um auf neue Versionen zu gehen.
Mein Docker Image auf Basis von
ghcr.io/fhem/fhem-docker:4-bullseye neu erzeugt.
Signal-cli Version v0.13.9
Java 21 Runtime
Anschließend gemäß deines Tipps
Zitat von: Adimarantis am 01 November 2024, 22:25:14Habs in meiner Debian 11 VM auch mal probiert und sehe das selbe Problem. Defintiv das glibc Thema. Inzwischen bringt da auch ein Downgrade mit dem Script nichts, weil die library jetzt libsignal_jni_amd64.so (also mit amd64) heisst und anscheinend jetzt auch libraries für Mac und Windows mit ausgeliefert werden (womit die lib jetzt 41MB hat). Leider nicht für Raspberry.

Ich hab mal auf Debian 11 die lib für amd64 übersetzt. Dieses File bitte runterladen und in /opt/signal/lib ersetzen:
http://bublath.de/libsignal-client-0.58.2.jar

Achtung das ist jetzt bereits für signal-cli 0.13.9 - install Script ist eingecheckt und kann mit "reinit" aktualisiert werden. Also erst aktualisieren, Fehler ignorieren, Datei ersetzen und nochmal "service signal start" - dann läufts hoffentlich wieder.

Wird immer schwieriger den Support für "ältere" Systeme aufrechtzuerhalten. Signal-cli unterstützt halt generall nur die neusten Distributionen und Java Versionen. Wenn ich mal viel Zeit habe, muss ich mir anschauen, ob man das ganze nicht von DBUS auf REST-API umstellen kann. Dann kann signal-cli in einem separaten Container (da gibt es schon einen vorgefertigten) laufen - oder auf einem anderen System, was die ganze Prozedur flexibler machen sollte.
läuft alles, naja ich kann keine Bilder versenden....
Update, habe es gerade nochmal getestet und wollte die Logs posten.
Bilder werden versendet.  ;)
Danke
Frohe besinnliche Feiertage und einen guten Rutsch
Gruß Thorben
mit sonnige Grüße aus Schönow

Kohle77

Hallo,
ich muss mal etwas fragen. Ich bastle im Moment ein wenig mit docker.
Wenn ich es richtig verstehe ist das script fhem_signal_docker_install.sh von der Seite:
https://svn.fhem.de/fhem/trunk/fhem/contrib/signal/

Für das OS Ubuntu und nicht für Debian (Bullseye)? (im container cat /etc/os-releases)
Richtig?
Hat jemand das schon mal auf Debian zum laufen bekommen
mit diesem container https://hub.docker.com/r/fhem/alexa-fhem

Gruß
Christian

Adimarantis

Zum Thema Docker, gleich die Anmerkung:
Das war ein einmaliger Versuch und ist komplett ungepflegt.
Wenn sich jemand besser mit Docker auskennt als ich und das aktualisieren/umbauen will, nehme ich gerne pull requests unter
https://github.com/bublath/FHEM-Signalbot
entgegen.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

BAfH

Morgen,
ich nutze Signal mit FHEM im Docker Container auf Ubuntu "22.04.4 LTS (Jammy Jellyfish)"Ich nutze als Basis ghcr.io/fhem/fhem-docker:4-bullseye
Gerne poste ich mal meine Configs
Auszug docker-compose.yml
#-------------------------------------------------------------------------------------------
# FHEM Produktion
    fhem:
        hostname: fhemsignal
        container_name: FHEM-Produktion
        build: .
        restart: always
        tty: true
        stdin_open: true
        network_mode: host
        privileged: true
        restart: always
        volumes:
          - ./fhem/core/:/opt/fhem/
          - ./signal/:/var/lib/signal-cli
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            FHEMUSER: fhem
            FHEMGROUP: fhem
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7072
            TZ: Europe/Berlin
            NUMBER: "+49festnetz"
            SLEEPTIME: "5"
        depends_on:
            - "mysql"
            - "mqtt"
die org.asamk.Signal.conf
<?xml version="1.0"?> <!--*-nxml-*-->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
  "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>
  <policy user="fhem">
          <allow own="org.asamk.Signal"/>
          <allow send_destination="org.asamk.Signal"/>
          <allow receive_sender="org.asamk.Signal"/>
  </policy>

  <policy context="default">
          <allow send_destination="org.asamk.Signal"/>
          <allow receive_sender="org.asamk.Signal"/>
  </policy>
</busconfig>

und org.asamk.Signal.service
[D-BUS Service]
Name=org.asamk.Signal
Exec=/bin/false
User=fhem
SystemdService=dbus-org.asamk.Signal.service

meine pre-start.sh
#!/bin/bash
#$Id:$

SCRIPTVERSION="0.1"
# Author: Holoarts
# License: GPL
#start script for signal-cli within fhem docker
service dbus start
echo -n "Waiting for dbus to become ready."
    WAIT="service dbus status | grep -i 'dbus is running'"
    echo $WAIT
    CHECK=`$WAIT`
while [ -z "$CHECK" ]
do
echo -n "."
sleep 1
            CHECK=`$WAIT`
            echo $CHECK
done
echo "($CHECK), running"
echo "Starting signal_cli"
chown fhem.fhem /var/lib/signal-cli
echo "Starting sudo -u fhem /opt/signal/bin/signal-cli --config /var/lib/signal-cli daemon --system "
sudo -u fhem /opt/signal/bin/signal-cli --config /var/lib/signal-cli daemon --system  >>/var/log/signal.log 2>>/var/log/signal.err &
mein Dockerfile
FROM ghcr.io/fhem/fhem-docker:4-bullseye
#FROM ghcr.io/fhem/fhem-docker:3-bullseye

MAINTAINER holoarts<holoarts@yahoo.com>

ENV DEBIAN_FRONTEND noninteractive
ENV TERM xterm

RUN apt-get update
# Install dependencies
RUN wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
RUN dpkg -i jdk-21_linux-x64_bin.deb
#RUN apt-get -q -y install openjdk-17-jre-headless
RUN apt-get -q -y install zip nano
RUN apt-get clean && apt-get autoremove

WORKDIR "/tmp"
# Change auf Version v0.13.9
RUN wget -qN https://github.com/AsamK/signal-cli/releases/download/v0.13.9/signal-cli-0.13.9.tar.gz -O signal-cli-0.13.9.tar.gz
RUN tar zxf signal-cli-0.13.9.tar.gz
RUN mv signal-cli-0.13.9  /opt/signal
RUN wget -qN https://github.com/exquo/signal-libs-build/releases/download/libsignal_v0.46.0/libsignal_jni.so-v0.46.0-x86_64-unknown-linux-gnu.tar.gz
RUN tar zxf libsignal_jni.so-v0.46.0-x86_64-unknown-linux-gnu.tar.gz
COPY libsignal-client-0.58.2.jar /opt/signal/lib/
RUN zip -u /opt/signal/lib/libsignal-client-*.jar libsignal_jni.so
RUN rm -f signal-cli-0.13.9.tar.gz libsignal_jni.so
RUN cpan install Protocol::DBus
COPY org.asamk.Signal.conf /etc/dbus-1/system.d/org.asamk.Signal.conf
COPY org.asamk.Signal.service /usr/share/dbus-1/system-services/org.asamk.Signal.service
COPY pre-start.sh /docker/
# End Dockerfile
Ich hoffe das hilft Dir weiter.
Gruß Thorben
mit sonnige Grüße aus Schönow

Kohle77

Hi,
hmm ok ich dachte vielleicht ober so etwas nach:
https://github.com/cameo69/signald-with-tcp

Signal CLI in einem eigenen container und dann per TCP/IP vom FHEM container auf den signal-cli container.

@BAfH anscheinend versteh ich zu wenig von docker. Wenn du doch ghcr.io/fhem/fhem-docker:4-bullseye benutzt ist das OS doch bullseye?
Oder hast du Ubuntu installiert, darauf dann docker und docker compose.

Gruß
Christian

FhemPiUser

Hallo,

seit kurzem geht plötzlich die Fernsteuerung nicht mehr bei meinem signalbot.

Sonst funktioniert alles: Signalbot kann mir Nachrichten schicken, aber wenn ich in Signal eine Nachricht mit cmdKeyword an meinen Signalbot schicke, kommt nie eine Reaktion. cmdKeyword ist als attr vorhanden. Googleauth funktioniert und ist konfiguriert. Zusätzlich habe ich jetzt Kontakt mit set trust als "verified" markiert.

Fhem wurd neu gestartet und signal-cli-Skript wurde auch nochmal ausgeführt (signal-cli Update auf 0.13.11). In den Logs (syslog oder fhem) steht ab und zu die Fehlermeldung

signalbot: Timeout in sendMessage - check your syslog for signal-cli issues
Verbose 5 bringt auch nicht mehr Details.

Im syslog (journalctl -n 200) finde ich nur folgenden Eintrag zu signal-cli:

signal-cli[...]: WARN  ReceiveHelper - Connection closed unexpectedly, reconnecting in 100 ms
Ich hatte zwischendruch glaube ich mal meine signalbot-Telefonnumer auf dem Handy unter einem anderen Kontaktnamen, mit dem ich dann auch mal in eine Gruppe gejoined bin. Aus der Gruppe bin ich aber wieder ausgetreten. Weiß nicht, ob das relevant für die Ursachenfindung ist.

Jemand eine Idee?