[32_whalibmob.pm] WhatsApp mit dem whalibmob Client

Begonnen von JoWiemann, 24 Juni 2026, 22:05:49

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo,

ich habe mich noch einmal nach einer yowsup Alternative umgesehen und bin dabei auf whalibmob gestoßen.
whalibmob Client

Das ganze sieht ganz gut aus und wird regelmäßig gepflegt.

Basierend auf 32_yowsup.pm habe ich eine 32_whalibmob.pm erstellt, die seid ein paar Tagen ganz gut läuft.

Module to interface to the whalibmob library developed by:
<---------------------------------------------------------------------------->
whalibmob: https://www.npmjs.com/package/whalibmob
WhatsApp library for interaction with WhatsApp Mobile API no web
boruto7777
<---------------------------------------------------------------------------->
to send and receive WhatsApp messages.

Fhem vorbereiten
Vor den weiteren Schritten sollte geprüft werden, ob dem User fhem eine Loginshell zugewiesen ist:

getent passwd fhemWird hier am Ende /bin/false ausgegeben, so muss dies angepasst werden:

sudo chsh -s /bin/bash fhemMittels getent passwd fhem kann auch bereits das Home-Verzeichnis ausgelesen werden, dies steht in der ausgegebenen Doppelpunkt-separierten Liste an vorletzter Stelle.

Jetzt ein whalibmob Device erstellen:
define <name> whalibmob
Mit
set <name> NPM_installwhalibmob installieren.

Nun loggt man sich unter dem User ein, unter dem fhem läuft (in den folgenden Beispielen werden die vom fhem-Setup-Script generierten Defaults verwendet: User=fhem , home=/opt/fhem Gruppe=dialout) und liest dort die $HOME-Variable aus und prüft das Home-Verzeichnis:
sudo su - fhem
npm approve-scripts protobufjs

Mit der Registrierung der Telefonnumer kommt nun der wichtigste Schritt.
# via SMS (default)
./whalibmobApi/node_modules/.bin/wa registration --request-code phone-number

# via voice call
./whalibmobApi/node_modules/.bin/wa registration --request-code phone-number --method voice
Der wa-Client sendet eine Registrierungsanfrage, zeigt die Rückmeldung von WhatsApp und bleibt aktiv.
requesting sms code for phone... status sent now run: ./whalibmobApi/node_modules/.bin/wa registration --register phone-number --code whatsapp-code staying in shell — use /reg confirm phone-number whatsapp-code to complete wa>

Den erhaltenen Registrierungs-Code direkt in der wa-Client shell mit folgendem Befehl an WhatsApp zur Bestätigung senden:
wa> /reg confirm number whatsapp-code
Zum Abschluss den wa-Client beenden und Testen:
./whalibmobApi/node_modules/.bin/wa connect phone-number
Der wa-Client kann nun wieder beendet werden. Mit setzten des Attributs cmd im whalibmob Device auf:
./whalibmobApi/node_modules/.bin/wa connect phone-number
ggf. Pfad anpassen und auf jeden Fall die korrekte Telefonnummer eintragen.

Hinweis:
Läuft nur auf linux/unix Systemen.

Über Tests und Rückmeldungen würde ich mich freuen. Vielen Dank.

Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

Sidey

Hi Jörg,

ich bin interessiert.
Wie hast Du die Kommunikation zwischen FHEM und der Bibliothek realisiert?


Ich würde whalibmob gerne in einem nodejs Container betreiben.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp

JoWiemann

Hallo Sidey,

wie bei yowsup wird bei whalibmob der Client über den Perl Befehl exec als Prozess gestartet, der dann permanent läuft. Über syswrite und sysread wird mit dem Prozess kommuniziert. Ob das mit einem eigenen Container funktioniert, glaube ich nicht.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

Sidey

Nein, aber man könntes einen REST Api Wrapper davor setzen.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp

JoWiemann

Zitat von: Sidey am 25 Juni 2026, 12:58:55Nein, aber man könntes einen REST Api Wrapper davor setzen.

Hallo Sidey,

da bin ich dann nicht "man". JavaScript ist nicht meine Kompetenz. Auf der github Seite sind JavaScript Beispiele für den Zugriff auf die Library hinterlegt und beschrieben. Da kann sich dann Kompetenz austoben und eine Docker übergreifende Lösung entwickeln. Klar wäre auch für Fhem eine direktere Lösung als über den wa Cleint wünschenswert. War aber schnell umsetzbar und funktioniert für mich.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

Sidey

Ich könnte mir vorstellen einen mqtt wrapper um whalimob zu legen.


Beispielsweise würde dieser einen Befehl über dieses Topic annhemen:

whatsapp/cmd
{
  "cmd": "sendText",
  "to": "491701234567@s.whatsapp.net",
  "text": "Hallo"
}
.

Den Befehl steht dann in dem Payload und wird ausgeführt.

Bei den Grafiken habe ich noch einen Knoten. Welche Grafiken aus FHEM könnten denn sinnvoll gesendet werden?
Fällt dir auf Anhieb was ein.


Grüße Sidey

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp

TomLee

ZitatWelche Grafiken aus FHEM könnten denn sinnvoll gesendet werden?

Das Senden der Bilder via MQTT ist vlt. gar nicht notwendig?
Stattdessen könnte whalibmob einfach die URL der FHEM-Grafik per MQTT erhalten. Die Anwendung lädt das Bild dann selbst herunter und verschickt es anschließend?

Sidey

Zitat von: TomLee am 25 Juni 2026, 22:12:11Die Anwendung lädt das Bild dann selbst herunter und verschickt es anschließend?

Prima Idee, dann können beliebige Bilder gesendet werden.
So würde ich das dann umsetzen:

{
  "cmd": "sendImage",
  "to": "491701234567@s.whatsapp.net",
  "source": "http://fhem:8083/fhem/images/snapshot.jpg",
  "caption": "Haustür"
}


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp