Il y a 9 heures
si ca peut interesser ....
soit pour faire du delestage ou tout simplement suivre les consos de qqs appareil
j ai assemblé un petit code pour esphome
il y a 4 entrées adc pour le moment sur les 6 possible mais vous pourrez ajuster le nombre...
faudrait que j importe aussi en plus de la tention le cosphy depuis l esp du routeur ca suivra plus tard
le code fonctione et est integrable a la carte energie ha
par contre sous cette forme il y aura certainement des problemes de tabulation.
je vais demander a andré si je peu et comment deposer le fichier yaml
####################code acs712##########################
esphome:
name: enfin
friendly_name: enfin
esp32:
board: esp32dev
framework:
type: arduino
# === LOGGING ===
logger:
# === OTA & API ===
api:
encryption:
key: "3jEhUZsfSYUWix+PoQeJPsJxEqQFeFeqTWEiY8FR87U="
ota:
- platform: esphome
password: "7ae9573fbc8fbd858728ae6764ec0fd9"
# === WIFI ===
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Enfin Fallback Hotspot"
password: "xRQ53X4dpqnR"
# === MQTT : récupère la tension secteur du routeur ===
mqtt:
broker: 192.168.1.50 # <-- à remplacer par l'adresse de ton broker
username: !secret mqtt_user
password: !secret mqtt_password
# === TEMPS ===
time:
- platform: sntp
id: sntp_time
# === LIBRAIRIE ACS712 ===
external_components:
- source:
type: git
url: https://github.com/marianomd/acs712-esphome
components: [acs712]
# === CAPTEURS ===
sensor:
# === TENSION REÇUE VIA MQTT ===
- platform: mqtt_subscribe
name: "Tension Secteur Routeur"
id: line_voltage_remote
topic: routeur_rms/routeur_rms_tension_m
unit_of_measurement: "V"
accuracy_decimals: 1
device_class: voltage
state_class: measurement
entity_category: diagnostic
icon: mdi:flash
filters:
- clamp:
min_value: 100
max_value: 260
# === Offsets pour calibrage ===
- platform: template
id: acs_cumulus_offset
internal: true
- platform: template
id: acs_frigo_offset
internal: true
- platform: template
id: acs_plant_offset
internal: true
- platform: template
id: acs_lavevaisselle_offset
internal: true
# === CUMULUS ===
- platform: acs712
id: acs_cumulus
pin: 35
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Cumulus Courant"
id: current_cumulus
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Cumulus Puissance"
id: power_cumulus
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Cumulus Journalière"
id: energy_cumulus_day
power_id: power_cumulus
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Cumulus Totale"
sensor: power_cumulus
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === FRIGO ===
- platform: acs712
id: acs_frigo
pin: 36
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Frigo Courant"
id: current_frigo
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Frigo Puissance"
id: power_frigo
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Frigo Journalière"
id: energy_frigo_day
power_id: power_frigo
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Frigo Totale"
sensor: power_frigo
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === PLANT ===
- platform: acs712
id: acs_plant
pin: 34
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Plant Courant"
id: current_plant
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Plant Puissance"
id: power_plant
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Plant Journalière"
id: energy_plant_day
power_id: power_plant
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Plant Totale"
sensor: power_plant
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === LAVE-VAISSELLE ===
- platform: acs712
id: acs_lavevaisselle
pin: 39
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Lave-Vaisselle Courant"
id: current_lavevaisselle
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Lave-Vaisselle Puissance"
id: power_lavevaisselle
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Lave-Vaisselle Journalière"
id: energy_lavevaisselle_day
power_id: power_lavevaisselle
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Lave-Vaisselle Totale"
sensor: power_lavevaisselle
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === TOTAL GLOBAL ===
- platform: template
name: "Énergie Totale"
id: energy_total
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
update_interval: 10s
lambda: |-
return (
id(energy_cumulus_day).state +
id(energy_frigo_day).state +
id(energy_plant_day).state +
id(energy_lavevaisselle_day).state
);
# === CALIBRAGE AUTOMATIQUE ===
interval:
- interval: 5min
then:
- lambda: |-
id(acs_cumulus_offset).publish_state(id(current_cumulus).state);
id(acs_frigo_offset).publish_state(id(current_frigo).state);
id(acs_plant_offset).publish_state(id(current_plant).state);
id(acs_lavevaisselle_offset).publish_state(id(current_lavevaisselle).state);
ESP_LOGI("calibration", "Calibration automatique mise à jour.");
# === PORTAIL CAPTIF ===
captive_portal:
soit pour faire du delestage ou tout simplement suivre les consos de qqs appareil
j ai assemblé un petit code pour esphome
il y a 4 entrées adc pour le moment sur les 6 possible mais vous pourrez ajuster le nombre...
faudrait que j importe aussi en plus de la tention le cosphy depuis l esp du routeur ca suivra plus tard
le code fonctione et est integrable a la carte energie ha
par contre sous cette forme il y aura certainement des problemes de tabulation.
je vais demander a andré si je peu et comment deposer le fichier yaml
####################code acs712##########################
esphome:
name: enfin
friendly_name: enfin
esp32:
board: esp32dev
framework:
type: arduino
# === LOGGING ===
logger:
# === OTA & API ===
api:
encryption:
key: "3jEhUZsfSYUWix+PoQeJPsJxEqQFeFeqTWEiY8FR87U="
ota:
- platform: esphome
password: "7ae9573fbc8fbd858728ae6764ec0fd9"
# === WIFI ===
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Enfin Fallback Hotspot"
password: "xRQ53X4dpqnR"
# === MQTT : récupère la tension secteur du routeur ===
mqtt:
broker: 192.168.1.50 # <-- à remplacer par l'adresse de ton broker
username: !secret mqtt_user
password: !secret mqtt_password
# === TEMPS ===
time:
- platform: sntp
id: sntp_time
# === LIBRAIRIE ACS712 ===
external_components:
- source:
type: git
url: https://github.com/marianomd/acs712-esphome
components: [acs712]
# === CAPTEURS ===
sensor:
# === TENSION REÇUE VIA MQTT ===
- platform: mqtt_subscribe
name: "Tension Secteur Routeur"
id: line_voltage_remote
topic: routeur_rms/routeur_rms_tension_m
unit_of_measurement: "V"
accuracy_decimals: 1
device_class: voltage
state_class: measurement
entity_category: diagnostic
icon: mdi:flash
filters:
- clamp:
min_value: 100
max_value: 260
# === Offsets pour calibrage ===
- platform: template
id: acs_cumulus_offset
internal: true
- platform: template
id: acs_frigo_offset
internal: true
- platform: template
id: acs_plant_offset
internal: true
- platform: template
id: acs_lavevaisselle_offset
internal: true
# === CUMULUS ===
- platform: acs712
id: acs_cumulus
pin: 35
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Cumulus Courant"
id: current_cumulus
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Cumulus Puissance"
id: power_cumulus
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Cumulus Journalière"
id: energy_cumulus_day
power_id: power_cumulus
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Cumulus Totale"
sensor: power_cumulus
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === FRIGO ===
- platform: acs712
id: acs_frigo
pin: 36
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Frigo Courant"
id: current_frigo
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Frigo Puissance"
id: power_frigo
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Frigo Journalière"
id: energy_frigo_day
power_id: power_frigo
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Frigo Totale"
sensor: power_frigo
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === PLANT ===
- platform: acs712
id: acs_plant
pin: 34
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Plant Courant"
id: current_plant
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Plant Puissance"
id: power_plant
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Plant Journalière"
id: energy_plant_day
power_id: power_plant
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Plant Totale"
sensor: power_plant
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === LAVE-VAISSELLE ===
- platform: acs712
id: acs_lavevaisselle
pin: 39
adc_bits: 4095
voltage: 5
mv_per_amp: 100
line_voltage: 230
noisemV: 21
current_sensor:
name: "Lave-Vaisselle Courant"
id: current_lavevaisselle
unit_of_measurement: "A"
device_class: current
state_class: measurement
power_sensor:
name: "Lave-Vaisselle Puissance"
id: power_lavevaisselle
unit_of_measurement: "W"
device_class: power
state_class: measurement
filters:
- lambda: |-
if (id(line_voltage_remote).has_state()) {
return x * id(line_voltage_remote).state / 230.0;
} else {
return x;
}
- platform: total_daily_energy
name: "Énergie Lave-Vaisselle Journalière"
id: energy_lavevaisselle_day
power_id: power_lavevaisselle
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: integration
name: "Énergie Lave-Vaisselle Totale"
sensor: power_lavevaisselle
time_unit: h
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
integration_method: trapezoid
# === TOTAL GLOBAL ===
- platform: template
name: "Énergie Totale"
id: energy_total
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
accuracy_decimals: 3
update_interval: 10s
lambda: |-
return (
id(energy_cumulus_day).state +
id(energy_frigo_day).state +
id(energy_plant_day).state +
id(energy_lavevaisselle_day).state
);
# === CALIBRAGE AUTOMATIQUE ===
interval:
- interval: 5min
then:
- lambda: |-
id(acs_cumulus_offset).publish_state(id(current_cumulus).state);
id(acs_frigo_offset).publish_state(id(current_frigo).state);
id(acs_plant_offset).publish_state(id(current_plant).state);
id(acs_lavevaisselle_offset).publish_state(id(current_lavevaisselle).state);
ESP_LOGI("calibration", "Calibration automatique mise à jour.");
# === PORTAIL CAPTIF ===
captive_portal:
