Advertisement
Guest User

Untitled

a guest
Aug 30th, 2022
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 4.79 KB | None | 0 0
  1. substitutions:
  2.   device_name: "{{ device.device_name }}"
  3.   mqtt_path: "{{ device.mqtt.path }}"
  4.   mqtt_prefix: ${mqtt_path}/${device_name}
  5.   node_name: "{{ device.name.long }}"
  6.   mqtt_broker: "{{ general_mqtt_config.ip }}"
  7.   template_version: "3"
  8.   human_readable_name: "{{ device.name.long | replace('ö', 'oe') | replace('ü', 'ue')}}"
  9.  
  10.   # Secrets
  11.   auth_password: !secret web_auth_password
  12.   mqtt_user: "{{ device.mqtt.username }}"
  13.   mqtt_password: {{ device.mqtt.password }}
  14.   mqtt_ssl_fingerprint: !secret mqtt_ssl_fingerprint
  15.   mqtt_topic_last_value: ${mqtt_prefix}/last_value
  16.  
  17. esphome:
  18.   name: ${device_name}
  19.  
  20. esp32:
  21.   board: az-delivery-devkit-v4
  22.   framework:
  23.     type: arduino
  24.  
  25. # Enable logging
  26. logger:
  27. ota:
  28.   password: ${auth_password}
  29.  
  30. wifi:
  31.   ssid: !secret wifi_ssid
  32.   password: !secret wifi_password
  33.  
  34.  
  35.   ap:
  36.     ssid: "${device_name} Fallback"
  37.     password: !secret fallback_hotspot_password
  38.  
  39. mdns:
  40.   disabled: true
  41.  
  42. captive_portal:
  43. web_server:
  44.   port: 80
  45.   auth:
  46.     username: admin
  47.     password: ${auth_password}
  48.  
  49. time:
  50.   - platform: sntp
  51.     id: sntp_time
  52.     servers:
  53.      - "192.168.20.1"
  54.  
  55. mqtt:
  56.   broker: ${mqtt_broker}
  57. #  port: 8883  # SSL
  58.   port: 8884
  59.   username: ${mqtt_user}
  60.   password: ${mqtt_password}
  61.   discovery: true
  62.   discovery_retain: true
  63.   discovery_unique_id_generator: mac
  64.   discovery_object_id_generator: device_name
  65.   topic_prefix: ${mqtt_prefix}
  66. #  ssl_fingerprints:
  67. #    - ${mqtt_ssl_fingerprint}
  68.   birth_message:
  69.     topic: ${mqtt_prefix}/status
  70.     payload: online
  71.     retain: true
  72.   will_message:
  73.     topic: ${mqtt_prefix}/status
  74.     payload: offline
  75.     retain: true
  76.   on_message:
  77.     - topic: ${mqtt_topic_last_value}
  78.       then:
  79.         - globals.set:
  80.             id: last_value
  81.             value: !lambda |-
  82.                 auto value = parse_number<float>(x);
  83.                 if(value.has_value()) {
  84.                   ESP_LOGI("main", "Using last value from MQTT: %f", value.value());
  85.                   return value.value();
  86.                 }
  87.                 ESP_LOGE("main", "Last value from MQTT couldn't be parsed: %s", x.c_str());
  88.                 return 0.0f;
  89.  
  90. globals:
  91.   - id: last_value
  92.     type: float
  93.     restore_value: no
  94.     initial_value: NAN
  95.  
  96. switch:
  97.   - platform: restart
  98.     name: "${human_readable_name} reset"
  99.     id: reset
  100.  
  101. text_sensor:
  102.  # https://esphome.io/components/text_sensor/version.html
  103.   - platform: version
  104.     name: version
  105.  
  106.   - platform: wifi_info
  107.     ip_address:
  108.       name: "${human_readable_name} ip_address"
  109.     ssid:
  110.       name: "ssid"
  111.     bssid:
  112.       name: "bssid"
  113.     mac_address:
  114.       name: "mac_address"
  115.     scan_results:
  116.       name: "scan_results"
  117.  
  118.   - platform: template
  119.     id: "template_version"
  120.     name: "template_version"
  121.     lambda: |-
  122.       return {"${template_version}"};
  123.     update_interval: 300s
  124.  
  125.   - platform: template
  126.     id: "human_readable_name"
  127.     name: "human_readable_name"
  128.     lambda: |-
  129.       return {"${human_readable_name}"};
  130.     update_interval: 300s
  131.  
  132. binary_sensor:
  133.   - platform: gpio
  134.     pin: 14
  135.     name: "Raw Impulse"
  136.     id: "raw_impulse"
  137.     internal: true
  138.  
  139. sensor:
  140.   - platform: pulse_counter
  141.     pin: 14
  142.     name: "Gas Impuls"
  143.     id: "gas_delta_60"
  144.     device_class: "gas"
  145.     state_class: "total"
  146.     icon: "mdi:fire"
  147.     unit_of_measurement: "m³"
  148.     accuracy_decimals: 2
  149.     update_interval: 60s
  150.     filters:
  151.       - debounce: 1.0s
  152.       - multiply: 0.01
  153.     total:
  154.       name: "Total m^3"
  155.       id: "total_m3"
  156.       device_class: "gas"
  157.       state_class: "total"
  158.       icon: "mdi:fire"
  159.       unit_of_measurement: "m³"
  160.       accuracy_decimals: 2
  161.       filters:
  162.         - debounce: 1.0s
  163.         - multiply: 0.01
  164.         - lambda: |-
  165.             auto restored_value = id(last_value);
  166.             if(isnan(restored_value)) {
  167.               restored_value = 0.0f;
  168.             }
  169.            
  170.             ESP_LOGI("main", "Adding last_value %f to total value", restored_value);
  171.            
  172.             return restored_value + x;
  173.         - filter_out: 0.0
  174.       on_value:
  175.         then:
  176.           - mqtt.publish:
  177.               topic: ${mqtt_topic_last_value}
  178.               payload: !lambda "return to_string(x);"
  179.               retain: true
  180.  
  181. #  - platform: total_daily_energy
  182. #    name: "Total m^3 (daily)"
  183. #    id: "total_m3_daily"
  184. #    power_id: total_m3
  185. #    device_class: "gas"
  186. #    state_class: "total"
  187. #    unit_of_measurement: "m³"
  188.  
  189.   # https://esphome.io/components/sensor/wifi_signal.html
  190.   - platform: wifi_signal
  191.     name: "${human_readable_name} wifi_signal"
  192.     update_interval: 60s
  193.  
  194.   # https://esphome.io/components/sensor/uptime.html
  195.   - platform: uptime
  196.     name: "${human_readable_name} uptime"
  197.     unit_of_measurement: seconds
  198.     filters:
  199.       - lambda: return x;
  200.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement