Neues Modul für "(Si)gnal - (Si)cherer Messenger" [32_SiSi.pm]

Begonnen von Quantum, 26 Februar 2018, 14:32:42

Vorheriges Thema - Nächstes Thema

obi

#105
Hallo linuzer,

du kannst natürlich mit einem Notify oder DOIF die eingehenden Nachrichten weiter verarbeiten und darauf antworten.

z.B. müsste es folgendermaßen gehen (habe ich so jetzt aber nicht getestet):
define NOT_Signal notify Signal:msgText:.* {

my $input = (split /msgText: /, $EVENT, 2)[1]);
my $sender = ReadingsVal($NAME,'msgSender','');

#Hier könnte man noch Regex Prüfungen usw. ausführen um den fhem Befehl zu erkennen

#Perl Befehl mit eval ausführen
my $output = eval($input);

#Fhem Befehl ausführen
my $output = fhem($input);

fhem('set '.$NAME.' msg @'.$sender.' '.$output);
}

linuzer

#106
Hallo obi,

das notify funktioniert tatsächlich! Sehr cool...!  8)

Klar wäre es natürlich schön, wenn das direkt im Modul drin wäre, inklusive "allowed Sender" und "allowed Commands"...
Aber ich bin so voll auf zufrieden...!
Vielen Dank!

EDIT:
Sorry, ich hab übersehen, dass es "allowedPeer" ja schon längst gibt...!

Quantum

Hallo linuzer,

entwder du machst es mit notifies wie von obi beschrieben, oder mit msgDialog. Wie du das mit SiSi ans laufen bekommst ist weiter vorne im Thread beschrieben.
Eine direkte Verarbeitung von Kommandos über das Modul werde ich nicht integrieren, da es nicht die Aufgabe dieses Moduls ist.

Mit freundlichen Grüßen
Quantum

linuzer

Hallo Quantum,

das macht nichts, ich habe es jetzt mit dem notify von obi gelöst, das funktioniert perfekt.

Ich bin voll begeistert von dem Modul, vielen Dank für die Arbeit!

VG linuzer

drhirn

@Quantum: Ist geplant, dem Modul einen "offiziellen" Status zu geben?

Axxl

Hi,

ich würde das Modul auch gerne ausprobieren und habe mir die Anleitung im Wiki mal durchgelesen. Frisch ans Werk dachte ich, aber bei mir läuft FHEM in einem Docker Container auf einem Intel Nuc mit debian:Stretch als Base Image.

Ich vermute die Installation von SiSi in einem Docker Container ist nicht so einfach hinzubekommen. Ich habe Probleme mit dem DBus im Container und Systemctl gibt es da auch nicht wirklich.

Hat einer von Euch , das im Docker Container laufen ? Wenn ja , wie sieht euer Dockerfile aus ? Muss ich den Dbus des Hosts an den Container sharen ?

Danke,
Axxl


Quantum

Hallo drhirn,

leider fehlt mir die Zeit, das Modul offiziell zu betreuen. Sollte sich jemand bereit erklären dies zu übernehmen, hab ich nichts dagegen. Ansonsten ist dies vorerst nicht geplant.

Hallo Axxl,

ich betreibe das Modul schon seit längerem in einem Dockercontainer. Ich nutze dazu den offiziellen Container und leite meinen daraus ab. Kannst dich aus den Dateien bedienen.
Das nachfolgende tut für meine zwecke seinen Dienst. Ist eigentlich nicht für andere bestimmt. Sollte etwas nicht funktionieren, leiste ich für die Dateien keinen support!

Dockerfile:

    ARG BASE_IMAGE="fhem/fhem"
    ARG BASE_IMAGE_TAG="latest"
    FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG}

    ARG L_SIGNAL_CLI="0.6.2"

    # Install base environment
    RUN DEBIAN_FRONTEND=noninteractive apt-get update \
        && DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends \
            cpanminus \
            build-essential \
            wget \
            shared-mime-info \
          dbus \
          default-jre-headless \
          libunixsocket-java \
            lirc \
            net-tools \
            hping3 \
            wakeonlan \
            \
        && cpanm \
          Net::DBus \
          Lirc::Client \
            Crypt::Cipher::AES \
        && rm -rf /root/.cpanm \
        && sed -i s,/dev/lircd,/var/run/lirc/lircd,g /usr/local/share/perl/5.24.1/Lirc/Client.pm \
        && wget https://github.com/AsamK/signal-cli/releases/download/v${L_SIGNAL_CLI}/signal-cli-${L_SIGNAL_CLI}.tar.gz \
        && tar xf signal-cli-${L_SIGNAL_CLI}.tar.gz -C /opt \
        && ln -sf /opt/signal-cli-${L_SIGNAL_CLI}/bin/signal-cli /usr/local/bin/ \
        && apt-get purge -qqy \
            build-essential \
            cpanminus \
            subversion \
        && apt-get autoremove -qqy && apt-get clean \
        && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

    COPY ./src/pre-start.sh /pre-start.sh
    COPY ./src/000_fhem-nopasswd /etc/sudoers.d/
    COPY ./src/org.asamk.Signal.service /usr/share/dbus-1/system-services/
    COPY ./src/org.asamk.Signal.conf /etc/dbus-1/system.d/
    ADD https://raw.githubusercontent.com/Quantum1337/32_SiSi.pm/master/FHEM/32_SiSi.pm /fhem/FHEM/32_SiSi.pm
    RUN mkdir /run/dbus && mkdir /run/lirc
    RUN mkdir /opt/signal-cli && mkdir /opt/lirc
    RUN chmod +x /pre-start.sh

    VOLUME [ "/opt/signal-cli" ]
    VOLUME [ "/opt/lirc" ]


pre-start.sh:

#!/bin/bash
export NUMBER="${NUMBER:-"undef"}"
export SLEEPTIME="${SLEEPTIME:-"10s"}"
export LIRC="${LIRC:-"no"}"

if [ $NUMBER != "undef" ]; then

   if [ -s /var/run/dbus/pid ]; then
      rm /var/run/dbus/pid
   fi
     
   echo "Starting DBus System Daemon"
   dbus-daemon --system --address=unix:path=/run/dbus/system_bus_socket

   echo "Starting signal-cli"
   /usr/local/bin/signal-cli -u $NUMBER --config /opt/signal-cli daemon --system &

   echo "Wait $SLEEPTIME to give signal-cli time to come up"
   sleep $SLEEPTIME
fi

if [ "$LIRC" = "yes" ]; then

   if [ ! -d "/var/run/lirc" ]; then
      mkdir "/var/run/lirc"
   fi
   echo "Starting lircd"
   /usr/sbin/lircd -O /opt/lirc/lirc_options.conf /opt/lirc/lircd.conf
fi



docker-compose:


services:
  fhem:
    image: XXX/fhem:latest
    privileged: true
    restart: always
    network_mode: "host"
    ports:
      - "7072:7072"
      - "8083:8083"
    volumes:
      - "./fhem/data:/opt/fhem/"
      - "./fhem/lirc:/opt/lirc/"
      - "./fhem/signal-cli:/opt/signal-cli"
    devices:
      - "/dev/lirc0:/dev/lirc0"
    environment:
      NUMBER: "+49XXXX
      SLEEPTIME: "5"

Bubinator

Hallo zusammen,
hallo Quantum!

Erst einmal vielen Dank für die Entwicklungsarbeit an dem Modul. Das ist echt klasse! Ich bin, nachdem die "manuelle" Variante aus dem bereits bekannten Thread https://forum.fhem.de/index.php/topic,30745.0/all.html, lange gut bei mir lief, nun auch auf das Modul geschwenkt.

Leider erhalte ich auch die Fehlermeldung
Error Executing Method org.asamk.Signal.sendMessage: org.whispersystems.signalservice.api.push.exceptions.NotFoundException: Not found - Maybe wrong Number?.

Ich verwende Version 0.6.2 der Signal-Cli, Version 1.1.0 von Net::DBus und FHEM wurde vorgestern zuletzt aktualisiert.

Ein Senden über dbus-send funktioniert.

Da einige von Euch das Problem auch hatten, aber es offenbar nicht flächendeckend auftritt, hoffe ich, dass mir jemand von Euch einen Tipp geben kann, wie ich das Problem entweder tiefer analysieren kann oder aber direkt behebe.

Viele Grüße & Glück Auf!

kunze

Hallo

Ich hatte das Problem auch. Siehe https://forum.fhem.de/index.php/topic,84996.msg881931.html#msg881931
Allerdings tritt es seit einiger Zeit nicht mehr auf und ich mussten e Codeänderung von damals rückgängig machen.

Schöne Grüße

Bubinator

Hallo kunze,

so ist's jetzt auch bei mir gewesen. Nun gehts...

Viele Grüße,

Bubinator

Bubinator

#115
Mist, zu früh gefreut.  :(

Einmal fhem aktualisiert und den Pi gebootet und schon ist das Problem wieder da. Übrigens kam beim Update vom Raspberry Pi auch ein dbus-Update (jetzt 1.10.28-0+deb9u1) über apt mit...

Hat da jemand eine Idee (ggf. auch zum Bugtracking)?

Viele Grüße



thorschtn

Zitat von: Bubinator am 18 Juni 2019, 21:48:34
Einmal fhem aktualisiert und den Pi gebootet und schon ist das Problem wieder da. Übrigens kam beim Update vom Raspberry Pi auch ein dbus-Update (jetzt 1.10.28-0+deb9u1) über apt mit...
Hat da jemand eine Idee (ggf. auch zum Bugtracking)?

Codeänderung aus https://forum.fhem.de/index.php/topic,84996.msg881931.html#msg881931 wieder rückgängig machen.
NUC - FHEM & HA
MapleCUN, Homematic, 433MHz, AB440, 1-Wire Bewässerung & Pool, Jarolift (Signalduino), Signal Messenger, Denon AVR, LG WebOS, AmazonEcho, Jura S90 (ESP8266), Sonoff, Xiaomi Mii Sauger, Worx SO500i

nOerkH

Hallo zusammen,

ich habe hier schon viel und lange mitgelesen. Muss mich jetzt leider auch mal mit einem Problem an die community wenden.

Ich bin begeisterter Nutzer des SiSi Moduls, nach kurzen Startschwierigkeiten hat es bei mir immer toll funktioniert. Seit letzter Woche zwickt es jedoch gehörig im Getriebe.

Die Nachrichten werden erst mit einigen Stunden Verzögerung geschickt bzw. empfangen. Dabei steht das Gerät immer auf "connected".

Verbose ist nun schon auf 5 gestellt, auffällige Einträge kann ich erstmal keine entdecken.
Die Verbindung scheint korrekt aufgebaut zu werden (Connected to DBus Object /org/asamk/Signal.)
auf Empfangene Nachrichten scheint er auch hören zu wollen (Listening to DBus-signal 'MessageReceived' on service org.asamk.Signal.)

irgend eine Idee wo man spontan graben könnte?

Meiner Nummer hab ich gerade neu registriert, das hilft auch nichts.

Vielen Dank

Quantum

#118
Hallo nOerkH,

deine Zeitangabe von Stunden klingt schon sehr seltsam. Ich würde das Problem weniger am SiSi Modul festmachen. Was mir spontant einfällt wäre deine Systemlast. Gib mal "top" in die Kommandozeile ein.
Gibt es dort Prozesse, die das System zu 100% auslasten ? Ist noch genügend RAM frei etc... ?

Grüße
Quantum

nOerkH

Hallo,

durch das erneute Registrieren ist jetzt wohl etwas ganz den Bach runter gegangen

top gibt nichts auffälliges aus würde ich sagen

top - 01:05:32 up 4 days, 12:19,  1 user,  load average: 0,11, 0,08, 0,08
Tasks: 124 total,   1 running,  70 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1,0 us,  0,5 sy,  0,0 ni, 95,4 id,  3,1 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem :   948304 total,    93264 free,   453152 used,   401888 buff/cache
KiB Swap:   102396 total,   102396 free,        0 used.   397140 avail Mem


versuche ich nun per
sudo -u fhem dbus-send --system --type=method_call --print-reply --dest="org.asamk.Signal" /org/asamk/Signal org.asamk.Signal.sendMessage string:Test array:string: string:+43xxxxxx

eine Nachricht zu schicken bekomme ich
Error org.freedesktop.dbus.exceptions.DBusExecutionException: Error Executing Method org.asamk.Signal.sendMessage: Authorization failed!
zurück, die config hat sich nicht geändert und hat davor schonmal funktioniert

muss man nach der Neuregistrierung der Nummer etwas besonderes beachten?