Bonjour,
Je débute dans la fermentation de jus de pomme en cidre, et pour mieux appréhender la fermentation, j’aimerais collecter certaines données pour le suivi.
Lors de la fermentation, le moût dégage du gaz carbonique, gaz qui s’échappe par une bonde anti-sceptique (bonde comme dans une douche ou sous un lavabo, formée par un “bouchon” d’eau qui ne laisse pas passer les insectes ou autres, mais qui permet au gaz en surpression côté fermentation de pousser l’eau jusqu’à pouvoir s’échapper ponctuellement vers l’extérieure réduisant alors la pression).
L’évacuation d’une bulle de gaz provoque une secousse sur la bonde qui s’élève lentement sous l’effet de la pression, puis redescend d’un coup lorsque du gaz s’échappe.
J’ai placé un capteur de vibration sur la bonde, ce qui me permet de collecter les événements de dégazage sous forme de capteur binaire.
J’aimerais transformer cette suite de on/off en fréquence pour suivre l’accélération, ou la décélération de la fermentation.
Je vous décris ci-dessous ce que j’ai fait et en quoi ça ne me satisfait pas, merci de soit m’aider à amélioré ma configuration, soit de m’orienter sur une autre méthode plus pertinente :
- J’ai créé un compteur journalier de basculement via “history_stats”
- platform: history_stats
name: fermentation 01 flips
entity_id: binary_sensor.0x00158d00039dc4fc_vibration
state: "off"
type: count
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
- J’ai créé (inutilement peut-être, c’est une copie de mon compteur d’eau de pluie) un compteur basé sur le capteur précédant
- sensor:
- name: Fermentation today
state_class: total_increasing
unique_id: fermentation_today
state: "{{ states('sensor.fermentation_01_flips') | int(0) }}"
availability: "{{ (states('sensor.fermentation_01_flips') not in ('unknown', 'unavailable')) }}"
- J’ai créé un “trend” sur ce compteur
- platform: trend
sensors:
vibration_01_trend:
entity_id: sensor.fermentation_today
max_samples: 2
- J’ai créé un capteur qui affiche le “gradient” de ce “trend” ramené à l’heure
- sensor:
- name: Fermentation intensity
unit_of_measurement: /h
state_class: measurement
unique_id: fermentation_per_hour
state: >-
{% set value_hour = ((state_attr('binary_sensor.vibration_01_trend', 'gradient') | float(0)) * 3600) | round(1, 'floor') %}
{% if value_hour >= 0 %}
{{ value_hour }}
{% else %}
{{ 0 }}
{% endif %}
L’inconvénient de cette méthode, c’est que j’ai une « fréquence » de basculement déterminée sur le temps passé entre les 2 derniers évènements, mais comme la position de la bonde varie un peu à chaque échappement, la quantité de gaz qui arrive à s’échapper n’est pas toujours strictement la même, il arrive que 2 évènements se suivent de façon rapproché, ou au contraire plus éloigné, ce qui ponctuellement affiche des valeurs peu pertinentes. J’aimerai donc une moyenne et pas une valeur instantanée.
Dans l’idéal, j’aimerais plutôt que de convertir le temps entre 2 basculements consécutifs en nombre de basculements par heure avoir plutôt un compteur glissant sur 1h.
Merci pour votre aide.