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

Einen erfolgreichen Start vorzugaukeln, wenn das gar nicht stimmt, ist IMHO der falsche Ansatz.
Nur nochmal zur Sicherheit:
An selbiger Stelle TimeoutSec=200 anzufügen bringt nichts?
Wenn du nach dem reboot syslog nach signal-cli greps, findest du da was?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Basti-K

ich weiß nicht warum aber (erst) die Änderung in der Config bracht das gewünschte Verhalten.
auch nach dem Reboot läuft der Dienst nun im Auto Start. bzw. startet tatsächlich.
Den Time-out Eintrag hatte ich schon drin und er ist immer noch drin.

im syslog stehen keine Fehler oder Warnungen. 
Dafür alle Dialoge die man/ich auch auf dem Handy getätigt hart.


Elektron

Hallo zusammen,

Ich möchte für den SignalBot einen Autoresponder schreiben, da ich für Fhem unsere Festnetznummer verwende und verhindern möchte, dass Freunde aus Versehen an das FHEM System eine Nachricht schreiben und ich die nicht lese...

Über ein Notify reagieren ist kein Problem, aber ich bekomme die Zieladressen nicht zusammengebaut.
Ich teigiger auf msgText und die Absenderadresse teht ja in msgSender.
Wenn nun der Name in msgSender ein Leerzeichen enthält wird es schwierig...
Ich hatte erwartet, dass es mit $EVTPART1." ,,.$EVTPART2 geht, aber das wird nicht ersetzt...

Hat jemand eine. top für mich?

Vielen Dank und Grüße Michael

Adimarantis

Ich nehme da lieber DOIF - da ist man einfach flexibler.
Aber eventuell hilft dir auch die aktuelle Testversion auf Github (siehe ein paar Posts vorher) zu nehmen.
Die führt das neue Feature "reply" ein. Damit wird die Nachricht automatisch an den letzten Absender geschickt. Dann fällt der Teil deines Problems schon mal weg :)

Werde die Version dann wohl heute oder morgen auch über Update freigeben.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

weini

Jetzt ist mir gerade nochmal ein Umlaute-Fehler aufgefallen:
Nach der Umstellung auf die "inline-Perl Syntax" bei den Favoriten kommen dort die Umlaute, die mein Perlcode als Ergebnis liefert auch nicht korrekt in Signal an.

Getestet mit der Version, die du vor 10 Minuten auf Github gestellt hast (ich werde schneller)  ;)

Adimarantis

Ändere mal Zeile
691: Signalbot_sendMessage($hash,$sender,"",$error);   -> Signalbot_sendMessage($hash,$sender,"",decode_utf8($error));
Bin gerade ausnahmsweise nicht im Homeoffice und komme an meine Entwicklungsumgebung nicht dran :)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

weini


Adimarantis

Jetzt auch im SVN und morgen als update - Version 3.4:
- Neues Kommando "set reply" - schickt Nachricht an letzten Absender
- Einige Verbesserung an den Favoriten (perl modus. "print" Kommando, Sonderzeichen)
- Bessere Nutzerführung für "set link"
- Installer: backup/restore Funktion

Vorbereitungen für signal-cli 0.10.1+:
- Neues Kommando "set deleteContact"
- Installer: "experimental" Option zur Installation von signal-cli 0.10.1 und Java 17
Wird aktuell nur für Raspberry "bullseye" unterstützt, sollte aber auch auf aktuellen x86 Debian/Ubuntu Systemen gehen (trotz Meldung "not supported")
Sofern kein Java17 vorhanden ist, wird die Binary Distribution von adoptium.net geladen und nach /opt/java installiert.

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

Gisbert

Hallo Jörg,

ich hab Java 17 erfolgreich auf Debian  Bullseye installiert:
pi@HPT610:~$ java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-Debian-1deb11u2)
OpenJDK 64-Bit Server VM (build 17.0.1+12-Debian-1deb11u2, mixed mode, sharing)


Was mache ich mit der Java 11-Installation, bzw. wie kann ich sie entfernen?
pi@HPT610:~$ sudo  update-java-alternatives --list
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64
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

Java 8 brauche ich zwingend für den UniFi-Controller, der auf gleichen Installation läuft; d.h. Java 8 muss erhalten bleiben.

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

Adimarantis

Java17 ist nur für die experimentelle signal-cli 0.10.1 Nutzung. Dafür gibt es keinen Support.

Für den normalen Produktiven Support bleibt signal-cli 0.9.2 mit Java 11 weiter der Standard.

Ich baue zwar schon 0.10+ Features ein, die sind aber dann einfach deaktiviert. Es wird sicher noch eine Weile dauern bis der Java 17 OS support breiter wird (insbesondere auf Raspberry) und die 0.10+ so interessant oder sogar notwendig 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 Jörg,

vielen Dank für die Klarstellung.
Da dein Modul anscheinend mit Java 17 funktioniert, kann ich dann bei dieser Version bleiben? Wenn ja, soll ich Java 11 dann deinstallieren, und wie geht das dann?

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

Adimarantis

Ich hab signal-cli 0.9.2 nie mit Java17 probiert, aber wenn es geht....
Entfernen sollte wohl sowas wie
apt remove openjdk-11-jdk
oder
apt remove openjdk-11-jre
sein.

Im Prinzip mal ein
apt list | grep openjdk | grep -i install
und alles mit 11 runterwerfen.

Wenn aber dann was nicht geht, ist mein einziger Rat schon jetzt: Java11 installieren :)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Elektron

