esphome: name: tor-steuerung friendly_name: Tor Steuerung esp32: board: esp32dev framework: type: esp-idf version: recommended logger: level: DEBUG api: encryption: key: "X2kSHZmeEbdPtMBlxB67cJ4/WMNkQOPCstqYiUQlL2g=" ota: - platform: esphome password: "4bd4f24d4a26730d06e84d6e0816fb09" wifi: ssid: "Leonardo da WiFi" password: "44290812080358610465" power_save_mode: none ap: ssid: "Torsteuerung" password: "Spring.3" captive_portal: # --- Bestehende Hardware --- switch: - platform: gpio pin: GPIO16 id: tor_impuls_relay name: "Tor Impuls" restore_mode: ALWAYS_OFF on_turn_on: - delay: 500ms - switch.turn_off: tor_impuls_relay binary_sensor: - platform: gpio pin: GPIO34 name: "Tor AUF" device_class: door - platform: gpio pin: GPIO35 name: "Tor ZU" device_class: door # --- Neu: CC1101 433 MHz Empfänger für den Funksender im Auto --- # Pinbelegung siehe README/doku/verdrahtung-cc1101.svg # (GPIO16/34/35 sind durch die bestehende Hardware belegt, deshalb # hier die freien VSPI-Standardpins verwendet) spi: clk_pin: GPIO18 mosi_pin: GPIO23 miso_pin: GPIO19 cc1101: cs_pin: GPIO5 gdo0_pin: GPIO4 frequency: 433.92MHz modulation_type: GFSK symbol_rate: 4800 packet_mode: true packet_length: 4 crc_enable: true sync0: 0x91 sync1: 0xD3 on_packet: then: - lambda: |- // Magic-Bytes prüfen if (x.size() < 3 || x[0] != 0xA7 || x[1] != 0x3C) return; uint8_t fz = x[2]; ESP_LOGI("tor", "Fahrzeug %u, RSSI %.1f dBm, LQI %u", fz, rssi, lqi); // Reichweite: nur öffnen wenn Signal stark genug (= Auto nah) if (rssi < id(rssi_schwelle).state) return; // erlaubte Fahrzeuge if (fz < 1 || fz > 10) { ESP_LOGW("tor", "Unbekannte Fahrzeug-ID: %u", fz); return; } // Sperrzeit, damit das Tor nicht dauernd getriggert wird uint32_t jetzt = millis(); if (id(letzte_oeffnung) != 0 && (jetzt - id(letzte_oeffnung)) < 60000) return; id(letzte_oeffnung) = jetzt; ESP_LOGI("tor", "Tor öffnen für Fahrzeug %u (RSSI %.1f)", fz, rssi); id(letztes_fahrzeug).publish_state(std::to_string(fz)); id(tor_impuls_relay).turn_on(); globals: - id: letzte_oeffnung type: uint32_t restore_value: false initial_value: '0' # In HA per Schieberegler einstellbar, kein Neuflashen nötig. # Startwert -60 ≈ 5 m, im Betrieb anhand der geloggten RSSI-Werte feinjustieren. number: - platform: template name: RSSI Schwelle id: rssi_schwelle min_value: -100 max_value: -20 step: 1 initial_value: -60 optimistic: true restore_value: true unit_of_measurement: dBm entity_category: config text_sensor: - platform: template name: Letztes Fahrzeug id: letztes_fahrzeug