30 lines
1.7 KiB
Markdown
30 lines
1.7 KiB
Markdown
# Tasmota remote pulse timer trigger
|
|
Das Programm für einen ESP8266 soll den PulseTimer einer Tasmota Steckdose triggern.
|
|
Die Hardware hat einen Rotary Encoder sowie ein OLED Display.
|
|
Mit dem Rotary Encoder (RT) stellt man eine Zeit im Bereich von `MIN_TIMER_MS` bis `MAX_TIMER_MS`.
|
|
Über den RT soll der Wert pro Tick bis 11,1s um 100ms angepasst werden. Ab 11,1s erlaubt Tasmota nur noch Sekundenwerte; der nächste Wert nach 11,1s ist deshalb 12s, danach wird pro Tick um 1s angepasst.
|
|
Mit Druck auf den Taster des RT soll zunächst der PulseTimer eingestellt und dann getriggert werden.
|
|
Die Einstellungen für die SSID und das Passwort sollen aus einer separaten config.h Datei ausgelesen werden.
|
|
Dort soll auch die IP Adresse der Tasmota Steckdose eingestellt werden. Zudem dort noch den Initialwert für den Timer hinterlegen.
|
|
Der Project soll mittels PlatformIO und Arduino Framework umgesetzt werden. Das SSD1309 OLED wird mit der Arduino-Library U8g2 angesteuert.
|
|
|
|
## Umsetzung
|
|
Die Tasmota Steckdose wird per HTTP angesprochen. Beim Druck auf den Taster sendet das Programm:
|
|
1. `PulseTime1 <wert>`. Werte `1` bis `111` entsprechen 0,1s-Schritten bis 11,1s. Werte ab `112` entsprechen Sekundenwerten mit Offset 100, also z.B. `112` fuer 12s und `113` fuer 13s.
|
|
2. `Power1 ON`, um den zuvor gesetzten PulseTimer auszulösen.
|
|
|
|
Die Datei `include/config.h` enthält:
|
|
- `WIFI_SSID`
|
|
- `WIFI_PASSWORD`
|
|
- `TASMOTA_HOST`
|
|
- `INITIAL_TIMER_MS`
|
|
- `MIN_TIMER_MS`
|
|
- `MAX_TIMER_MS`
|
|
|
|
Als Vorlage liegt `include/config.example.h` bei.
|
|
|
|
## Hardware
|
|
Board D1 Mini mit ESP8266.
|
|
OLED über I2C an den GPIOs 4 und 5. Rotary Encoder mit A und B an GPIO 14 und 13 und der Taster an 12.
|
|
OLED hat einen SSD1309 Controller mit 128x64 Pixel.
|