Hallo zusammen,

Vielen Dank für das neue Feature ,,send response"!!
Ich habe es leider zu spät gesehen und es über ein Notify gelöst.
Falls das mal jemand braucht....

define Signal_Autoresponder notify SignalBot_:msgSender:.* set SignalBot send '@[SignalBot:prevMsgSender]' 'Hallo [SignalBot:prevMsgSender], Du hast eine Nachricht an unsere Festnetznummer geschrieben. Die lesen wir nicht, da dies die Haussteuerung ist. Bitte schreib an unsere Handynummern. Vielen Dank.'

Viele Grüße Michael

Adimarantis

Preview V3.5 auf GitHub:
https://github.com/bublath/FHEM-Signalbot/blob/main/50_Signalbot.pm

-Vereinfachung des Versendens von SVG Plots
-Versenden von DOIF Widgets

Man kann in dieser Version statt eines Dateinamens oder der Perl Funktion für SVG (was ja durchaus Probleme bereiten kann bis man raus hat, wie man escapen muss) einfach den FHEM Device Namen angeben, also
send @Joerg &SVG_Aussentemperatur
Sofern der "Dateiname" eines Attachments dem Namen eines FHEM Devices mit Typ SVG entspricht wird die plotAsPng Funktion gleich intern von SignalBot aufgerufen.
SVG nimmt mit Komma getrennt noch optional einen "zoom" und "offset" welches sich aber auf die Datenselektion und nicht auf die Größe bezieht (die muss im Device definiert werden).
Zoom= "hour","qday","day","week","month","year","10years","20years"
Offset beschreibt wie oft mit den Pfeiltasten geblättert wird (positiv vorwärts, negativ zurück).
Wenn man also einen Plot vom vorherigen Tag möchte, wäre das
send @Joerg &SVG_Aussentemperatur,day,-1

Das DOIF Device kann ja mit uiTable inzwischen ganz nette Widgets darstellen. Die finde ich teilweise schicker als SVGs - z.B. der aktuelle Benzinpreis mit kurzer Historie ist praktisch (siehe Beispiel im Anhang) - und um so praktischer wenn man einfach per Signal eine Nachricht nach Hause schreibt. Nur kommt man schwer an die Bilder dran.
Dazu habe ich jetzt einen Hack geschrieben (vielleicht stellt Damian ja auch mal eine echte API zur Verfügung) - d.h. natürlich auch das die Gefahr besteht, dass es für zukünfte DOIF Versionen angepasst werden muss. Als erstes kommt wieder der Devicenamen der vom Typ DOIF sein muss. Das uiTable Attribut muss natürlich in diesem DOIF ebenfalls existieren.
Syntax:
send @Joerg &DI_Benzin  #Erstes Widget in DOIF Attribut uiTable
send @Joerg &DI_Benzin,3   #Drittes Widget
send @Joerg &DI_Benzin,id=3  #Drittes Widget
send @Joerg &DI_Benzin,dev=Tankstelle   #Erstes Widget, welches Werte aus dem Device "Tankstelle" abfragt
send @Joerg &DI_Benzin,dev=Tankstelle,val=Benzin  #Erstes Widget, welches Werte aus dem Device "Tankstelle" mit Reading "Benzin" abfragt
send @Joerg &DI_Benzin,id=3,zoom=0.5,sizex=600,sizey=300  #Änderung der Größe und Zoom

Im Attribut "uiTable" von DOIF kann man ja lange Listen von Widgets hinterlegen. Wenn es wenige sind, dann ist durchzählen meist einfacher, doch mit der Gefahr, dass der Index bei Änderungen ändert. Daher kann man auch mit Device und/oder Reading das richtige Widget identifizieren (bei mehreren Darstellungen des selben Readings ist es dann aber immer das Erste).
Mit zoom und size kann potentiell die Darstellung in Signal verbessert werden (der Preview schneidet vielfach etwas ab). Wenn zoom alleine verwendet wird, dann ist das Resultat leider entweder abgeschnitten oder kleiner als das Bild, da ich keinen einfachen Weg gefunden habe, die Größe analog zum Zoomfaktor anzupassen. Meist nicht notwendig

Wer mehrere Plots/Widgets in einer Nachricht verschicken möchte, verwendet wie bei normalen Anhängen einfach mehrfach die "&" Option.

Edit: Bei Verwendung innerhalb eines DOIF muss das "&DI_Benzin,3" in Anführungszeichen gesetzt werden, da DOIF das Komma als Trenner zwischen mehreren Kommandos verwendet. Sollte ich doch einen anderen Trenner für die Parameter verwenden?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

enno

Moin Jörg,

habe mir V3.5 installiert. Das Thema mit den DOIF Widgets klang interessant. Habe leider übersehen, dass ich das nicht in "uiTable" habe, sondern als "uiState" Bsp:{package ui_Table;
  $TABLE='text-align:center';
}
#card([Helios_KWL:v00102:col24],"Lüftung","vent_ventilation",0,4,120,0,"Stufe",undef,"0","100,1,1,1,1,1,160","1,1,1,20","50,50,50,40,50,40")
card ([Helios_KWL:v00102:col24],undef,"vent_ventilation",0,4,120,0,"Stufe",90,0,"90,1,1,1,0","1,1,1,20","50,50,50,40,50,40")


So kann ich das in Floorplan anzeigen. Deine Funktion in Signalbot klappt damit aber leider nicht....

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC