# Hitachi RAR-6NE1 -> climate ESPHome (protocollo HITACHI_AC, 28 byte). # # Da importare nell'add-on ESPHome di Home Assistant: # - questo file e la cartella components/ vanno nella STESSA directory di # config ESPHome (da te: /config/hitachi-ir.yaml + /config/components/) # - quindi external_components -> path: components risolve a components/hitachi_rar6ne1/ # - compila secrets.yaml (wifi) come da template accanto a questo file # # Hardware: # - Ricevitore IR (TSOP/VS1838B) su GPIO27 (gia' presente) # - Emettitore IR (LED IR + driver a transistor) su GPIO25 (DA MONTARE) # GPIO25 --[1k]--> base NPN ; LED IR: 3V3 --[100R]--> A->K --> collector ; emitter -> GND esphome: name: hitachi-ir friendly_name: Condizionatore Hitachi esp32: board: esp32dev framework: type: arduino # --- Connettivita' ----------------------------------------------------------- wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Hotspot di fallback se il WiFi non e' raggiungibile ap: ssid: "Hitachi-IR Fallback" captive_portal: logger: level: DEBUG api: encryption: key: !secret api_encryption_key ota: - platform: esphome password: !secret ota_password # --- Component custom -------------------------------------------------------- # path = cartella CHE CONTIENE la cartella del componente (components/), non il # componente stesso. ESPHome cerchera' components/hitachi_rar6ne1/ = componente # "hitachi_rar6ne1". Mettere components/hitachi_rar6ne1 qui causa un import # circolare perche' climate.py verrebbe scambiato per il core 'climate'. external_components: - source: type: local path: components # --- IR: trasmettitore (invio comandi) --------------------------------------- remote_transmitter: id: tx pin: GPIO25 carrier_duty_percent: 50% # --- IR: ricevitore (sync col telecomando fisico) ---------------------------- remote_receiver: id: rx pin: number: GPIO27 inverted: true mode: input: true pullup: true tolerance: 25% # Il frame Hitachi e' 224 bit (~226 coppie = simboli RMT). Sull'ESP32 classico # il default e' ~192 simboli -> il frame veniva TRONCATO e il decoder falliva. # 1 simbolo RMT = 1 coppia mark/space. 384 da margine ampio e lascia memoria # RMT al trasmettitore (totale 512 simboli su ESP32 classico). rmt_symbols: 384 receive_symbols: 384 # DEBUG: riattiva solo per ispezionare i raw. Intasa i log e blocca il loop # ~200ms per frame (stampa pronto) -> RX gia' validato, tenuto spento. # dump: all # --- Entita' climate --------------------------------------------------------- climate: - platform: hitachi_rar6ne1 id: hitachi_ac name: "Condizionatore" transmitter_id: tx receiver_id: rx # --- DEBUG: pulsante per test self-loopback ---------------------------------- # Premendolo, l'ESP trasmette un frame OFF di riferimento; se il LED IR illumina # (anche di riflesso) il ricevitore, nei log compare "RX ok" + il dump dei byte. # Rimuovi questa sezione a validazione conclusa. button: - platform: template name: "Test IR loopback" on_press: - lambda: 'id(hitachi_ac).send_test_frame();'