Zigarettenautomat und WLAN Keypad: Unterschied zwischen den Seiten
(Unterschied zwischen Seiten)
Zur Navigation springen
Zur Suche springen
>Icephoenix K (→Füllung) |
>Mogwai K (→Konfiguration) |
||
Zeile 1: | Zeile 1: | ||
{{Project | {{Project | ||
|Why= | |Why=Senden von Tasteneingaben an einen MQTT Server | ||
|What=hardware | |What=hardware, software | ||
|Who=User:Mogwai | |||
|Status=running | |Status=running | ||
|Tags=Keypad, ESP8266 | |||
|Tags= | |||
}} | }} | ||
Ziel ist das Senden von Tasten Eingaben per WLAN an einen MQTT Server zur Weiterverarbeitung (z.B. Steuerung von Raumfunktionen oder Lichteffekten) | |||
== | == Hardware == | ||
* ESP8266 | |||
* Alte Kassensystem Keypads aus dem Maschinendeck (Type FM015700C) | |||
* | |||
* Maschinendeck | |||
== | == Pinbelegung Keypad und ESP8266 (vorläufig) == | ||
= | {| class="wikitable" | ||
! Keypad Pin | |||
! Funktion | |||
! Tasten | |||
! ESP8266 PIN | |||
! ESP8266 Bemerkungen | |||
|- | |||
| 0 || Gehäuse Schließkontakt Kette || Alle Schließkontakte (3x) || GND || - | |||
|- | |||
| 1 || Zeile 1 || 1, 2, 3, Cancel || IO 0 || INPUT, Externer Pull-Up, da PIN HIGH sein muss zu starten des ESP, LOW (extra Taster) für Programmierung | |||
|- | |||
| 2 || Zeile 2 || 4, 5, 6, Clear || IO 2 || INPUT, Pull-Up intern | |||
|- | |||
| 3 || Gehäuse Schließkontakt Kette || Alle Schließkontakte (3x) || T_OUT / ADC || Pull-Up Extern (Spannungsteiler!) | |||
|- | |||
| 4 || Zeile 3 || 7, 8, 9, Enter || IO 4 || INPUT, Pull-Up intern | |||
|- | |||
| 5 || Zeile 0 || PfeilHoch, Select, PfeilRunter, 0 || IO 3 || RX als IO-PIN konfigurieren, INPUT, Pull-Up intern | |||
|- | |||
| 6 || Spalte 0 || PfeilHoch, 1, 4, 7 || IO 14 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) | |||
|- | |||
| 7 || Spalte 1 || 2, 5, 8, 0 || IO 12 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) | |||
|- | |||
| 8 || Spalte 2 || Select, 3, 6, 9 || IO 13 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) | |||
|- | |||
| 9 || Spalte 3 || PfeilRunter, Cancel, Clear, Enter || IO 5 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) | |||
|} | |||
== Tastencodes Keypad == | |||
= | {| class="wikitable" | ||
! Tastencode | |||
! Taste | |||
! Zeichenzuordnung | |||
|- | |||
|| 0x0000 || <keine> || <nix> | |||
|- | |||
|| 0x0001 || 1 || 1 | |||
|- | |||
|| 0x0002 || 4|| 4 | |||
|- | |||
|| 0x0004 || 7|| 7 | |||
|- | |||
|| 0x0008 || PfeilHoch || u | |||
|- | |||
|| 0x0010 || 2 || 2 | |||
|- | |||
|| 0x0020 || 5 || 5 | |||
|- | |||
|| 0x0040 || 8|| 8 | |||
|- | |||
|| 0x0080 || 0 || 0 | |||
|- | |||
|| 0x0100 || 3 || 3 | |||
|- | |||
|| 0x0200 || 6 || 6 | |||
|- | |||
|| 0x0400 || 9 || 9 | |||
|- | |||
|| 0x0800 || Select || s | |||
|- | |||
|| 0x1000 || Cancel || x | |||
|- | |||
|| 0x2000 || Clear || c | |||
|- | |||
|| 0x4000 || Enter || e | |||
|- | |||
|| 0x8000 || PfeilRunter || d | |||
|} | |||
== Geplante Funktionen == | |||
* Senden der gedrückten Taste per MQTT | |||
* Zusammenfassen mehrerer Zeichen als Zeichenkette und senden dieser Kette nach Drücken der "Enter" Taste | |||
* Konfiguration per JSON String im SPIFFS des ESP | |||
* Konfigurierbare Tastenwiederholung | |||
== Konfiguration == | |||
Die Konfiguration erfolgt per JSON String in der Deit config.txt im SPIFFS des ESP8266. | |||
{| class="wikitable" | |||
! Parameter (case sensitiv) | |||
! Funktion | |||
! Wertebereich | |||
|- | |||
| wifiSSID || WLAN SSID || String | |||
|- | |||
| wifiPassword || WLAN Passwort || String | |||
|- | |||
| mqttServer || IP Addresse des MQTT Servers || IPv4 als String | |||
|- | |||
| mqttServerPort || Portnummer des MQTT Servers || Numerisch 16-bit | |||
|- | |||
| mqttClientName || MQTT Client Name || String | |||
|- | |||
| mqttUser || MQTT Username || String | |||
|- | |||
| mqttPassword || MQTT Passwort || String | |||
|- | |||
| mqttPubTopic || MQTT Topic an das die Tastendaten geschickt wird || String | |||
|- | |||
| keypadDebounceTime || Debounce Zeit für Tastenerkennung in Ms || Numerisch 16-bit | |||
|- | |||
| keypadRepeatDelay || Wartezeit für erste Tastenwiederholung in Ms || Numerisch 16-bit | |||
|- | |||
| keypadRepeatInterval || Wiederholungsintervall bei Tastenwiederholung in Ms || Numerisch 16-bit | |||
|- | |||
| keypadRepeatMask || Maske der Tastencodes, für die eine Tastenwiederholung durchgeführt wird (siehe Tastencodes) || Numerisch 16-bit | |||
|- | |||
| keypadMultikeyTimeout || Timeout für Zusammenhängende Tasteneingabe in Ms || Numerisch 16-bit | |||
|} | |||
== MQTT Nachrichtenformat == | |||
Die Übermittlung der Tasteninformationen erfolgt per MQTT mit folgendem Inhalt: | |||
{| class="wikitable" | |||
! Parameter (case sensitiv) | |||
! Funktion | |||
! Wertebereich | |||
|- | |||
| keycode || Maske der Tastencodes der gedrückten Taste(n) || 16-Bit Integer | |||
|- | |||
| keyrepeat || Anzahl der bisherigen Wiederholungen der Taste || 16-Bit Integer | |||
|- | |||
| keychar || Zeichenentsprechung der gedrückten Taste(n) || String, sortiert nach Keycode bei mehreren gedrückten Tasten | |||
|- | |||
| keystring || Enthält mehrerer hintereinander gedrückte Tasten, die mit Enter bestätigt wurden || String | |||
|- | |||
| keypadEnclosureState || Ist Gehäuse geschlossen (1), oder offen (0)? || 8-Bit Integer | |||
|} |
Version vom 20. Februar 2020, 21:03 Uhr
WLAN Keypad | |
---|---|
Weshalb | Senden von Tasteneingaben an einen MQTT Server |
Was | hardware, software |
Wer | User:Mogwai |
Status | läuft |
Ziel ist das Senden von Tasten Eingaben per WLAN an einen MQTT Server zur Weiterverarbeitung (z.B. Steuerung von Raumfunktionen oder Lichteffekten)
Hardware
- ESP8266
- Alte Kassensystem Keypads aus dem Maschinendeck (Type FM015700C)
Pinbelegung Keypad und ESP8266 (vorläufig)
Keypad Pin | Funktion | Tasten | ESP8266 PIN | ESP8266 Bemerkungen |
---|---|---|---|---|
0 | Gehäuse Schließkontakt Kette | Alle Schließkontakte (3x) | GND | - |
1 | Zeile 1 | 1, 2, 3, Cancel | IO 0 | INPUT, Externer Pull-Up, da PIN HIGH sein muss zu starten des ESP, LOW (extra Taster) für Programmierung |
2 | Zeile 2 | 4, 5, 6, Clear | IO 2 | INPUT, Pull-Up intern |
3 | Gehäuse Schließkontakt Kette | Alle Schließkontakte (3x) | T_OUT / ADC | Pull-Up Extern (Spannungsteiler!) |
4 | Zeile 3 | 7, 8, 9, Enter | IO 4 | INPUT, Pull-Up intern |
5 | Zeile 0 | PfeilHoch, Select, PfeilRunter, 0 | IO 3 | RX als IO-PIN konfigurieren, INPUT, Pull-Up intern |
6 | Spalte 0 | PfeilHoch, 1, 4, 7 | IO 14 | OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) |
7 | Spalte 1 | 2, 5, 8, 0 | IO 12 | OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) |
8 | Spalte 2 | Select, 3, 6, 9 | IO 13 | OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) |
9 | Spalte 3 | PfeilRunter, Cancel, Clear, Enter | IO 5 | OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up) |
Tastencodes Keypad
Tastencode | Taste | Zeichenzuordnung |
---|---|---|
0x0000 | <keine> | <nix> |
0x0001 | 1 | 1 |
0x0002 | 4 | 4 |
0x0004 | 7 | 7 |
0x0008 | PfeilHoch | u |
0x0010 | 2 | 2 |
0x0020 | 5 | 5 |
0x0040 | 8 | 8 |
0x0080 | 0 | 0 |
0x0100 | 3 | 3 |
0x0200 | 6 | 6 |
0x0400 | 9 | 9 |
0x0800 | Select | s |
0x1000 | Cancel | x |
0x2000 | Clear | c |
0x4000 | Enter | e |
0x8000 | PfeilRunter | d |
Geplante Funktionen
- Senden der gedrückten Taste per MQTT
- Zusammenfassen mehrerer Zeichen als Zeichenkette und senden dieser Kette nach Drücken der "Enter" Taste
- Konfiguration per JSON String im SPIFFS des ESP
- Konfigurierbare Tastenwiederholung
Konfiguration
Die Konfiguration erfolgt per JSON String in der Deit config.txt im SPIFFS des ESP8266.
Parameter (case sensitiv) | Funktion | Wertebereich |
---|---|---|
wifiSSID | WLAN SSID | String |
wifiPassword | WLAN Passwort | String |
mqttServer | IP Addresse des MQTT Servers | IPv4 als String |
mqttServerPort | Portnummer des MQTT Servers | Numerisch 16-bit |
mqttClientName | MQTT Client Name | String |
mqttUser | MQTT Username | String |
mqttPassword | MQTT Passwort | String |
mqttPubTopic | MQTT Topic an das die Tastendaten geschickt wird | String |
keypadDebounceTime | Debounce Zeit für Tastenerkennung in Ms | Numerisch 16-bit |
keypadRepeatDelay | Wartezeit für erste Tastenwiederholung in Ms | Numerisch 16-bit |
keypadRepeatInterval | Wiederholungsintervall bei Tastenwiederholung in Ms | Numerisch 16-bit |
keypadRepeatMask | Maske der Tastencodes, für die eine Tastenwiederholung durchgeführt wird (siehe Tastencodes) | Numerisch 16-bit |
keypadMultikeyTimeout | Timeout für Zusammenhängende Tasteneingabe in Ms | Numerisch 16-bit |
MQTT Nachrichtenformat
Die Übermittlung der Tasteninformationen erfolgt per MQTT mit folgendem Inhalt:
Parameter (case sensitiv) | Funktion | Wertebereich |
---|---|---|
keycode | Maske der Tastencodes der gedrückten Taste(n) | 16-Bit Integer |
keyrepeat | Anzahl der bisherigen Wiederholungen der Taste | 16-Bit Integer |
keychar | Zeichenentsprechung der gedrückten Taste(n) | String, sortiert nach Keycode bei mehreren gedrückten Tasten |
keystring | Enthält mehrerer hintereinander gedrückte Tasten, die mit Enter bestätigt wurden | String |
keypadEnclosureState | Ist Gehäuse geschlossen (1), oder offen (0)? | 8-Bit Integer |