Openhab 4 / Balboa

@locke @clinophobic Did either of you have any luck with getting the binding working with OH4? I lost the SD card due to corruption, and when I rebuilt I set it up with OH4 instead of 3 before later realising that this binding wasn’t supported yet. Don’t want to downgrade if I can avoid that.

Previous thread: Does the Balboa binding work with OH4?

yes, works like a charm with OH4.1.

Thanks for letting me know, but I’m still having problems. At the time of install the latest available was Version: 4.1.0.M4 (Build) - I’ve just updated to 4.1.1 and still can’t see the binding in nay part of the UI.

I’ve copied clinophobic’s jar file to /usr/share/openhab/addons (which aready had openhab-addons-4.1.1.kar) and it’s owner/group are both openhab with rwrr 644 permissions, also tried with rwxrxrx 755 , it’s showing in the bundle list in the console. But when I try to add a thing it’s not showing as an available binding to use (/settings/things/add)
I can’t find a .things or .items file definition to test that method. Any ideas what step I’ve missed?

$ openhab-cli info

Version:     4.1.1 (Build)

User:        openhab (Active Process 3787)
User Groups: openhab tty dialout audio bluetooth gpio

Directories: Folder Name      | Path                        | User:Group
             -----------      | ----                        | ----------
             OPENHAB_HOME     | /usr/share/openhab          | openhab:openhab
             OPENHAB_RUNTIME  | /usr/share/openhab/runtime  | openhab:openhab
             OPENHAB_USERDATA | /var/lib/openhab            | openhab:openhab
             OPENHAB_CONF     | /etc/openhab                | openhab:openhab
             OPENHAB_LOGDIR   | /var/log/openhab            | openhab:openhabian
             OPENHAB_BACKUPS  | /var/lib/openhab/backups    | openhab:openhab
$ openhab-cli console

Logging in as openhab
Password:
Failed to load native library:jansi-2.4.0-6010b72b95509f42-libjansi.so. osinfo: Linux/arm
java.lang.UnsatisfiedLinkError: /var/lib/openhab/tmp/jansi-2.4.0-6010b72b95509f42-libjansi.so: /var/lib/openhab/tmp/jansi-2.4.0-6010b72b95509f42-libjansi.so: cannot open shared object file: No such file or directory

                           _   _     _     ____
   ___   ___   ___   ___  | | | |   / \   | __ )
  / _ \ / _ \ / _ \ / _ \ | |_| |  / _ \  |  _ \
 | (_) | (_) |  __/| | | ||  _  | / ___ \ | |_) )
  \___/|  __/ \___/|_| |_||_| |_|/_/   \_\|____/
       |_|       4.1.1 - Release Build

Use '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
To exit, use '<ctrl-d>' or 'logout'.

openhab> bundle:list | grep Bal
323 x Active x  80 x 3.2.0.202108270027     x openHAB Add-ons :: Bundles :: Balboa Binding
openhab>

I just tried and it’s the same for me: I cannot select the balboa-binding when adding a new thing.
I installed the binding and the thing with OH3 and upgraded to OH4, so I never faced that problem
You could (at your own risk) directly insert the relevant code into the json-file. I copied the part out of my jsondb (see below).
So you would have to stop openhab, make a backup of /var/lib/openhab/jsondb/org.openhab.core.thing.Thing.json
Then insert the following code after line 1 and replace the ip at the end with the ip of you spa. Take care that the format is correct.

Click to see Code
  "balboa:balboa-ip:Balboa": {
    "class": "org.openhab.core.thing.internal.ThingStorageEntity",
    "value": {
      "isBridge": false,
      "channels": [
        {
          "uid": "balboa:balboa-ip:Balboa:heat-mode",
          "id": "heat-mode",
          "channelTypeUID": "balboa:heat-mode",
          "itemType": "String",
          "kind": "STATE",
          "label": "Heat Mode",
          "description": "Heat Mode",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:current-temperature",
          "id": "current-temperature",
          "channelTypeUID": "balboa:current-temperature",
          "itemType": "Number:Temperature",
          "kind": "STATE",
          "label": "Current Temperature",
          "description": "Current Temperature",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:light-1",
          "id": "light-1",
          "channelTypeUID": "balboa:light1",
          "itemType": "Switch",
          "kind": "STATE",
          "label": "Light 1, one-level",
          "description": "Light 1, one-level",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:temperature-scale",
          "id": "temperature-scale",
          "channelTypeUID": "balboa:temperature-scale",
          "itemType": "String",
          "kind": "STATE",
          "label": "Temperature Scale",
          "description": "Temperature Scale",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:temperature-range",
          "id": "temperature-range",
          "channelTypeUID": "balboa:temperature-range",
          "itemType": "String",
          "kind": "STATE",
          "label": "Temperature Range",
          "description": "Temperature Range",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:priming",
          "id": "priming",
          "channelTypeUID": "balboa:priming",
          "itemType": "Contact",
          "kind": "STATE",
          "label": "Priming",
          "description": "Priming",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:heater",
          "id": "heater",
          "channelTypeUID": "balboa:heater",
          "itemType": "Contact",
          "kind": "STATE",
          "label": "Heater",
          "description": "Heater",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:circulation",
          "id": "circulation",
          "channelTypeUID": "balboa:circulation",
          "itemType": "Contact",
          "kind": "STATE",
          "label": "Circulation Pump",
          "description": "Circulation Pump",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:pump-1",
          "id": "pump-1",
          "channelTypeUID": "balboa:pump1",
          "itemType": "Switch",
          "kind": "STATE",
          "label": "Jet Pump 1, one-speed",
          "description": "Jet Pump 1, one-speed",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:target-temperature",
          "id": "target-temperature",
          "channelTypeUID": "balboa:target-temperature",
          "itemType": "Number:Temperature",
          "kind": "STATE",
          "label": "Target Temperature",
          "description": "Target Temperature",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:blower",
          "id": "blower",
          "channelTypeUID": "balboa:blower1",
          "itemType": "Switch",
          "kind": "STATE",
          "label": "Blower, one-speed",
          "description": "Blower, one-speed",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        },
        {
          "uid": "balboa:balboa-ip:Balboa:filter",
          "id": "filter",
          "channelTypeUID": "balboa:filter",
          "itemType": "String",
          "kind": "STATE",
          "label": "Filter Status",
          "description": "Filter Status",
          "defaultTags": [],
          "properties": {},
          "configuration": {}
        }
      ],
      "label": "Balboa",
      "configuration": {
        "host": "192.168.1.55",
        "pollingInterval": 60,
        "port": 4257,
        "reconnectInterval": 30
      },
      "properties": {
        "modelId": "Generic Balboa Unit",
        "protocol": "WiFi",
        "vendor": "Balboa"
      },
      "UID": "balboa:balboa-ip:Balboa",
      "thingTypeUID": "balboa:balboa-ip"
    }
  },

Then start openhab and let me know if it works.

@clinophobic and me were planning to update the binding so it can become a part of openhab but that might be a long-term project because both of us never developed a binding. So if somebody with skills wants to jump in: welcome

Thank you @Larsen , that worked, slightly different hottub, but it automatically rebuilt the array with the values I need to match my system (e.g. 4 pumps).

I’m not familiar with Java, but if I get time I’ll see if I can figure out why it didn’t work as expected. Hopefully there are some OH3->OH4 upgrade notes somewhere that might point to the issue.

@Larsen @clinophobic I wonder if it’s something as simple as changing this

Alternatively the commit log from that addon does show a few OH4.* related changes which might lead us in the right direction.