-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaquadirector.yaml.example
More file actions
136 lines (121 loc) · 3.97 KB
/
Copy pathaquadirector.yaml.example
File metadata and controls
136 lines (121 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Aquadirector configuration
# Copy to ~/.config/aquadirector/aquadirector.yaml
network:
subnet: "192.168.1.0/24"
scan_threads: 64
default_timeout: 20s
retry_max: 5
retry_delay: 2s
# Known devices (populate manually or via `aquadirector discover --save`)
devices:
- name: "ReefATO+"
ip: "192.168.1.10"
type: "RSATO+"
- name: "ReefLED60"
ip: "192.168.1.11"
type: "RSLED60"
# Kactoily 7-in-1 water sensor (Tuya protocol v3.5)
# Get device_id and local_key from the Tuya IoT Developer Platform
# (https://iot.tuya.com/) after linking your Kactoily/Smart Life app account.
sensor:
ip: "192.168.1.15"
device_id: "" # Tuya device ID (22-char string from Tuya IoT Platform)
local_key: "" # Tuya local key (16-char string from Tuya IoT Platform)
version: "3.5" # Tuya protocol version
poll_interval: 60s
# Calibration offsets (added to raw sensor readings).
# Use a reference instrument (refractometer, pH meter) to determine offsets.
# calibration:
# sg: 0.020 # if sensor reads 1.005 but refractometer reads 1.025
# ph: 0.0
# salinity: 0.0
# temperature: 0.0
# tds: 0
# ec: 0
# orp: 0
# Eheim autofeeder+ (REST API with Digest auth via Eheim Digital hub)
# The hub is discovered via mDNS at eheimdigital.local.
# MAC is auto-detected if only one feeder is on the mesh.
feeder:
host: "eheimdigital.local" # Hub address (mDNS hostname or IP)
# mac: "" # Feeder MAC address (auto-detected if omitted)
username: "api" # Digest auth username
password: "admin" # Digest auth password (change via Eheim app)
# Red Sea cloud API (optional)
# Enables 7-day notification history and ATO temperature range on the dashboard.
# Requires a Red Sea / ReefBeat account. client_credentials is the Base64-encoded
# client_id:client_secret from the ReefBeat mobile app (capture via HTTPS proxy).
# cloud:
# username: "your@email.com"
# password: "yourpassword"
# client_credentials: "base64encodedclientidandsecret"
# Alert thresholds
alerts:
enabled: true
rules:
- name: "temperature_high"
source: "ato"
metric: "temperature"
operator: ">"
threshold: 27.0
severity: "critical"
message: "Tank temperature {{.Value}}C exceeds {{.Threshold}}C"
- name: "temperature_low"
source: "ato"
metric: "temperature"
operator: "<"
threshold: 24.0
severity: "warning"
message: "Tank temperature dropped to {{.Value}}C"
- name: "leak_detected"
source: "ato"
metric: "leak_sensor.status"
operator: "!="
threshold: "dry"
severity: "critical"
message: "Leak sensor triggered: {{.Value}}"
- name: "water_level_low"
source: "ato"
metric: "volume_left"
operator: "<"
threshold: 500
severity: "warning"
message: "ATO reservoir low: {{.Value}}ml remaining"
- name: "ph_high"
source: "sensor"
metric: "ph"
operator: ">"
threshold: 8.4
severity: "warning"
message: "pH is {{.Value}} (above {{.Threshold}})"
- name: "ph_low"
source: "sensor"
metric: "ph"
operator: "<"
threshold: 7.8
severity: "warning"
message: "pH is {{.Value}} (below {{.Threshold}})"
- name: "salinity_high"
source: "sensor"
metric: "salinity"
operator: ">"
threshold: 37.0
severity: "warning"
message: "Salinity is {{.Value}} ppt"
- name: "feeder_drum_low"
source: "feeder"
metric: "drum_state"
operator: ">="
threshold: 2
severity: "warning"
message: "Autofeeder drum is low (state={{.Value}})"
notifications:
- type: "stdout"
severity_min: "info"
# - type: "webhook"
# severity_min: "warning"
# url: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# method: "POST"
# headers:
# Content-Type: "application/json"
# body_template: '{"text": "aquadirector: {{.Name}} - {{.Message}}"}'