Me gustaría compartir cómo crear un sensor para monitorear el nivel de gasoil en un depósito. Esto nos permitirá tener una visualización del nivel en Home Assistant y recibir notificaciones a través de Telegram cuando alcance ciertos niveles críticos. Es importante tener en cuenta que este sensor no es extremadamente preciso, ya que requeriría un ajuste minucioso del sensor de ultrasonidos y mediciones exactas de la ubicación del sensor y del depósito. Sin embargo, para tener una estimación del nivel restante y recibir alertas cuando esté bajo, cumple perfectamente su función, al menos en mi caso. Vamos al grano. Necesitarás un Nodemcu ESP8266 o similar, y un sensor de ultrasonidos HC-SR04. Podrás encontrar estos componentes en cualquier pagina por precios entre los 4-10€ sin mayor problema. Vamos a utilizar esphome para flashear el Nodemcu si no tienes claro este tema consulta en la web hay tutoriales para hacerlo. Este es el código de los sensores esphome decir que yo he aprovechado el esp y le he metido también un sensor de temperatura y un pir de movimiento para abrir la luz del almacén, pero bueno si no queréis meter eso utilizáis solo la última parte del código el de ultrasonic .
1 2 3 |
binary_sensor:</code> <code> - platform: gpio</code> <code> pin: D5</code> <code> name: "Sensor Movimiento Almacén"</code> <code> device_class: motion</code> <code>i2c:</code> <code> sda: D2</code> <code> scl: D1</code> <code>sensor:</code> <code> - platform: bme280</code> <code> temperature:</code> <code> name: "Temperatura Almacén"</code> <code> oversampling: 16x</code> <code> pressure:</code> <code> name: "Presión Almacén"</code> <code> humidity:</code> <code> name: "Humedad Almacén"</code> <code> address: 0x76</code> <code> update_interval: 60s</code> <code> - platform: ultrasonic</code> <code> trigger_pin: D7</code> <code> echo_pin: D6</code> <code> update_interval: 86400s name: "Nivel Gasoil" |
“El update interval lo tengo en 86400s que seria el equivalente a un dia, los primeros días lo tenia cada 60s pero me di cuenta que de madrugada cuando las temperaturas bajan mucho, no se si es, que con el frio se crea algún tipo de atmosfera o que se yo (no soy químico), pero a esas horas de madrugada y asta que subía la temperatura casi a mediodía me daba señal de lleno el depósito. Así que como no es una cosa que necesite al momento lo dejo así, que me lo comprueba solo después de comer, eso ya cada uno puede hacer sus pruebas”
La conexión con el sensor nos tenemos que fijar en conectar el D7 en trigger y echo en el D6, el esp, lo alimento con un cargador típico de móvil, en el cual el cable lo he pelado, para poder sacar dos cables de alimentación uno para alimentar el esp y otro para alimentar el sensor SR04 ya que no se recomienda alimentar desde las salidas el esp. Hay que alimentarlo directo.
Mi deposito tiene varios tapones uno en una punta (es el que utilizan para llenar) y un par en el medio en horizontal, en uno de esos e echo un agujerito para sacar los cables del sensor y he pegado el señor con silicona caliente, sin tapar los sensores (obvio) adjunto un par de fotos.
Bien con todo montado si ya tenéis echa la integración de esphome en HA y este todo ok, ya os deberían de salir los sensores en ha. Perfecto, ahora vamos a configurar el sensor en Home Assistant para mostrar el nivel de gasoil. Dado que el sensor de ultrasonidos mide la distancia, mostrará la distancia desde el sensor hasta el gasoil. Cuanto mayor sea la distancia, menos gasoil queda en el tanque. Para configurarlo, necesitarás medir la altura del tanque hasta donde tengas instalado el sensor. El valor máximo corresponderá a cuando el tanque esté vacío, y el mínimo cuando esté lleno (en mi caso, he restado 20 cm ya que nunca lo lleno hasta el tope). Bien teniendo esas medidas os paso los códigos para HA. Utilizaremos una custom card para mostrar la barra. Y un platform sensor para convertir la distancia en centímetros a un % el cual debo todo el mérito a @Jose y @Mig77angel del grupo de Telegram que sería este:
1 |
-<code> platform: template</code> <code> sensors:</code> <code> nivel_gasoil_porcentaje:</code> <code> value_template: "{{ ( 100 - ( ( (states('sensor.nivel_gasoil')|float) - 0.2 ) / ( 1.25 - 0.2 ) ) * 100 ) | int }}"</code> <code> unit_of_measurement: "%" |
Y por ultimo la card de lovelace:
1 2 3 |
direction: right</code> <code>entity: sensor.nivel_gasoil_porcentaje</code> <code>max: 100</code> <code>min: 0</code> <code>ow_value: false</code> <code>severity:</code> <code> - color: '#33FF35'</code> <code> value: 100</code> <code> - color: '#FFAE33'</code> <code> value: 50</code> <code> - color: '#F90C06'</code> <code> value: 0</code> <code>title: Nivell Gasoil</code> <code>type: 'custom:bar-card' |