diff --git a/esphome_firmware/weatherstation.yml b/esphome_firmware/weatherstation.yml new file mode 100644 index 0000000..61f0e38 --- /dev/null +++ b/esphome_firmware/weatherstation.yml @@ -0,0 +1,146 @@ +esphome: + name: weatherstation + platform: ESP8266 + board: d1_mini + +i2c: + - id: bus_a + sda: 4 # D2 + scl: 5 # D1 + scan: true + +apds9960: + address: 0x39 + update_interval: 300s + +sensor: + # + #################### wind sensor + - platform: pulse_counter + pin: + # pin D8 + number: GPIO15 + mode: INPUT_PULLUP # TODO check if required + unit_of_measurement: 'm/s' ##change to m/s if metric + name: 'wind_speed' + icon: 'mdi:weather-windy' + id: my_wind + count_mode: + rising_edge: DISABLE + falling_edge: INCREMENT + internal_filter: 50us + update_interval: 300s + #rotations_per_sec = pulses/2/60 + #circ_m=0.09*2*3.14 = 0.5652 + #mps = 1.18*circ_m*rotations_per_sec + #mps = 1.18*0.5652/2/60 =0,0055578 + filters: + - multiply: 0.0055578 #use for m/s + # - multiply: 2.237 #m/s to mph + # - sliding_window_moving_average: + # window_size: 4 + # send_every: 1 + #- multiply: 0.04973 #1.492mph switch to close 1/sec per spec, pulse/sec (/60/2)*1.492 + #- multiply: 0.0124327986 #m/s * mph conversion + + #################### apds9960 sensor i2c + - platform: apds9960 + type: CLEAR + name: "APDS9960_clear_channel" + + - platform: bme280 + temperature: + name: "BME280_temperature" + id: bme280_temperature + pressure: + name: "BME280_ressure" + id: bme280_pressure + humidity: + name: "BME280 Relative Humidity" + id: bme280_humidity + address: 0x76 + update_interval: 300s + + - platform: template + name: "altitude" + lambda: |- + const float STANDARD_SEA_LEVEL_PRESSURE = 1013.25; //in hPa, see note + return ((id(bme280_temperature).state + 273.15) / 0.0065) * + (powf((STANDARD_SEA_LEVEL_PRESSURE / id(bme280_pressure).state), 0.190234) - 1); // in meter + update_interval: 300s + icon: 'mdi:signal' + unit_of_measurement: 'm' + + - platform: template + name: "absolute_humidity" + lambda: |- + const float mw = 18.01534; // molar mass of water g/mol + const float r = 8.31447215; // Universal gas constant J/mol/K + return (6.112 * powf(2.718281828, (17.67 * id(bme280_temperature).state) / + (id(bme280_temperature).state + 243.5)) * id(bme280_humidity).state * mw) / + ((273.15 + id(bme280_temperature).state) * r); // in grams/m^3 + accuracy_decimals: 2 + update_interval: 300s + icon: 'mdi:water' + unit_of_measurement: 'g/m³' + + - platform: template + name: "dew_point" + lambda: |- + return (243.5*(log(id(bme280_humidity).state/100)+((17.67*id(bme280_temperature).state)/ + (243.5+id(bme280_temperature).state)))/(17.67-log(id(bme280_humidity).state/100)- + ((17.67*id(bme280_temperature).state)/(243.5+id(bme280_temperature).state)))); + unit_of_measurement: °C + update_interval: 300s + icon: 'mdi:thermometer-alert' + + # battery power adc + - platform: adc + pin: A0 + name: "battery_power" + update_interval: 300s + +binary_sensor: + # battery charged pin + - platform: gpio + pin: + number: 12 # D6 + mode: + input: true + pullup: false + name: "battery_charged" + + # battery charging pin + - platform: gpio + pin: + number: 14 # D5 + mode: + input: true + pullup: false + name: "battery_charging" + +time: + - platform: sntp + id: my_time + +# Enable logging +logger: + +# Enable Home Assistant API +api: + +ota: + password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" + +wifi: + ssid: UPC4556888 + password: emmydhvZ4faw + manual_ip: + # Set this to the IP of the ESP + static_ip: 192.168.0.91 + # Set this to the IP address of the router. Often ends with .1 + gateway: 192.168.0.1 + # The subnet of the network. 255.255.255.0 works for most home networks. + subnet: 255.255.255.0 + +captive_portal: