diff --git a/.gitignore b/.gitignore
index d8b4157..66c2d6d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,5 @@
# You can modify this file to suit your needs.
/.esphome/
/secrets.yaml
+/.idea/
+/.vscode/
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index a490b61..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "githubPullRequests.ignoredPullRequestBranches": [
- "main"
- ]
-}
\ No newline at end of file
diff --git a/Home Assistant Cards & Templates/aquarium_dashboard.yaml b/Home Assistant Cards & Templates/aquarium_dashboard.yaml
new file mode 100644
index 0000000..5879b6b
--- /dev/null
+++ b/Home Assistant Cards & Templates/aquarium_dashboard.yaml
@@ -0,0 +1,883 @@
+type: custom:layout-card
+layout_type: custom:vertical-layout
+cards:
+ - type: vertical-stack
+ cards:
+ - type: custom:mushroom-title-card
+ title: Current Status & History
+ subtitle: ''
+ - type: vertical-stack
+ cards:
+ - type: vertical-stack
+ cards:
+ - show_state: true
+ show_name: true
+ camera_view: auto
+ type: picture-entity
+ entity: sensor.aquapi_marine_temperature
+ image: /local/custom/PXL_20230606_162534564.jpg
+ name: Marine
+ tap_action:
+ action: more-info
+ - type: custom:auto-entities
+ card:
+ type: custom:mushroom-chips-card
+ alignment: center
+ card_param: chips
+ filter:
+ include:
+ - entity_id: '*marine_temperature_2'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - entity_id: '*marine_ph'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - entity_id: '*marine_salinity'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Ammonia'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Nitrite'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Nitrate'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Phosphate'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Calcium'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ - name: '*Marine: Carbonate Hardness'
+ options:
+ type: entity
+ tap_action:
+ action: more-info
+ exclude:
+ - state: unavailable
+ - state: unknown
+ - state: Unknown
+ - hidden_by: user
+ - hidden_by: integration
+ - entity_id: '*internal*'
+ show_empty: true
+ sort: {}
+ - type: custom:auto-entities
+ card:
+ type: entities
+ header:
+ type: buttons
+ entities:
+ - entity: script.aquarium_feed
+ name: Feed
+ - entity: switch.plug1
+ name: Dose Trace
+ - entity: switch.plug2
+ name: Skimmer
+ filter:
+ include:
+ - entity_id: '*marine_temperature_range'
+ options:
+ name: Temperature Range
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_heater_state*'
+ options:
+ name: Heater
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_heater_on*'
+ options:
+ name: Heater Time On Today
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_skimmer_container*'
+ options:
+ name: Skimmer Container
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_ato_state*'
+ options:
+ name: ATO
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_ato_on*'
+ options:
+ name: ATO On Today
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_water_level'
+ options:
+ name: Water Level
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - entity_id: '*marine_water_hardness'
+ options:
+ name: Water Hardness
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - name: '*Marine: Marine Trace Doser State'
+ options:
+ name: Marine Trace Doser
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ - name: '*Marine: Marine Trace Dosed Weekly'
+ options:
+ name: Marine Trace Dosed Weekly
+ tap_action:
+ action: more-info
+ secondary_info: last-changed
+ exclude:
+ - state: unavailable
+ - state: unknown
+ - state: Unknown
+ - hidden_by: user
+ - hidden_by: integration
+ - entity_id: '*on_count*'
+ - domain: automation
+ - domain: script
+ - show_name: true
+ show_icon: true
+ show_state: true
+ type: glance
+ entities:
+ - entity: sensor.aquapi_marine_salinity
+ name: Salinity
+ - entity: sensor.aquapi_marine_specific_gravity
+ name: Specific Gravity
+ - entity: sensor.aquapi_marine_conductivity
+ name: Conductivity
+ state_color: false
+ - type: glance
+ entities:
+ - entity: input_number.marine_volume
+ name: Volume
+ - entity: sensor.marine_water_weight
+ name: Water Weight
+ - entity: sensor.marine_aquarium_power
+ name: Current Power
+ - entity: sensor.marine_aquarium_energy_monthly
+ name: Montly Energy
+ - type: custom:history-explorer-card
+ defaultTimeRange: 1d
+ stateTextMode: auto
+ statistics:
+ enabled: true
+ mode: mean
+ period: hour
+ combineSameUnits: true
+ cardName: historycard-97723151
+ showCurrentValues: true
+ uiLayout:
+ selector: hide
+ header: Timeline
+ stateColors:
+ sensor.Heating: red
+ sensor.Standby: darkgreen
+ sensor.Ok: forestgreen
+ sensor.Cool: cyan
+ sensor.Warm: orangered
+ sensor.Normal: slateblue
+ sensor.High: gold
+ sensor.Low: firebrick
+ graphs:
+ - type: timeline
+ entities:
+ - entity: sensor.marine_temperature_range
+ name: Temp.
+ - entity: sensor.marine_heater_state
+ name: Heater
+ - entity: sensor.aquapi_marine_water_level
+ name: Water Lvl.
+ - entity: sensor.marine_skimmer_container
+ name: Skimmer
+ - entity: sensor.marine_trace_doser_state
+ name: Trace
+ view_layout:
+ position: main
+ - type: custom:auto-entities
+ filter:
+ include:
+ - entity_id: '*marine_water_level'
+ - entity_id: '*marine_temperature_range*'
+ - entity_id: '*marine_heater_state'
+ - entity_id: '*marine_heater_on_count*'
+ - entity_id: '*marine*skimmer_container*'
+ - entity_id: '*marine_trace_doser_state'
+ - entity_id: '*marine_reservoir*'
+ exclude:
+ - state: unavailable
+ - state: unknown
+ - state: Unknown
+ - hidden_by: user
+ - hidden_by: integration
+ - device: AquaPi 6734b0 - TEST
+ card:
+ type: custom:home-feed-card
+ title: Marine Feed
+ card_id: m_aq_feed
+ scrollbars_enabled: false
+ calendars: null
+ id_filter: ^home_feed_.*
+ more_info_on_tap: true
+ state_color: true
+ show_empty: true
+ - type: vertical-stack
+ cards:
+ - type: custom:mushroom-title-card
+ title: Parameters
+ subtitle: ''
+ - type: custom:mini-graph-card
+ animate: true
+ name: Temperature
+ align_state: center
+ hours_to_show: 72
+ cache: true
+ color_thresholds:
+ - value: 70
+ color: '#0a748c'
+ - value: 74
+ color: '#497eb0'
+ - value: 78
+ color: '#58c02b'
+ - value: 80
+ color: '#babf22'
+ - value: 84
+ color: '#c0392b'
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ entities:
+ - entity: sensor.aquapi_marine_temperature
+ name: Marine
+ icon: mdi:thermometer-water
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ name: pH
+ hours_to_show: 72
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 8.1
+ color: '#0a748c'
+ - value: 8.2
+ color: '#497eb0'
+ - value: 8.3
+ color: '#670e80'
+ - value: 8.4
+ color: '#babf22'
+ - value: 8.5
+ color: '#c0392b'
+ entities:
+ - entity: sensor.aquapi_marine_ph
+ name: Marine
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ name: Salinity
+ hours_to_show: 72
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 31
+ color: '#0a748c'
+ - value: 33
+ color: '#497eb0'
+ - value: 35
+ color: '#16149c'
+ - value: 37
+ color: '#babf22'
+ - value: 39
+ color: '#c0392b'
+ entities:
+ - entity: sensor.aquapi_marine_salinity
+ name: Marine
+ - square: false
+ type: grid
+ cards:
+ - type: custom:mini-graph-card
+ animate: true
+ name: Ammonia
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 0
+ color: '#d96c14'
+ - value: 1
+ color: '#babf22'
+ - value: 4
+ color: '#c0392b'
+ entities:
+ - entity: input_number.ammonia_marine
+ name: Marine
+ - type: custom:mini-graph-card
+ animate: true
+ name: Nitrite
+ height: 150
+ align_state: center
+ hours_to_show: 72
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 0
+ color: '#d914d2'
+ - value: 1
+ color: '#babf22'
+ - value: 3
+ color: '#c0392b'
+ entities:
+ - entity: input_number.nitrite_2
+ name: Marine
+ - type: custom:mini-graph-card
+ animate: true
+ name: Nitrate
+ height: 150
+ align_state: center
+ hours_to_show: 72
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 0
+ color: '#148ad9'
+ - value: 20
+ color: '#babf22'
+ - value: 80
+ color: '#c0392b'
+ entities:
+ - entity: input_number.nitrate_marine
+ name: Marine
+ - type: custom:mini-graph-card
+ animate: true
+ name: Phospahte
+ height: 150
+ align_state: center
+ hours_to_show: 72
+ cache: true
+ show:
+ labels: true
+ legend: false
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ color_thresholds:
+ - value: 0
+ color: '#0b8015'
+ - value: 2
+ color: '#babf22'
+ - value: 8
+ color: '#c0392b'
+ entities:
+ - entity: input_number.phosphate_marine
+ name: Marine
+ columns: 2
+ - type: custom:pool-monitor-card
+ title: Parameter Ranges
+ show_labels: false
+ show_last_updated: true
+ temperature: sensor.aquapi_marine_temperature
+ temperature_setpoint: 77
+ temperature_step: 5
+ temperature_unit: °F
+ ph: sensor.aquapi_marine_ph
+ ph_setpoint: 8.2
+ salinity: sensor.aquapi_marine_salinity
+ salinity_unit: ppt
+ salinity_setpoint: 34
+ salinity_step: 3
+ calcium: input_number.calcium_marine
+ calcium_setpoint: 400
+ calcium_step: 50
+ alkalinity: input_number.carbonate_hardness_marine
+ alkalinity_setpoint: 178
+ alkalinity_step: 36
+ view_layout:
+ column: 2
+ - type: vertical-stack
+ cards:
+ - type: custom:mushroom-title-card
+ title: Device Controls & Power
+ subtitle: ''
+ - square: false
+ columns: 1
+ type: grid
+ cards:
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.tp_link_power_strip_d0b7_plug_4
+ name: Main Light
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: lightblue
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.plug_4_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug6
+ name: Refugium Light
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: papayawhip
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.refugium_white_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug3
+ name: Return Pump
+ - type: custom:mini-graph-card
+ animate: true
+ name: Main Pump
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: green
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.main_system_pump_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.tp_link_power_strip_d0b7_plug_3
+ name: Canister Filter
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: magenta
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.plug_3_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug2
+ name: Skimmer
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: blue
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.skimmer_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug4
+ name: Heater
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: red
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.heater_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.tp_link_power_strip_d0b7_plug_1
+ name: UV Sterilizer
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: cyan
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.plug_1_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug5
+ name: Wave Maker
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: yellow
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.wave_maker_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.tp_link_power_strip_d0b7_plug_5
+ name: Powerhead
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: orange
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.plug_5_current_consumption
+ - type: custom:mod-card
+ style:
+ hui-horizontal-stack-card$: |
+ buttons-card {
+ margin-left: 0px !important;
+ margin-right: 0px !important;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ mini-graph-card {
+ margin-right: 0px !important;
+ width: 60%;
+ margin-bottom: 0px !important;
+ flex: unset !important;
+ }
+ card:
+ type: horizontal-stack
+ cards:
+ - show_name: true
+ show_icon: true
+ type: button
+ tap_action:
+ action: toggle
+ entity: switch.plug1
+ name: Marine Trace Doser
+ - type: custom:mini-graph-card
+ animate: true
+ align_state: center
+ hours_to_show: 72
+ height: 150
+ cache: true
+ line_color: orange
+ show:
+ name: false
+ icon: false
+ labels: true
+ legend: false
+ entities:
+ - entity: sensor.fluval_306_current_consumption
+ view_layout:
+ column: 3
+ - type: vertical-stack
+ cards:
+ - type: custom:auto-entities
+ filter:
+ template: |-
+ {% for state in states.sensor -%}
+ {%- if (state.entity_id | regex_match("^sensor.*marine_heater_on_today($|)", ignorecase=False)) -%}
+ {{
+ {
+ 'entity': state.entity_id,
+ 'name': state.attributes.friendly_name|regex_replace(find='(:|)( Heater on Today|)', replace='', ignorecase=True)
+ }
+ }},
+ {%- endif -%}
+ {%- endfor %}
+ exclude: []
+ card:
+ type: custom:mini-graph-card
+ name: Heater Duration
+ show:
+ graph: bar
+ labels: true
+ icon_adaptive_color: true
+ name_adaptive_color: true
+ hours_to_show: 168
+ aggregate_func: max
+ group_by: date
+ sort:
+ method: friendly_name
+ reverse: false
+ view_layout:
+ column: 2
+layout:
+ max_cols: 3
+ max_width: 600
diff --git a/README.md b/README.md
index d07504f..a3cbc78 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# [AquaPi for ESPHome](https://therealfalsereality.github.io/aquapi/)
-
+
The Aquarium meets the Smart Home!
**[Setup Guide](https://github.com/TheRealFalseReality/aquapi/wiki/Setup-AquaPi)**
@@ -19,14 +19,14 @@ Why use AquaPi?
### **[Buy Now!](https://www.capitalcityaquatics.com/store/p/aquapi)**
|  |  |
-| ------------- | ------------- |
+|--------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
UI
|  |  |
| ------------- | ------------- |
-### Home Assistand Dashboard & Card Examples
-If you want to try some of the Dashboard or Cards I use, follow the link below. You may need addtional integrations or custom cards for some of them!
+### Home Assistant Dashboard & Card Examples
+If you want to try some of the Dashboard or Cards I use, follow the link below. You may need additional integrations or custom cards for some of them!
**[Example HomeAssistant Cards & Templates](https://github.com/TheRealFalseReality/aquapi/tree/main/Example%20HomeAssistant%20Cards%20%26%20Templates)**
## Hardware Used
@@ -60,7 +60,7 @@ Get [Raspberry Pi Imager](https://www.raspberrypi.com/software/)
**Peristaltic Dosing Pump:** *Atlas Scientific Pump: [EZO-PMP](https://files.atlas-scientific.com/EZO_PMP_Datasheet.pdf)*
- EZO™ Pump Embedded Circuit
- - Flow Rate: 0.5ml to 105ml/mins
+ - Flow Rate: 0.5ml to 105ml/min
- Tube Size: 5mm
- Head Height: 8.1m(26.5')
@@ -73,7 +73,7 @@ Get [Raspberry Pi Imager](https://www.raspberrypi.com/software/)
[Dissolved Oxygen](https://files.atlas-scientific.com/LG_DO_probe.pdf),
[Humidity](https://files.atlas-scientific.com/EZO-HUM-Datasheet.pdf),
[ORP](https://files.atlas-scientific.com/orp_probe.pdf),
-[Temperture](https://files.atlas-scientific.com/EZO_RTD_Datasheet.pdf)
+[Temperature](https://files.atlas-scientific.com/EZO_RTD_Datasheet.pdf)
### Circuit Diagram
[See Wiki](https://github.com/TheRealFalseReality/aquapi/wiki/Circuit) for more details on the circuit.
@@ -94,7 +94,7 @@ Setting up Home Assistant and Connecting AquaPi to your Wifi.
Updating the AquaPi.
### [Web Server](https://github.com/TheRealFalseReality/aquapi/wiki/Setup-AquaPi#update)
-Connecting to the AquaPi without Home Assisstant.
+Connecting to the AquaPi without Home Assistant.
## Blueprints
**[See Wiki](https://github.com/TheRealFalseReality/aquapi/wiki/Blueprints)**
diff --git a/aquapi_camera_config.yaml b/aquapi_camera_config.yaml
index 3be1bcc..60b9936 100644
--- a/aquapi_camera_config.yaml
+++ b/aquapi_camera_config.yaml
@@ -3,7 +3,7 @@ substitutions:
name: "aquapicamera"
friendly_name: "AquaPiCamera"
# App Version - Updated: 5/2024
- app_version: "1.0.1-cam"
+ app_version: "1.1-cam"
packages:
device_base_camera: !include common/device_base_camera.yaml
diff --git a/aquapi_config.yaml b/aquapi_config.yaml
index 0239c45..edee606 100644
--- a/aquapi_config.yaml
+++ b/aquapi_config.yaml
@@ -3,7 +3,7 @@ substitutions:
name: "aquapi"
friendly_name: "AquaPi"
# App Version - Updated: 1/2024
- app_version: "1.7.1"
+ app_version: "1.8"
packages:
device_base: !include common/device_base.yaml
diff --git a/assests/AquaPi STL Models/AquaPi Case v39 - Plug.stl b/assests/STL Models/AquaPiCase/AquaPi Case v39 - Plug.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v39 - Plug.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v39 - Plug.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v43- IO Cover.stl b/assests/STL Models/AquaPiCase/AquaPi Case v43- IO Cover.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v43- IO Cover.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v43- IO Cover.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v43- IO Covers.3mf b/assests/STL Models/AquaPiCase/AquaPi Case v43- IO Covers.3mf
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v43- IO Covers.3mf
rename to assests/STL Models/AquaPiCase/AquaPi Case v43- IO Covers.3mf
diff --git a/assests/AquaPi STL Models/AquaPi Case v47.stl b/assests/STL Models/AquaPiCase/AquaPi Case v47.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v47.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v47.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v62 - Mount.3mf b/assests/STL Models/AquaPiCase/AquaPi Case v62 - Mount.3mf
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v62 - Mount.3mf
rename to assests/STL Models/AquaPiCase/AquaPi Case v62 - Mount.3mf
diff --git a/assests/AquaPi STL Models/AquaPi Case v62 - Mount.stl b/assests/STL Models/AquaPiCase/AquaPi Case v62 - Mount.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v62 - Mount.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v62 - Mount.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v63 - HangarThin.stl b/assests/STL Models/AquaPiCase/AquaPi Case v63 - HangarThin.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v63 - HangarThin.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v63 - HangarThin.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v64 - Clamp.stl b/assests/STL Models/AquaPiCase/AquaPi Case v64 - Clamp.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v64 - Clamp.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v64 - Clamp.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v65.stl b/assests/STL Models/AquaPiCase/AquaPi Case v65.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v65.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v65.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v67 - Hangar.stl b/assests/STL Models/AquaPiCase/AquaPi Case v67 - Hangar.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v67 - Hangar.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v67 - Hangar.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v68 - Clamp.stl b/assests/STL Models/AquaPiCase/AquaPi Case v68 - Clamp.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v68 - Clamp.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v68 - Clamp.stl
diff --git a/assests/AquaPi STL Models/AquaPi Case v69 - Lid.stl b/assests/STL Models/AquaPiCase/AquaPi Case v69 - Lid.stl
similarity index 100%
rename from assests/AquaPi STL Models/AquaPi Case v69 - Lid.stl
rename to assests/STL Models/AquaPiCase/AquaPi Case v69 - Lid.stl
diff --git a/assests/STL Models/Handle v2.stl b/assests/STL Models/Handle v2.stl
new file mode 100644
index 0000000..aa0dcd3
Binary files /dev/null and b/assests/STL Models/Handle v2.stl differ
diff --git a/assests/AquaPi STL Models/OpticalBracket v39 - Back.stl b/assests/STL Models/WaterLevelBracket/OpticalBracket v40 - Back.stl
similarity index 100%
rename from assests/AquaPi STL Models/OpticalBracket v39 - Back.stl
rename to assests/STL Models/WaterLevelBracket/OpticalBracket v40 - Back.stl
diff --git a/assests/AquaPi STL Models/OpticalBracket v40 - Holder.stl b/assests/STL Models/WaterLevelBracket/OpticalBracket v40 - Holder.stl
similarity index 100%
rename from assests/AquaPi STL Models/OpticalBracket v40 - Holder.stl
rename to assests/STL Models/WaterLevelBracket/OpticalBracket v40 - Holder.stl
diff --git a/assests/AquaPi STL Models/OpticalBracket.3mf b/assests/STL Models/WaterLevelBracket/OpticalBracket.3mf
similarity index 100%
rename from assests/AquaPi STL Models/OpticalBracket.3mf
rename to assests/STL Models/WaterLevelBracket/OpticalBracket.3mf
diff --git a/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml b/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml
index 6919f42..f9d44c2 100644
--- a/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml
@@ -1,12 +1,12 @@
blueprint:
- name: 'Aquarium - AquaPi: Water Change'
+ name: 'Aquarium - AquaPi: Daily Water Change'
description: 'Turn on two AquaPi EZO Pumps to simultaneously remove waste water
(Red) and add clean water (Green) daily, in gallons, per month.
**Note, this automation will fail if the calculated flow rate exceeds either of
- the EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1) [Automation]'
+ the EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1.0.1) [Automation]'
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/87fc1893eb345d8ac5bf340848b9f6ca
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml
input:
condition:
name: Add Condition(s)
@@ -21,72 +21,99 @@ blueprint:
text:
multiple: false
multiline: false
- pump_waste_button:
- name: AquaPi Dose Pump for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Dose Volume for Time**
+ pump_button:
+ name: AquaPi Dose Pump for Water Change
+ description: Select the **Dose Volume for Time**
button.
selector:
- entity:
- filter:
- - domain:
- - button
- integration: esphome
- multiple: false
- pump_waste_volume:
- name: AquaPi Dose Pump Volume Input for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Volume to Dose** input
- number entity.
- selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
- pump_waste_time:
- name: AquaPi Dose Pump Time Input for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Time to Dose** input
- number entity.
- selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
- pump_clean_button:
- name: AquaPi Dose Pump for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Dose Volume for Time**
- button.
- selector:
- entity:
- filter:
- - domain:
- - button
- integration: esphome
- multiple: false
- pump_clean_volume:
- name: AquaPi Dose Pump Volume Input for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Volume to Dose** input
+ target:
+ entity:
+ - domain: button
+ integration: esphome
+ pump_volume:
+ name: AquaPi Dose Pump Volume Input for Water Change
+ description: Select the **Volume to Dose** input
number entity.
selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
- pump_clean_time:
- name: AquaPi Dose Pump Time Input for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Time to Dose** input
+ target:
+ entity:
+ - domain: number
+ integration: esphome
+ pump_time:
+ name: AquaPi Dose Pump Time Input for Water Change
+ description: Select the **Time to Dose** input
number entity.
selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
+ target:
+ entity:
+ - domain: number
+ integration: esphome
+ # pump_waste_button:
+ # name: AquaPi Dose Pump for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Dose Volume for Time**
+ # button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_waste_volume:
+ # name: AquaPi Dose Pump Volume Input for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_waste_time:
+ # name: AquaPi Dose Pump Time Input for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Time to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_clean_button:
+ # name: AquaPi Dose Pump for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Dose Volume for Time**
+ # button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_clean_volume:
+ # name: AquaPi Dose Pump Volume Input for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_clean_time:
+ # name: AquaPi Dose Pump Time Input for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Time to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
change_volume_monthly:
name: Water Change Volume Montly
description: "Volume to change every month. Max: 100 gallons.\n Recommended
@@ -137,14 +164,18 @@ blueprint:
trigger:
- platform: time
at: !input time_start
+ id: time_trigger
variables:
condition: !input condition
- pump_waste_button: !input pump_waste_button
- pump_clean_button: !input pump_clean_button
- pump_clean_volume: !input pump_clean_volume
- pump_waste_volume: !input pump_waste_volume
- pump_clean_time: !input pump_clean_time
- pump_waste_time: !input pump_waste_time
+ pump_button: !input pump_button
+ pump_volume: !input pump_volume
+ pump_time: !input pump_time
+ # pump_waste_button: !input pump_waste_button
+ # pump_clean_button: !input pump_clean_button
+ # pump_clean_volume: !input pump_clean_volume
+ # pump_waste_volume: !input pump_waste_volume
+ # pump_clean_time: !input pump_clean_time
+ # pump_waste_time: !input pump_waste_time
change_time: !input change_time
time_start: !input time_start
change_volume_monthly: !input change_volume_monthly
@@ -175,15 +206,11 @@ action:
- choose: []
default: !input additional_actions
- service: number.set_value
- entity_id:
- - !input pump_clean_volume
- - !input pump_waste_volume
+ target: !input pump_volume
data:
value: '{{ calculated_volume }}'
- service: number.set_value
- entity_id:
- - !input pump_clean_time
- - !input pump_waste_time
+ target: !input pump_time
data:
value: '{{ calculated_time }}'
- delay:
@@ -194,9 +221,7 @@ action:
- service: button.press
metadata: {}
data: {}
- entity_id:
- - !input pump_waste_button
- - !input pump_clean_button
+ target: !input pump_button
- if:
- condition: template
value_template: '{{ notify }}'
diff --git a/blueprints/automation/TheRealFalseReality/aquapi_water_change_quick.yaml b/blueprints/automation/TheRealFalseReality/aquapi_water_change_quick.yaml
new file mode 100644
index 0000000..1ead1bc
--- /dev/null
+++ b/blueprints/automation/TheRealFalseReality/aquapi_water_change_quick.yaml
@@ -0,0 +1,251 @@
+blueprint:
+ name: 'Aquarium - AquaPi: Daily Quick Water Change'
+ description: 'Turn on two AquaPi EZO Pumps to simultaneously remove waste water
+ (Red) and add clean water (Green) daily, in gallons, per month.
+
+ **Note, this automation will fail if the calculated flow rate exceeds either of
+ the EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1.0) [Automation]'
+ domain: automation
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquapi_water_change.yaml
+ input:
+ condition:
+ name: Add Condition(s)
+ description: Add conditions if needed.
+ default: []
+ selector:
+ condition: {}
+ aquarium_name:
+ name: Aquarium Name
+ description: Name of the Aquarium for the water change (Marine Aquarium).
+ selector:
+ text:
+ multiple: false
+ multiline: false
+ pump_button:
+ name: AquaPi Dose Pump for Water Change
+ description: Select the **Dose Volume**
+ button.
+ selector:
+ target:
+ entity:
+ - domain: button
+ integration: esphome
+ pump_volume:
+ name: AquaPi Dose Pump Volume Input for Water Change
+ description: Select the **Volume to Dose** input
+ number entity.
+ selector:
+ target:
+ entity:
+ - domain: number
+ integration: esphome
+ # pump_time:
+ # name: AquaPi Dose Pump Time Input for Water Change
+ # description: Select the **Time to Dose** input
+ # number entity.
+ # selector:
+ # target:
+ # entity:
+ # - domain: number
+ # integration: esphome
+ # pump_waste_button:
+ # name: AquaPi Dose Pump for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Dose Volume for Time**
+ # button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_waste_volume:
+ # name: AquaPi Dose Pump Volume Input for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_waste_time:
+ # name: AquaPi Dose Pump Time Input for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Time to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_clean_button:
+ # name: AquaPi Dose Pump for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Dose Volume for Time**
+ # button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_clean_volume:
+ # name: AquaPi Dose Pump Volume Input for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_clean_time:
+ # name: AquaPi Dose Pump Time Input for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Time to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ change_volume_monthly:
+ name: Water Change Volume Montly
+ description: "Volume to change every month. Max: 100 gallons.\n Recommended
+ 10 - 15% monthly water change.\n ***Example: 120 gallon aquarium at 10% water
+ change every month. 120gal x 0.10 = 12gal a month.***"
+ selector:
+ number:
+ min: 0.1
+ max: 100.0
+ step: 0.1
+ unit_of_measurement: gal
+ mode: box
+ time_start:
+ name: Time to Start
+ description: Time to start the Water Change every day.
+ default: '10:00:00'
+ selector:
+ time: {}
+ # change_time:
+ # name: Water Change Over Time
+ # description: Change the water amount over this time in hours every day.
+ # default: 8
+ # selector:
+ # number:
+ # min: 4.0
+ # max: 23.0
+ # step: 1.0
+ # unit_of_measurement: hours
+ # mode: slider
+ notify:
+ name: Persistent Notification
+ description: Notify Home Assistant when script is executed.
+ default: true
+ selector:
+ boolean: {}
+ additional_actions:
+ name: Additional Actions
+ description: "Add additional actions to the script. Will execute before everything
+ else.\n- Example: To send to Mobile Device using the official Home Assistant
+ App:\n\n Notifications -> Send a notification via mobile.YOUR_DEVICE_NAME\n
+ \ ```\n service: notify.YOUR_DEVICE_NAME\n metadata: {}\n data:\n message:
+ \"{{ message }}\"\n title: \"{{ title }}\"\n ```\n\n Copy {{ message
+ }} into `message`. This will switch to \"yaml\" mode. Above is a completed
+ example.\n"
+ default: []
+ selector:
+ action: {}
+trigger:
+- platform: time
+ at: !input time_start
+ id: time_trigger
+variables:
+ condition: !input condition
+ pump_button: !input pump_button
+ pump_volume: !input pump_volume
+ # pump_time: !input pump_time
+ # pump_waste_button: !input pump_waste_button
+ # pump_clean_button: !input pump_clean_button
+ # pump_clean_volume: !input pump_clean_volume
+ # pump_waste_volume: !input pump_waste_volume
+ # pump_clean_time: !input pump_clean_time
+ # pump_waste_time: !input pump_waste_time
+ # change_time: !input change_time
+ time_start: !input time_start
+ change_volume_monthly: !input change_volume_monthly
+ change_volume: '{{ (change_volume_monthly * 3) / 91 }}'
+ aquarium_name: !input aquarium_name
+ additional_actions: !input additional_actions
+ notify: !input notify
+ # calculated_time: '{{ change_time * 60 }}'
+ calculated_volume: '{{ change_volume * 3785.41 }}'
+ # calculated_flow_rate: '{{ change_volume / change_time }}'
+ # calculated_flow_rate_metric: '{{ calculated_volume / calculated_time }}'
+ title: '{{ aquarium_name }} Water Change'
+ message: 'Changing {{ change_volume | float | round(2, default=2) }} gal of {{ aquarium_name
+ }} at max flow rate. Monthly Water Change Amount: {{ change_volume_monthly }} gallons.'
+ # message: 'Changing {{ change_volume | float | round(2, default=2) }} gal of {{ aquarium_name
+ # }} water for {{ change_time }} hours at {{ calculated_flow_rate | float | round(2,
+ # default=2) }} gal/hr ({{ calculated_flow_rate_metric | float | round(2, default=2)}}
+ # mL/min). Monthly Water Change Amount: {{ change_volume_monthly }} gallons.'
+ title_fail: '{{ aquarium_name }} Water Change Failed'
+ message_fail: "Failed to dose {{ aquarium_name }} due to conditions not passing.\n
+ Conditions: {{ condition }}"
+ # title_fail_rate: '{{ aquarium_name }} Water Change Failed'
+ # message_fail_rate: '{{ calculated_flow_rate_metric | float | round(2, default=2)}}
+ # mL/min is greater than the typical Volume/Time flow rate (50 mL/min), for accuracy,
+ # the automation may not execute.'
+action:
+- if:
+ - condition: !input condition
+ then:
+ - choose: []
+ default: !input additional_actions
+ - service: number.set_value
+ target: !input pump_volume
+ data:
+ value: '{{ calculated_volume }}'
+ # - service: number.set_value
+ # target: !input pump_time
+ # data:
+ # value: '{{ calculated_time }}'
+ - delay:
+ hours: 0
+ minutes: 0
+ seconds: 0
+ milliseconds: 100
+ - service: button.press
+ metadata: {}
+ data: {}
+ target: !input pump_button
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
+ # - if:
+ # - condition: template
+ # value_template: '{{ calculated_flow_rate_metric > 50 }}'
+ # then:
+ # - service: notify.persistent_notification
+ # data:
+ # message: '{{ message_fail_rate }}'
+ # title: '{{ title_fail_rate }}'
+ else:
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
\ No newline at end of file
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_ato_aquapi.yaml b/blueprints/automation/TheRealFalseReality/aquarium_ato_aquapi.yaml
index 074fe21..034c229 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_ato_aquapi.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_ato_aquapi.yaml
@@ -2,9 +2,9 @@ blueprint:
name: 'Aquarium - AquaPi: ATO Automation'
description: Create an ATO (Automated-Top-Off) Automation. Turn on Water Pump when
water level is Low, and stop when level is Normal or High. [More Info](https://community.home-assistant.io/t/aquarium-create-ato-automation-control-switches-based-off-a-sensor/600941)
- (v1.9.2) [Automation]
+ (v1.9.3) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/eab1edda7c678b8763ecdcddb45f2f1a
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_ato_aquapi.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_ato_binary.yaml b/blueprints/automation/TheRealFalseReality/aquarium_ato_binary.yaml
index 44a260e..9a8e617 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_ato_binary.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_ato_binary.yaml
@@ -4,7 +4,7 @@ blueprint:
binary sensor is off, and stop when binary sensor is on. [More Info](https://community.home-assistant.io/t/aquarium-create-ato-automation-control-switches-based-off-a-sensor/600941)
(v1.7.2) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/651bc40bf0e539c767e5bac408962f82
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_ato_binary.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_dosing_daily.yaml b/blueprints/automation/TheRealFalseReality/aquarium_dosing_daily.yaml
index faf8865..04e0806 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_dosing_daily.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_dosing_daily.yaml
@@ -2,9 +2,9 @@ blueprint:
name: Aquarium - Dosing Time Daily
description: Turn on a switch to activate doser equipment for a certain amount of
time each day. [More Info](https://community.home-assistant.io/t/aquarium-turn-on-a-switch-to-activate-doser-equipment-for-a-certain-amount-of-volume-or-time/600546)
- (v1.1.1) [Automation]
+ (v1.1.4) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/555beb10be631e24ebbf0720253cd1f8
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_dosing_daily.yaml
input:
condition:
name: Add Condition(s)
@@ -23,10 +23,10 @@ blueprint:
name: Doser Switch
description: Switch that activates the Doser Equipment.
selector:
- target:
- entity:
- - domain:
- - switch
+ entity:
+ domain:
+ - switch
+ multiple: true
doser_time:
description: Dosing Time.
name: Dose Time
@@ -88,18 +88,22 @@ blueprint:
trigger:
- platform: time
at: !input time_start
+ id: trigger_on
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max_1
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max_2
+ id: max_time
variables:
condition: !input condition
doseSwitch: !input doseSwitch
@@ -116,27 +120,52 @@ variables:
Conditions: {{ condition }}"
additional_actions: !input additional_actions
notify: !input notify
+ notify_message_fail_max: Dose Time Exceeded for {{ doseName }}. Switch should have
+ been switched Off to prevent overdosing.
+ notify_title_fail_max: Dose Time Exceeded
action:
- if:
- condition: !input condition
then:
- - choose: []
- default: !input additional_actions
- - if:
- - condition: template
- value_template: '{{ notify }}'
- then:
- - service: notify.persistent_notification
- data:
- message: '{{ notify_message }}'
- title: '{{ notify_title }}'
- - service: switch.turn_on
- data: {}
- target: !input doseSwitch
- - delay: !input doser_time
- - service: switch.turn_off
- data: {}
- target: !input doseSwitch
+ - choose:
+ - conditions:
+ - condition: trigger
+ id: trigger_on
+ sequence:
+ - choose: []
+ default: !input additional_actions
+ - service: switch.turn_on
+ data: {}
+ entity_id: !input doseSwitch
+ - delay: !input doser_time
+ - service: switch.turn_off
+ data: {}
+ entity_id: !input doseSwitch
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message }}'
+ title: '{{ notify_title }}'
+ default:
+ - service: switch.turn_off
+ metadata: {}
+ data: {}
+ entity_id: !input doseSwitch
+ - if:
+ - condition: trigger
+ id: max_time
+ then:
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message_fail_max }}'
+ title: '{{ notify_title_fail_max }}'
else:
- if:
- condition: template
@@ -146,4 +175,4 @@ action:
data:
message: '{{ notify_message_fail }}'
title: '{{ notify_title_fail }}'
-mode: restart
+mode: single
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_automation.yaml b/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_automation.yaml
index 69f0474..2bdea03 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_automation.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_automation.yaml
@@ -1,11 +1,11 @@
blueprint:
- name: Aquarium - Dosing Automation
+ name: Aquarium - Dosing Automation for Script
description: Activate a script that activates Doser Equipment when a switch is turned
on from off, with a max time to prevent overdosing. Intended to be used with the
script [Aquarium Dosing - Volume](https://community.home-assistant.io/t/aquarium-turn-on-a-switch-to-activate-doser-equipment-for-a-certain-amount-of-volume-or-time/600546).
- (v1.3.2) [Automation]
+ (v1.3.6) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/596777245f2a364fc01801c4922370a1
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_automation.yaml
input:
condition:
name: Add Condition(s)
@@ -31,7 +31,7 @@ blueprint:
domain:
- switch
multiple: false
- doseTime:
+ doseTime_max:
name: Dose Max Time
description: 'Max time for the doser to be on, will automatically turn off Doser
Switch after the set time has passed. Prevents Doser from overdosing. (Default:
@@ -40,16 +40,7 @@ blueprint:
hours: 1
selector:
duration: {}
- doseTime_1:
- name: Dose Max Time Fallback
- description: 'Max time for the doser to be on, will automatically turn off Doser
- Switch after the set time has passed. Prevents Doser from overdosing in case
- the first trigger fails. (Default: 6hrs)'
- default:
- hours: 6
- selector:
- duration: {}
- doseTime_2:
+ doseTime_max_1:
name: Dose Max Time Failsafe
description: 'Max time for the doser to be on, will automatically turn off Doser
Switch after the set time has passed. Prevents Doser from overdosing in case
@@ -62,7 +53,7 @@ blueprint:
name: Additional Actions
description: 'Add additional actions to the script. Will execute before everything
else, each time the automation is triggered successfully. Variables: condition,
- doseName, condition, doseSwitch, doseTime, additional_actions.'
+ doseName, condition, doseSwitch, doseTime_max, additional_actions.'
default: []
selector:
action: {}
@@ -76,58 +67,80 @@ trigger:
entity_id: !input doseSwitch
from: unknown
to: 'on'
+ id: unknown_on
- platform: state
entity_id: !input doseSwitch
from: unavailable
to: 'on'
-- platform: state
- entity_id: !input doseSwitch
- to: 'off'
+ id: unknown_on
- platform: state
entity_id: !input doseSwitch
to: 'on'
- for: !input doseTime
+ for: !input doseTime_max
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
- for: !input doseTime_1
+ for: !input doseTime_max_1
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
- for: !input doseTime_2
+ for: !input doseTime_max_1
+ id: max_time
variables:
condition: !input condition
doseScript: !input doseScript
doseSwitch: !input doseSwitch
- doseTime: !input doseTime
- doseTime_1: !input doseTime_1
- doseTime_2: !input doseTime_2
+ doseTime_max: !input doseTime_max
+ doseTime_max_1: !input doseTime_max_1
doseName: '{{ states[doseSwitch].name }}'
notify_title_fail: Dosing Stopped or Cancelled
notify_message_fail: Dosing of {{ doseName }} has stopped or been cancelled.
additional_actions: !input additional_actions
+ notify_message_fail_max: Dose Time Exceeded for {{ doseName }}. Switch should have
+ been switched Off to prevent overdosing.
+ notify_title_fail_max: Dose Time Exceeded
action:
- if:
- condition: !input condition
then:
- choose:
- conditions:
- - condition: or
- conditions:
- - condition: not
- conditions:
- - condition: trigger
- id: trigger_on
+ - condition: trigger
+ id: trigger_on
sequence:
- - service: switch.turn_off
- metadata: {}
- data: {}
- entity_id: !input doseSwitch
+ - choose: []
+ default: !input additional_actions
+ - if:
+ - condition: state
+ entity_id: !input doseScript
+ state: 'off'
+ then:
+ - service: script.turn_on
+ metadata: {}
+ data: {}
+ entity_id: !input doseScript
default:
- - choose: []
- default: !input additional_actions
- - service: script.turn_on
+ - service: switch.turn_off
metadata: {}
data: {}
- entity_id: !input doseScript
+ entity_id: !input doseSwitch
+ - if:
+ - condition: trigger
+ id: max_time
+ then:
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message_fail_max }}'
+ title: '{{ notify_title_fail_max }}'
+ else:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message_fail }}'
+ title: '{{ notify_title_fail }}'
mode: restart
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_daily.yaml b/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_daily.yaml
index 42ac17a..708a6e2 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_daily.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_daily.yaml
@@ -2,9 +2,9 @@ blueprint:
name: Aquarium - Dosing Volume Daily
description: Turn on a switch to activate doser equipment for a certain amount of
time based on volume and given dose rate each day. [More Info](https://community.home-assistant.io/t/aquarium-turn-on-a-switch-to-activate-doser-equipment-for-a-certain-amount-of-volume-or-time/600546)
- (v1.3.2) [Automation]
+ (v1.3.6) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/06f78b75ce11593202f4a1a0bf7bb5da
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_dosing_volume_daily.yaml
input:
condition:
name: Add Condition(s)
@@ -21,13 +21,12 @@ blueprint:
multiline: false
doseSwitch:
name: Doser Switch
- description: Switch that activates the Doser Equipment. Make a Group Helper
- switch for multiple switches.
+ description: Switch that activates the Doser Equipment.
selector:
entity:
domain:
- switch
- multiple: false
+ multiple: true
doseRate:
description: Calibrated dosing rate of doser equipment (in mL/min). BRS 2-part
doser is 1.1 mL/min.
@@ -106,7 +105,7 @@ blueprint:
trigger:
- platform: time
at: !input time_start
- id: trigger_time
+ id: trigger_on
- platform: state
entity_id: !input doseSwitch
from: 'off'
@@ -120,22 +119,21 @@ trigger:
entity_id: !input doseSwitch
from: unavailable
to: 'on'
-- platform: state
- entity_id: !input doseSwitch
- id: trigger_off
- to: 'off'
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max_1
+ id: max_time
- platform: state
entity_id: !input doseSwitch
to: 'on'
for: !input doseTime_max_2
+ id: max_time
variables:
condition: !input condition
doseName: !input doseName
@@ -157,51 +155,56 @@ variables:
Conditions: {{ condition }}'
additional_actions: !input additional_actions
notify: !input notify
+ notify_message_fail_max: Dose Time Exceeded for {{ doseName }}. Switch should have
+ been switched Off to prevent overdosing.
+ notify_title_fail_max: Dose Time Exceeded
action:
- if:
- condition: !input condition
then:
- choose:
- conditions:
- - condition: or
- conditions:
- - condition: not
- conditions:
- - condition: trigger
- id: trigger_on
- - condition: trigger
- id: trigger_time
+ - condition: trigger
+ id: trigger_on
sequence:
- - service: switch.turn_off
- metadata: {}
+ - choose: []
+ default: !input additional_actions
+ - service: switch.turn_on
data: {}
entity_id: !input doseSwitch
- default:
- - choose: []
- default: !input additional_actions
- - service: switch.turn_on
- data: {}
- entity_id: !input doseSwitch
- - if:
- - condition: and
- conditions:
+ - if:
- condition: template
value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message }}'
+ title: '{{ notify_title }}'
+ - delay:
+ hours: 0
+ minutes: '{{ doseTime }}'
+ seconds: 0
+ milliseconds: 0
+ - service: switch.turn_off
+ data: {}
+ entity_id: !input doseSwitch
+ default:
+ - service: switch.turn_off
+ metadata: {}
+ data: {}
+ entity_id: !input doseSwitch
+ - if:
- condition: trigger
- id: trigger_on
- then:
- - service: notify.persistent_notification
- data:
- message: '{{ notify_message }}'
- title: '{{ notify_title }}'
- - delay:
- hours: 0
- minutes: '{{ doseTime }}'
- seconds: 0
- milliseconds: 0
- - service: switch.turn_off
- data: {}
- entity_id: !input doseSwitch
+ id: max_time
+ then:
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ notify_message_fail_max }}'
+ title: '{{ notify_title_fail_max }}'
else:
- if:
- condition: template
@@ -211,4 +214,4 @@ action:
data:
message: '{{ notify_message_fail }}'
title: '{{ notify_title_fail }}'
-mode: restart
+mode: single
diff --git a/blueprints/automation/TheRealFalseReality/aquarium_lighting_automation.yaml b/blueprints/automation/TheRealFalseReality/aquarium_lighting_automation.yaml
index 4119a78..73367b4 100644
--- a/blueprints/automation/TheRealFalseReality/aquarium_lighting_automation.yaml
+++ b/blueprints/automation/TheRealFalseReality/aquarium_lighting_automation.yaml
@@ -4,7 +4,7 @@ blueprint:
at a certain time, daily. When automation is run manually, light(s) will turn off. [More Info](https://community.home-assistant.io/t/aquarium-toggle-lights-at-certain-times-of-day/684862)
(v1.1) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/3b7f47a0f7e957a2c162a5acd205d26b
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/aquarium_lighting_automation.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/automation/TheRealFalseReality/notify _trigger.yaml b/blueprints/automation/TheRealFalseReality/notify_trigger.yaml
similarity index 93%
rename from blueprints/automation/TheRealFalseReality/notify _trigger.yaml
rename to blueprints/automation/TheRealFalseReality/notify_trigger.yaml
index 05ace67..b89ea55 100644
--- a/blueprints/automation/TheRealFalseReality/notify _trigger.yaml
+++ b/blueprints/automation/TheRealFalseReality/notify_trigger.yaml
@@ -4,7 +4,7 @@ blueprint:
when the automation is triggered. Option to send to mobile device with Additional
Actions. [More Info]() (v1.1) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/647b0b754ef85295dd68e7e06ba4f4e7
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/notify_trigger.yaml
input:
trigger_additional:
name: Trigger(s)
@@ -64,4 +64,4 @@ action:
message: !input input_message
title: !input input_title
- choose: []
- default: !input additional_actions
\ No newline at end of file
+ default: !input additional_actions
diff --git a/blueprints/automation/TheRealFalseReality/sensor_alarm.yaml b/blueprints/automation/TheRealFalseReality/sensor_alarm.yaml
new file mode 100644
index 0000000..e28a5bb
--- /dev/null
+++ b/blueprints/automation/TheRealFalseReality/sensor_alarm.yaml
@@ -0,0 +1,105 @@
+blueprint:
+ name: "Aquarium - AquaPi: Send a Notification Based on an AquaPi Sensor Value"
+ description: This automation will send a persistent notification to Home Assistant
+ when a selected sensor (Temperature, pH, Salinity, etc.) is out of range. Option to send
+ to mobile device with Additional Actions.
+ [More Info]()
+ (v1) [Automation]
+ domain: automation
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/sensor_alarm.yaml
+ input:
+ tank_name:
+ name: Aquarium Name
+ description: Name of the Aquarium (ex. Marine Aquarium).
+ default: My Aquarium
+ selector:
+ text:
+ multiple: false
+ multiline: false
+ sensors:
+ name: Sensors
+ description: "Select AquaPi sensors to trigger the automation and send the notification.\n
+ Create a blueprint for each sensor type, i.e., temperaure, pH, etc."
+ selector:
+ entity:
+ filter:
+ - domain: sensor
+ integration: esphome
+ device_class:
+ - ph
+ - volatile_organic_compounds_parts
+ - temperature
+ multiple: true
+ value_above:
+ name: Above Value
+ description: Set number to trigger automation when sensor value crosses above this threshold.
+ selector:
+ number:
+ min: 0.01
+ max: 1000.0
+ step: 0.01
+ mode: box
+ value_below:
+ name: Below Value
+ description: Set number to trigger automation when sensor value crosses below this threshold.
+ selector:
+ number:
+ min: 0.01
+ max: 1000.0
+ step: 0.01
+ mode: box
+ input_title:
+ name: Notification Title
+ description: "Title of the Notification.\n
+ Default: TANKNAME Alarm\n
+ `{{ tank_name }} Alarm`"
+ default: '{{ title }}'
+ selector:
+ text:
+ multiple: false
+ multiline: false
+ input_message:
+ name: Notification Message
+ description: "Message of the Notification.\n
+ Default: TRIGGER_FRIENDLYNAME is SENSORSTATE\n
+ `{{ state_attr(trigger.entity_id, 'friendly_name') }} is {{ trigger.to_state.state }}`"
+ default: '{{ message }}'
+ selector:
+ text:
+ multiple: false
+ multiline: true
+ additional_actions:
+ name: Additional Actions
+ description: "Add additional actions to the script.\n
+ - Example: To send to Mobile Device using the official Home Assistant
+ App:\n\n Notifications -> Send a notification via mobile.YOUR_DEVICE_NAME\n
+ \ ```\n service: notify.YOUR_DEVICE_NAME\n metadata: {}\n data:\n message:
+ \"{{ message }}\"\n title: \"{{ title }}\"\n ```\n\n Copy {{ message
+ }} into `message`. This will switch to \"yaml\" mode. Above is a completed
+ example.\n"
+ default: []
+ selector:
+ action: {}
+variables:
+ additional_actions: !input additional_actions
+ tank_name: !input tank_name
+ sensors: !input sensors
+ value_below: !input value_below
+ value_above: !input value_above
+ message: "{{ state_attr(trigger.entity_id, 'friendly_name') }} is {{
+ trigger.to_state.state }}."
+ title: "{{ tank_name }} Alarm"
+trigger:
+ - platform: numeric_state
+ entity_id: !input sensors
+ above: !input value_above
+ - platform: numeric_state
+ entity_id: !input sensors
+ below: !input value_below
+action:
+- choose: []
+ default: !input additional_actions
+- service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
diff --git a/blueprints/automation/TheRealFalseReality/temperature_switch_control.yaml b/blueprints/automation/TheRealFalseReality/temperature_switch_control.yaml
index da480b8..bba6df9 100644
--- a/blueprints/automation/TheRealFalseReality/temperature_switch_control.yaml
+++ b/blueprints/automation/TheRealFalseReality/temperature_switch_control.yaml
@@ -3,7 +3,7 @@ blueprint:
description: This automation blueprint will turn switches on or off when the selected
temperature sensor is above or below a certain value. (v1.1) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/9788b2f9ba2e5e51a05bd081441314d3
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/temperature_switch_control.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/automation/TheRealFalseReality/toggle_water_level.yaml b/blueprints/automation/TheRealFalseReality/toggle_water_level.yaml
index 4b60848..e73fe1a 100644
--- a/blueprints/automation/TheRealFalseReality/toggle_water_level.yaml
+++ b/blueprints/automation/TheRealFalseReality/toggle_water_level.yaml
@@ -1,9 +1,9 @@
blueprint:
name: 'Aquarium - AquaPi: Toggle Switches Based on Water Level'
description: This automation blueprint will turn devices on or off when water level
- is high or low. (v1.21) [Automation]
+ is high or low. (v1.21.1) [Automation]
domain: automation
- source_url: https://gist.github.com/TheRealFalseReality/6a764c0904067d44ca45e8e59a3d8747
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/automation/TheRealFalseReality/toggle_water_level.yaml
input:
condition:
name: Add Condition(s)
@@ -16,63 +16,56 @@ blueprint:
description: The AquaPi sensor that detects water level
selector:
entity:
- domain:
- - sensor
- multiple: false
+ domain: sensor
+ integration: esphome
switchHighOff:
name: High Switch OFF
description: Switch(es) to turn OFF when Water Level is High
- default: []
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
switchHighOn:
name: High Switch ON
description: Switch(es) to turn ON when Water Level is High
- default: []
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
switchNormalOff:
name: Normal Switch OFF
description: Switch(es) to turn OFF when Water Level is Normal
- default: []
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
switchNormalOn:
name: Normal Switch ON
description: Switch(es) to turn ON when Water Level is Normal
- default: []
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
switchLowOff:
- name: Low Switch OFF
- description: Switch(es) to turn OFF when Water Level is Low
- default: []
+ name: Normal Switch ON
+ description: Switch(es) to turn ON when Water Level is Normal
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
switchLowOn:
- name: Low Switch ON
- description: Switch(es) to turn ON when Water Level is Low
- default: []
+ name: Normal Switch ON
+ description: Switch(es) to turn ON when Water Level is Normal
+ default: {}
selector:
- entity:
- domain:
- - switch
- multiple: true
+ target:
+ entity:
+ domain: switch
delayHigh:
name: Delay when High (Optional)
description: Wait before toggling devices
@@ -147,25 +140,25 @@ action:
state: High
then:
- service: switch.turn_off
- entity_id: !input switchHighOff
+ target: !input switchHighOff
- service: switch.turn_on
- entity_id: !input switchHighOn
+ target: !input switchHighOn
- if:
- condition: state
entity_id: !input sensor
state: Normal
then:
- service: switch.turn_off
- entity_id: !input switchNormalOff
+ target: !input switchNormalOff
- service: switch.turn_on
- entity_id: !input switchNormalOn
+ target: !input switchNormalOn
- if:
- condition: state
entity_id: !input sensor
state: Low
then:
- service: switch.turn_off
- entity_id: !input switchLowOff
+ target: !input switchLowOff
- service: switch.turn_on
- entity_id: !input switchLowOn
+ target: !input switchLowOn
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/aquapi_dosing.yaml b/blueprints/script/TheRealFalseReality/aquapi_dosing.yaml
new file mode 100644
index 0000000..e6cb1d9
--- /dev/null
+++ b/blueprints/script/TheRealFalseReality/aquapi_dosing.yaml
@@ -0,0 +1,123 @@
+blueprint:
+ name: "Aquarium - AquaPi: Dosing"
+ description: Turn on an AquaPi EZO Pump to dose a specific amount in mL.
+ [More Info]() (v1) [Script]
+ domain: script
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquapi_dosing.yaml
+ input:
+ condition:
+ name: Add Condition(s)
+ description: Add conditions if needed.
+ default: []
+ selector:
+ condition: {}
+ dose_name:
+ name: Dose Name
+ description: Name of what you are dosing (ex. Marine Trace).
+ selector:
+ text:
+ multiple: false
+ multiline: false
+ pump_button:
+ name: AquaPi Dose Pump
+ description: Select the **AquaPi DEVICENAME Pump - Dose Volume** button(s).
+ selector:
+ entity:
+ filter:
+ - domain: button
+ integration: esphome
+ volume_number:
+ name: AquaPi Dose Volume Input Number
+ description: Select the **AquaPi DEVICENAME Pump - Volume to Dose** input number sensor
+ to set the Volume to dose.
+ selector:
+ entity:
+ filter:
+ - domain: number
+ integration: esphome
+ dose_volume:
+ name: Dose Volume (mL)
+ description: "Volume to dose. The EZO Pump will dose at max flow rate, about 105 mL/min.
+ *This may not match the sensor reported from the AquaPi.* Max: 1000 mL"
+ selector:
+ number:
+ min: 1
+ max: 1000
+ step: 0.1
+ unit_of_measurement: mL
+ mode: box
+ notify:
+ name: Persistent Notification (Recommended)
+ description: Notify Home Assistant when script is executed.
+ default: true
+ selector:
+ boolean: {}
+ additional_actions:
+ name: Additional Actions
+ description: |
+ Add additional actions to the script. Will execute before everything else.
+ - Example: To send to Mobile Device using the official Home Assistant App:
+
+ Notifications -> Send a notification via mobile.YOUR_DEVICE_NAME
+ ```
+ service: notify.YOUR_DEVICE_NAME
+ metadata: {}
+ data:
+ message: "{{ message }}"
+ title: "{{ title }}"
+ ```
+
+ Copy {{ message }} into `message`. This will switch to "yaml" mode. Above is a completed example.
+ default: []
+ selector:
+ action: {}
+variables:
+ condition: !input condition
+ pump_button: !input pump_button
+ volume_number: !input volume_number
+ dose_volume: !input dose_volume
+ dose_name: !input dose_name
+ title: 'Dosing - {{ dose_name }}'
+ message: Dosing {{ dose_volume }}mL of {{ dose_name }}.
+ title_fail: '{{ dose_name }} Failed'
+ message_fail: "Failed to dose {{ dose_name }} due to conditions not passing.\n
+ Conditions: {{ condition }}"
+ additional_actions: !input additional_actions
+ notify: !input notify
+sequence:
+- if:
+ - condition: !input condition
+ then:
+ - choose: []
+ default: !input additional_actions
+ - service: number.set_value
+ entity_id: !input volume_number
+ data:
+ value: !input dose_volume
+ - delay:
+ hours: 0
+ minutes: 0
+ seconds: 0
+ milliseconds: 100
+ - service: button.press
+ metadata: {}
+ data: {}
+ entity_id: !input pump_button
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
+ else:
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
+mode: restart
diff --git a/blueprints/script/TheRealFalseReality/aquapi_read.yaml b/blueprints/script/TheRealFalseReality/aquapi_ezo_read.yaml
similarity index 63%
rename from blueprints/script/TheRealFalseReality/aquapi_read.yaml
rename to blueprints/script/TheRealFalseReality/aquapi_ezo_read.yaml
index 2582bb7..9fcb032 100644
--- a/blueprints/script/TheRealFalseReality/aquapi_read.yaml
+++ b/blueprints/script/TheRealFalseReality/aquapi_ezo_read.yaml
@@ -1,9 +1,9 @@
blueprint:
name: 'Aquarium - AquaPi: Continuous Read'
- description: Read AquaPi probe every second for 60 seconds. [More Info] (v1.1)
+ description: Read AquaPi probe every second for 60 seconds. [More Info] (v1.1.1)
[Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/31de3a3654209bd4a97317762858c271
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquapi_ezo_read.yaml
input:
read_button:
name: Read Button
@@ -16,8 +16,18 @@ blueprint:
- button
integration: esphome
multiple: false
+ time_count:
+ name: Read Time
+ description: Time, in seconds to read the probe for. (default = 60 seconds)
+ default: 60
+ selector:
+ number:
+ min: 1
+ max: 300
+ unit_of_measurement: seconds
variables:
read_button: !input read_button
+ time_count: !input time_count
sequence:
- repeat:
sequence:
@@ -31,5 +41,5 @@ sequence:
minutes: 0
seconds: 1
milliseconds: 0
- count: 60
+ count: '{{ time_count }}'
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/aquapi_quick_water_change_script.yaml b/blueprints/script/TheRealFalseReality/aquapi_quick_water_change_script.yaml
new file mode 100644
index 0000000..b628f5a
--- /dev/null
+++ b/blueprints/script/TheRealFalseReality/aquapi_quick_water_change_script.yaml
@@ -0,0 +1,167 @@
+blueprint:
+ name: 'Aquarium - AquaPi: Quick Water Change [Script]'
+ description: 'Turn on two AquaPi EZO Pumps to simultaneously remove waste water
+ (Red) and add clean water (Green) daily, in gallons.
+
+ **Note, this script will fail if the calculated flow rate exceeds either of the
+ EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1.0.1) [Script]'
+ domain: script
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquapi_quick_water_change_script.yaml
+ input:
+ condition:
+ name: Add Condition(s)
+ description: Add conditions if needed.
+ default: []
+ selector:
+ condition: {}
+ aquarium_name:
+ name: Aquarium Name
+ description: Name of the Aquarium for the water change (Marine Aquarium).
+ selector:
+ text:
+ multiple: false
+ multiline: false
+ pump_button:
+ name: AquaPi Dose Pump for Water Change
+ description: Select the **Dose Volume** button.
+ selector:
+ target:
+ entity:
+ - domain:
+ - button
+ integration: esphome
+ pump_volume:
+ name: AquaPi Dose Pump Volume Input for Water Change
+ description: Select the **Volume to Dose** input number entity.
+ selector:
+ target:
+ entity:
+ - domain:
+ - number
+ integration: esphome
+ # pump_waste_button:
+ # name: AquaPi Dose Pump for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Dose Volume** button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_waste_volume:
+ # name: AquaPi Dose Pump Volume Input for Waste Water
+ # description: Select the **AquaPi DEVICENAME Pump Waste - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ # pump_clean_button:
+ # name: AquaPi Dose Pump for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Dose Volume for Time**
+ # button.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - button
+ # integration: esphome
+ # multiple: false
+ # pump_clean_volume:
+ # name: AquaPi Dose Pump Volume Input for Clean Water
+ # description: Select the **AquaPi DEVICENAME Pump Clean - Volume to Dose** input
+ # number entity.
+ # selector:
+ # entity:
+ # filter:
+ # - domain:
+ # - number
+ # integration: esphome
+ # multiple: false
+ change_volume:
+ name: Water Change Volume
+ description: "Volume to change. Max: 100 gallons.\n Recommended 10 - 15% monthly
+ water change."
+ default: 5
+ selector:
+ number:
+ min: 0.5
+ max: 100.0
+ step: 0.5
+ unit_of_measurement: gal
+ mode: slider
+ notify:
+ name: Persistent Notification
+ description: Notify Home Assistant when script is executed.
+ default: true
+ selector:
+ boolean: {}
+ additional_actions:
+ name: Additional Actions
+ description: "Add additional actions to the script. Will execute before everything
+ else.\n- Example: To send to Mobile Device using the official Home Assistant
+ App:\n\n Notifications -> Send a notification via mobile.YOUR_DEVICE_NAME\n
+ \ ```\n service: notify.YOUR_DEVICE_NAME\n metadata: {}\n data:\n message:
+ \"{{ message }}\"\n title: \"{{ title }}\"\n ```\n\n Copy {{ message
+ }} into `message`. This will switch to \"yaml\" mode. Above is a completed
+ example.\n"
+ default: []
+ selector:
+ action: {}
+variables:
+ condition: !input condition
+ pump_button: !input pump_button
+ pump_volume: !input pump_volume
+ # pump_waste_button: !input pump_waste_button
+ # pump_clean_button: !input pump_clean_button
+ # pump_clean_volume: !input pump_clean_volume
+ # pump_waste_volume: !input pump_waste_volume
+ change_volume: !input change_volume
+ aquarium_name: !input aquarium_name
+ additional_actions: !input additional_actions
+ notify: !input notify
+ calculated_volume: '{{ change_volume * 3785.41 }}'
+ title: '{{ aquarium_name }} Water Change'
+ message: Changing {{ change_volume | float | round(2, default=2) }} gal of {{ aquarium_name
+ }} water.
+ title_fail: '{{ aquarium_name }} Water Change Failed'
+ message_fail: "Failed to dose {{ aquarium_name }} due to conditions not passing.\n
+ Conditions: {{ condition }}"
+ title_fail_rate: '{{ aquarium_name }} Water Change Failed'
+sequence:
+- if:
+ - condition: !input condition
+ then:
+ - choose: []
+ default: !input additional_actions
+ - service: number.set_value
+ target: !input pump_volume
+ data:
+ value: '{{ calculated_volume }}'
+ - delay:
+ hours: 0
+ minutes: 0
+ seconds: 0
+ milliseconds: 100
+ - service: button.press
+ metadata: {}
+ data: {}
+ target: !input pump_button
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
+ else:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
+mode: single
diff --git a/blueprints/script/TheRealFalseReality/aquapi_water_change_script.yaml b/blueprints/script/TheRealFalseReality/aquapi_water_change_script.yaml
index 62819cf..c2260dc 100644
--- a/blueprints/script/TheRealFalseReality/aquapi_water_change_script.yaml
+++ b/blueprints/script/TheRealFalseReality/aquapi_water_change_script.yaml
@@ -4,9 +4,9 @@ blueprint:
(Red) and add clean water (Green) daily, in gallons.
**Note, this script will fail if the calculated flow rate exceeds either of the
- EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1) [Script]'
+ EZO Pump''s Max Volume/Time Flow Rates.** [More Info]() (v1.0.1) [Script]'
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/d01e00f94e1b25c9b723b12757d45f58
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquapi_water_change_script.yaml
input:
condition:
name: Add Condition(s)
@@ -21,72 +21,33 @@ blueprint:
text:
multiple: false
multiline: false
- pump_waste_button:
- name: AquaPi Dose Pump for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Dose Volume for Time**
- button.
+ pump_button:
+ name: AquaPi Dose Pump for Water Change
+ description: Select the **Dose Volume for Time** button.
selector:
- entity:
- filter:
+ target:
+ entity:
- domain:
- button
integration: esphome
- multiple: false
- pump_waste_volume:
- name: AquaPi Dose Pump Volume Input for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Volume to Dose** input
- number entity.
+ pump_volume:
+ name: AquaPi Dose Pump Volume Input for Water Change
+ description: Select the **Volume to Dose** input number entity.
selector:
- entity:
- filter:
+ target:
+ entity:
- domain:
- number
integration: esphome
- multiple: false
- pump_waste_time:
- name: AquaPi Dose Pump Time Input for Waste Water
- description: Select the **AquaPi DEVICENAME Pump Waste - Time to Dose** input
- number entity.
+ pump_time:
+ name: AquaPi Dose Pump Time Input for Water Change
+ description: Select the **Time to Dose** input number entity.
selector:
- entity:
- filter:
+ target:
+ entity:
- domain:
- number
integration: esphome
- multiple: false
- pump_clean_button:
- name: AquaPi Dose Pump for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Dose Volume for Time**
- button.
- selector:
- entity:
- filter:
- - domain:
- - button
- integration: esphome
- multiple: false
- pump_clean_volume:
- name: AquaPi Dose Pump Volume Input for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Volume to Dose** input
- number entity.
- selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
- pump_clean_time:
- name: AquaPi Dose Pump Time Input for Clean Water
- description: Select the **AquaPi DEVICENAME Pump Clean - Time to Dose** input
- number entity.
- selector:
- entity:
- filter:
- - domain:
- - number
- integration: esphome
- multiple: false
change_volume_monthly:
name: Water Change Volume Montly
description: "Volume to change every month. Max: 100 gallons.\n Recommended
@@ -130,12 +91,9 @@ blueprint:
action: {}
variables:
condition: !input condition
- pump_waste_button: !input pump_waste_button
- pump_clean_button: !input pump_clean_button
- pump_clean_volume: !input pump_clean_volume
- pump_waste_volume: !input pump_waste_volume
- pump_clean_time: !input pump_clean_time
- pump_waste_time: !input pump_waste_time
+ pump_button: !input pump_button
+ pump_volume: !input pump_volume
+ pump_time: !input pump_time
change_time: !input change_time
change_volume_monthly: !input change_volume_monthly
change_volume: '{{ (change_volume_monthly * 3) / 91 }}'
@@ -165,15 +123,11 @@ sequence:
- choose: []
default: !input additional_actions
- service: number.set_value
- entity_id:
- - !input pump_clean_volume
- - !input pump_waste_volume
+ target: !input pump_volume
data:
value: '{{ calculated_volume }}'
- service: number.set_value
- entity_id:
- - !input pump_clean_time
- - !input pump_waste_time
+ target: !input pump_time
data:
value: '{{ calculated_time }}'
- delay:
@@ -184,9 +138,7 @@ sequence:
- service: button.press
metadata: {}
data: {}
- entity_id:
- - !input pump_waste_button
- - !input pump_clean_button
+ target: !input pump_button
- if:
- condition: template
value_template: '{{ notify }}'
@@ -204,12 +156,8 @@ sequence:
message: '{{ message_fail_rate }}'
title: '{{ title_fail_rate }}'
else:
- - if:
- - condition: template
- value_template: '{{ notify }}'
- then:
- - service: notify.persistent_notification
- data:
- message: '{{ message_fail }}'
- title: '{{ title_fail }}'
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
mode: single
diff --git a/blueprints/script/TheRealFalseReality/aquarium_dosing.yaml b/blueprints/script/TheRealFalseReality/aquarium_dosing.yaml
index 0ba3309..39f6543 100644
--- a/blueprints/script/TheRealFalseReality/aquarium_dosing.yaml
+++ b/blueprints/script/TheRealFalseReality/aquarium_dosing.yaml
@@ -2,9 +2,9 @@ blueprint:
name: Aquarium - Dosing Time
description: Turn on a switch to activate doser equipment for a certain amount of
time. [More Info](https://community.home-assistant.io/t/aquarium-turn-on-a-switch-to-activate-doser-equipment-for-a-certain-amount-of-volume-or-time/600546)
- (v1.3.2) [Script]
+ (v1.3.3) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/9fd8f929b5f6cc32f6e8a67cd8104941
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquarium_dosing.yaml
input:
condition:
name: Add Condition(s)
@@ -19,7 +19,7 @@ blueprint:
text:
multiline: false
multiple: false
- switch:
+ doseSwitch:
name: Doser Switch
description: Switch that activates the Doser Equipment.
selector:
@@ -54,7 +54,7 @@ blueprint:
action: {}
variables:
condition: !input condition
- switch: !input switch
+ doseSwitch: !input doseSwitch
doseName: !input doseName
doser_time: !input doser_time
title: '{{ doseName }}'
@@ -69,29 +69,33 @@ sequence:
- condition: !input condition
then:
- choose: []
- default: !input additional_actions
+ default: !input additional_actions
- if:
- condition: template
- value_template: '{{ notify }}'
+ value_template: '{{ this.state == ''off'' }}'
then:
- - service: notify.persistent_notification
- data:
- message: '{{ message }}'
- title: '{{ title }}'
- - service: switch.turn_on
- data: {}
- target: !input switch
- - delay: !input doser_time
- - service: switch.turn_off
- data: {}
- target: !input switch
+ - service: switch.turn_on
+ data: {}
+ target: !input doseSwitch
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
+ - delay: !input doser_time
+ - service: switch.turn_off
+ data: {}
+ target: !input doseSwitch
+ else:
+ - service: switch.turn_off
+ data: {}
+ target: !input doseSwitch
else:
- - if:
- - condition: template
- value_template: '{{ notify }}'
- then:
- - service: notify.persistent_notification
- data:
- message: '{{ message_fail }}'
- title: '{{ title_fail }}'
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/aquarium_dosing_volume.yaml b/blueprints/script/TheRealFalseReality/aquarium_dosing_volume.yaml
index 9b9c1e0..96be374 100644
--- a/blueprints/script/TheRealFalseReality/aquarium_dosing_volume.yaml
+++ b/blueprints/script/TheRealFalseReality/aquarium_dosing_volume.yaml
@@ -4,7 +4,7 @@ blueprint:
time based on volume and given dose rate. [More Info](https://community.home-assistant.io/t/aquarium-turn-on-a-switch-to-activate-doser-equipment-for-a-certain-amount-of-volume-or-time/600546)
(v1.32.2) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/be626c89dfe26fdf4c13b05498a5b8c6
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquarium_dosing_volume.yaml
input:
condition:
name: Add Condition(s)
@@ -90,33 +90,37 @@ sequence:
- condition: !input condition
then:
- choose: []
- default: !input additional_actions
- - service: switch.turn_on
- data: {}
- target: !input doseSwitch
+ default: !input additional_actions
- if:
- condition: template
- value_template: '{{ notify }}'
+ value_template: '{{ this.state == ''off'' }}'
then:
- - service: notify.persistent_notification
- data:
- message: '{{ message }}'
- title: '{{ title }}'
- - delay:
- hours: 0
- minutes: '{{ doseTime }}'
- seconds: 0
- milliseconds: 0
- - service: switch.turn_off
- data: {}
- target: !input doseSwitch
+ - service: switch.turn_on
+ data: {}
+ target: !input doseSwitch
+ - if:
+ - condition: template
+ value_template: '{{ notify }}'
+ then:
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message }}'
+ title: '{{ title }}'
+ - delay:
+ hours: 0
+ minutes: '{{ doseTime }}'
+ seconds: 0
+ milliseconds: 0
+ - service: switch.turn_off
+ data: {}
+ target: !input doseSwitch
+ else:
+ - service: switch.turn_off
+ data: {}
+ target: !input doseSwitch
else:
- - if:
- - condition: template
- value_template: '{{ notify }}'
- then:
- - service: notify.persistent_notification
- data:
- message: '{{ message_fail }}'
- title: '{{ title_fail }}'
+ - service: notify.persistent_notification
+ data:
+ message: '{{ message_fail }}'
+ title: '{{ title_fail }}'
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/aquarium_feeding.yaml b/blueprints/script/TheRealFalseReality/aquarium_feeding.yaml
index 47ffc40..b74ae16 100644
--- a/blueprints/script/TheRealFalseReality/aquarium_feeding.yaml
+++ b/blueprints/script/TheRealFalseReality/aquarium_feeding.yaml
@@ -4,7 +4,7 @@ blueprint:
Info](https://community.home-assistant.io/t/aquarium-turn-off-switches-to-feed-your-fish-for-a-certain-amount-of-time-then-turn-back-on-script/600544/1)
(1.2) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/06d34488d84e81916768129b0398de25
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquarium_feeding.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/script/TheRealFalseReality/aquarium_lights.yaml b/blueprints/script/TheRealFalseReality/aquarium_lights.yaml
index bb16ab7..f7a9d19 100644
--- a/blueprints/script/TheRealFalseReality/aquarium_lights.yaml
+++ b/blueprints/script/TheRealFalseReality/aquarium_lights.yaml
@@ -3,7 +3,7 @@ blueprint:
description: Create a script to toggle all your Aquarium Lights all at once. (v1.1)
[Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/046bbbbef7cee12740190945d5ed22b9
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/aquarium_lights.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/script/TheRealFalseReality/ec_calibrate_aquapi.yaml b/blueprints/script/TheRealFalseReality/ec_calibrate_aquapi.yaml
index 340b949..6aa9cd3 100644
--- a/blueprints/script/TheRealFalseReality/ec_calibrate_aquapi.yaml
+++ b/blueprints/script/TheRealFalseReality/ec_calibrate_aquapi.yaml
@@ -1,9 +1,9 @@
blueprint:
- name: 'Aquarium - AquaPi: Calibrate Conductivity EZO Probe'
+ name: 'Aquarium - AquaPi: Calibrate Conductivity(EC) EZO Probe'
description: Calibrate Conductivity(EC) probe for the AquaPi, an Atlas Scientific
- EZO board and probe. (v1.1.1) [Script]
+ EZO board and probe, at Dry, Low (12.88 mS/cm) and High (80 mS/cm). (v1.1.2) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/f619b484d63a479004c1d6613b90df1a
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/ec_calibrate_aquapi.yaml
input:
ec_sensor:
name: Conductivity Sensor
@@ -43,93 +43,89 @@ blueprint:
- button
integration: esphome
multiple: false
- # condition:
- # name: Add Condition(s)
- # description: Add conditions if needed.
- # default: []
- # selector:
- # condition: {}
- # additional_actions:
- # name: Additional Action(s)
- # description: Add additional actions to the script if wanted. Will execute before
- # everything else.
- # default: []
- # selector:
- # action: {}
variables:
- # condition: !input condition
- # additional_actions: !input additional_actions
ec_sensor: !input ec_sensor
ec_selector: !input ec_selector
ec_command: !input ec_command
sequence:
-- if:
- # - condition: !input condition
- # then:
- # - choose: []
- # default: !input additional_actions
- - choose:
- - conditions:
- - condition: numeric_state
- entity_id: !input ec_sensor
- below: 5
- sequence:
- - service: select.select_option
- metadata: {}
- data:
- option: Calibrate @ DRY (WILL RESET CALIBRATION)
- target:
- entity_id: !input ec_selector
- - service: notify.persistent_notification
- data:
- message: EC - Conductivity Calibrated for DRY/AIR - 0 mS/cm. Now continue to
- LOW - 12.88 mS/cm.
- title: 'EC Calibration: Air'
- - conditions:
- - condition: numeric_state
- entity_id: !input ec_sensor
- above: 10
- below: 15
- sequence:
- - service: select.select_option
- metadata: {}
- data:
- option: Calibrate @ LOW = 12880 (WILL RESET CALIBRATION)
- target:
- entity_id: !input ec_selector
- - service: notify.persistent_notification
- data:
- message: EC - Conductivity Calibrated for LOW - 12.88 mS/cm. Now continue
- to HIGH - 80 mS/cm.
- title: 'EC Calibration: Low'
- - conditions:
- - condition: numeric_state
- entity_id: !input ec_sensor
- above: 78
- below: 82
- sequence:
- - service: select.select_option
- metadata: {}
- data:
- option: Calibrate @ HIGH = 80000 (WILL RESET CALIBRATION)
- target:
- entity_id: !input ec_selector
- - service: notify.persistent_notification
- data:
- message: EC - Conductivity Calibrated for HIGH - 80 mS/cm. Now check calibration.
- title: 'EC Calibration: High'
- default:
+- choose:
+ - conditions:
+ - condition: numeric_state
+ entity_id: !input ec_sensor
+ below: 5
+ sequence:
- service: select.select_option
metadata: {}
data:
- option: Check Calibration
+ option: Calibrate @ DRY (WILL RESET CALIBRATION)
target:
entity_id: !input ec_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ec_command
- service: notify.persistent_notification
data:
- message: 'EC - Conductivity Calibration is not within range of AIR: 0 mS/cm,
- LOW: 12.88 mS/cm or HIGH: 80 mS/cm.
+ message: EC - Conductivity Calibrated for DRY/AIR - 0 mS/cm. Now continue to
+ LOW - 12.88 mS/cm.
+ title: 'EC Calibration: Dry'
+ - conditions:
+ - condition: numeric_state
+ entity_id: !input ec_sensor
+ above: 10
+ below: 15
+ sequence:
+ - service: select.select_option
+ metadata: {}
+ data:
+ option: Calibrate @ LOW = 12880 (WILL RESET CALIBRATION)
+ target:
+ entity_id: !input ec_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ec_command
+ - service: notify.persistent_notification
+ data:
+ message: EC - Conductivity Calibrated for LOW - 12.88 mS/cm. Now continue
+ to HIGH - 80 mS/cm.
+ title: 'EC Calibration: Low'
+ - conditions:
+ - condition: numeric_state
+ entity_id: !input ec_sensor
+ above: 78
+ below: 82
+ sequence:
+ - service: select.select_option
+ metadata: {}
+ data:
+ option: Calibrate @ HIGH = 80000 (WILL RESET CALIBRATION)
+ target:
+ entity_id: !input ec_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ec_command
+ - service: notify.persistent_notification
+ data:
+ message: EC - Conductivity Calibrated for HIGH - 80 mS/cm. Now check calibration.
+ title: 'EC Calibration: High'
+ default:
+ - service: select.select_option
+ metadata: {}
+ data:
+ option: Check Calibration
+ target:
+ entity_id: !input ec_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ec_command
+ - service: notify.persistent_notification
+ data:
+ message: 'EC - Conductivity Calibration is not within range of AIR: 0 mS/cm,
+ LOW: 12.88 mS/cm or HIGH: 80 mS/cm. (±2 mS/CM)
- Start with in-air, no solution, then Low, and finish with High.'
- title: 'EC Calibration: Not in Range'
+ Start with in-air, no solution, then Low, and finish with High.'
+ title: 'EC Calibration: Not in Range'
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/ec_continuous_read.yaml.old b/blueprints/script/TheRealFalseReality/ec_continuous_read.yaml.old
deleted file mode 100644
index 729326c..0000000
--- a/blueprints/script/TheRealFalseReality/ec_continuous_read.yaml.old
+++ /dev/null
@@ -1,36 +0,0 @@
-blueprint:
- name: 'Aquarium - AquaPi: Continuous Conductivity(EC) Read'
- description: Read Conductivity(EC) probe every second for 60 seconds. [More Info]
- (v1) [Script]
- domain: script
- source_url: https://gist.github.com/TheRealFalseReality/94fe6dbd41f7520fa69a955abcea4c9d
- input:
- ec_sensor:
- name: Conductivity(EC) Sensor
- description: 'Conductivity(EC) button to use.
-
- *DEVICENAME EC - Read**'
- selector:
- entity:
- filter:
- - domain:
- - button
- integration: esphome
- multiple: false
-variables:
- ec_sensor: !input ec_sensor
-sequence:
-- repeat:
- sequence:
- - service: button.press
- metadata: {}
- data: {}
- target:
- entity_id: !input ec_sensor
- - delay:
- hours: 0
- minutes: 0
- seconds: 1
- milliseconds: 0
- count: 60
-mode: restart
diff --git a/blueprints/script/TheRealFalseReality/notify_device.yaml b/blueprints/script/TheRealFalseReality/notify_device.yaml
index b29110f..0ed25ca 100644
--- a/blueprints/script/TheRealFalseReality/notify_device.yaml
+++ b/blueprints/script/TheRealFalseReality/notify_device.yaml
@@ -2,7 +2,7 @@ blueprint:
name: Notify - Mobile Device
description: Send notification to mobile device. (v1) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/34b7108f7a1c4ab32eba123894c7358e
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/notify_device.yaml
input:
condition:
name: Add Condition(s)
diff --git a/blueprints/script/TheRealFalseReality/orp_calibrate_aquapi.yaml b/blueprints/script/TheRealFalseReality/orp_calibrate_aquapi.yaml
index b926bc8..3a8c3ed 100644
--- a/blueprints/script/TheRealFalseReality/orp_calibrate_aquapi.yaml
+++ b/blueprints/script/TheRealFalseReality/orp_calibrate_aquapi.yaml
@@ -1,9 +1,9 @@
blueprint:
name: 'Aquarium - AquaPi: Calibrate ORP EZO Probe'
- description: Calibrate ORP probe for the AquaPi, an Atlas Scientific
- EZO board and probe. (v1.1) [Script]
+ description: Calibrate ORP probe for the AquaPi, an Atlas Scientific EZO board and
+ probe, at 225 mV. (v1.2.2) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/f619b484d63a479004c1d6613b90df1a
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/orp_calibrate_aquapi.yaml
input:
orp_sensor:
name: ORP Sensor
@@ -48,32 +48,40 @@ variables:
orp_selector: !input orp_selector
orp_command: !input orp_command
sequence:
- - choose:
- - conditions:
- - condition: numeric_state
- entity_id: !input orp_sensor
- above: 220
- below: 230
- sequence:
- - service: select.select_option
- metadata: {}
- data:
- option: Calibrate @ 225 mV (WILL RESET CALIBRATION)
- target:
- entity_id: !input orp_selector
- - service: notify.persistent_notification
- data:
- message: ORP - ORP Calibrated for 225 mV
- title: 'ORP Calibration: 225 mV'
- default:
+- choose:
+ - conditions:
+ - condition: numeric_state
+ entity_id: !input orp_sensor
+ above: 210
+ below: 230
+ sequence:
- service: select.select_option
metadata: {}
data:
- option: Check Calibration
+ option: Calibrate @ 225 mV (WILL RESET CALIBRATION)
target:
entity_id: !input orp_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input orp_command
- service: notify.persistent_notification
data:
- message: 'ORP - ORP Calibration is not within range of 225 +/- 5 mV'
- title: 'ORP Calibration: Not in Range'
+ message: ORP - ORP Calibrated for 225 mV
+ title: 'ORP Calibration: 225 mV'
+ default:
+ - service: select.select_option
+ metadata: {}
+ data:
+ option: Check Calibration
+ target:
+ entity_id: !input orp_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input orp_command
+ - service: notify.persistent_notification
+ data:
+ message: ORP - ORP Calibration is not within range of 225 mV (210 - 230 mV)
+ title: 'ORP Calibration: Not in Range'
mode: restart
diff --git a/blueprints/script/TheRealFalseReality/ph_calibrate_aquapi.yaml b/blueprints/script/TheRealFalseReality/ph_calibrate_aquapi.yaml
index 2932c6e..272898d 100644
--- a/blueprints/script/TheRealFalseReality/ph_calibrate_aquapi.yaml
+++ b/blueprints/script/TheRealFalseReality/ph_calibrate_aquapi.yaml
@@ -1,9 +1,9 @@
blueprint:
name: 'Aquarium - AquaPi: Calibrate pH EZO Probe'
description: Calibrate pH probe for the AquaPi, an Atlas Scientific EZO board and
- probe. Calibrate at Mid 7, Low 4 and High 10. [More Info] (v1.1.3) [Script]
+ probe. Calibrate at Mid 7, Low 4 and High 10. [More Info] (v1.1.5) [Script]
domain: script
- source_url: https://gist.github.com/TheRealFalseReality/f965fe88fd8b379fc37142f9376b84e6
+ source_url: https://github.com/TheRealFalseReality/aquapi/blob/main/blueprints/script/TheRealFalseReality/ph_calibrate_aquapi.yaml
input:
ph_sensor:
name: pH Sensor
@@ -60,6 +60,10 @@ sequence:
option: Calibrate @ LOW = 4 (WILL RESET CALIBRATION)
target:
entity_id: !input ph_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ph_command
- service: notify.persistent_notification
data:
message: 'pH Calibrated for LOW - pH: 4. Now continue to MID - pH: 10.'
@@ -76,6 +80,10 @@ sequence:
option: Calibrate @ MID = 7 (WILL RESET CALIBRATION)
target:
entity_id: !input ph_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ph_command
- service: notify.persistent_notification
data:
message: 'pH Calibrated for MID - pH: 7. Now continue to LOW - pH: 4.'
@@ -92,6 +100,10 @@ sequence:
option: Calibrate @ HIGH = 10 (WILL RESET CALIBRATION)
target:
entity_id: !input ph_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ph_command
- service: notify.persistent_notification
data:
message: 'pH Calibrated for HIGH - pH: 10. Now check calibration.'
@@ -103,9 +115,13 @@ sequence:
option: Check Calibration
target:
entity_id: !input ph_selector
+ - delay:
+ milliseconds: 500
+ - service: button.press
+ entity_id: !input ph_command
- service: notify.persistent_notification
data:
- message: 'pH Calibration is not within range of LOW: 4, MID: 7 or HIGH: 10.
+ message: 'pH Calibration is not within range of LOW: 4, MID: 7 or HIGH: 10. (±0.1)
Start with Low solution, then Mid, and finish with High.'
title: 'Calibration: Not in Range'
diff --git a/blueprints/script/TheRealFalseReality/ph_continuous_read.yaml.old b/blueprints/script/TheRealFalseReality/ph_continuous_read.yaml.old
deleted file mode 100644
index 94fb9fe..0000000
--- a/blueprints/script/TheRealFalseReality/ph_continuous_read.yaml.old
+++ /dev/null
@@ -1,35 +0,0 @@
-blueprint:
- name: 'Aquarium - AquaPi: Continuous pH Read'
- description: Read pH probe every second for 60 seconds. [More Info] (v1) [Script]
- domain: script
- source_url: https://gist.github.com/TheRealFalseReality/bf955d41f3783f3c711fd65286b76eca
- input:
- ph_sensor:
- name: pH Sensor
- description: 'pH button to use.
-
- *DEVICENAME pH - Read**'
- selector:
- entity:
- filter:
- - domain:
- - button
- integration: esphome
- multiple: false
-variables:
- ph_sensor: !input ph_sensor
-sequence:
-- repeat:
- sequence:
- - service: button.press
- metadata: {}
- data: {}
- target:
- entity_id: !input ph_sensor
- - delay:
- hours: 0
- minutes: 0
- seconds: 1
- milliseconds: 0
- count: 60
-mode: restart
diff --git a/common/binary_input.yaml b/common/binary_input.yaml
new file mode 100644
index 0000000..2e211be
--- /dev/null
+++ b/common/binary_input.yaml
@@ -0,0 +1,26 @@
+substitutions:
+ binarypin1: "34"
+ binarypin2: "35"
+
+binary_sensor:
+ - platform: gpio
+ id: binary_pin_1
+ name: Binary Sensor 1
+ pin:
+ number: ${binarypin1}
+ inverted: true
+ mode:
+ input: true
+ filters:
+ - delayed_on_off: 30ms
+
+ - platform: gpio
+ id: binary_pin_2
+ name: Binary Sensor 2
+ pin:
+ number: ${binarypin2}
+ inverted: true
+ mode:
+ input: true
+ filters:
+ - delayed_on_off: 30ms
\ No newline at end of file
diff --git a/common/device_base.yaml b/common/device_base.yaml
index 8b4f40d..f173b29 100644
--- a/common/device_base.yaml
+++ b/common/device_base.yaml
@@ -5,8 +5,8 @@ substitutions:
logger: "DEBUG"
# I2C pins
- sdaPin: "21" # yellow
- sclPin: "22" # blue
+ sdaPin: "21" # yellow/TX
+ sclPin: "22" # blue/RX
esphome:
name: "${name}"
@@ -37,7 +37,7 @@ ota:
wifi:
ap:
-
+
web_server:
version: 3
diff --git a/common/device_base_camera.yaml b/common/device_base_camera.yaml
index 71c8bcc..ff0d656 100644
--- a/common/device_base_camera.yaml
+++ b/common/device_base_camera.yaml
@@ -16,15 +16,15 @@ esphome:
on_boot:
then:
- light.turn_on: camera_led
- - delay: 150ms
+ - delay: 500ms
- light.turn_off: camera_led
- - delay: 150ms
+ - delay: 500ms
- light.turn_on: camera_led
- - delay: 150ms
+ - delay: 500ms
- light.turn_off: camera_led
esp32:
- board: esp32dev
+ board: esp32cam
framework:
type: arduino
@@ -46,6 +46,7 @@ wifi:
captive_portal:
web_server:
+ version: 3
improv_serial:
@@ -164,4 +165,4 @@ button:
# - platform: shutdown
# name: "Shutdown"
# disabled_by_default: true
- # id: shutdown_button
\ No newline at end of file
+ # id: shutdown_button
diff --git a/common/ezo_co2.yaml b/common/ezo_co2.yaml
index eb5ed84..9dd4d01 100644
--- a/common/ezo_co2.yaml
+++ b/common/ezo_co2.yaml
@@ -18,7 +18,7 @@ interval:
- button.press: read_co2
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - CO2
# Cardbon Dioxide
- platform: ezo
diff --git a/common/ezo_commands.yaml b/common/ezo_commands.yaml
index 8df7c06..4392315 100644
--- a/common/ezo_commands.yaml
+++ b/common/ezo_commands.yaml
@@ -1,9 +1,9 @@
substitutions:
- # PMP circuit, who's address is 103
- addPMP_default: "103"
- addPMP_alt1: "108"
- addPMP_alt2: "109"
- addPMP_alt3: "110"
+ # PMP circuit, who's default address is 103
+ addPMP_default: "103" #Blue
+ addPMP_alt1: "108" # Waste/Red
+ addPMP_alt2: "109" # Clean/Green
+ addPMP_alt3: "110" #Orange
button:
# Change I2C Address of EZO-PMP
diff --git a/common/ezo_do.yaml b/common/ezo_do.yaml
index 28a7c50..5f03aa7 100644
--- a/common/ezo_do.yaml
+++ b/common/ezo_do.yaml
@@ -10,7 +10,7 @@ substitutions:
# - button.press: send_selected_ph
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - DO
# Dissolved Oxygen
- platform: ezo
diff --git a/common/ezo_ec.yaml b/common/ezo_ec.yaml
index c6e4df5..dde6f07 100644
--- a/common/ezo_ec.yaml
+++ b/common/ezo_ec.yaml
@@ -8,37 +8,37 @@ api:
services:
- service: ec_read_continous
variables:
- time: int
+ seconds: int
then:
- repeat:
- count: !lambda return time;
+ count: !lambda return seconds;
then:
- button.press: read_ec
- delay: 1s
- service: ec_calibrate_dry
then:
- lambda: |-
- id(ec_ezo).send_custom(Cal,dry);
+ id(ec_ezo).send_custom("Cal,dry");
- service: ec_calibrate_low
then:
- lambda: |-
- id(ec_ezo).send_custom(Cal,low,12880);
+ id(ec_ezo).send_custom("Cal,low,12880");
- service: ec_calibrate_high
then:
- lambda: |-
- id(ec_ezo).send_custom(Cal,high,80000);
- - service: ec_calibrate_custom
- variables:
- value: int
- then:
- - lambda: |-
- id(ec_ezo).send_custom(Cal,'{{ value }}');
- - service: ezo_ec_custom_command
- variables:
- command: string
- then:
- - lambda: |-
- id(ec_ezo).send_custom(command);
+ id(ec_ezo).send_custom("Cal,high,80000");
+ # - service: ec_calibrate_custom
+ # variables:
+ # value: int
+ # then:
+ # - lambda: |-
+ # id(ec_ezo).send_custom(Cal,value);
+ # - service: ezo_ec_custom_command
+ # variables:
+ # command: string
+ # then:
+ # - lambda: |-
+ # id(ec_ezo).send_custom('{{ command }}');
esphome:
on_boot:
@@ -54,7 +54,7 @@ interval:
- button.press: read_ec
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - EC
# Conductivity
- platform: ezo
@@ -308,20 +308,20 @@ button:
id(ec_ezo).get_calibration();
}
if (id(select_command_ec).state == "Calibrate @ DRY (WILL RESET CALIBRATION)") {
- id(ec_ezo).send_custom(Cal,dry);
+ id(ec_ezo).send_custom("Cal,dry");
}
if (id(select_command_ec).state == "Calibrate @ LOW = 12880 (WILL RESET CALIBRATION)") {
- id(ec_ezo).send_custom(Cal,low,12880);
+ id(ec_ezo).send_custom("Cal,low,12880");
}
if (id(select_command_ec).state == "Calibrate @ HIGH = 80000 (WILL RESET CALIBRATION)") {
- id(ec_ezo).send_custom(Cal,high,80000);
+ id(ec_ezo).send_custom("Cal,high,80000");
}
if (id(select_command_ec).state == "Calibrate CLEAR (WILL RESET CALIBRATION)") {
id(ec_ezo).clear_calibration();
}
- else {
- id(ec_ezo).send_custom("R");
- }
+ // else {
+ // id(ec_ezo).send_custom("R");
+ // }
select:
- platform: template
diff --git a/common/ezo_hum.yaml b/common/ezo_hum.yaml
index cad9b63..21c9fdc 100644
--- a/common/ezo_hum.yaml
+++ b/common/ezo_hum.yaml
@@ -18,7 +18,7 @@ interval:
- button.press: read_hum
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - HUM
# Humidity
- platform: ezo
diff --git a/common/ezo_orp.yaml b/common/ezo_orp.yaml
index 6f8ab3d..b1127a9 100644
--- a/common/ezo_orp.yaml
+++ b/common/ezo_orp.yaml
@@ -1,5 +1,5 @@
substitutions:
- # ORP circuit, who's address is 99
+ # ORP circuit, who's address is 98
addORP: "98"
update_orp: "60s"
@@ -7,29 +7,29 @@ api:
services:
- service: orp_read_continous
variables:
- time: int
+ seconds: int
then:
- repeat:
- count: !lambda return time;
+ count: !lambda return seconds;
then:
- button.press: read_orp
- delay: 1s
- service: orp_calibrate_225
then:
- lambda: |-
- id(orp_ezo).send_custom(Cal,225);
- - service: orp_calibrate_custom
- variables:
- value: int
- then:
- - lambda: |-
- id(orp_ezo).send_custom(Cal,'{{ value }}');
- - service: ezo_orp_custom_command
- variables:
- command: string
- then:
- - lambda: |-
- id(orp_ezo).send_custom(command);
+ id(orp_ezo).send_custom("Cal,225");
+ # - service: orp_calibrate_custom
+ # variables:
+ # value: int
+ # then:
+ # - lambda: |-
+ # id(orp_ezo).send_custom(Cal,value);
+ # - service: ezo_orp_custom_command
+ # variables:
+ # command: string
+ # then:
+ # - lambda: |-
+ # id(orp_ezo).send_custom(command);
esphome:
on_boot:
@@ -38,7 +38,7 @@ esphome:
- button.press: send_selected_orp
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - ORP
- platform: ezo
icon: mdi:react
@@ -46,7 +46,7 @@ sensor:
id: orp_ezo
address: ${addORP}
unit_of_measurement: mV
- accuracy_decimals: 2
+ accuracy_decimals: 1
update_interval: "${update_orp}"
state_class: "measurement"
device_class: voltage
@@ -123,14 +123,14 @@ button:
id(orp_ezo).get_calibration();
}
if (id(select_command_orp).state == "Calibrate @ 225 mV (WILL RESET CALIBRATION)") {
- id(orp_ezo).send_custom(Cal,225);
+ id(orp_ezo).send_custom("Cal,225");
}
if (id(select_command_orp).state == "Calibrate CLEAR (WILL RESET CALIBRATION)") {
id(orp_ezo).clear_calibration();
}
- else {
- id(orp_ezo).send_custom("R");
- }
+ // else {
+ // id(orp_ezo).send_custom("R");
+ // }
select:
@@ -151,4 +151,4 @@ select:
set_action:
- logger.log:
format: "Chosen option: %s"
- args: ["x.c_str()"]
\ No newline at end of file
+ args: ["x.c_str()"]
diff --git a/common/ezo_ph.yaml b/common/ezo_ph.yaml
index 34e34d4..8de8be4 100644
--- a/common/ezo_ph.yaml
+++ b/common/ezo_ph.yaml
@@ -7,31 +7,31 @@ api:
services:
- service: ph_read_continous
variables:
- time: int
+ seconds: int
then:
- repeat:
- count: !lambda return time;
+ count: !lambda return seconds;
then:
- button.press: read_ph
- delay: 1s
- - service: ph_calibrate_mid
+ - service: ph_calibrate_mid_7
then:
- lambda: |-
id(ph_ezo).set_calibration_point_mid(7.00);
- - service: ph_calibrate_low
+ - service: ph_calibrate_low_4
then:
- lambda: |-
id(ph_ezo).set_calibration_point_low(4.00);
- - service: ph_calibrate_high
+ - service: ph_calibrate_high_10
then:
- lambda: |-
id(ph_ezo).set_calibration_point_high(10.00);
- - service: ezo_ph_custom_command
- variables:
- command: string
- then:
- - lambda: |-
- id(ph_ezo).send_custom(command);
+ # - service: ezo_ph_custom_command
+ # variables:
+ # command: string
+ # then:
+ # - lambda: |-
+ # id(ph_ezo).send_custom('{{ command }}');
esphome:
on_boot:
@@ -40,7 +40,7 @@ esphome:
- button.press: send_selected_ph
sensor:
- # EZO Circuits (yellow - SCL/RX, blue - SDA/TX)
+ # EZO Circuits (SCL/RX, SDA/TX)
# EZO Circuit - pH
- platform: ezo
icon: mdi:ph
@@ -139,9 +139,9 @@ button:
if (id(select_command_ph).state == "Calibrate CLEAR (WILL RESET CALIBRATION)") {
id(ph_ezo).clear_calibration();
}
- else {
- id(ph_ezo).send_custom("R");
- }
+ // else {
+ // id(ph_ezo).send_custom("R");
+ // }
select: