diff --git a/.gitignore b/.gitignore index 26f4d9c..4def94f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -secrets.yaml -.esphome/ *.bin +.esphome/ diff --git a/README.md b/README.md index 3e15b38..245b037 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ am Zündungsplus, der Empfänger am Tor öffnet, sobald ein bekanntes Fahrzeug n genug ist. Kein Knopfdruck, keine App, kein Account. **Hardware:** ESP32-C3 Super Mini + CC1101 (433 MHz) je Sender, -ESP32-S3 + CC1101 als Empfänger am Tor. +ein bestehender ESP32 DevKit (`tor-steuerung`) + CC1101 als Empfänger am Tor — +derselbe ESP, der schon Relais und Türsensoren steuert. --- @@ -47,9 +48,24 @@ Die Pins des CC1101 sitzen als **4 Zeilen à 2 Pins**, Antenne rechts: | 8 | GDO2 | *frei lassen* | Schema: [`doku/verdrahtung-cc1101.svg`](doku/verdrahtung-cc1101.svg) +(zeigt die Pin-Reihenfolge am CC1101 selbst — die Zuordnung zu GPIOs +unterscheidet sich je nach ESP-Board, siehe Tabellen oben/unten.) -Beim Empfänger (ESP32-S3) sind die SPI-Pins in `tor_empfaenger.yaml` noch -Platzhalter und müssen an die tatsächliche Verdrahtung angepasst werden. +### Empfänger (`tor-steuerung`, ESP32 DevKit) + +GPIO16 (Relais) und GPIO34/35 (Türsensoren) sind schon belegt. Der CC1101 +hängt deshalb an den freien VSPI-Standardpins: + +| CC1101 | Signal | ESP32 DevKit | +|--------|--------|--------------| +| 1 | GND | GND | +| 2 | VDD | 3V3 | +| 3 | GDO0 | `GPIO4` | +| 4 | CSN | `GPIO5` | +| 5 | SCK | `GPIO18` | +| 6 | MOSI | `GPIO23` | +| 7 | MISO | `GPIO19` | +| 8 | GDO2 | *frei lassen* | --- @@ -144,16 +160,18 @@ USB-Serial/JTAG ist es das falsche Werkzeug (außer man will JTAG-Debugging ## ESPHome einrichten -Beide YAMLs erwarten in `secrets.yaml`: +Beide Geräte tragen WLAN-Zugangsdaten, `api`-Verschlüsselungskey und +OTA-Passwort **direkt in der YAML** statt über `secrets.yaml` — so war +`tor_steuerung.yaml` schon angelegt, und `auto_sender_01.yaml` verwendet +bewusst dieselben Werte, damit beide Geräte zusammenpassen. -```yaml -wifi_ssid: "..." -wifi_password: "..." -api_key: "..." # base64, 32 Byte -ota_password: "..." -``` +> **Achtung:** Damit stehen WLAN-Passwort und Schlüssel im Klartext in diesem +> Repo. Nur vertretbar, wenn `git.dominicspringer.de` privat/intern bleibt. +> Soll das Repo öffentlich werden, vorher alles auf `!secret`-Verweise +> umstellen und eine lokale `secrets.yaml` (nicht committen) anlegen. -1. In ESPHome (HA-Add-on) neues Gerät anlegen +1. In ESPHome (HA-Add-on) das jeweilige Gerät anlegen bzw. die bestehende + `tor-steuerung` mit dem neuen Inhalt überschreiben 2. Inhalt der passenden Datei aus `esphome/` einfügen 3. Drei Punkte → **Install** → **Manual download** → **Factory format** 4. Mit esptool flashen (siehe oben) diff --git a/esphome/auto_sender_01.yaml b/esphome/auto_sender_01.yaml index 52ab509..299e0b5 100644 --- a/esphome/auto_sender_01.yaml +++ b/esphome/auto_sender_01.yaml @@ -15,15 +15,15 @@ logger: api: encryption: - key: !secret api_key + key: "X2kSHZmeEbdPtMBlxB67cJ4/WMNkQOPCstqYiUQlL2g=" ota: - platform: esphome - password: !secret ota_password + password: "4bd4f24d4a26730d06e84d6e0816fb09" wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password + ssid: "Leonardo da WiFi" + password: "44290812080358610465" # Wichtig: im Auto ist kein WLAN in Reichweite. # Ohne diese Zeile würde der ESP alle 15 Min neu starten. reboot_timeout: 0s diff --git a/esphome/tor_empfaenger.yaml b/esphome/tor_steuerung.yaml similarity index 58% rename from esphome/tor_empfaenger.yaml rename to esphome/tor_steuerung.yaml index 253eb5d..b89b211 100644 --- a/esphome/tor_empfaenger.yaml +++ b/esphome/tor_steuerung.yaml @@ -1,36 +1,69 @@ esphome: - name: tor-empfaenger - friendly_name: Tor Empfänger + name: tor-steuerung + friendly_name: Tor Steuerung esp32: - board: esp32-s3-devkitc-1 # <- ggf. an dein Board anpassen + board: esp32dev framework: type: esp-idf + version: recommended logger: + level: DEBUG api: encryption: - key: !secret api_key + key: "X2kSHZmeEbdPtMBlxB67cJ4/WMNkQOPCstqYiUQlL2g=" ota: - platform: esphome - password: !secret ota_password + password: "4bd4f24d4a26730d06e84d6e0816fb09" wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password + 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 zum CC1101 --- -# Diese Pins am S3 prüfen und ggf. anpassen! spi: - clk_pin: GPIO12 - mosi_pin: GPIO11 - miso_pin: GPIO13 + clk_pin: GPIO18 + mosi_pin: GPIO23 + miso_pin: GPIO19 cc1101: - cs_pin: GPIO10 - gdo0_pin: GPIO9 + cs_pin: GPIO5 + gdo0_pin: GPIO4 frequency: 433.92MHz modulation_type: GFSK symbol_rate: 4800 @@ -64,7 +97,7 @@ cc1101: 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).press(); + id(tor_impuls_relay).turn_on(); globals: - id: letzte_oeffnung @@ -72,9 +105,8 @@ globals: restore_value: false initial_value: '0' -# --- RSSI-Schwelle, in HA per Schieberegler einstellbar --- -# Je näher an 0, desto kürzer die Reichweite. -# Startwert -60 entspricht grob 5 m — beim Einrichten im Log ablesen und anpassen. +# 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 @@ -92,19 +124,3 @@ text_sensor: - platform: template name: Letztes Fahrzeug id: letztes_fahrzeug - -# --- Torimpuls: Relais 500 ms schließen --- -switch: - - platform: gpio - id: tor_relais - pin: GPIO7 # <- an deine Relais-Verdrahtung anpassen - restore_mode: ALWAYS_OFF - -button: - - platform: template - name: Tor Impuls - id: tor_impuls - on_press: - - switch.turn_on: tor_relais - - delay: 500ms - - switch.turn_off: tor_relais