In my opinion, the best place to get started on this is the Paper UI, which is at http://192.168.0.99:8080/paperui/ (substituting your HestiaPi’s IP address in for 192.168.0.99).
In OpenHAB, at least in our setup, the Rules are what determines when relays are enabled.
If you look at the Humidity Control rule, you’ll see the general format for a rule, with is basically an if/then/unless statement (in case you’re familiar with programming languages that have the “unless” construct).
The “If…” says when HumidityCtl is fired, which we’ll come back to in just a minute. The “Then…” is the code that is executed. This is worth clicking the gear icon to edit and look at the JS code, which takes a couple seconds to load. Here we can see there’s a HumidityPin defined somewhere. By looking at this code, now you know that you’ll need to figure out what that is and potentially change it.
Next there’s the “but only if…” section which says that this only applies when the SystemType is set to EU. This is a little confusing since the UI says the system types are “Generic” and “HVAC”, but those are listed as “EU” and “US”, respectively, under the hood.
So if HumidityPin is correct, then it looks like this rule pretty much does what you want it to do. You already spotted HumidityPin in the Configuration → Items section, but if you try to edit that, there’s really not much there. So we need to keep looking.
Honestly, I still grep for things when I need to find stuff like this. Grepping /etc/openhab2 on the HestiaPi shows that it is set in ./automation/lib/hestia/defaults.js. This is one of those things that, as far as I know, is never exposed in the web UI anywhere. You also might have noticed the load(OPENHAB_CONF + '/automation/lib/hestia/utils.js');
line in the rule earlier, now you know where to find that utils.js file.
Looking at defaults.js, my guess is that we’ll have to add PIN_MAP.put("US_HumidityPin", "Pin16");
but lets wait to make that change until we see where it’s used. We also see that Pin16 is also mapped to Heating2Pin, which is fine as long as you never turn on second stage heating. I know this because I’ve reviewed the code in the rules related to second stage heating, but you might want to review them as well just before you make changes so you can be confident that this won’t cause trouble. You could also probably remove it, but then things might go wrong that would be very difficult to detect and track down.
The last thing I’ll point you to in order to prepare you for your journey is the Humidity Check rule. If you look at the “Then…” part, you’ll see it ends with events.sendCommand("HumidityCtrl", cmd);
. This is what fires the Humidity Control rule.
That should be enough to get you started in tracking down where the code is that you need to change. Just keep going through the rules, grep for things you can’t find as an Item/Thing/Rule, and if you get lost or have questions, post back here and I should get back to you within a few days.
As for other hints that I can think of off the top of my head:
- HumidityType is “humidify” or “dehumidify” (see the Humidity Type rule for details)
- Initialization rule is run on boot and kicks off a ton of things (including that HumidityCheck value)
- Items that are of type Switch should always be a toggle between two things (ON/OFF, US/EU, etc.)
- Items whose names end in Pin are basically the relay state (or the GPIO pin state, same thing)
- Items that end in Proxy are generally confusing, but check out this post for more info on those