title: Gbox420
views:
- path: HomeAssistant
title: Home Assistant
icon: mdi:home-assistant
badges: []
cards:
- type: custom:stack-in-card
cards:
- type: markdown
content: >
{% set last = states.sensor.gbox420_hempy_modulestate.last_updated
%} {% set age = (as_timestamp(now()) - as_timestamp(last)) | int
%}
{% if age < 60 %}
{% set time_ago = age ~ ' sec ago' %}
{% elif age < 3600 %}
{% set time_ago = (age / 60) | int ~ ' min ago' %}
{% else %}
{% set time_ago = (age / 3600) | int ~ ' h ago' %}
{% endif %}
{% set events = states('text.gbox420_eventlog') %}
{% if age > 600 %} ❌ OFFLINE ({{ time_ago }})
{{ events
}} {% else %} ✅ ONLINE ({{ time_ago }})
{{ events }} {%
endif %}
- type: custom:multiple-entity-row
entity: sensor.gbox420_hempy_modulestate
name: Modules
secondary_info: last-updated
icon: mdi:widgets
show_state: false
entities:
- entity: sensor.gbox420_hempy_modulestate
name: Hempy
- entity: sensor.gbox420_reservoir_modulestate
name: Reservoir
- entity: sensor.gbox420_aero1_modulestate
name: Aeroponics
styles:
margin-right: 10px
- type: markdown
content: |
{{ state_attr('sensor.gbox420_alerts', 'alerts') | safe }}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_power1_current
secondary_info: last-updated
name: AC Power
state_header: Current
icon: mdi:lightning-bolt
entities:
- entity: sensor.gbox420_power1_power
name: Power
- entity: sensor.gbox420_power1_energy
name: Energy
- entity: sensor.gbox420_power1_voltage
name: Voltage
- type: entities
state_color: true
show_header_toggle: false
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_external_humidity
name: Temp&Humidity
secondary_info: last-updated
state_header: External
unit: '%'
entities:
- entity: sensor.gbox420_internal_temp
name: Internal
unit: °C
- entity: sensor.gbox420_internal_humidity
name: Internal
unit: '%'
- entity: sensor.gbox420_external_temp
name: External
unit: °C
- type: custom:multiple-entity-row
entity: sensor.gbox420_internal_fan
name: Internal Fan
state_header: State
entities:
- icon: mdi:fan-off
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanI_O
payload: 'OFF'
- icon: mdi:fan-speed-1
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanI_L
payload: LOW
- icon: mdi:fan-speed-3
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanI_H
payload: HIGH
- type: custom:multiple-entity-row
entity: sensor.gbox420_exhaust_fan
name: Exhaust Fan
state_header: State
entities:
- icon: mdi:fan-off
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanE_O
payload: 'OFF'
- icon: mdi:fan-speed-1
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanE_L
payload: LOW
- icon: mdi:fan-speed-3
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/FanE_H
payload: HIGH
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_lightsensor1_reading
name: Light sensor
icon: mdi:theme-light-dark
state_header: Analog reading
entities:
- entity: sensor.gbox420_lightsensor1_darkbright
name: Digital reading
footer:
type: graph
entity: sensor.gbox420_lightsensor1_reading
detail: 1
hours_to_show: 48
state_color: true
show_header_toggle: false
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: switch.gbox420_light1_state
name: Light 1 State
secondary_info: last-updated
toggle: true
entities:
- entity: sensor.gbox420_light1_currentbrightness
name: Current brightness
- type: custom:multiple-entity-row
entity: switch.gbox420_light1_timer
name: Timer schedule
toggle: true
entities:
- entity: sensor.gbox420_light1_ontime
name: 'On'
- entity: sensor.gbox420_light1_offtime
name: 'Off'
- type: custom:fold-entity-row
open: false
head:
type: section
label: Settings
entities:
- type: custom:numberbox-card
entity: number.gbox420_light1_brightness
name: Brightness
delay: 5000
speed: 250
- type: custom:stack-in-card
mode: horizontal
cards:
- type: custom:numberbox-card
entity: number.gbox420_light1_ontimehour
name: 'On'
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_light1_ontimeminute
name: ':'
icon: false
delay: 5000
speed: 250
card_mod:
style: |
ha-card {
box-shadow: none;
border: none;
}
- type: custom:stack-in-card
mode: horizontal
border: false
cards:
- type: custom:numberbox-card
entity: number.gbox420_light1_offtimehour
name: 'Off'
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_light1_offtimeminute
name: ':'
icon: false
delay: 5000
speed: 250
card_mod:
style: |
ha-card {
box-shadow: none;
border: none;
}
show_header_toggle: false
state_color: true
- type: entities
entities:
- type: custom:multiple-entity-row
entity: switch.gbox420_light2_state
name: Light 2 State
secondary_info: last-updated
toggle: true
entities:
- entity: sensor.gbox420_light2_currentbrightness
name: Current brightness
- type: custom:multiple-entity-row
entity: switch.gbox420_light2_timer
name: Timer schedule
toggle: true
entities:
- entity: sensor.gbox420_light2_ontime
name: 'On'
- entity: sensor.gbox420_light2_offtime
name: 'Off'
- type: custom:fold-entity-row
open: false
head:
type: section
label: Settings
entities:
- type: custom:numberbox-card
entity: number.gbox420_light2_brightness
name: Brightness
delay: 5000
speed: 250
- type: custom:stack-in-card
mode: horizontal
cards:
- type: custom:numberbox-card
entity: number.gbox420_light2_ontimehour
name: 'On'
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_light2_ontimeminute
name: ':'
icon: false
delay: 5000
speed: 250
card_mod:
style: |
ha-card {
box-shadow: none;
border: none;
}
- type: custom:stack-in-card
mode: horizontal
border: false
cards:
- type: custom:numberbox-card
entity: number.gbox420_light2_offtimehour
name: 'Off'
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_light2_offtimeminute
name: ':'
icon: false
delay: 5000
speed: 250
card_mod:
style: |
ha-card {
box-shadow: none;
border: none;
}
show_header_toggle: false
state_color: true
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_waste_weight
name: Reservoir
secondary_info: last-updated
icon: mdi:cup-water
show_state: false
entities:
- entity: sensor.gbox420_reservoir_weight
name: Weight
- entity: sensor.gbox420_reservoir_watertemp
name: Temp
- entity: sensor.gbox420_waste_weight
name: Waste
- type: custom:multiple-entity-row
entity: switch.gbox420_airpump
name: false
icon: 'no'
toggle: true
entities:
- entity: sensor.gbox420_reservoir_tds
name: TDS
- entity: sensor.gbox420_reservoir_ph
name: pH
- entity: switch.gbox420_airpump
name: AirPump
footer:
type: graph
entity: sensor.gbox420_reservoir_weight
hours_to_show: 48
detail: 1
state_color: true
show_header_toggle: false
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_bucket1_weight
name: Hempy 1
secondary_info: last-updated
icon: mdi:bucket
state_header: Weight
entities:
- entity: sensor.gbox420_bucket1_state
name: State
- entity: sensor.gbox420_bucket1_pumpstate
name: Pump
- type: custom:multiple-entity-row
entity: sensor.gbox420_bucket1_dryweight
name: false
icon: none
show_state: false
card_mod:
style:
hui-generic-entity-row $: |
.info {
display: none;
}
div.entity {
margin-right: auto;
}
.: |
div.entities-row {
justify-content: flex-start !important;
}
entities:
- type: button
icon: mdi:watering-can
name: Start
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B1On
- type: button
icon: mdi:watering-can-outline
name: Stop
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B1Off
- type: button
icon: mdi:water-off
name: Disable
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B1Dis
- entity: sensor.gbox420_bucket1_dryweight
name: Dry
- entity: sensor.gbox420_bucket1_wetweight
name: Wet
- entity: sensor.gbox420_bucket1_nextwatering
name: Next
- type: custom:fold-entity-row
open: false
head:
type: section
label: Settings
entities:
- type: custom:numberbox-card
entity: number.gbox420_bucket1_startweight
name: Start watering
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_wateringincrement
name: Watering increment
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_maxweight
name: Max weight
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_evaporationtarget
name: Evaporation target
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_draintime
name: Drain wait
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_draintarget
name: Drain target
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_pumpspeed
name: Pump speed
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket1_pumptimeout
name: Pump timeout
delay: 5000
speed: 250
footer:
type: graph
entity: sensor.gbox420_bucket1_weight
hours_to_show: 48
detail: 1
show_header_toggle: false
state_color: true
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_bucket2_weight
name: Hempy 2
secondary_info: last-updated
icon: mdi:bucket
state_header: Weight
entities:
- entity: sensor.gbox420_bucket2_state
name: State
- entity: sensor.gbox420_bucket2_pumpstate
name: Pump
- type: custom:multiple-entity-row
entity: sensor.gbox420_bucket2_dryweight
name: false
icon: none
show_state: false
card_mod:
style:
hui-generic-entity-row $: |
.info {
display: none;
}
div.entity {
margin-right: auto;
}
.: |
div.entities-row {
justify-content: flex-start !important;
}
entities:
- type: button
icon: mdi:watering-can
name: Start
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B2On
- type: button
icon: mdi:watering-can-outline
name: Stop
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B2Off
- type: button
icon: mdi:water-off
name: Disable
state_color: true
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Hemp1_B2Dis
- entity: sensor.gbox420_bucket2_dryweight
name: Dry
- entity: sensor.gbox420_bucket2_wetweight
name: Wet
- entity: sensor.gbox420_bucket2_nextwatering
name: Next
- type: custom:fold-entity-row
open: false
head:
type: section
label: Settings
entities:
- type: custom:numberbox-card
entity: number.gbox420_bucket2_startweight
name: Start watering
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_wateringincrement
name: Watering increment
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_maxweight
name: Max weight
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_evaporationtarget
name: Evaporation target
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_draintime
name: Drain wait
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_draintarget
name: Drain target
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_pumpspeed
name: Pump speed
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_bucket2_pumptimeout
name: Pump timeout
delay: 5000
speed: 250
footer:
type: graph
entity: sensor.gbox420_bucket2_weight
hours_to_show: 48
detail: 1
show_header_toggle: false
state_color: true
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- type: entities
entities:
- type: custom:multiple-entity-row
entity: sensor.gbox420_aero1_pumpstate
name: Aeroponics
secondary_info: last-updated
icon: mdi:sprinkler-variant
state_header: Pump
entities:
- entity: sensor.gbox420_aero1_state
name: State
- type: custom:multiple-entity-row
entity: sensor.gbox420_aero1_pressure
name: false
show_state: false
icon: none
card_mod:
style:
hui-generic-entity-row $: |
.info {
display: none;
}
div.entity {
margin-right: auto;
}
.: |
div.entities-row {
justify-content: flex-start !important;
}
entities:
- type: button
icon: mdi:water
name: Spray
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_SprayNow
- type: button
icon: mdi:water-outline
name: Stop
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_SprayOff
- type: button
icon: mdi:water-off
name: Disable
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_SprayDis
- entity: sensor.gbox420_aero1_pressure
name: Pressure
- entity: sensor.gbox420_aero1_lastspray
name: Last spray
- entity: sensor.gbox420_aero1_weight
name: Weight
- type: custom:fold-entity-row
open: false
head:
type: section
label: Settings
entities:
- type: custom:numberbox-card
entity: number.gbox420_aero1_minpressure
name: Minimum pressure
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_maxpressure
name: Maximum pressure
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_dayinterval
name: Spray interval day
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_nightinterval
name: Spray interval night
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_sprayduration
name: Spray duration
delay: 5000
speed: 250
- type: custom:multiple-entity-row
entity: sensor.gbox420_aero1_pressure
name: Pump
show_state: false
icon: mdi:water-pump
entities:
- type: button
icon: mdi:water-plus
name: Refill
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_Refill
- type: button
icon: mdi:water-minus
name: Drain
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_Drain
- type: button
icon: mdi:water-sync
name: Mix
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_PumpDis
- type: button
icon: mdi:power
name: 'On'
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_PumpOn
- type: button
icon: mdi:power-off
name: 'Off'
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_PumpOff
- type: button
icon: mdi:cancel
name: Disable
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: Gbox420CMD/Aero1_PumpDis
- type: custom:numberbox-card
entity: number.gbox420_aero1_pumpspeed
name: Speed
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_pumpprimingtime
name: Priming time
delay: 5000
speed: 250
- type: custom:numberbox-card
entity: number.gbox420_aero1_pumptimeout
name: Timeout
delay: 5000
speed: 250
footer:
type: graph
entity: sensor.gbox420_aero1_weight
hours_to_show: 48
detail: 1
show_header_toggle: false
state_color: true
card_mod:
style: |
ha-card {
white-space: nowrap;
}
- title: Node-RED
path: NodeRED
panel: true
icon: mdi:sitemap
badges: []
cards:
- type: iframe
url: https://growboxguy.duckdns.org:15100/endpoint/ui
aspect_ratio: 100%
- panel: true
title: Grafana
path: Grafana
icon: mdi:chart-histogram
cards:
- type: iframe
url: >-
https://growboxguy.duckdns.org:13100/api/hassio_ingress/MzjXsP-Fk5mGMhAWsCLQbECztrdRfR9ngq-LA-2sl74/public-dashboards/653aae89cb8f4a9da29e44f7fa4396b4?orgId=1&refresh=5s&from=now-7d&to=now&theme=dark
type: panel
- title: Google Sheets
path: GoogleSheets
panel: true
icon: mdi:google-spreadsheet
badges: []
cards:
- type: iframe
url: >-
https://docs.google.com/spreadsheets/d/162557mj4XdpdER_PC6Kbq_GGUgc5nV-MYzr7J0Ims4Q/edit#gid=247713073
aspect_ratio: 100%