Signal Binding [4.0.0.0;5.0.0.0)

Very interesting, thank you for your feedback !

I don’t remember if you use the persistence jdbc addon ?
If this is the case, I would have hoped that the version bump to sqlite 3.42 for the persistence addon would cover the issue but it, to my disapointment, doesn’t in fact seem to be related to a particular version mismatch.

If you happen to do other tests, or encounter it again, I would like to know if your workaround works every time or not.

The sqlite dependency is not a separated bundle, so it cannot (and shouldn’t have to) be loaded before. But it can be the root cause, indeed. I think I already tried to do it this way (as a separate bundle) but never managed to. I will try again, and asks help from other developers in another thread if I failed to.

When deleting cache and tmp before starting openhab, signal binding is working always. Tried a lot of times, no issue so far. Really looks like a simple timing issue.

Hello everyone I have a quick question. Is it possible to use the same signal account on multiple OpenHAB instances?
I am currently doing a complete rebuild of my current system on another server and moving over everything while the old system is still runing to prevent any downtime.
Today I tried to create a new signal linked device but everytime I scan the QR code the setup fails. Do I have to remove the signal account from the old system to set up the new one? Or am I doing something else wrong?

Yes, I never tested that but it should be ok (of course, only with the linked type).
The error is probably something else. Do you have some logs ?

Do you use a different device name for the two setups (not sure, but it may be required ?)

(I’m still due to update the binding to a more recent signal lib version and also try to fix the sqlite issue. Maybe it could help… I will try to do it asap )

Hello @codeworkx , @M_G

I finally managed to make another version, with a dedicated and proper dependency management for sqlite (it’s now a KAR file with start order for bundle).
I hope that it can fix your issue. If you test it, I would be glad to have feedback…

The link is updated in the open post. And so in the marketplace. As usual, remove and reinstall.

WARNING : this version is targeting openHAB 4 and won’t work on openHAB 3.
I hope that no one use it anymore, as I won’t be able to provide new release for it (maintaining a java 11 branch for the upstream signal-cli demands to much time).

2 Likes

I’ll try in some days and let you know. Thanks a lot to let me know!

Hi Gwendal,

thanks again for your work!
Unfortunately, trying to get it work I now receive this warning in the log:

2023-11-14 19:09:48.675 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
java.lang.UnsatisfiedLinkError: 'void org.sqlite.core.NativeDB._open_utf8(byte[], int)'
	at org.sqlite.core.NativeDB._open_utf8(Native Method) ~[?:?]
	at org.sqlite.core.NativeDB._open(NativeDB.java:79) ~[?:?]
	at org.sqlite.core.DB.open(DB.java:216) ~[?:?]
	at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:287) ~[?:?]
	at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:67) ~[?:?]
	at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) ~[?:?]
	at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) ~[?:?]
	at org.sqlite.JDBC.createConnection(JDBC.java:104) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[?:?]
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[?:?]
	at org.asamk.signal.manager.storage.Database.getHikariDataSource(Database.java:104) ~[?:?]
	at org.asamk.signal.manager.storage.Database.initDatabase(Database.java:33) ~[?:?]
	at org.asamk.signal.manager.storage.AccountDatabase.init(AccountDatabase.java:42) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$28(SignalAccount.java:1215) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getAccountDatabase(SignalAccount.java:1213) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$14(SignalAccount.java:1183) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getRecipientStore(SignalAccount.java:1180) ~[?:?]
	at org.asamk.signal.manager.storage.recipients.RecipientTrustedResolver$RecipientTrustedResolverWrapper.resolveSelfRecipientTrusted(RecipientTrustedResolver.java:30) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.setProvisioningData(SignalAccount.java:281) ~[?:?]
	at org.asamk.signal.manager.internal.ProvisioningManagerImpl.finishDeviceLink(ProvisioningManagerImpl.java:141) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.registerLinked(SignalService.java:216) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.start(SignalService.java:154) ~[?:?]
	at org.openhab.binding.signal.internal.handler.SignalBridgeHandler.checkAndStartServiceIfNeeded(SignalBridgeHandler.java:161) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

Is there anything I missed? I removed the binding, restarted the raspberry and then reinstalled the binding. I tried both account and linked item

Sorry to hear that again, I’m trying to think that I’m wasting your time ! :sweat_smile:

Is your rapsberry PI on a 32 or 64 bits OS ? openHABian or stock raspiOS or something else ?
I was able to test my latest release on the latest openHABian one, 64 bits, and it worked. I couldn’t boot on the 32 bits version despite me writing the image on two different cards. I don’t know why, and so I can not tell if it works or not.

But if you are on a 32 bits OS, may I suggest that you take a look to the link I found recently and put in the open post ?
Not sure if it’s the same issue, but putting an env variable worths the shot.

Don’t you worry, thank you for trying to help me!

It’s running on openHABian, 64 bit. Clean installation some month ago when I changed to v4.

Anyhow, I will try to run some more tests next weekend, and make sure the system is up-to-date.

can i have a dialogue with this binding (like i have with telegram)?
something that goes like this:

openhabSignal: “Here, have some info! …”
mySignal: “I need more Infos!”
openhabSignal: “ok, have some more infos”

i’d like to trigger an event on my system depending on my answer. on telegram it is possible to send query with telegramAction.sendTelegramQuery … that would also be nice.

I totally agree this would be cool, but AFAIK, Signal unfortunately doesn’t have such feature (Signal is not designed for bot)

You can, however, kind of manage state with a “conversation” thing.
A conversation in this binding is two channels (one to send, one to receive message). When receiving message on the item linked to the “receive” channel, you can theoretically query the item linked to the “send” channel to check what was the last message sent about, and react accordingly to the response.

1 Like

I tried again, making sure that openhabian-config is all updated, removed the things, uninstalled the binding, restarted the raspi and reinstalled, but unfortunately the problem persist.

java.lang.UnsatisfiedLinkError: 'void org.sqlite.core.NativeDB._open_utf8(byte[], int)'
	at org.sqlite.core.NativeDB._open_utf8(Native Method) ~[?:?]
	at org.sqlite.core.NativeDB._open(NativeDB.java:79) ~[?:?]
	at org.sqlite.core.DB.open(DB.java:216) ~[?:?]
	at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:287) ~[?:?]
	at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:67) ~[?:?]
	at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) ~[?:?]
	at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) ~[?:?]
	at org.sqlite.JDBC.createConnection(JDBC.java:104) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[?:?]
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[?:?]
	at org.asamk.signal.manager.storage.Database.getHikariDataSource(Database.java:104) ~[?:?]
	at org.asamk.signal.manager.storage.Database.initDatabase(Database.java:33) ~[?:?]
	at org.asamk.signal.manager.storage.AccountDatabase.init(AccountDatabase.java:42) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$28(SignalAccount.java:1215) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getAccountDatabase(SignalAccount.java:1213) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$14(SignalAccount.java:1183) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getRecipientStore(SignalAccount.java:1180) ~[?:?]
	at org.asamk.signal.manager.storage.recipients.RecipientTrustedResolver$RecipientTrustedResolverWrapper.resolveSelfRecipientTrusted(RecipientTrustedResolver.java:30) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.setProvisioningData(SignalAccount.java:281) ~[?:?]
	at org.asamk.signal.manager.internal.ProvisioningManagerImpl.finishDeviceLink(ProvisioningManagerImpl.java:141) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.registerLinked(SignalService.java:216) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.start(SignalService.java:154) ~[?:?]
	at org.openhab.binding.signal.internal.handler.SignalBridgeHandler.checkAndStartServiceIfNeeded(SignalBridgeHandler.java:161) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]

That is, as a signal linked item.
Please let me know if there is anything else I could try?

