Signal Binding [4.0.0.0;5.0.0.0)

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:

Hello @M_G ,

Another user reported having the same issue as you, and he fixed it with this solution.

It seems to be a error with the way the raspberry report the kernel architecture, or something like that.
Forcing value in the boot/config.txt could maybe resolve your issue.

1 Like

It is not an error it is a feature 

The kernel can run in 64 bit mode but the application ( userland ) can run in 32 bit mode.
If the application ( OH / binding ) relies on the check of the kernel ( uname -m ) to identify the architecture then it may fail if the userland does not run in the same mode.

Oh ! Thanks for the clarification, now I understand.

If the application ( OH / binding )

Actually, it’s sqlite that uses this detection. I’m not sure if I can overwrite it effectively. The sqlite devs says that we can use a env variable to do so, but as openHAB is using sqlite as a “feature” downloaded as a dependency by the osgi environnment, it seems outside the scope of a binding ? And even if I do, if another component use sqlite and already initialized it, it won’t work.

The sqlite dev puts the responsability on the raspberry team, so unfortunately he won’t fix it.

Saw that. Indeed it looks like this is specific for Raspberry that 32bit userland is used together with 64bit kernel. Although I found some questions that are several years old about if this would be possible the majority of these topics is about Raspberry nowadays.

I have no idea how this works but I am surprised that the application does the detection shouldn’t it be the OS that has the control ?

It’s a simple ‘uname -m’ which indeed target the kernel.

It means that, basically, raspberry pi 4 user cannot use sqlitejdbc persistence service, unless they use a workaround such as the one we discuss here (which is not so easy to diagnose/find)
I’m surprised that the topic is not more present in the forum.

I know that there are about at minimum 2 or 3 other cases.

  • two tests need to be done to identify kernel architecture and userland architecture

  • possible tests for kernel are:

    • uname -m => aarch64
    • lscpu | grep Architecture => aarch64
  • possible tests for userland architecture

    • getconf LONG_BITS = 32
    • file /bin/ls => ELF 32-bit LSB executable
2 Likes

Hey Gwendal,

Thanks a lot, that was it! It’s working :partying_face: :partying_face: :partying_face:

Thanks to Wolfgang as well!

1 Like

Just in case this helps debugging and improving


Today I upgraded from OH 4.0.4 to OH 4.1.1. Afterwards, the Signal account was broken (as before).

I found the /lib/ folder in /tmp/ including the .so file disappeared (probably in the process of the upgrade). So I did the following:

  • Copy the configuration data of the account into an editor
  • delete the Signal Account Thing, uninstall the binding, deleted the SQL stuff inside /lib/ which is copied there by the binding whenever an account is created.
  • then re-install the binding
  • do the steps as described in my previous post
  • create a new Bridge by copying the config from the editor back into the Thing
  • enjoy having it back working! :slight_smile: