homeassistant-config/esphome/geigercounter.yaml

101 lines
2.6 KiB
YAML

substitutions:
name: "geigercounter"
friendly_name: "Geigerzähler"
esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: false
project:
name: sensor.radiation
version: "1.0"
min_version: 2022.11.0
esp32:
board: nodemcu-32s
framework:
type: arduino
wifi:
ssid: "Voltage-legacy"
password: !secret voltage_legacy_psk
use_address: ${name}.home
power_save_mode: high
fast_connect: on
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Geigercounter Fallback Hotspot"
password: !secret fallback_psk
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: !secret apikey
ota:
password: !secret ota
spi:
clk_pin: 18
mosi_pin: 21
display:
- platform: max7219
cs_pin: 16
num_chips: 1
lambda: |-
if(id(sun_state).has_state()) {
// dim 7 segment's LED brighness at nighttime
if (id(sun_state).state == "below_horizon") {
it.set_intensity(2);
} else {
it.set_intensity(12);
}
}
it.print(" ");
it.printf("%2.2f uSh", id(dose_meter).state);
# Here we calc and include to the firmware a power and doze values of ionizing radiation as sensor outputs
sensor:
- platform: pulse_counter
pin: 19
unit_of_measurement: "µSv/h"
name: "Radioaktive Strahlungsleistung"
icon: "mdi:radioactive"
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
# Hardware counter alows only 13us debounce, so we set it OFF:
use_pcnt: False
# When hw counter is OFF then we may set our filter time to SBM20 190 us Deadtime value or any other (also in microseconds):
internal_filter: 190us
update_interval: 60s
accuracy_decimals: 3
id: dose_meter
filters:
- sliding_window_moving_average: # 5-minutes moving average (MA5) here
window_size: 5
send_every: 1
- multiply: 0.0057 # SBM20 tube conversion factor of pulses into µSv/Hour
- platform: integration
name: "Gesamte Strahlungsdosis"
unit_of_measurement: "µSv"
sensor: dose_meter # link entity id to the pulse_counter values above
icon: "mdi:radioactive"
accuracy_decimals: 5
time_unit: min # integrate values every next minute
filters:
# obtained dose. Converting from mkSv/hour into mkSv/minute: [mkSv/h / 60] OR [mkSv/h * 0.0166666667].
# if my_dose_meter in CPM, then [0.0054 / 60 minutes] = 0.00009; so CPM * 0.00009 = dose every next minute, mkSv.
- multiply: 0.0166666667
text_sensor:
- platform: homeassistant
entity_id: sun.sun
id: sun_state