Hi there, I tried installing the binding some weeks ago and did not really get anything to work but saw that there’s a lot of fixing going on, and now, with the new update, I tried to get lucky again. Well, not …so… successful. Therefore I thought I’d ask for support.

I am running openHABian 4.0.4 on a RPI 4. So far for the environment.

With plainly installing the binding, I got all the stuff with the SO file when I saved the config for the first time:

java.sql.SQLException: Error opening connection
        at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:283) ~[?:?]
        at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:67) ~[?:?]
        at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) ~[?:?]
        at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) ~[?:?]
        at org.sqlite.JDBC.createConnection(JDBC.java:104) ~[?:?]
        at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) ~[?:?]
        at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) ~[?:?]
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[?:?]
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[?:?]
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[?:?]
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[?:?]
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[?:?]
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[?:?]
        at org.asamk.signal.manager.storage.Database.getHikariDataSource(Database.java:104) ~[?:?]
        at org.asamk.signal.manager.storage.Database.initDatabase(Database.java:33) ~[?:?]
        at org.asamk.signal.manager.storage.AccountDatabase.init(AccountDatabase.java:42) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.lambda$28(SignalAccount.java:1215) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.getAccountDatabase(SignalAccount.java:1213) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.lambda$22(SignalAccount.java:1199) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.getKeyValueStore(SignalAccount.java:1199) ~[?:?]
        at org.asamk.signal.manager.storage.SignalAccount.getSessionId(SignalAccount.java:1369) ~[?:?]
        at org.asamk.signal.manager.internal.RegistrationManagerImpl.register(RegistrationManagerImpl.java:117) ~[?:?]
        at org.openhab.binding.signal.internal.protocol.SignalService.registerMain(SignalService.java:241) ~[?:?]
        at org.openhab.binding.signal.internal.protocol.SignalService.start(SignalService.java:152) ~[?:?]
        at org.openhab.binding.signal.internal.handler.SignalBridgeHandler.checkAndStartServiceIfNeeded(SignalBridgeHandler.java:161) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=aarch64, paths=[/org/sqlite/native/Linux/aarch64:/var/lib/openhab/tmp/lib]
        at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:363) ~[?:?]
        at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:72) ~[?:?]
        at org.sqlite.core.NativeDB.load(NativeDB.java:67) ~[?:?]
        at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:280) ~[?:?]
        ... 32 more

Then, I went into var/lib/openhab/tmp to create a lib directory (which I actually did).
One thing I noted there was that the binding installed two files there:

sqlite-3.42.0.0-53b6db8e-b4e8-43af-ac54-87b28dd978e2-libsqlitejdbc.so
sqlite-3.42.0.0-53b6db8e-b4e8-43af-ac54-87b28dd978e2-libsqlitejdbc.so.lck

…just to mention that. I did not mess around anything with these (but they remain there even when you uninstall the binding!!)
As described in the workaround, I put the libsqlitejdbc.so from the jar file from /native/Linux/armv7 there, set folder group and owner to openhab, same with the library, and added more or less all permissions just to be sure.

Well, then I got a new kind of error:

java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/provider/asymmetric/rsa/RSAUtil
        at org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi.generatePublic(Unknown Source) ~[?:?]
        at org.bouncycastle.jce.provider.BouncyCastleProvider.getPublicKey(BouncyCastleProvider.java:347) ~[?:?]
        at org.bouncycastle.jcajce.provider.asymmetric.x509.X509CertificateImpl.getPublicKey(Unknown Source) ~[?:?]
        at org.bouncycastle.jcajce.provider.asymmetric.x509.X509CertificateObject.getPublicKey(Unknown Source) ~[?:?]
        at sun.security.validator.PKIXValidator.setTrustedSubjects(PKIXValidator.java:153) ~[?:?]
        at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:109) ~[?:?]
        at sun.security.validator.Validator.getInstance(Validator.java:181) ~[?:?]
        at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:309) ~[?:?]
        at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:183) ~[?:?]
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:198) ~[?:?]
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:113) ~[?:?]
        at org.whispersystems.signalservice.internal.util.BlacklistingTrustManager.checkServerTrusted(BlacklistingTrustManager.java:86) ~[?:?]
        at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1441) ~[?:?]
        at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638) ~[?:?]
        at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473) ~[?:?]
        at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369) ~[?:?]
        at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[?:?]
        at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[?:?]
        at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458) ~[?:?]
        at sun.security.ssl.TransportContext.dispatch(TransportContext.java:201) ~[?:?]
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) ~[?:?]
        at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1510) ~[?:?]
        at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1425) ~[?:?]
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455) ~[?:?]
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426) ~[?:?]
        at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:379) ~[?:?]
        at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337) ~[?:?]
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209) ~[?:?]
        at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226) ~[?:?]
        at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) ~[?:?]
        at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) ~[?:?]
        at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) ~[?:?]
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) ~[?:?]
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[?:?]
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) ~[?:?]
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[?:?]
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) ~[?:?]
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[?:?]
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) ~[?:?]
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[?:?]
        at org.asamk.signal.manager.config.ServiceConfig.lambda$0(ServiceConfig.java:36) ~[?:?]
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[?:?]
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) ~[?:?]
        at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154) ~[?:?]
at org.whispersystems.signalservice.internal.push.PushServiceSocket.getServiceConnection(PushServiceSocket.java:2072) ~[?:?]
        at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeServiceRequest(PushServiceSocket.java:1991) ~[?:?]
        at org.whispersystems.signalservice.internal.push.PushServiceSocket.createVerificationSession(PushServiceSocket.java:349) ~[?:?]
        at org.whispersystems.signalservice.api.SignalServiceAccountManager.createRegistrationSession(SignalServiceAccountManager.java:229) ~[?:?]
        at org.asamk.signal.manager.util.NumberVerificationUtils.requestValidSession(NumberVerificationUtils.java:151) ~[?:?]
        at org.asamk.signal.manager.util.NumberVerificationUtils.getValidSession(NumberVerificationUtils.java:161) ~[?:?]
        at org.asamk.signal.manager.util.NumberVerificationUtils.handleVerificationSession(NumberVerificationUtils.java:40) ~[?:?]
        at org.asamk.signal.manager.internal.RegistrationManagerImpl.register(RegistrationManagerImpl.java:116) ~[?:?]
        at org.openhab.binding.signal.internal.protocol.SignalService.registerMain(SignalService.java:241) ~[?:?]
        at org.openhab.binding.signal.internal.protocol.SignalService.start(SignalService.java:152) ~[?:?]
        at org.openhab.binding.signal.internal.handler.SignalBridgeHandler.checkAndStartServiceIfNeeded(SignalBridgeHandler.java:161) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil cannot be found by org.openhab.binding.signal_4.1.0.202311102037
        at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) ~[org.eclipse.osgi-3.18.0.jar:?]
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) ~[org.eclipse.osgi-3.18.0.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
        ... 61 more

Now I admit I’m a bit clueless… what can I do now? Help very much appreciated!

:sob:
Can you maybe clear the cache ?
It’s a wild guess, but an old sqlite library may stay here and take over the new one needed by the binding.

I forgot to ask (or I lost track of everyone’s configuration), but do you use the sql jdbc persistence addon ?

java.lang.NoClassDefFoundError

I think it won’t help if I say it shouldn’t happen, but I cannot help myself :joy:
Oh my, this binding is really a “dependency hell”, I keep running from one disappointment to another.

First, sorry but dumb question : did you try several times ? (restarting, etc.)

The joys of other people’s code and system variants :rofl: who doesn’t know them.

As well as the wonders of configuration. After deleting everything, waiting two days, restarting out of other reasons, I did the following today:

  • Install the Signal binding.
  • Copy the .so file / adjust permissions as described before creating a Thing for the binding (I found the sql stuff is copied when creating a thing, not when installing!)
  • I was plainly surprised as everything went through without even a warning and I could do a vocal registration :smiley: :smiley:

So far, so good… let’s see what the next time / the next reboot brings, but for now it is online ^^

Hi,
sorry for the late reply.
I don’t have any sql persistance addon installed.
I cleared the cache as suggested, now getting a different fault:

java.sql.SQLException: Error opening connection
	at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:283) ~[?:?]
	at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:67) ~[?:?]
	at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28) ~[?:?]
	at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19) ~[?:?]
	at org.sqlite.JDBC.createConnection(JDBC.java:104) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:464) ~[?:?]
	at org.sqlite.SQLiteDataSource.getConnection(SQLiteDataSource.java:456) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[?:?]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[?:?]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[?:?]
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[?:?]
	at org.asamk.signal.manager.storage.Database.getHikariDataSource(Database.java:104) ~[?:?]
	at org.asamk.signal.manager.storage.Database.initDatabase(Database.java:33) ~[?:?]
	at org.asamk.signal.manager.storage.AccountDatabase.init(AccountDatabase.java:42) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$28(SignalAccount.java:1215) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getAccountDatabase(SignalAccount.java:1213) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.lambda$14(SignalAccount.java:1183) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getOrCreate(SignalAccount.java:1641) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.getRecipientStore(SignalAccount.java:1180) ~[?:?]
	at org.asamk.signal.manager.storage.recipients.RecipientTrustedResolver$RecipientTrustedResolverWrapper.resolveSelfRecipientTrusted(RecipientTrustedResolver.java:30) ~[?:?]
	at org.asamk.signal.manager.storage.SignalAccount.setProvisioningData(SignalAccount.java:281) ~[?:?]
	at org.asamk.signal.manager.internal.ProvisioningManagerImpl.finishDeviceLink(ProvisioningManagerImpl.java:141) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.registerLinked(SignalService.java:216) ~[?:?]
	at org.openhab.binding.signal.internal.protocol.SignalService.start(SignalService.java:154) ~[?:?]
	at org.openhab.binding.signal.internal.handler.SignalBridgeHandler.checkAndStartServiceIfNeeded(SignalBridgeHandler.java:161) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=aarch64, paths=[/org/sqlite/native/Linux/aarch64:/var/lib/openhab/tmp/lib]
	at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:363) ~[?:?]
	at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:72) ~[?:?]
	at org.sqlite.core.NativeDB.load(NativeDB.java:67) ~[?:?]
	at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:280) ~[?:?]

Just while writing this, I see Nico had something close to this error, so I will try to follow what he did there.

Hi,
I am currently moving my setup to a new machine. I am using Docker to virtualize openhab.
However I am currently facing two major problems while trying to get the signal binding to work.
My first problem is that for some reason the signal binding is showing up twice in the “add thing” dialogue. As you can see in the following picture.

My second problem occurs when I create a linked account thing with all the necessary data and scan the QR code with my signal account. After scanning the status of the thing says:

NonSuccessfulResponseCodeException - [405] Bad response: 405 : {"code":405,"message":"HTTP 405 Method Not Allowed"}

I really hope you can help me since I really enjoyed using the binding on my old instance and I am looking forward to using it in the future on my new one as well.

Thank you in advance :slight_smile:

This was due to a change in the signal server. The signal-cli library latest version fixed this, and I uploaded a new version (BETA 6). Can you remove the old one and reinstall from the marketplace ?

Not 100% sure, but I think I managed to also fix this (maybe an obscure naming rule convention, it seems that a KAR release shouldn’t be named openhab-* something, despite the code rules enforcing it ?).

(Feedback welcome)

Hello,
I reinstalled the binding and created a new linked device thing and it worked. Thank you very much for fixing the problem this fast.
The Problem with the binding being displayed two times is also solved although the description for the binding is gone. But thats not a functional problem so it’s fine.

Again thank you very much for patching :slight_smile: