The signal binding allows openHAB to exchange message with other Signal users.
Features :
- Dedicated account (if you have a spare number, such as landline), or an account linked to your mobile phone number.
- Register your account in two steps from within openHAB, no command line or extra manipulation (include verification code, QR code)
- Sending, receiving text messages (individual user for the moment, no group).
- Sending images
- Trigger event.
- A “send” action for your rules.
- Delivery and read notifications
See documentation in Resources section for setup.
KNOWN ISSUES
- Can someone confirm or not ? Vocal code validation (when SMS is not available, such as landline) may fail, as one user reports that one captcha is not enough to go through the process. (internally, the binding asks for a sms, then wait a minute and asks for a vocal validation. It’s the mandatory procedure for registration through a voice call). Please let me know if so.
- Don’t (and won’t) work with openHAB 3.X, as the upstream library signal-cli now requires java 17.
Sqlite issues as a karaf dependency and load order.(this should be fixed now).- A raspberry pi 32 bits OS (such as openHABian) on a Raspberry PI version 4 can have another issue with sqlite. Please check this link for a solution by modifying the boot/config.txt file to force 32 bits. :
arm_64bit=0
unknown other case : despite my efforts there still seems to have errors with sqlite for some people (Errors relating to .so library linking). Expert contributors welcome ! You can also try, If you have sqlite error with incompatible .so, the workaround here.Possible issue with Raspberry pi OS 64 bits and licb6. The 64 bit library included for the raspberry pi is compiled with libc6 version 2.33, which could be higher that yours. A user reports a working binding, but if you experience issue, please let me know.Should be OK now.- reaction emoji doesn’t work on self (seems to be an upstream signal-cli issue)
Status and future development.
Feedback welcome (do not hesitate to tell me if it works !)
I will hopefully make a pull request, to include it officialy in openHAB.
(probably won’t happen, because the binding is huge (it includes many libraries) and Whisper does a terrible job by breaking every once in a while the signal API, so it’s not very suitable for a stable version delivery)
Contribution welcome ! There is so much to do :
Sending image(DONE)- Group messaging
- … suggestions welcome
Changelog
version 4.2.0 - BETA 11
Fix linking account is failed (exceptions.MissingCapabilitiesException: StatusCode: 409) by bumping signal-cli version to 0.13.6
version 4.2.0 - BETA 10.
Bump to signal-cli version 0.13.4
i686 32 bits support
version 4.2.0 - BETA 9.
Bump to signal-cli version 0.13.3
musl arch support attempt
Adding (very simple draft) reaction emoji support
Adding reponse status to “send” action
version 4.2.0 - BETA 8.
Bump to signal-cli version 0.13 (with a backport from java 21 to java 17)
version 4.1.0 - BETA 7.
Fix the “signal-cli version is too old for the Signal-Server, please update.” message
version 4.1.0 - BETA 6.
Update signal-cli version to fix error when registering new linked account (accomodate changes in the whisper signal server side)
Renaming feature to avoid kar autodeletion by openHAB ?
version 4.1.0 - BETA 5.
First version explicitely targeting openHAB 4.
Written with java 17 (no more java 11 rewrite)
In the hope of resolving the sqlite error, the binary is now a KAR file, and sqlite is now a dependency feature.
Version 3.4.0 - BETA4
Action for sending image now include an accompanying text
Fix an error that forced to use vocal validation (which is broken)
Try to fix vocal validation with a workaround found on signal-cli forum
Version 3.4.0 - BETA3
Compatiblity with openHAB 3.4.x and openHAB 4.0
New feature : action to send images (see documentation)
Version 3.4.0 - BETA2
WARNING : breaking change ! You must delete and recreate your Thing account.
Full rewrite using the signal-cli library as a code base.
Fix : Connection issue following unknown changes on the whisper server side around the 6 december.
Fix : In all messages sent from the binding, the sender should now be apparent with the name you setup.
Fix : You can now send “note to yoursel” (if you use your full number : notification ON. if you use the special recipient “self” : no notification)
New : Delivery and Read status (both ways)
Version 3.4.0 - BETA1
Fix PushNetworkException - javax.net.ssl.SSLHandshakeException
(And some other too verbose exceptions in log)
Version 3.4.0 - BETA0.1
Fix DeprecatedVersionException
Version 3.4.0 - BETA0
Initial contribution.
Dedicated account, linked account.
Basic messages (send, receive)
Trigger event
Send action
Technical note
I strongly encourage you to contribute if you can, because it could take ages before I have the time to implement other features.
If you want to contribute, here is some information : this binding uses the signal-cli project “lib” part as a codebase, with very little adjustments (available on my personal fork of signal-cli). Signal-cli uses itself the underlying library com.github.turasa:signal-service-java, which is a modified version of the android Signal official library. And deep down below, there is the native library for various architecture (compiled from the official signal repository in rust). I included in the binding the autobuilded ones from exquo/signal-libs-build on github, and libsignal-client on gitlab (no longer needed)
Note to other developers. What To Do To Update (In the case I’m not responding and the service is broken) :
You should probably update signal-cli, as they probabley fixed it upstream.
Merge the new signal-cli tag version in the openhab_adjustement branch (on my personal fork of signal-cli). Get the source in the signal-cli lib subproject and overwrite the sources in the 3rdparty source directory of the binding project.
Check what libraries has been updated in the signal-cli project (settings.gradle.kts). You may (or may not) update/add the corresponding library in the pom. Try to stick to the version already present in openHAB.
Beware of the transitive dependencies, they may also need update ! Especially the libsignal-client (transitive dependency of signal-service-java).
If the libsignal-client is updated, you also need to update all the signal library binaries (in the src/main/resources/lib). You can follow this link to get new libraries. I personally use those from the user “exquo”. Get the right version ! (same version number as libsignal-client).