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

Wenn du signal-cli von der Kommandozeile probierst muss
export JAVA_HOME=/opt/java gesetzt sein - sonst nimmt er möglicherweise trotzdem das falsche.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Sailor

Moin Adimarantis

Ich mus mich jetzt leider auch um Hilfe bitten.

Ich habe das letzte Installer-Script aus dem /opt/fhem/contrib verwendet (SCRIPTVERSION="3.26") ausgefuehrt, welches die Installation ohne Fehler übernimmt.

Doch nach wie vor unter "Voice" nur die Fehlermeldung
"Error with captcha:Error in registerWithCaptcha:VerificationMethodNotAvailableException Invalid verification method "

unter "SMS" die folgende Fehlermeldung:
"Error with captcha:Error in registerWithCaptcha:RegistrationRetryException StatusCode: 429 "

Ich habe nebenbei den SIGNAL - Client auf meinem Linux - Rechner laufen, welcher sich sofort nach lösen des Captchas öffnet.
Ich hoffe das Captcha "verbraucht" sich dadurch nicht.

Gruß
    Sailor
******************************
Man wird immer besser...

Adimarantis

Das ist natürlich möglich. Erzeuge das Captcha doch einfach auf einem anderen Rechner und kopiere ihn ins "set ... captcha".
Also wie beschrieben, erst SMS, 1 Minute warten, dann nochmal (neues Captcha) mit Voice.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Sailor

Hallo Adimarantis
Zitat von: Adimarantis am 26 März 2024, 20:32:25Das ist natürlich möglich. Erzeuge das Captcha doch einfach auf einem anderen Rechner und kopiere ihn ins "set ... captcha".
Also wie beschrieben, erst SMS, 1 Minute warten, dann nochmal (neues Captcha) mit Voice.

Danke für den Tipp!

Also, das war ja 'ne Nummer!

Ich beschreibe mal Schritt für Schritt was letztendlich zum Erfolg geführt hat:
1. Den neusten Installer heruntergeladen: http://svn.fhem.de/fhem/trunk/fhem/contrib/signal/signal_install.sh
2. Rechte vergeben und als sudo ausgeführt.
3. Signal Desktop deinstallieren.
4. Alten SignalBot in fhem gelöscht und neu angelegt.
5. Attribut "registerMethod" auf "SMS" gesetzt.
6. Den Befehl "set myBotti register +49301234567" ausgeführt.
7. Captcha ausgeführt und mittel "set myBotti setCaptcha ..." implementiert.
7. Was zu trinken geholt.
8. Attribut "registerMethod" auf "Voice" gesetzt
9. Den Befehl "set myBotti register +49301234567" ausgeführt.
10. Den Anruf weggedrückt, da kein Menüpunkt "verify" vorhanden war.
11. Den Befehl "set myBotti register +49301234567" nochmal ausgeführt.
12. Captcha ausgeführt und mittel "set myBotti setCaptcha ..." implementiert.
13. Anruf entgegengenommen und Nummer von der Tante mit eindeutigen ADHS-Syptomen aufgeschrieben.
14. Den Code mit "set myBotti verify 1234567" bestätigt.
Funzt!

Wat'n Aufriss!

Gruss
    Sailor
******************************
Man wird immer besser...

Adimarantis

Ja, irgendwie wird das immer schlimmer mit den Sicherheitsmechanismen.

Ich habe mich jetzt mal hingesetzt und versucht das so weit möglich zu automatisieren.

Keine Ahnung ob sich jemand findet, der es mal probieren will. Das Ganze ist extrem umständlich zum Testen und ich habe jetzt nur den häufigsten Fall (Registrierung mit Voice) durchgetestet.

Die angehängt Version funktioniert jetzt so:
1. set register +49xxxxxx  (mit registerMethod=Voice)
Es erscheint eine Seite die darüber aufklärt wie man ein Captcha bekommt und einen drauf hinweist, dass man bei Voice 60s Sekunden warten muss

2. set captcha signalcaptcha://xxxxxx
Es erscheint eine neue Seite mit dem Hinweis das es 60s Sekunden dauern wird, bis man einen Anruf kriegt und den Code mit set verify eingeben muss
Intern sendet Signalbot das Captcha erst mit SMS, setzt einen Timer auf 60s und sendet es erneut mit Voice. Das scheint zu funktionieren, da die Captchas eine Weile gültig bleiben und nicht kontrolliert wird, wenn man das selbe Captcha 2x verwendet.

3. Man kriegt den Anruf und macht set verify
Dann sollte soweit alles abgeschlossen sein und man ist registriert.

Wenn es jemand probieren will, vielleicht mit einer zweiten Festnetznummer, bzw. man kann seine eigenen Nummer rauswerfen - leider gar nicht so einfach:
Ich hatte mit folgender Prozedur Erfolg:
set Signalbot unregister +49xxxxxx

Dann in der Shell - am besten gleich mit "sudo bash", da das Verzeichnis geschützt ist.
cd /var/lib/signal-cli/data
service signal stop
Datei "accounts.json" editieren und den Abschnitt mit der entsprechenden Nummer rauslöschen
Unter "path" steht der Dateiname für die eigentlichen Daten. Zum aufräumen diese Datei und das zugehörige Verzeichnis (mit ".d") löschen.
service signal start

Jetzt sollte die Nummer zuverlässig entfernt sein und man kann sie erneut registrieren.
Hab das erfolgreich paar mal hintereinander gemacht.

Gerne probieren, was passiert wenn man was falsch macht oder SMS probiert - da sind sicher noch Fehler im Ablauf drin.


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

Sailor

Moin tosammen

Habe mir mal erlaubt offiziell das Signal Messenger Logo ins repository unter fhem/www/images/fhemSVG/signal_messenger.svg aufnehmen zu lassen.
Damit haben wir jetzt ein anständiges icon fuer den SignalBot.

Gruß
    Sailor
******************************
Man wird immer besser...

Sailor

Moin Adimarantis

Zitat von: Adimarantis am 28 März 2024, 17:52:47Wenn es jemand probieren will, vielleicht mit einer zweiten Festnetznummer, bzw. man kann seine eigenen Nummer rauswerfen - leider gar nicht so einfach:

Ich bin froh, dass es läuft.
Aber ich gehe davon aus, das sich der Nächste mit Problemen nicht lange auf sich warten lassen wird.

Dann haben wir ja ganz automatisch unseren unfreiwilligen Freiwilligen.  :o

Gruß
    Sailor
******************************
Man wird immer besser...

Adimarantis

Nice  :)
Dann setze ich das doch einfach standardmäßig im "define" als icon (sofern nicht schon gesetzt)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Hab die Version mit verbesserter Registrierung jetzt mal eingecheckt, nachdem ich den SMS flow auch testen konnte (V3.19).
Das Icon wird jetzt auch automatisch gesetzt, wenn keins vorhanden.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Jippy

Hallo,
ich habe mich jetzt auch mal daran versucht, allerdings bekomme ich es nicht zum Laufen...
Eigentlich habe ich alles nach Anleitung von Adimarantis vom 28.03. gemacht und es scheint auch alles geklappt zu haben, aber die Connected Info sieht komisch aus und wenn ich etas sende bleibt es beim pending.
Hat jemand einen Tipp was ich vielleicht falsch mache / ändern muss?
Danke.
Du darfst diesen Dateianhang nicht ansehen.

Gisbert

Hallo Adimarantis,

ich möchte einen Zeilenumbruch beim state hinzufügen.
Prinzipiell gelingt dies durch das Attribut stateFormat:
attr mySignal stateFormat {my $_state; $_state = ReadingsVal('mySignal','state',''); $_state =~ s/to /to \n/g; $_state;}Leider wird das state einzeilig angezeigt, wobei STATE zweizeilig ist:
STATE Connected to
/org/asamk/Signal/_49XXXXXXXXXX

Vielleicht ist bei der Erklärung zu stateFormat ein Hinweis auf das unerwartete Ergebnis zu finden:
stateFormat
Modifies the STATE of the device, shown by the list command or in the room overview in FHEMWEB.
If not set, its value is taken from the state reading.
If set, then every word in the argument is replaced by the value of the reading
if such a reading for the current device exists.
If the value of this attribute is enclosed in {}, then it is evaluated.
This attribute is evaluated each time a reading is updated.
The "set magic" described here is also applied.
Note: some FHEM modules are setting STATE directly (against the guidelines),
in this case the attribute may not work as expected.

Kannst du dir das bei Gelegenheit mal anschauen?

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

Jamo

Hallo Gisbert,
das hat doch nichts mit dem Modul von Adimarantis zu tun, deine Formatierung für den Zeilenumbruch für stateformat ist falsch.
Mit "<br>" bekommst Du einen Zeilenumbruch:

{my $_state = ReadingsVal('mySignal','state',''); $_state =~ s/to /to <br>/g; return $_state;}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jippy

Zitat von: Jippy am 30 März 2024, 12:55:41Hallo,
ich habe mich jetzt auch mal daran versucht, allerdings bekomme ich es nicht zum Laufen...
Eigentlich habe ich alles nach Anleitung von Adimarantis vom 28.03. gemacht und es scheint auch alles geklappt zu haben, aber die Connected Info sieht komisch aus und wenn ich etas sende bleibt es beim pending.
Hat jemand einen Tipp was ich vielleicht falsch mache / ändern muss?
Danke.

Komischerweise geht es jetzt...
Bin gerade nach Hause gekommen, "sentMsgTimestamp" war immer noch pending... einfach noch mal eine neue Message geschickt und die ist angekommen  :-*
Jetzt noch 4x versucht, alle angekommen, eine hat zwar 2 Minuten gebraucht aber egal, damit kann ich leben...
Trotzdem noch mal die Frage ob die Anzeige "Connected to /org/asamk/Signal/_49xxxxxxxxx" korrekt ist?

Adimarantis

Ja das ist korrekt. Intern verwendet signal-cli den "_" an vielen Stellen, da das "+" in Pfadnamen Probleme bereitet.
Schau evtl. noch das sich die Kommunikationspartner gegenseitig vertrauen (siehe Wiki) - vielleicht gehts dann zügiger.
2 Minuten ist seltsam, sollte normalerweise innerhalb von Sekunden gehen - außer dein Rechner ist überlastet (und swapped z.B. signal-cli ständig raus und rein wegen zuwenig Speicher)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Gisbert

ZitatMit "<br>" bekommst Du einen Zeilenumbruch:
Hallo Jamo,
mit <br> funktioniert es tatsächlich, aber \n sollte doch bei Perl auch funktionieren.
Wie dem auch sei - ich hab jetzt eine Lösung.
Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY