Researched from current Home Assistant documentation, Core 2026.9.4 source code and manufacturer guidance on October 5, 2026. This is a configuration walkthrough, not a hands-on appliance test. The cover is an AI-generated household illustration.

1. Choose how Home Assistant should control your dehumidifier

A Home Assistant dehumidifier automation works best when humidity control and the hours it may run have separate jobs. Keep the appliance’s built-in humidistat—the control that maintains a humidity target—if it already works well. Add a schedule through a supported integration, meaning Home Assistant’s connection to that device.

If you need a separate room sensor and have an approved on/off control, the built-in Generic hygrostat can supply the humidity decision. It appears as a humidifier. entity, even in dehumidifier mode. An entity is one named control or reading in Home Assistant.

Start by checking the appliance manual and its integration. A device that resumes after a power failure is not automatically suitable for frequent power cuts. Meaco explicitly advises against smart-plug switching because it interrupts the normal shutdown process. Do not bypass tank-full switches, thermal protection or required cooldowns.

On a narrow screen, swipe the table sideways.

What you already haveChoose this pathCheck before using it
A supported dehumidifier with a humidity target in Home AssistantUse its native target and on/off actions. Skip the extra hygrostat unless you specifically need external-sensor control.Confirm the exact integration’s supported features and whether commands need internet access.
A manufacturer-approved on/off control and a room humidity sensorUse Generic hygrostat, then schedule when that controller is enabled.For a mains plug, obtain permission for that use and check the plug’s motor/startup-load rating, not just its headline maximum amperage. If permission or suitability is unclear, do not use this route.
An appliance that needs a button press, controlled shutdown or unsupported controlsKeep its own humidistat/timer. Use Home Assistant for readings and reminders.Software cannot make a power plug perform a required button press or shutdown sequence.

For example, Home Assistant’s current Midea integration supports dehumidifiers using its supported protocols and communicates locally. Some devices need a token and key obtained during setup; newer API variants are not universally supported. Check your exact appliance before assuming the brand name guarantees compatibility. This guide does not recommend a particular appliance or plug.

2. Rehearse humidity control without an appliance

The following example creates three software controls: a number you move to represent humidity, a toggle that represents the appliance, and a virtual humidity controller. Nothing is connected to a socket or real sensor. Keep these test helpers out of any existing automations that target all devices or helpers.

  1. Open your Home Assistant configuration file. Save a copy before editing. Add the YAML below; if a top-level input_number:, input_boolean: or generic_hygrostat: section already exists, merge its entries instead of repeating the heading. Configuration file guidance.
  2. Check configuration before restarting. Current documentation puts this under Settings → Tools → YAML; older installations may show Developer tools → YAML. Fix reported errors, then restart Home Assistant at a suitable time for your household. Configuration checks.
  3. Find the new controls under Settings → Devices & services → Entities. Confirm their entity IDs. Add them to a temporary dashboard card. The expected controller ID is humidifier.drying_rehearsal; a naming collision may add a suffix.
  4. Move the pretend humidity to 49%, then 50%, and enable Drying rehearsal. This supplies a fresh reading after setup; keep the controller’s target at 55%. The output should stay off. Follow the table below. Change the Number helper normally, rather than overwriting a real sensor’s state.

Code blocks scroll sideways on small screens.

Software-only rehearsal: add to configuration.yaml
input_number:
  drying_test_humidity:
    name: Drying test humidity
    min: 0
    max: 100
    step: 1
    unit_of_measurement: "%"
    initial: 50

input_boolean:
  drying_test_output:
    name: Drying test output
    initial: false

# Test helpers only. Do not connect this output to an appliance.
generic_hygrostat:
  - name: Drying rehearsal
    unique_id: tara_drying_rehearsal
    humidifier: input_boolean.drying_test_output
    target_sensor: input_number.drying_test_humidity
    device_class: dehumidifier
    target_humidity: 55
    dry_tolerance: 3
    wet_tolerance: 3
    min_cycle_duration: "00:00:10"
    sensor_stale_duration: "00:02:00"
    initial_state: false

The Number helper stands in for a humidity sensor; the Toggle helper stands in for the appliance. This YAML uses the hygrostat’s numeric input and generic on/off output support. The deliberately short 10-second cycle and two-minute timeout are for this software rehearsal only.

Our example target is 55% relative humidity (RH), with a margin of three percentage points on either side. That gap is called hysteresis: it prevents every small wobble around the target from reversing the last decision. These are demonstration values, not a moisture target for every home.

Do this in orderExpected pretend outputWhat it shows
Enable the controller at 50%OffEnabled means permitted to regulate; it does not mean drying continuously.
After the output has been off for at least 10 seconds, set humidity to 58%On55 + 3 is the ordinary start threshold.
Set humidity to 55%Stays onThe reading is between the two thresholds.
After at least 10 seconds on, set humidity to 52%Off55 − 3 is the ordinary stop threshold.
Set humidity to 55% againStays offThe same middle reading preserves the previous output state.
After 10 seconds off, set 60%, then leave the number untouched for over two minutesTurns on, then off; the controller becomes unavailableThe test input stopped reporting. Change it to 50% to provide a new reading and recover.

Keep the ordinary steps less than two minutes apart. If a threshold arrives before the minimum duration has elapsed, wait and change the test number again to another value beyond that threshold. The duration is a condition checked when the controller evaluates; it is not a promise to switch exactly when a countdown ends.

A limit that matters: Core 2026.9.4 bypasses tolerance and minimum-cycle checks during forced enablement and initialization. Turning the controller on at 56% can therefore start the output even though the ordinary start threshold is 58%. Explicit turn-off is immediate. Do not use this software setting as the appliance’s sole protection against rapid restarting. Implementation checked for this guide.

3. Add quiet hours and a visible pause

Keep using the rehearsal controller for this step. Under Settings → Devices & services → Helpers, create a Schedule helper named “Drying allowed.” Draw a 7:00 am–9:00 pm block on each day you want it available. Create a Toggle helper named “Drying paused,” and leave it off. Confirm the IDs are schedule.drying_allowed and input_boolean.drying_paused.

Create an automation under Settings → Automations & scenes, open its YAML editor and paste this example. Replace IDs if yours differ. This is a complete automation for that editor, not another section to paste under generic_hygrostat:.

Schedule and pause automation for the rehearsal
alias: Drying rehearsal - hours and pause
id: tara_drying_rehearsal_hours
mode: restart
triggers:
  - trigger: homeassistant
    event: start
  - trigger: state
    entity_id:
      - schedule.drying_allowed
      - input_boolean.drying_paused
      - humidifier.drying_rehearsal
    to: null
  - trigger: time_pattern
    minutes: "/5"
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: schedule.drying_allowed
            state: "on"
          - condition: state
            entity_id: input_boolean.drying_paused
            state: "off"
        sequence:
          - condition: state
            entity_id: humidifier.drying_rehearsal
            state: "off"
          - action: humidifier.turn_on
            target:
              entity_id: humidifier.drying_rehearsal
    default:
      - condition: state
        entity_id: humidifier.drying_rehearsal
        state: "on"
      - action: humidifier.turn_off
        target:
          entity_id: humidifier.drying_rehearsal

The schedule says when regulation is allowed; the humidity controller decides whether its output should run. The automation only sends an enable/disable action when the controller’s state needs changing. Its five-minute check therefore does not repeatedly force the controller on. It also reevaluates after startup or a state change. Trigger reference; humidifier actions.

After building the schedule, move the test number to a different value to refresh it; the rehearsal’s two-minute timeout still applies.

Test the pause while the pretend output is on: turn “Drying paused” on. Both the controller and output should turn off. Turn pause off during the allowed window; the controller should enable and evaluate the current test reading. Temporarily edit today’s schedule so the block ends shortly, then observe the controller turn off at that boundary. Restore your intended hours afterward.

Use the pause helper for a lasting manual stop. Turning the controller off directly during allowed hours will cause this automation to enable it again. This behavior is intentional; keep the pause visible beside the controller. The manual override guide explains how to make that handoff understandable to everyone at home.

