Hallo zusammen,
ich hoffe, ihr könnt mir bei einem aktuellen Problem mit meinem IoT-Projekt weiterhelfen. Ich arbeite derzeit daran mehr über „Man-in-the-Middle“ herauszufinden, bei dem ich den Datenverkehr eines Geräts abfangen und dekodieren möchte. Dazu nutze ich einen Microcontroler welcher mit ESPHome geflasht wurde und einen AZDelivery Logic Analyzer in Kombination mit der Software Saleae Logic2. Leider scheine ich irgendwo einen Fehler zu machen, da ich das gesendete UART-Signal nicht korrekt lesen kann.
Projekt-Setup:
- Mikrocontroller: ESP8266 mit einer NodeMCU V2-Platine
- Logic Analyzer: AZDelivery USB Logic Analyzer, verbunden über Saleae Logic2
- ESPHome-Konfiguration: Hier ist der relevante Auszug meines YAML-Codes:
substitutions:
name: mitm-intex-swg
friendly_name: MITM Intex SWG
esphome:
name: ${name}
friendly_name: ${friendly_name}
comment: Proof of concept
min_version: 2024.6.0
uart:
id: uart_bus
tx_pin: GPIO15
rx_pin: GPIO13
baud_rate: 9600
debug:
direction: BOTH
after:
delimiter: "\n"
switch:
- platform: template
name: "Test U"
turn_on_action:
- uart.write:
id: uart_bus
data: [0x55]
Problem:
Ich habe den UART-Datenverkehr bei 9600 Baud asynchron im ASCII-Format aufgenommen und wie folgt eingestellt:
- Tx-Kanal: Channel 0
- Rx-Kanal: Channel 1
Allerdings sehe ich im Logic Analyzer keine klaren 0x55 (oder ASCII “U”)-Zeichen, wenn ich den Schalter betätige. Ohne Betätigung des Schalters kommen folgende Ausgaben (ohne Level Shifter):
V\0\xEF(\x18o\x84m(\xFF\xE9\xA9\x99!xC1\xFF\xE3\xD7\x91\xA9\x99\x11\xE1F
Mit Betätigung (ohne Level Shifter):
\xA8o\xFD\x98@)\xE8\xFD\xA3M\xFA\xA5+\x98\xCEKJ\xC2\xAC\xF4
Mit Level Shifter und ohne Betätigung sehe ich stattdessen dieses Signal:
R\x10\xFF[\xEF\xFF\xCC!(\xFFRs\xD7\x
Mit Level Shifter und mit Betätigung sehe ich stattdessen dieses Signal:
\x98\xDF\xEF(\x18n\x04m(\xFFR\xB8\x16\x04\xFB\xC2\x10\x85\xFD-\xCE\xA5\x1A\x95\x80\x08i
Im Webserver-Log von ESPHome erscheint der Befehl zwar als gesendet (Test U Turning ON
), aber die Logic Analyzer-Ausgabe passt nicht zu dem, was ich sende.
Frage:
Habe ich hier evtl. eine falsche Einstellung in der Logic Analyzer-Software oder fehlt mir eine Anpassung im ESPHome YAML-Setup? Oder gibt es spezielle Einstellungen bei der asynchronen UART-Erfassung (Baudrate ist 9600), die ich übersehen haben könnte?
Über jegliche Tipps zu den korrekten Einstellungen im Logic Analyzer oder Hinweise zum Debuggen des Signals wäre ich sehr dankbar!
Vielen Dank im Voraus!
Joscha