Nice to know that you’ve finished coding, i’m very sorry but i was not following this thread anymore due to the inactivity then yesterday for some reason i’ve returned and find out that you’re back so i want to share with you my progress with developping the same thing, i was trying to recreate the native comunication in python or in nodered as i would like to make it as open as possible and not limit the thing to only hass of course if is open than we can put another container around to make it usable in hass but if it was open i think a lot of people like us can benefit from that.
Is there a safe way to share that confidential documentation?
You could create a github repository, set it as private and invite whoever you want to join it. Noone else will be able to find, open nor browse it if you didn’t explicitly invited that person
Sure, I can share the code for both addons on a private repo accessible only by developers, I’d have no issues with that.
I’m currently having problems with the packaging of the addon in HASS, I can’t seem to get Java 17 to install in an addon, so I won’t be releasing the addon today as I hoped I could, but I’ll try my best to solve that.
Hey, unfortunately I can’t seem to find a way to make Java 17 work in an addon. I tried everything but nothing worked. I am still working on it and will publish the addon as soon as I solved this problem.
It’s really frustrating because the code has been working for a week and I can’t publish it because of a seemingly simple apk
error.
I FINALLY got Java to work on a HASS addon, it was probably the most frustrating thing I ever had to do but finally I did it. Unfortunately this involved using a Debian base image, so when installed the plugin will take up approximately 700MB of disk space. I hope to solve this in the future, but for now this was the only way to make it work.
At the bottom of this post you’ll find the link to download the addon, the installation is exactly the same as the old one, same with the parameters, there’s just one new field which is the panel’s private IP on the network(usually 192.168.x.x to be clear), which is needed to connect locally. You can copy-paste the other values from the old plugin, they are the exact same.
Make sure you stop the old plugin before starting this one because they will conflict!
As I said before, this is very alpha software and there will be bugs, please let me know if you encounter any strange behaviour and I’ll try my best to reproduce it and fix it.
NOTE: at the moment this addon ONLY WORKS ON ARM SYSTEMS, so RPi or similar SBCs, Apple Silicon Macs, ARM based Windows PCs…
I’ll be adding x86 support ASAP.
As always, THANK YOU.
I installed the addon, but I cannot make it start. I get this log, then the addon shuts itself down.
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Error: Unable to initialize main class Application
Caused by: java.lang.NoClassDefFoundError: org/eclipse/paho/client/mqttv3/MqttException
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
Am I doing anything wrong or is this a bug of the addon?
That’s weird. On what system are you running this on? Meanwhile, I’ll check a few things. The problem seems to be that it can’t find the jar file for the MQTT library, but it works on my system(RPi 3B+).
EDIT: I checked and the jar file is indeed there, so if you could provide me with your system specs and OS that HASS is running on(in private if you want) I can try and reproduce the problem.
Home Assistant 2023.3.6
Supervisor 2023.03.3
Frontend 20230309.1 - latest
Running on docker (5:23.0.1-1~debian.11~bullseye)
Raspberry Pi 4, Raspberry Pi OS lite 64 bit (Bullseye)
This version should fix all the path problems(@AlessandroTischer this should fix your problem), and should also be supported on all architectures, not just ARM.
As always, please let me know of any problems. I tested this on my devices and it works but I don’t have every device possible.
To install, just replace the old folder with this and HASS should prompt you to update.
Hello nicomedia,
first of all, thank you for your work.
I tried the plugin tonight but I get this error.
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Connecting to broker: tcp://10.0.1.7
Connected
Apr 03, 2023 7:41:09 PM com.imavis.stratus.protocol.dsc.AbsolutaClient connect
INFO: connecting to /10.0.5.10:3064
Apr 03, 2023 7:41:10 PM com.imavis.stratus.protocol.dsc.transport.command_handlers.HandshakeHandler$ResponseReceivedCallback generalResponseReceived
WARNING: negative response for OpenSession: CommandError [command number: 0x0501] [received command: 0x060A, error code: 0x09]
Apr 03, 2023 7:41:10 PM com.imavis.stratus.protocol.dsc.transport.ResponseHandler channelRead
WARNING: unmatched general responde: CommandResponse [command number: 0x0502] [command seq: 0x00, response code: 0x00]
Apr 03, 2023 7:41:10 PM com.imavis.stratus.protocol.dsc.AbsolutaClient connect
INFO: disconnected from /10.0.5.10:3064
Is it an error in the plugin or in my configuration on my alarm panel?
Thanks
Hey, I have the same configuration but it works for me…
Make sure you’re disconnected from the panel with BOSS or the smartphone App before connecting with the addon.
If this doesn’t work, it would be really helpful it you could try to connect with the software linked below, which is the software that I reverse engineered for this plugin, and let me know if it connects with that, or if it gives an error.
Hi! I managed to get the addon working. Thank you very much.
I noticed that if the app is used to connect to the bentel panel, the addon stops working. Do you think it would be possible to add a reconnection strategy after some time?
In the next few days I will test a bit more and let you know if I find anything missing. Thank you!!!
It should already do that in theory… I’ll do some testing and report back. In my testing I even tried pulling the network cable for a couple minutes to see if it would reconnect and it did…
Ok thanks.
I’m testing tonight but I think it won’t work.
With the BOSS software, when I try to download or upload the configuration, it doesn’t work either.
I set all the “IP” settings by default.
Ok so if BOSS can’t connect it’s not an addon problem, you probably have a network problem.
You should check that your panel has a static IP in your home network and that the IP you’re using is correct. If that IP was assigned through DHCP, so dynamically, it could have changed when the DHCP lease ended.
You can find the IP of your panel using a network scanner(LanScan if you’re on macOS or angry IP scanner on Windows) and when you find it connect through BOSS and set a static one outside of your DHCP range (this is very important, you can find out what the range is in your router’s web admin interface, it’s different for every router).
The IP address is assigned via DHCP but it is fixed with its MAC address.
I have the right address and the ping is good.
I tested by giving a fixed address to the central but it does not change anything.
The Absoluta application on Android works (it is disabled during my tests, I know that the two cannot work at the same time).
I will test your application tonight. I didn’t know this program.
I tried the local addon v1.1, this is my error (also consider that the alarm is ARMED):
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Connecting to broker: tcp://192.168.1.XXX
Connected
Apr 04, 2023 11:22:29 AM com.imavis.stratus.protocol.dsc.AbsolutaClient connect
INFO: connecting to /192.168.1.YYY:3064
Apr 04, 2023 11:22:32 AM com.imavis.stratus.protocol.dsc.transport.command_handlers.RequestAccessHandler commandReceived
INFO: peer identifier: ************
Got partitions IDs:[1, 2]
Got sensor IDs:[1, 2, 3, 4, 5, 6, 7]
Got partition ID 1 arming state: DISARMED
Got partition ID 2 arming state: DISARMED
Changed general arming state to: GLOBALLY_DISARMED
Apr 04, 2023 11:22:39 AM com.imavis.cms.plugin.absoluta.connection.MessageHandler$6 run
WARNING: response timeout for ZONE_STATUSES([1, 7]) [type: true, resp: false, att: 1, n: 215]
Apr 04, 2023 11:22:44 AM com.imavis.cms.plugin.absoluta.connection.MessageHandler$6 run
WARNING: response timeout for ZONE_STATUSES([1, 7]) [type: true, resp: false, att: 2, n: 215]
Apr 04, 2023 11:22:49 AM com.imavis.cms.plugin.absoluta.connection.MessageHandler$6 run
WARNING: response timeout for ZONE_STATUSES([1, 7]) [type: true, resp: false, att: 3, n: 215]
Apr 04, 2023 11:22:49 AM com.imavis.cms.plugin.absoluta.connection.MessageHandler manageError
WARNING: too many attempts for ZONE_STATUSES([1, 7]) [type: true, resp: false, att: 3, n: 215]
Apr 04, 2023 11:22:49 AM com.imavis.cms.plugin.absoluta.connection.ConnectionHandler$ErrorListener fatalError
WARNING: Fatal error: closing connection
Apr 04, 2023 11:22:50 AM com.imavis.stratus.protocol.dsc.transport.ResponseHandler channelRead
WARNING: unmatched general responde: CommandResponse [command number: 0x0502] [command seq: 0x00, response code: 0x00]
Apr 04, 2023 11:22:50 AM com.imavis.stratus.protocol.dsc.AbsolutaClient connect
INFO: disconnected from /192.168.1.YYY:3064
Apr 04, 2023 11:22:50 AM com.imavis.stratus.protocol.dsc.transport.ResponseHandler channelInactive
WARNING: removing 3 waiting commands
Apr 04, 2023 11:22:50 AM org.openide.util.lookup.implspi.ActiveQueue reportError
WARNING: Cannot hack ReferenceQueue to fix bug #206621!
java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.ref.ReferenceQueue$Lock java.lang.ref.ReferenceQueue.lock accessible: module java.base does not "opens java.lang.ref" to unnamed module @6b2e0506
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
at org.openide.util.lookup.implspi.ActiveQueue$Impl.<clinit>(ActiveQueue.java)
at org.openide.util.lookup.implspi.ActiveQueue.queue(ActiveQueue.java)
at org.openide.util.Utilities.activeReferenceQueue(Utilities.java)
at org.openide.util.TimedSoftReference.<init>(TimedSoftReference.java)
at org.openide.util.NbBundle.getBundleFast(NbBundle.java)
at org.openide.util.NbBundle.getBundle(NbBundle.java)
at org.openide.util.NbBundle.getBundle(NbBundle.java)
at org.openide.util.NbBundle.getMessage(NbBundle.java)
at com.imavis.cms.plugin.absoluta.AbsolutaPanelProvider.getDefaultName(AbsolutaPanelProvider.java)
at com.imavis.cms.device.api.Panel.getName(Panel.java:223)
at com.imavis.cms.device.api.Panel.toString(Panel.java:324)
at org.slf4j.helpers.MessageFormatter.safeObjectAppend(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.deeplyAppendParameter(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.format(MessageFormatter.java)
at org.slf4j.impl.JDK14LoggerAdapter.info(JDK14LoggerAdapter.java)
at com.imavis.cms.device.api.Panel$Callback.connectionLost(Panel.java:445)
at com.imavis.cms.plugin.absoluta.CallbackListener.propertyChange(CallbackListener.java)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
at com.imavis.cms.plugin.absoluta.connection.PanelStatus.setConnectionStatus(PanelStatus.java)
at com.imavis.cms.plugin.absoluta.connection.ConnectionHandler.disconnected(ConnectionHandler.java)
at com.imavis.cms.plugin.absoluta.connection.ConnectionThread.run(ConnectionThread.java)
Apr 04, 2023 11:22:50 AM org.openide.util.lookup.implspi.ActiveQueue reportError
WARNING: Cannot hack ReferenceQueue to fix bug #206621!
java.lang.IllegalAccessException: class org.openide.util.lookup.implspi.ActiveQueue$Impl cannot access a member of class java.lang.ref.ReferenceQueue (in module java.base) with modifiers "private final"
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
at java.base/java.lang.reflect.Field.checkAccess(Field.java:1102)
at java.base/java.lang.reflect.Field.get(Field.java:423)
at org.openide.util.lookup.implspi.ActiveQueue$Impl.<init>(ActiveQueue.java)
at org.openide.util.lookup.implspi.ActiveQueue.queue(ActiveQueue.java)
at org.openide.util.Utilities.activeReferenceQueue(Utilities.java)
at org.openide.util.TimedSoftReference.<init>(TimedSoftReference.java)
at org.openide.util.NbBundle.getBundleFast(NbBundle.java)
at org.openide.util.NbBundle.getBundle(NbBundle.java)
at org.openide.util.NbBundle.getBundle(NbBundle.java)
at org.openide.util.NbBundle.getMessage(NbBundle.java)
at com.imavis.cms.plugin.absoluta.AbsolutaPanelProvider.getDefaultName(AbsolutaPanelProvider.java)
at com.imavis.cms.device.api.Panel.getName(Panel.java:223)
at com.imavis.cms.device.api.Panel.toString(Panel.java:324)
at org.slf4j.helpers.MessageFormatter.safeObjectAppend(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.deeplyAppendParameter(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java)
at org.slf4j.helpers.MessageFormatter.format(MessageFormatter.java)
at org.slf4j.impl.JDK14LoggerAdapter.info(JDK14LoggerAdapter.java)
at com.imavis.cms.device.api.Panel$Callback.connectionLost(Panel.java:445)
at com.imavis.cms.plugin.absoluta.CallbackListener.propertyChange(CallbackListener.java)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
at com.imavis.cms.plugin.absoluta.connection.PanelStatus.setConnectionStatus(PanelStatus.java)
at com.imavis.cms.plugin.absoluta.connection.ConnectionHandler.disconnected(ConnectionHandler.java)
at com.imavis.cms.plugin.absoluta.connection.ConnectionThread.run(ConnectionThread.java)
WARNING: Lost connection to alarm panel! Reconnecting in 5 seconds...
Apr 04, 2023 11:22:50 AM com.imavis.cms.device.api.Panel$Callback connectionLost
INFO: Connection lost on Absoluta Panel.
I was trying with python but keep failing even with official documentation of the protocol.
Don’t understand why the reconnect won’t work and why the crc sometimes it fails.
As my time is always less and less i will try again but with a new daughter it will be very difficult for me as you’ve already see the time passed between my last reply.
Nicomedia can we speak togheter somewhere else so i can share with you the documentation?
Unfortunately it’s not my case…
I collected some logs that I hope can help:
This exception is thrown on startup
This is the log of what happens to me if the app is used
OK I think I understand the problem. It seems like for some reason if the app is used it doesn’t invoke the “ConnectionLost” method from the interface which is the one that does the automatic reconnection…
I’ll look into it and post an update ASAP.