Hilfe benötigt bei UART Signal-Dekodierung mit Logic Analyzer für IoT „Man-in-the-Middle“-Projekt

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