Hello a tous !
Pour commencer meilleurs voeux a tous
Je souhaiterai récupérer le port Rx d’un sonoff dual R2, initialement prévu pour le formatage vers tasmota ou esphome pour brancher un pitinfo via esphome pour récupérer les infos du compteur.
Mais cela ne marche pas … Après des recherches j’ai trouvé que c’était le port GPIO3 mais aucune info ne remonte.
Je viens d’essayer avec un esp8266 les infos remontent correctement.
J’ai vu aussi sur internet que certains avais réussi à brancher un DHT22 sur ces ports mais via tasmota et je préférai rester sur esphome.
Est-ce que quelqu’un a deja eu le cas sur ce sonoff ?
Merci d’avance
vincen
Janvier 3, 2024, 4:36
2
Attention les GPIO des ESP ne peuvent pas être utilisés directement comme port série car ce ne sont pas les bons niveaux logiques ! Il faut un circuit adaptateur entre les deux…
Peux-tu partager aussi le code ESPHome que tu as essayé ?
Aïe … Ça arrange pas mes affaires ahah
Merci de la réponse et voici le code :
esphome:
name: tic
comment: TIC
esp8266:
board: esp01_1m
# Enable logging
logger:
baud_rate: 0
level: DEBUG
esp8266_store_log_strings_in_flash: False
# Enable Home Assistant API
api:
encryption:
key: "***************************"
ota:
password: "************************"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Tic Fallback Hotspot"
password: "3ZZHIgWX7IuL"
captive_portal:
switch:
- platform: gpio
name: "Contact 2"
pin: GPIO05
id: relay2
- platform: shutdown
name: "Eteindre"
- platform: restart
name: "Redémarrer"
status_led:
pin:
number: GPIO13
inverted: yes
uart:
id: uart_bus
rx_pin: GPIO3 # Pin Rx
baud_rate: 1200
parity: EVEN
data_bits: 7
binary_sensor:
- platform: status
name: "Teleinfo Status"
teleinfo:
id : myteleinfo
update_interval: 30s
historical_mode: true
text_sensor:
- platform: template
name: "Linky Uptime"
id: uptime_human
icon: mdi:clock-start
- platform: wifi_info
ip_address:
name: "Esp Linky Local IP"
ssid:
name: "Esp Linky SSID"
- platform: teleinfo
tag_name: "OPTARIF"
name: "Linky optarif"
teleinfo_id: myteleinfo
- platform: teleinfo
tag_name: "PTEC"
name: "Linky Tarif en cours"
icon: mdi:currency-eur
button:
- platform: restart
name: "Esp Linky Restart"
- platform: shutdown
name: "Esp Linky Shutdown"
- platform: safe_mode
name: "Esp Linky Safe Mode"
sensor:
- platform: wifi_signal
name: "Esp Linky WiFi Signal"
update_interval: 300s
#Linky Heure Creuse
- platform: teleinfo
tag_name: "HCHC"
name: "Linky HC"
teleinfo_id: myteleinfo
state_class: "measurement"
device_class: "energy"
unit_of_measurement: "Wh"
#Linky Heure Creuse KWh
- platform: teleinfo
tag_name: "HCHC"
name: "Linky HC kWh"
teleinfo_id: myteleinfo
state_class: "total_increasing"
device_class: "energy"
unit_of_measurement: "kWh"
accuracy_decimals: 3
filters:
- multiply: 0.001
#Linky Heure Pleine
- platform: teleinfo
tag_name: "HCHP"
name: "Linky HP"
teleinfo_id: myteleinfo
state_class: "measurement"
device_class: "energy"
unit_of_measurement: "Wh"
#Linky Heure Creuse KWh
- platform: teleinfo
tag_name: "HCHP"
name: "Linky HP kWh"
teleinfo_id: myteleinfo
state_class: "total_increasing"
device_class: "energy"
unit_of_measurement: "kWh"
accuracy_decimals: 3
filters:
- multiply: 0.001
#Linky Puissance apparente
- platform: teleinfo
tag_name: "PAPP"
name: "Linky Puissance Apparente"
unit_of_measurement: "VA"
icon: mdi:flash
teleinfo_id: myteleinfo
#Linky Intensité
- platform: teleinfo
tag_name: "IINST"
name: "Linky Intensité"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
#Linky Intensité Maximum Journée
- platform: teleinfo
tag_name: "IMAX"
name: "Linky Intensité Max"
unit_of_measurement: "A"
icon: mdi:flash
teleinfo_id: myteleinfo
- platform: uptime
name: "Esp Linky Uptime"
id: uptime_sensor
update_interval: 120s
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "")
).c_str()