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

Zufällig hat sich meine Tochter gerade ein neues Handy geleistet, da konnte ich die Szenarien selbst durchprobieren.
Bei mir hat aber alles wie erwartet geklappt, d.h.
- Kein Empfang vom neuen Handy
- Fehler bei Versand an neues Handy - egal ob direkt oder Gruppe - alle anderen Gruppenmitglieder haben die Nachricht aber erhalten - Fehlermeldung in Signalbot spezifisch für neues Handy
- Versand und Empfang mit allen anderen funktioniert weiter

Nach Herstellung des Trust, entsprechend alles wieder ok.

Warum das bei dir Auswirkungen auf andere Teilnehmer hatte, kann ich leider nicht nachvollziehen und hatte evtl. noch andere Ursachen.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Flachzange

Ok, danke fürs Prüfen. Bei mir gab es einen klaren Zusammenhang zum Trust. Danach ging es wieder.

Aeroschmelz

Hi Gisbert,

ich habe aktuell das gleiche Problem, dass mein Unifi Controller nicht mehr läuft, weil er nach der Installation von Signal Cli über den symbolischen Link unter /usr/bin/java auf die 17 Version zugreift. Bei mir läuft das auf einem Raspberry mit Rasbian (Debian Bullseye). Jetzt wollte ich es eigentlich erreichen, dass entweder Signal-Cli auf die richtige Java Version werweist und ich den symbolischen Link anpasse oder Unifi auf den Java8-SDK zugreift (wäre mir am liebsten). Leider bin ich da noch nicht weitergekommen. Es gibt zwar bei Google den Hinweis, dass man unter /etc/init.d/unifi den JAVA_HOME Pfad anpassen soll, bei mir gibt es den aber in der Datei nicht.

Danke schon im voraus.

Viele Grüsse
Marcus


Zitat von: Gisbert am 15 Juni 2022, 10:50:47
Hallo Adimarantis,

ich hab das Installationsskript laufen lassen, da das Modul nicht mehr funktioniert hat.

Beim Installieren kam diese Frage:
10a11
> Environment="JAVA_HOME="
/etc/systemd/system/signal.service differs, update (Y/n)?

Die habe ich mit Y (=ja) beantwortet.

Jetzt steht in signal.services drin:
[Unit]
Description=Send secure messages to Signal clients
Requires=dbus.socket
After=dbus.socket
Wants=network-online.target
After=network-online.target

[Service]
Type=dbus
Environment="SIGNAL_CLI_OPTS=-Xms2m"
Environment="JAVA_HOME="
ExecStart=/opt/signal/bin/signal-cli --config /var/lib/signal-cli daemon --system
User=signal-cli
BusName=org.asamk.Signal

[Install]
WantedBy=multi-user.target
Alias=dbus-org.asamk.Signal.service

insbesondere: Environment="JAVA_HOME="

Da ich auf dem selben Server den UniFi-Controller laufen lasse, der zwingend Java8 benötigt, musste ich einige Klimmzüge machen, damit die neuere Java17-Version für Signal und andererseits die Java8-Version für UniFi zur Verfügung steht.

Meine Frage lautet:
Was müsstet des eigentlich üblicherweise bei Environment="JAVA_HOME=" stehen?

Viele Grüße Gisbert

Edit: Falls ein User den Inhalt der signal.services Datei posten könnte, wäre das auch herzlich willkommen.

Gisbert

Hallo Marcus,

ich kopiere hier, was ich mir notiert hab, vielleicht hilft es dir und du kannst ebenfalls Signal und Unifi auf dem selben Rechner laufen lassen.

Zitat25.09.2022    Signal, UniFi:

   https://forum.fhem.de/index.php/topic,118370.msg1236491.html#msg1236491   
      
   In /etc/systemd/system/signal.service folgendes eintragen (bei mir liegt Java 17 dort):   
   Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"   
   Ich hab dann den Server auf dem Fhem, Signal und der Unifi-Controller (und noch einiges mehr) läuft, neu gestartet.   
   Es läuft erstaunlicherweise alles.   
      
   echo $JAVA_HOME
   /usr/lib/jvm/java-8-openjdk-amd64/jre/
   In der Datei .bashrc diese Zeile auskommentieren:
   # export JAVA_HOME=

   java -version   
   openjdk version "11.0.16" 2022-07-19   
   OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)   
   OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)   
      
   dpkg -l | grep "oracle\|openjdk"   
   ii  openjdk-11-jre-headless:amd64        11.0.16+8-1~deb11u1            amd64        OpenJDK Java runtime, using Hotspot JIT (headless)   
   ii  openjdk-17-jdk:amd64                 17.0.4+8-1~deb11u1             amd64        OpenJDK Development Kit (JDK)   
   ii  openjdk-17-jdk-headless:amd64        17.0.4+8-1~deb11u1             amd64        OpenJDK Development Kit (JDK) (headless)   
   ii  openjdk-17-jre:amd64                 17.0.4+8-1~deb11u1             amd64        OpenJDK Java runtime, using Hotspot JIT   
   ii  openjdk-17-jre-headless:amd64        17.0.4+8-1~deb11u1             amd64        OpenJDK Java runtime, using Hotspot JIT (headless)   
   rc  openjdk-8-jre-headless:amd64         8u232-b09-1~deb9u1             amd64        OpenJDK Java runtime, using Hotspot JIT (headless)   
      
   Der Unifi-Controller lief erst nicht richtig und hat nach Java 11 verlangt, hab das dann installiert.

Zitat08.10.2022   Signalbot

   Bevor das Installationsscript durchgeführt wird, bitte folgendes ausführen:
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   Ansonsten wird die Java 11 benutzt und das Installationsskript bricht ab.
   echo $JAVA_HOME
   /usr/lib/jvm/java-8-openjdk-amd64/jre/
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   echo $JAVA_HOME
   /usr/lib/jvm/java-17-openjdk-amd64

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

Aeroschmelz

HI Gisbert,

danke für die schnelle Antwort. Die Installation der Signal-CLI habe ich leider mit Standard-Parametern durchgeführt, so dass auch JAVA 17 standardmäßig verwendet wird. Mitterlweile habe ich aber ebenfalls den JAVA_HOME Path in der signal.service Datei auf diese Version gesetzt. Der Service startet damit auch und ich kann auch weiterhin Mitteilungen schicken. Leider habe ich es noch nicht geschafft den Unifi-Service wieder zum Laufen zu bekommen. Ich hatte bei einer Google Suche irgendwo gefunden, dass es damit funktionieren soll:


export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf/
export PATH=$PATH:$JAVA_HOME/bin


Das hat aber nichts gebracht und bei java --version kam immer noch die 17 er Version. Anschließend habe ich es mit 


sudo update-alternatives --config java


versucht. Da kam dann

Es gibt 3 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen)                                                                                                                                             

  Auswahl      Pfad                                            Priorität Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-17-openjdk-armhf/bin/java      1711      automa                                                                                                                                                                                 tischer Modus
  1            /usr/lib/jvm/java-11-openjdk-armhf/bin/java      1111      manuel                                                                                                                                                                                 ler Modus
  2            /usr/lib/jvm/java-17-openjdk-armhf/bin/java      1711      manuel                                                                                                                                                                                 ler Modus
  3            /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java   1081      manuel                                                                                                                                                                                 ler Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein:


und ich konnte die 11er Version auswählen. Ein java --version bringt dann auch die richtige Rückmeldung und der symbolische link unter /usr/bin/java verweist dann auch auf as richtige JDK.  Leider bringt Unifi immer noch die gleiche Fehlermeldung und ich bin mir nicht sicher was hier der automatische und der manuelle Modus bedeutet.

Was meinst du denn mit der Anpassung der .bashrc Datei? Bei mir gibt es ein .bashrc. Skript in jedem HOME Verzeichnis (pi/root). Soll das da eingefügt werden?

Danke.


echo $JAVA_HOME
   /usr/lib/jvm/java-8-openjdk-amd64/jre/
   In der Datei .bashrc diese Zeile auskommentieren:
   # export JAVA_HOME=

Gisbert

Hallo Marcus,

ich kann dir leider nicht mehr sagen als das, was ich mir notiert hatte. Falls ich wieder ein Problem haben sollte, dann ist das der Wiedereinstieg in das entsprechende Thema, mehr nicht.

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

berniie

Hallo,
einfach eine export JAVA_HOME Zeile im start script signal-cli einfügen



##############################################################################

export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-armhf"

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0


Grüße,
Jörg

Aeroschmelz

Hallo Jörg,

Der Signal Dienst läuft mit der Einstellung, aktuell bekomme ich es nur nicht so hin, dass Debian standardmäßig das Java 11 verwendet bzw. zumindest das der Unifi Controller diese Version verwendet ;-) Ist vermutlich ganz einfach, aber da fehlen mir die LInux-Kenntnisse.

Viele Grüsse
Marcus



Zitat von: berniie am 02 Januar 2023, 11:13:17
Hallo,
einfach eine export JAVA_HOME Zeile im start script signal-cli einfügen



##############################################################################

export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-armhf"

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0


Grüße,
Jörg

Aeroschmelz

Hi Martin,

ich habe das gleiche Problem wie du und verstehe nicht warum das nicht funktioniert. Hast du das mittlerweile gelöst? Bei mir steht im Log:


023.01.08 13:54:04 5: msg globalMsg: msgType lookup for globalMsg:
2023.01.08 13:54:04 5: msg globalMsg:    Adding to @typesOr: push
2023.01.08 13:54:04 5: msg globalMsg:       Adding to @type: push
2023.01.08 13:54:04 5: msg globalMsg: Checking for available routes (triggered by type push)
2023.01.08 13:54:04 5: msg globalMsg: screen route check result: ROUTE_UNAVAILABLE
2023.01.08 13:54:04 5: msg globalMsg: light route check result: ROUTE_UNAVAILABLE
2023.01.08 13:54:04 5: msg globalMsg: audio route check result: ROUTE_UNAVAILABLE
2023.01.08 13:54:04 5: msg globalMsg: push route check result: ROUTE_AVAILABLE
2023.01.08 13:54:04 5: msg globalMsg: mail route check result: ROUTE_UNAVAILABLE
2023.01.08 13:54:04 4: msg globalMsg: Available routes: screen=0 light=0 audio=0 text=1 push=1 mail=0
2023.01.08 13:54:04 5: msg globalMsg: Trying to send message via gateway Signalbot to recipient @+49157XXXXXXXXX
2023.01.08 13:54:04 5: msg globalMsg: Determined default title:
2023.01.08 13:54:04 5: msg globalMsg: msgSchema: replacing %RECIPIENT% and $RECIPIENT by ''
2023.01.08 13:54:04 5: msg globalMsg: msgSchema: replacing %Signalbot_MTYPE% and $Signalbot_MTYPE by 'send'
2023.01.08 13:54:04 3: msg globalMsg: ID=1673182444.53797.1 TYPE=push ROUTE=Signalbot RECIPIENT=@+49157XXXXXXXX STATUS=UNAVAILABLE PRIORITY=0 TITLE='FHEM' 'test'
2023.01.08 13:54:04 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:04 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:04 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:05 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:19 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:19 5: msgConfig globalMsg: called function msgConfig_Set()
2023.01.08 13:54:19 5: msgConfig globalMsg: called function msgConfig_Get()


Danke.

VG
Marcus

P.S. Habe den Raspi neu aufgesetzt, nun läuft Unifi und Signal mit der jeweiligen Java Version.

Zitat von: Martin W am 05 Dezember 2022, 13:44:13
Hat leider keine Auswirkung.

Ja, er heißt  wirklich "signalbot" :)

define signalbot Signalbot
attr signalbot registerMethod Voice
attr signalbot room Alarmanlage,Server
attr signalbot showtime 1
#   FD         4
#   FUUID      61b74507-f33f-abb9-a6b0-2326e2283f6cc132
#   NAME       signalbot
#   NOTIFYDEV  global
#   NR         108
#   NTFY_ORDER 50-signalbot
#   STATE      0
#   TYPE       Signalbot
#   VERSION    Signalbot:3.11 signal-cli:0.11.4 Protocol::DBus:0.22
#   eventCount 4
#   model      Raspbian GNU/Linux 11 (bullseye)
#   Helper:
#     DBLOG:
#       account:
#         logdb:
#           TIME       1670210837.00059
#           VALUE      +496329xxxxxx
#       joinedGroups:
#         logdb:
#           TIME       1670229098.16383
#           VALUE      Zuhause
#       lastError:
#         logdb:
#           TIME       1670210837.00059
#           VALUE      ok
#   READINGS:
#     2022-12-05 04:27:16   account         +496329xxxxx
#     2022-12-05 04:27:16   accountName     
#     2022-12-05 09:31:38   joinedGroups    Zuhause
#     2022-12-05 04:27:16   lastError       ok
#     2022-11-13 22:40:07   msgAttachment   
#     2022-11-13 22:40:07   msgAuth         0
#     2022-11-13 22:40:07   msgGroupName   
#     2022-11-13 22:40:07   msgSender       Martin W.
#     2022-11-13 22:40:07   msgText         Zur�ck
#     2022-11-13 22:40:07   msgTimestamp    13-11-2022 22:40:04
#     2022-12-05 09:59:07   sentMsg         Fenster im Bad oben noch offen!!
#     2022-12-05 09:59:14   sentMsgRecipient martin
#     2022-12-05 09:59:14   sentMsgTimestamp 05-12-2022 09:59:07
#     2021-12-13 20:49:14   state           0
#   helper:
#     accounts   1
#     init       1
#     lasterr    Error in version:Failed to activate service 'org.asamk.Signal': timed out (service_start_timeout=25000ms)
#     multi      1
#     signalpath /org/asamk/Signal/_496329989295
#     version    1104
#     accountlist:
#       +4963299xxxx
#     contacts:
#       +4915206xxxxxx martin
#       +4917660xxxxxx vera
#       +4963299xxxxxx
#     groups:
#       113 253 133 152 238 212 203 75 255 37 233 189 185 239 95 184 168 90 183 78 145 138 27 235 77 74 122 35 214 215 49 162:
#         active     1
#         blocked    0
#         name       Zuhause
#
setstate signalbot 0
setstate signalbot 2022-12-05 04:27:16 account +496329xxxxx
setstate signalbot 2022-12-05 04:27:16 accountName
setstate signalbot 2022-12-05 09:31:38 joinedGroups Zuhause
setstate signalbot 2022-12-05 04:27:16 lastError ok
setstate signalbot 2022-11-13 22:40:07 msgAttachment
setstate signalbot 2022-11-13 22:40:07 msgAuth 0
setstate signalbot 2022-11-13 22:40:07 msgGroupName
setstate signalbot 2022-11-13 22:40:07 msgSender Martin W.
setstate signalbot 2022-11-13 22:40:07 msgText Zur�ck
setstate signalbot 2022-11-13 22:40:07 msgTimestamp 13-11-2022 22:40:04
setstate signalbot 2022-12-05 09:59:07 sentMsg Fenster im Bad oben noch offen!!
setstate signalbot 2022-12-05 09:59:14 sentMsgRecipient martin
setstate signalbot 2022-12-05 09:59:14 sentMsgTimestamp 05-12-2022 09:59:07
setstate signalbot 2021-12-13 20:49:14 state 0



stehlampe

Moin,

ich weiß jetzt nicht, ob es besser gewesen wäre mein Problem mit Signalbot hier zu platzieren, aber ich finde es ziemlich unübersichtlich alles in einem Thread zu verwursten. Daher hab ich einen eigenen Thread geöffnet.

Vielleicht hat ja jemand eine Idee zu meinem Problem und fühlt sich eingeladen :
"Signalbot/signal-cli Integration kaputt bzw. Neuinstallation schlägt fehl"
https://forum.fhem.de/index.php/topic,131566.0.html

Viele Grüße
Chris
"Advice is like snow; the softer it falls the longer it dwells upon, and the deeper it sinks into the mind." -- Samuel Taylor Coleridge -

Adimarantis

Das Signalbot einfach allgemein unter "Unterstützende Dienste" läuft, ist es eher Glücksache wenn mir ein Post außerhalb dieses Threads auffällt (für den ich Notifications bekomme).
Daher am Besten zumindest einen kurzen Post hier, oder eine PM um meine Aufmerksamkeit zu bekommen. Das eigentliche Thema können wir dann gerne im neuen Thread abarbeiten.

Jörg
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.12 (ab morgen per update, jetzt schon im SVN):

- Um die Zusammenarbeit mit "msg" zu verbessern wird jetzt das reading "state" entsprechend gesetzt. Für alle die es noch nicht mitbekommen haben: Für "msg" gibt es jetzt ein Update, wodurch Signalbot sauber unterstützt wird.
- Die "register" Funktion würde vom Ablauf her etwas überarbeitet. Insbesondere wird jetzt erkannt, wenn eine Nummer eigentlich schon registriert war und z.B. mit "unregister" deaktiviert wurde. In dem Fall wird jetzt kein Captcha mehr verlangt.
- Die Dokumentation in der Benutzerführung zum Captcha wurde aktualisiert und vereinfacht, da es inzwischen ja leichter geworden ist, den Captcha-Link zu kopieren
- Eine "unregister" Funktion wurde konsistenzhalber (insbesondere um "register" zu testen") als versteckte Funktion eingebaut. Sehe ich aber keinen sinnvollen Anwendungsfall, daher nur direkt mit "set" Befehl in der Kommandozeile verwendbar.
- Hat jetzt mit Signalbot direkt nichts zu tun, ist aber hier eingebaut: Für alle FTUI3 Nutzer evtl. interessant: Als Erweiterung des Verschickens von DOIF uiTables gibt es jetzt auch Funktionen mit denen die SVG Daten zur Darstellung auf einer Website extrahiert werden können. Mehr dazu unter https://forum.fhem.de/index.php/topic,129898.0.html
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

drhirn

Zitat von: Adimarantis am 16 Januar 2023, 19:48:56
Für alle die es noch nicht mitbekommen haben: Für "msg" gibt es jetzt ein Update, wodurch Signalbot sauber unterstützt wird.

Auf was konkret beziehst du dich da? Die "state"-Geschichte?

DigiNecro

Ich hab ein Update gemacht und bekomme folgenden Fehler:

Undefined subroutine &main::readingsBulkupdate called at ./FHEM/50_Signalbot.pm line 1227.


Weiter fährt FHEM dann auch nicht mehr hoch

Adimarantis

Mist. Tippfehler. Ich mach heute noch einen Hotfix dazu.
Bis dahin kannst du es selbst patchen. es muss readingsBulkUpdate (mit grossem "U") heissen.

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