🌱 GrowBox Dashboard: Comprehensive Climate Control


This is the complete Home Assistant Lovelace YAML configuration for your GrowBox, designed for optimal indoor cultivation monitoring and control. It utilizes custom components like custom:flower-card and custom:button-card for a high-density, modern interface.

1. 🌿 Plant Monitoring Section (Flower Cards)

This section is designed to monitor the individual health of each plant using the custom:flower-card. This card offers a compact, visual representation of crucial microclimate parameters specific to the plant's root zone and immediate environment.

  • Strains Monitored: Lemon Cherry Gelato (Plants 1–3) and Strawberry Pop Rocks (Plants 4–6).
  • Key Metrics Displayed (show_bars): Illuminance (light), Air Humidity, Soil Moisture, Temperature, and DLI (Daily Light Integral).
  • Battery Status: Dedicated battery sensors (e.g., sensor.feuchtesensor_1_batterie) are tracked to ensure continuous data collection from the soil probes.

2. 🌡️ Zonal Sensors and Cameras

This card group aggregates all environmental sensors and live camera feeds. Measuring temperature and humidity at multiple points is critical for identifying potential air stratification (layering) or hot spots that can harm the plants.

  • Top Zone (Canopy): Primary climate metrics (sensor.temperatur, sensor.luftfeuchtigkeit).
  • Middle Zone: Checks for air homogeneity (sensor.growbox_temp_mitte_temperatur, sensor.growbox_temp_mitte_luftfeuchtigkeit).
  • Bottom/Exhaust Zone: Critical for fan control logic (sensor.growbox_abluft_temperature_sensor_celsius_239980).
  • Lighting Sensors: Measures light intensity (Illuminance) at different heights.
  • Cameras: Displays live feeds from the ceiling (camera.growbox_cam_decke_klar) and a detailed close-up stream (camera.albanigger_hd_stream).

3. 📈 History and VPD Management

This section is crucial for long-term optimization, focusing on historical data and Vapor Pressure Deficit (VPD), the most important environmental metric for plant transpiration and nutrient uptake.

  • VPD Gauge: The live VPD value (sensor.vpd) is displayed in a gauge that automatically adjusts its optimal (green) range based on the selected **Growth Phase** (Seedling, Vegetative, Flowering).
  • History Graphs: Provides a 24-hour visualization of all vital environmental metrics: VPD, Temperature, Humidity, Light Brightness, Exhaust Fan Speed, and Circulation Fan Power.

4. 📝 Status Report & Phase Control

The core of the control interface is the dynamic **Status Report** (custom:button-card). This card uses advanced JavaScript templating to consolidate complex monitoring logic into an easy-to-read summary.

  • Phase Selection: Manually set the current growth phase via input_select.growbox_phase.
  • Dynamic Logic: The report calculates average T/H, compares live values (T, H, VPD, Light) against phase-specific target ranges, and displays a quick status icon (🟢/🟠/🔴).
  • **Automation Check:** Verifies that the automated **Sunrise** and **Sunset** routines for the currently selected phase were triggered correctly today/yesterday (e.g., automation.growbox_sonnenaufgang_blutephase_30min).
  • **Phase Recommendations:** Displays the recommended PPF range and optimal lamp distance for the current stage.

5. 💡 Light, Fan, and Pump Controls

Direct control and detailed power monitoring for all major GrowBox systems. All metrics are sourced from smart outlets to track power consumption.

  • Lighting System: Includes the main light outlet switch (light.growbox_lampe_outlet) and a dedicated **Light Dimmer Controller** (light.growbox_licht_dimmer) for precise intensity management.
  • Exhaust Fan: Separate switch for the outlet (switch.grow_box_abluft_outlet) and a **Percentage Controller** (fan.growbox_abluft_fan_239980) for proportional climate control.
  • Circulation Fan: Simple on/off toggle (fan.growbox_umluft_outlet) with power consumption monitoring.
  • Pumps: Dedicated switches for two separate water or nutrient pumps (switch.10014d2a22_1 and switch.10014d2a22_2).

6. ⚙️ Controls

Phase Controls

📄 Home Assistant YAML Configuration

The complete YAML configuration for the Lovelace Dashboard. You can copy this code and paste it directly into your Home Assistant Raw Configuration Editor.


views:
  - type: sections
    title: GrowBox
    cards: []
    visible:
      - user: 8b635b46e5d24f65a6d42c8b7042ec9b
      - user: 56da46ac1857418ca77186480990ff6c
      - user: 45c76ae46b3e47f2a92ea03600940170
    badges: []
    icon: mdi:flower
    sections:
      - type: grid
        cards:
          - type: custom:flower-card
            entity: plant.lemon_cherry_gelato_1
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_1_batterie
          - type: custom:flower-card
            entity: plant.lemon_cherry_gelato_2
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_2_batterie
          - type: custom:flower-card
            entity: plant.lemon_cherry_gelato_3
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_3_batterie
          - type: custom:flower-card
            entity: plant.strawberry_pop_rocks_4
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_4_batterie
          - type: custom:flower-card
            entity: plant.strawberry_pop_rocks_5
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_5_batterie
          - type: custom:flower-card
            entity: plant.strawberry_pop_rocks_6
            show_bars:
              - illuminance
              - humidity
              - moisture
              - temperature
              - dli
            battery_sensor: sensor.feuchtesensor_6_batterie
      - type: grid
        cards:
          - type: heading
            heading: Cameras
            heading_style: title
            icon: mdi:camera
          - type: grid
            square: false
            columns: 1
            cards:
              - type: picture-entity
                entity: camera.growbox_cam_decke_klar
                camera_view: auto
                fit_mode: cover
                show_state: false
                show_name: false
          - type: grid
            square: false
            columns: 1
            cards:
              - type: picture-entity
                entity: camera.albanigger_hd_stream
                camera_view: auto
                fit_mode: cover
                show_name: false
                show_state: false
          - type: vertical-stack
            cards:
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.temperatur
                    name: Temperature
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.luftfeuchtigkeit
                    name: Humidity
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                title: GrowBox Top
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.growbox_abluft_temperature_sensor_celsius_239980
                    name: Temp Bottom
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_abluft_humidity_sensor_239980
                    name: Humidity Bottom
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_temp_mitte_temperatur
                    name: Temp Middle
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_temp_mitte_luftfeuchtigkeit
                    name: Humidity Middle
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                title: GrowBox Middle
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.growbox_thermometer_unten_temperatur
                    name: Temp Bottom
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_thermometer_unten_luftfeuchtigkeit
                    name: Humidity Bottom
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px]
                title: GrowBox Bottom
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.gw2000a_indoor_temperature
                    name: Temp Outside
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.gw2000a_indoor_humidity
                    name: Humidity Outside
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                title: Outside Temperature
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.growbox_lichtsensor
                    name: Illuminance Top
                    icon: mdi:weather-sunny
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_thermometer_unten_beleuchtungsstarke
                    name: Illuminance Bottom
                    icon: mdi:weather-sunny
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                title: Light Sensor
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    entity: sensor.growbox_anzucht_temperatur
                    name: Temperature
                    icon: mdi:thermometer
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_anzucht_luftfeuchtigkeit
                    name: Humidity
                    icon: mdi:water-percent
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                  - type: custom:button-card
                    entity: sensor.growbox_anzucht_batterie
                    name: Battery
                    icon: mdi:battery
                    show_state: true
                    styles:
                      card:
                        - border-radius: 12px
                        - padding: 12px
                        - box-shadow: var(--ha-card-box-shadow)
                      name:
                        - font-weight: bold
                        - font-size: 14px
                title: Seedling/Cloning Area
          - type: heading
            icon: mdi:water-pump
            heading: Pumps
            heading_style: title
          - type: entities
            entities:
              - entity: switch.10014d2a22_1
              - entity: switch.10014d2a22_2
            show_header_toggle: true
            title: Water Pumps
      - type: grid
        cards:
          - type: heading
            icon: mdi:clock
            heading: GrowBox - History
            heading_style: title
          - type: vertical-stack
            cards:
              - type: conditional
                conditions:
                  - entity: input_select.growbox_phase
                    state: Keimling
                card:
                  type: gauge
                  entity: sensor.vpd
                  name: 🌱 Seedling Phase
                  min: 0
                  max: 2
                  needle: true
                  unit: kPa
                  severity:
                    green: 0.4
                    yellow: 0.75
                    red: 1
              - type: conditional
                conditions:
                  - entity: input_select.growbox_phase
                    state: Wachstum
                card:
                  type: gauge
                  entity: sensor.vpd
                  name: 🌿 Vegetative Phase
                  min: 0
                  max: 3
                  needle: true
                  unit: kPa
                  severity:
                    green: 0.8
                    yellow: 1.2
                    red: 1.8
              - type: conditional
                conditions:
                  - entity: input_select.growbox_phase
                    state: Blüte
                card:
                  type: gauge
                  entity: sensor.vpd
                  name: 🌸 Flowering Phase
                  min: 0
                  max: 3
                  needle: true
                  unit: kPa
                  severity:
                    green: 1
                    yellow: 1.5
                    red: 2
          - type: vertical-stack
            cards:
              - type: history-graph
                title: 🌿 VPD History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.vpd
                    name: VPD (kPa)
              - type: history-graph
                title: 🌡️ Temperature History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.temperatur
              - type: history-graph
                title: 💧 Humidity History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.luftfeuchtigkeit
              - type: history-graph
                title: 💡 Light History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.growbox_licht_dimmer_helligkeit
                    name: ''
              - type: history-graph
                title: 🌬️ Exhaust History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.growbox_abluft_speed_sensor_239980
                    name: Speed
              - type: history-graph
                title: 🔄 Circulation History (24h)
                hours_to_show: 24
                refresh_interval: 60
                entities:
                  - entity: sensor.growbox_umluft_power
                    name: Power (W)
      - type: grid
        cards:
          - type: heading
            icon: mdi:flower-tulip-outline
            heading: GrowBox - Phase Management
            heading_style: title
          - type: vertical-stack
            cards:
              - type: entities
                title: 🌱 Select GrowBox Phase
                show_header_toggle: false
                entities:
                  - entity: input_select.growbox_phase
                    name: 🌿 Current Selection
              - type: custom:button-card
                name: 🧾 GrowBox Status Report
                show_name: true
                show_label: true
                unsafe_html: true
                tap_action:
                  action: more-info
                entity: input_select.growbox_phase
                label: |
                  [[[
                    const p = states['input_select.growbox_phase'].state;
                    const c = states['input_datetime.growbox_phase_last_changed']?.state ?? "Unknown";
                    
                    // Phase translation for display
                    const phase_map = {
                        "Keimling": "Seedling",
                        "Wachstum": "Vegetative",
                        "Blüte": "Flowering"
                    };
                    const p_en = phase_map[p] || p;

                    // Temperature: top, middle, bottom
                    const t1 = parseFloat(states['sensor.growbox_temp_mitte_temperatur']?.state);
                    const t2 = parseFloat(states['sensor.growbox_temperatursensor_oben_temperatur']?.state);
                    const t3 = parseFloat(states['sensor.growbox_thermometer_unten_temperatur']?.state);

                    // Humidity: top, middle, bottom
                    const h1 = parseFloat(states['sensor.growbox_temp_mitte_luftfeuchtigkeit']?.state);
                    const h2 = parseFloat(states['sensor.growbox_temperatursensor_oben_luftfeuchtigkeit']?.state);
                    const h3 = parseFloat(states['sensor.growbox_thermometer_unten_luftfeuchtigkeit']?.state);

                    // Average of only valid values
                    const temps = [t1, t2, t3].filter(v => !isNaN(v));
                    const hums  = [h1, h2, h3].filter(v => !isNaN(v));

                    const T = temps.length > 0 ?
                      temps.reduce((a,b) => a+b,0)/temps.length : undefined;
                    const H = hums.length > 0 ? hums.reduce((a,b) => a+b,0)/hums.length : undefined;
                    const V = parseFloat(states['sensor.vpd']?.state);
                    const L = states['light.growbox_licht_dimmer']?.attributes?.brightness ?? 0;
                    const Lp = Math.round(L / 2.55);
                    const Ls = parseFloat(states['input_number.growbox_soll_lichtwert']?.state ?? "NaN");
                    const Li = icon(Lp, Ls - 5, Ls + 5);
                    /* Exhaust */
                    const F = states['fan.growbox_abluft_fan_239980']?.attributes?.percentage ??
                      "❔";
                    const AbluftState = states['switch.growbox_abluft_switch_239980']?.state ?? "unknown";
                    const AbluftIcon = AbluftState === "on" ? "🟢" : AbluftState === "off" ?
                      "🔴" : "⚪";

                    const UmluftState = states['fan.growbox_umluft_outlet']?.state ?? "unknown";
                    const UmluftIcon = UmluftState === "on" ?
                      "🟢" : UmluftState === "off" ? "🔴" : "⚪";

                    const phase_ids = {
                      "Keimling": {
                        sunrise: "automation.growbox_sonnenaufgang_keimlingsphase",
                        sunset:  "automation.growbox_sonnenuntergang_keimlingsphase"
                      },
                      "Wachstum": {
                        sunrise: "automation.growbox_sonnenaufgang_wachstumsphase_30min",
                        sunset:  "automation.growbox_sonnenuntergang_wachstumsphase_30min"
                      },
                      "Blüte": {
                        sunrise: "automation.growbox_sonnenaufgang_blutephase_30min",
                        sunset:  "automation.growbox_sonnenuntergang_blutephase_30min"
                      }
                    };
                    const sunrise_id = phase_ids[p]?.sunrise ?? null;
                    const sunset_id = phase_ids[p]?.sunset ?? null;
                    function isTriggeredToday(automation) {
                      if (!automation || automation.state !== "on") return false;
                      const lt = automation.attributes.last_triggered;
                      if (!lt) return false;
                      const last = new Date(lt);
                      const now = new Date();
                      return last.getFullYear() === now.getFullYear() &&
                             last.getMonth() === now.getMonth() &&
                             last.getDate() === now.getDate();
                    }

                    function isTriggeredYesterday(automation) {
                      if (!automation || automation.state !== "on") return false;
                      const lt = automation.attributes.last_triggered;
                      if (!lt) return false;
                      const last = new Date(lt);
                      const yesterday = new Date();
                      yesterday.setDate(yesterday.getDate() - 1);
                      return last.getFullYear() === yesterday.getFullYear() &&
                             last.getMonth() === yesterday.getMonth() &&
                             last.getDate() === yesterday.getDate();
                    }

                    const suAutomation = states[sunrise_id];
                    const sdAutomation = states[sunset_id];

                    const su = isTriggeredToday(suAutomation) ? "✅" : "⚠️";
                    const sd = isTriggeredYesterday(sdAutomation) ? "✅" : "⚠️";
                    const formatTime = (dt) => {
                      if (!dt) return "Never";
                      const d = new Date(dt);
                      return d.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
                    };

                    const suLast = suAutomation?.attributes?.last_triggered ? formatTime(suAutomation.attributes.last_triggered) : "Never";
                    const sdLast = sdAutomation?.attributes?.last_triggered ? formatTime(sdAutomation.attributes.last_triggered) : "Never";

                    let daysSinceChange = "Unknown";
                    if(c !== "Unknown"){
                      const now = new Date();
                      const changed = new Date(c);
                      daysSinceChange = Math.floor((now - changed) / (1000*60*60*24)) + 1;
                    }

                    // Target settings based on phase (English values)
                    let Tmin=20, Tmax=24, Hmin=50, Hmax=70, Vmin=0.8, Vmax=1.2, A="35–50 cm", PPF="300–600 µmol/m²/s";
                    if (p==="Keimling") {
                      [Tmin,Tmax] = [22,26];
                      [Hmin,Hmax] = [70,80];
                      [Vmin,Vmax] = [0.4,0.8];
                      A = "40–60 cm";
                      PPF = "100–300 µmol/m²/s";
                    } else if(p==="Blüte") {
                      [Tmin,Tmax] = [18,22];
                      [Hmin,Hmax] = [40,50];
                      [Vmin,Vmax] = [1.0,1.5];
                      A = "30–40 cm";
                      PPF = "600–1000 µmol/m²/s";
                    }

                    function colorGradient(value, min, max) {
                      if (value === undefined || isNaN(value)) return "#AAA";
                      let percent = (value - min) / (max - min);
                      percent = Math.min(1, Math.max(0, percent));
                      let hue = percent < 0.5 ? 120 : 120 - (percent - 0.5) * 2 * 120;
                      return `hsl(${hue}, 80%, 50%)`;
                    }

                    function bar(value, min, max, width=100) {
                      if(value === undefined || isNaN(value)) return "";
                      let percent = (value - min) / (max - min);
                      percent = Math.min(1, Math.max(0, percent));
                      const color = colorGradient(value, min, max);
                      return `
`; } function icon(v, min, max){ if (v === undefined || isNaN(v)) return "⚪"; if (v < min) return "🟠"; if (v > max) return "🔴"; return "🟢"; } const Ti = icon(T, Tmin, Tmax); const Hi = icon(H, Hmin, Hmax); const Vi = icon(V, Vmin, Vmax); const d = c !== "Unknown" ? `${c.slice(8,10)}.${c.slice(5,7)}.${c.slice(0,4)}` : "Unknown"; return `
🧬 Phase: ${p_en}
📅 Changed: ${d} (Day ${daysSinceChange})

${Ti} Temperature: ${T !== undefined ? T.toFixed(1) : "❔"} °C (Target ${Tmin}–${Tmax}) ${bar(T, Tmin, Tmax)}
${Hi} Humidity: ${H !== undefined ? H.toFixed(1) : "❔"} % (Target ${Hmin}–${Hmax}) ${bar(H, Hmin, Hmax)}
${Vi} VPD: ${V !== undefined ? V.toFixed(2) : "❔"} (Target ${Vmin}–${Vmax}) ${bar(V, Vmin, Vmax)}

${Li} 💡 Light: ${Lp}% (Target ${isNaN(Ls) ? "❔" : Ls + "%" }) ${isNaN(Ls) ? "" : bar(Lp, Ls - 10, Ls + 10)}
🌬️ Exhaust Fan: ${AbluftIcon} ${F}%
🔄 Circulation Fan: ${UmluftIcon}
🌅 Sunrise Automation: ${su}
🌇 Sunset Automation: ${sd}

📏 Lamp Distance: ${A}
💡 PPF: ${PPF}
`; ]]] styles: card: - border-radius: 16px - padding: 18px - box-shadow: var(--ha-card-box-shadow) - background: var(--card-background-color) name: - font-weight: bold - font-size: 16px - padding-bottom: 4px label: - white-space: normal - text-align: left - font-size: 14px icon: - display: none - type: heading heading: Light / Fans heading_style: title icon: mdi:ceiling-light - type: vertical-stack cards: - type: custom:button-card entity: light.growbox_lampe_outlet name: Light Outlet Switch icon: mdi:power-plug show_state: true tap_action: action: toggle styles: card: - border-radius: 12px - padding: 24px 32px - font-weight: bold - box-shadow: var(--ha-card-box-shadow) icon: - size: 48px name: - font-size: 22px state: - font-size: 18px - font-style: italic state: - value: 'on' color: green - value: 'off' color: gray - type: grid columns: 3 square: false cards: - type: custom:button-card entity: sensor.grow_box_lampe_voltage name: Voltage icon: mdi:flash show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_lampe_signal_strength name: Signal Strength icon: mdi:wifi-strength-3 show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_lampe_power name: Power icon: mdi:power show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: grid columns: 3 square: false cards: - type: custom:button-card entity: sensor.grow_box_lampe_energy name: Energy icon: mdi:lightning-bolt show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_lampe_current name: Current icon: mdi:current-ac show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_lampe_consumption name: Consumption icon: mdi:chart-line show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:mushroom-light-card entity: light.growbox_licht_dimmer name: Light Dimmer show_brightness_control: true show_color_control: false collapsible_controls: false style: | ha-card { border-radius: 15px; box-shadow: var(--ha-card-box-shadow); padding: 10px; margin-top: 12px; } - type: vertical-stack cards: - type: custom:button-card entity: switch.grow_box_abluft_outlet name: Exhaust Outlet Switch icon: mdi:power-plug show_state: true tap_action: action: toggle styles: card: - border-radius: 12px - padding: 24px 32px - font-weight: bold - box-shadow: var(--ha-card-box-shadow) icon: - size: 48px name: - font-size: 22px state: - font-size: 18px - font-style: italic state: - value: 'on' color: green - value: 'off' color: gray - type: grid columns: 5 square: false cards: - type: custom:button-card entity: sensor.grow_box_abluft_voltage name: Voltage icon: mdi:flash show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_abluft_power name: Power icon: mdi:power show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_abluft_current name: Current icon: mdi:current-ac show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_abluft_consumption name: Consumption icon: mdi:chart-line show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.grow_box_abluft_energy name: Energy icon: mdi:lightning-bolt show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: grid columns: 2 square: false cards: - type: custom:button-card entity: switch.growbox_abluft_switch_239980 name: Exhaust Fan Switch icon: mdi:toggle-switch show_state: true tap_action: action: toggle styles: card: - border-radius: 12px - padding: 16px 20px - font-weight: bold - box-shadow: var(--ha-card-box-shadow) icon: - size: 36px name: - font-size: 18px state: - font-size: 16px - font-style: italic state: - value: 'on' color: green - value: 'off' color: gray - type: custom:button-card entity: sensor.growbox_abluft_speed_sensor_239980 name: Fan Speed icon: mdi:fan show_state: true styles: card: - border-radius: 12px - padding: 16px 20px - font-weight: bold - box-shadow: var(--ha-card-box-shadow) icon: - size: 36px name: - font-size: 18px state: - font-size: 16px - font-style: italic - type: custom:mushroom-fan-card entity: fan.growbox_abluft_fan_239980 name: Exhaust Controller show_percentage_control: true show_oscillate_control: false show_direction_control: false collapsible_controls: true icon_animation: true fill_container: false primary_info: none - type: vertical-stack cards: - type: custom:button-card entity: fan.growbox_umluft_outlet name: Circulation Fan icon: mdi:fan show_state: true tap_action: action: toggle styles: card: - border-radius: 12px - padding: 16px 20px - font-weight: bold - box-shadow: var(--ha-card-box-shadow) icon: - size: 36px name: - font-size: 18px state: - font-size: 16px - font-style: italic state: - value: 'on' color: green - value: 'off' color: gray - type: grid columns: 5 square: false cards: - type: custom:button-card entity: sensor.growbox_umluft_consumption name: Consumption icon: mdi:chart-line show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.growbox_umluft_current name: Current icon: mdi:current-ac show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.growbox_umluft_energy name: Energy icon: mdi:lightning-bolt show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.growbox_umluft_power name: Power icon: mdi:power show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic - type: custom:button-card entity: sensor.growbox_umluft_voltage name: Voltage icon: mdi:flash show_state: true styles: card: - border-radius: 12px - padding: 12px 16px - box-shadow: var(--ha-card-box-shadow) icon: - size: 28px name: - font-weight: bold - font-size: 14px state: - font-size: 13px - font-style: italic