Check the automation’s trace—the record of which steps ran—after each change. “Run actions” alone does not prove that a schedule transition fired. Missing or unavailable schedule/pause states take the stop branch; the routine cannot stop an appliance whose control connection has failed.

4. Move to real controls only after the rehearsal works

For a native dehumidifier entity: set its supported humidity target using the device card or humidifier.set_humidity. Use a separate copy of the schedule automation with that entity ID in all five places. Its own sensor and internal rules determine drying; adding a room sensor to your dashboard does not automatically make the appliance use it. Check whether its integration provides an external-sensor option.

For the approved switch-control route: create a separate Generic hygrostat under Helpers, selecting Dehumidifier, the real room humidity sensor and the approved control. Use YAML if your installed UI lacks an option you need. Keep the rehearsal separate: use a new name and unique ID rather than quietly reconnecting the test output to hardware. Then make a separate schedule/pause pair and automation for the live controller.

  • Choose real operating limits. Replace the test cycle/timeout with values appropriate to the appliance and the sensor’s documented reporting interval. Do not copy the ten-second rehearsal cycle onto equipment.
  • Choose one humidity-control policy. Understand how the appliance’s own target interacts with the external controller. Do not disable protective features or select continuous operation unless the manufacturer permits that use.
  • Supervise the first normal cycle and scheduled stop. Confirm the actual appliance stops safely, including any fan cooldown. A plug reporting “on” does not prove its compressor is running or its tank is ready.

A stale-reading timeout watches reports arriving in Home Assistant. A steady humidity number can be valid, and an integration repeatedly reporting a cached number can conceal an old physical reading. Check the sensor’s reporting behavior before choosing a timeout. State timestamps explain the distinction; the separate unavailable-device notification guide covers connection alerts.

Restart caveat: the hygrostat restores its previous enabled state and target when available; initial_state: false is a fallback, not an enforced off-at-every-boot rule. After a restart or sensor recovery, regulation can resume before the schedule automation corrects it. If absolutely no operation outside a window is acceptable, use an appliance-supported schedule or another independently enforced control. Home Assistant also cannot send the evening stop while it is down.

Our recommendation is to add complexity only where it solves a household problem. If the appliance maintains humidity well on its own, a supported quiet-hours control may be all you need. A shower extraction problem belongs to the bathroom fan humidity guide; it needs a different response from room dehumidification.

When the result looks wrong

What you seeCheck firstNext step
Humidity is high but nothing startsIs the controller enabled? Is the schedule open, pause off and sensor available?Inspect those states before changing thresholds. A separate numeric trigger only fires on a crossing; it is not a continuous “is above” check.
It starts below the ordinary 58% thresholdWas the controller just enabled, initialized or recovered?Separate forced evaluation from ordinary sensor updates. Do not keep sending turn-on commands as a heartbeat.
The controller says on, but the room stays dampCheck the actual output, appliance status, tank and its own target.“On” can mean regulation is enabled. Keep tank-full protection intact and use the appliance’s manual to diagnose drying.
The controller becomes unavailable despite a plausible numberHas the sensor reported within the chosen timeout?Check reporting cadence and logs. Do not convert missing readings to zero or remove the timeout without understanding the cause.
It runs during quiet hoursCheck the schedule trace, connectivity and any other automation controlling the raw output.Give one controller ownership. A successful action alone does not establish that the appliance stopped.

Other practical questions

Do I need HACS or an app for Generic hygrostat?

No. It is built into Home Assistant. The UI offers a subset of the YAML options; check the documentation against your installed version. The HACS versus Apps guide explains when those separate installation paths are actually needed.

Will this work without internet?

The built-in controller and schedule run in Home Assistant. The whole routine can stay local only if the sensor and appliance-control connections also work locally. A cloud-dependent integration still needs its cloud connection, even when the automation itself runs at home.

Does this prove a particular dehumidifier is compatible?

No. The rehearsal checks software decisions. It does not establish electrical suitability, safe shutdown, physical drying performance or compatibility with an exact appliance. Confirm those separately before using real equipment.