I need a humidifier, and I find myself in the same situation as “always”. Trying to figure out what products, if any, can be controlled locally, without first registering, creating an account, downloading some mobile “app”, etc., is difficult.
Does anybody know if such a “device registry” exists anywhere, regardless of whether there is OH support or not?
I also think it’s frustrating that OH bindings aren’t clearly marked with whether they require an online registration/account or not. Those that do might as well no exist as far as I’m concerned, and it often takes quite a lot of reading to figure out the devices they support can be used safely (as in not uploading your data) or not.
But, to the point, right now I’m looking for a humidifier, with or without purifier, that can be controlled and that doesn’t “leak data”.
I’ve found mention of the Philips Air devices, but it seems that more recent firmware has removed local control, that it was always a bit patchy, and it’s not at all clear if it requires online registration to set it up. I can’t find any “current models” that’s for sale either, so they might have dropped the whole concept. So, Philips is out as far as I can tell.
I also found mention of Ikea devices that use Zigbee, but I can’t find that Ikea has any humidifiers, only purifiers. I have found that both Wilfa and Levoit/VeSync are Tuya based, which is the same cloud registration BS (I already have another Tuya device that I must control manually for the same reason, I’m not getting another Tuya device).
I’m a bit stuck, so I’m asking: Does anybody know of a humidifier with some level of control that works entirely offline?
It does not full fill your requirements but this is what I’m using.
It is a tuya controlled device. You need to create an account to get a api token. After that, the tuya binding is talking to the device locally, so you can block the device itself for any cloud/internet connection.
So far, I was looking for something similar as you, but this is what I came out.
The great thing about this device is that it’s very hygienic because it works on evaporation. It also has a 10-liter water tank and only needs refilling every two days. We use one device per floor, so two in total.
They are, at least in the bundles themselves (see the connection attribute in addon.xml. What’s lacking is the ability to filter the addon list accordingly … and showing that information for not-yet installed add-ons.
I’m having great success with just a smart plug, dumb humidifier, and hygrometer and some OH rules. I could use the Threshold Alert rule template to control the humidifier (I wrote the rule I’m actually using a long time before I wrote the rule template and never switched over) and to alert me when the humidity drops too low for a long time indicating the tank may be empty. If I really cared I’m sure I could rig up a sensor to tell me directly, but so far this indirect approach has worked very well.
It’s not quite as nice as the Levoit smart humidifiers I have which will alert me immediately when the tank is empty, but it’s more than adequate for my needs. I’ve run one of my humidifiers to help keep my wife’s musical instruments from getting too dry this way for many years.
I just offer this as a fallback in case there isn’t anything else suitable.
The rule I’m using to control the humidifier:
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Mainfloorsensors_Humidity
type: core.ItemStateChangeTrigger
- id: "2"
configuration:
itemName: Mainfloorsensors_Humidity_Setpoint
type: core.ItemStateChangeTrigger
conditions:
- inputs: {}
id: "3"
configuration:
type: application/javascript
script: return event.newState != 'NULL' || event.newState != 'UNDEF';
type: script.ScriptCondition
actions:
- inputs: {}
id: "7"
configuration:
type: application/javascript
script: >-
const equipment = items[event.itemName].semantics.equipment;
console.debug('Received an event from equipment ' + equipment.name);
const sensor = equipment.members.find( i =>
i.tags.includes('Measurement') );
const setpoint = equipment.members.find( i =>
i.tags.includes('Setpoint') );
const control = equipment.members.find( i => i.tags.includes('Switch')
);
console.debug(sensor.name + ": " + sensor.state + " " + setpoint.name +
":" + setpoint.state + " " + control.name + ":" + control.state);
const HYST = 10;
const curr = sensor.quantityState;
const max = Quantity(setpoint.state, '%');
const min = Quantity(String(max - HYST), '%');
console.debug(sensor.name + ' is currently ' + curr + ' with min ' + min
+ ' and max ' + max);
let newState = 'STAY'
if(curr.lessThan(min)) newState = 'ON';
else if(curr.greaterThan(max)) newState = 'OFF';
console.debug('New humidifier state is ' + newState + ' and Item state
is ' + control.state);
if(newState != 'STAY' && control.state != newState) {
console.info('Command the humidifier '
+ sensor.name + ' to ' + newState
+ ' because min='+ min + ' max='+ max
+ ' and curr=' + curr);
control.sendCommand(newState);
}
else {
console.debug('Leaving the humidifier ' + control.state);
}
type: script.ScriptAction
I probably could just use the hysteresis profile in place of this rule, but I want the logging.
The Threashold Alert config I use to get an alert when I need to fill the tank is
const location = items[alertItem].semantics.location;
const refid = location.name+'_low_humidity_alert';
let msg = '';
if(isAlerting) {
const msg = 'The humidity in ' + location.label + ' is low at ' + alertState + '! Remember to refill the humidifier.';
console.info(msg);
actions.notificationBuilder(msg)
.addUserId('rlkoshak@gmail.com')
.withTag('Alert')
.withTitle(location.label + ' Humidity Low!')
.withIcon('f7:drop')
.withReferenceId(refid)
.send();
}
else {
console.info('Humidity in ' + location.label + ' is no longer too low.');
actions.notificationBuilder("hide notification").withReferenceId(refid).hide().send();
}
The smart plug I use is a zigbee something or other (it’s really basic, just ON and OFF) and a Govee bluetooth temp and humidity sensor I shoved in among the instruments.
@holger_hees@rlkoshak Thanks for your suggestions. I was just hoping that there was something out there that was really independent - and it probably is, but it doesn’t look like finding it is easy.
I could go the “manual route” using separate sensors and turning it on/off, but I think it’s easier to just have one with sensors and regulation internally that I simply have to control on the device itself - and never connect it to Wi-Fi. It’s crazy that the world has come to this, but it is what it is.
It turns out that I don’t have much choice anyway, because we’re having 20% inside here now, and I have asthma, making breathing very difficult. We’ve never had this problem before (sure, it can be dry at this time of year, but I’ve never experienced this kind of problem), and it must be something with the weather as well, because it turns out that as good as all humidifiers are sold-out locally. So, I can’t be picky. Ordering something isn’t really an option, as it’s somewhat acute. My wife has managed to reserve one that she can pick up tomorrow, it’s a Tuya device (Wilfa), but we must take what we can get as the situation is. I’ll just have to keep it disconnected, and maybe I’ll see if I can reflash it or replace the controller with an ESP32 later - when the “crisis” is over.
As I already mentioned, I already have a Tuya dehumidifier (not needed ATM) which I use offline. It’s just a pain that it has to be this way. It’s out of the question for me to sign up to enable local access, it will still send its data to them. And, it’s the principle.
Also, my only worry isn’t that they steal data - it’s also that these devices basically have “kill switches”. What if they decide to start charging for something - like Tesla did with the heated seats? What if they just shut down the service because they think it’s time to force people to buy new stuff? They can push a firmware update that bricks your device, and there’s not much you can do about it - Apple has already be doing this with older phones for a while, and I’m sure they aren’t alone.
So, to me, for me to properly “own” something, I must control it. Everything that relies on online services are, in additions to stealing data, is more akin to a rental. They change the terms when they want to, they decide when it’s time to pay some more. Out of the question for me.
Sadly, this info isn’t accurate. I’ve tried to have this discussion before:
In short, there’s no differentiation between accessing the Internet and using a service that requires registering identifiable information. The information isn’t easily available when you try to figure out what device to buy anyway, as far as I know, the only way to see and filter by this information is by opening the marketplace from within OH. You can even use it for filtering there, but since the categorization doesn’t really differentiate between a binding that merely fetches some public information from the internet and one that must have you sell your soul to give you access, it’s close to useless for me.
It would help if the categorization had an option for “read only Internet”/“no account”, and if this status was clearly shown in the binding documentation when you look up the binding. But, that’s not where we are. Also, frankly, it doesn’t help if the binding never uses the Internet, if you have to register to enable local access.
I got a humidifier that has an IR remote, then used a Broadlink RM4 Mini to control it. I also put the humidifier on a smart plug so that I could be certain it was turned off.
I do a similar thing with an IR-controlled fan and a Logitech Harmony Hub.
Yes, that’s been there for a while - it was there in 4.x as well. But, as I said, this category doesn’t help much, as it doesn’t capture what is “interesting” - whether your data will be compromised by using the device, and whether it has a “built in kill-switch” in the form of depending on online services that can be killed off at the manufacturer’s whim.
In addition, I think this should be visible in the binding documentation, so you don’t need to actually use OH to look it up at the marketplace to get access to the information.