Doppelte Aussendung nach Ping-request #1

Closed
opened 2026-01-16 07:34:16 +01:00 by ppfeiffer · 1 comment
Owner

image

![image](/attachments/50c01cf2-33c8-44f2-84ae-a7112afe27ef)
Author
Owner

Bugfix: Doppelte !pong Antwort

Problem

Der Bot antwortete zweimal mit !pong auf den !ping Befehl.

Ursache

In modules/meshtastic_handler.py wurden mehrere pubsub Topics gleichzeitig registriert:

topics_to_subscribe = [
    'meshtastic.receive.text',      # Spezifisches Topic für Text
    'meshtastic.receive.data',  
    'meshtastic.receive.position',
    'meshtastic.receive',           # ❌ Generisches Topic für ALLE Messages
    'meshtastic.connection.established',
    'meshtastic.connection.lost'
]

Das Problem: Das Topic 'meshtastic.receive' ist ein Catch-All Topic, das alle Meshtastic Messages empfängt - einschließlich Text-Nachrichten.

Ergebnis: Jede Text-Nachricht wurde zweimal verarbeitet:

  1. Einmal über 'meshtastic.receive.text' (spezifisch)
  2. Einmal über 'meshtastic.receive' (generisch)

Deshalb wurde auf !ping zweimal mit !pong geantwortet.

Lösung

Das generische Topic 'meshtastic.receive' wurde aus der Subscription-Liste entfernt.

Geänderte Datei

Datei: modules/meshtastic_handler.py
Zeilen: 150-157

Änderung

# VORHER (mit Duplikaten):
topics_to_subscribe = [
    'meshtastic.receive.text',
    'meshtastic.receive.data',  
    'meshtastic.receive.position',
    'meshtastic.receive',  # ❌ Verursacht Duplikate!
    'meshtastic.connection.established',
    'meshtastic.connection.lost'
]

# NACHHER (ohne Duplikate):
topics_to_subscribe = [
    'meshtastic.receive.text',      # Text-Nachrichten
    'meshtastic.receive.data',      # Daten-Pakete
    'meshtastic.receive.position',  # Positions-Updates
    # 'meshtastic.receive',  # ❌ NICHT verwenden - verursacht Duplikate!
    'meshtastic.connection.established',
    'meshtastic.connection.lost'
]

Test

Nach der Änderung sollte der Bot auf !ping nur noch einmal mit !pong antworten.

Hinweis

Die spezifischen Topics (meshtastic.receive.text, meshtastic.receive.data, meshtastic.receive.position) reichen vollkommen aus, um alle relevanten Nachrichten zu empfangen. Das generische Topic ist nicht notwendig und verursacht nur Duplikate.

Weitere betroffene Befehle

Dieses Problem betrifft alle Bot-Befehle, nicht nur !ping:

  • !help / !hilfe
  • !wetter / !weather
  • !info
  • !stats
  • !uptime
  • !ping

Alle würden doppelt ausgeführt werden. Mit diesem Fix funktionieren jetzt alle Befehle korrekt.

# Bugfix: Doppelte !pong Antwort ## Problem Der Bot antwortete zweimal mit `!pong` auf den `!ping` Befehl. ## Ursache In `modules/meshtastic_handler.py` wurden mehrere pubsub Topics gleichzeitig registriert: ```python topics_to_subscribe = [ 'meshtastic.receive.text', # Spezifisches Topic für Text 'meshtastic.receive.data', 'meshtastic.receive.position', 'meshtastic.receive', # ❌ Generisches Topic für ALLE Messages 'meshtastic.connection.established', 'meshtastic.connection.lost' ] ``` **Das Problem:** Das Topic `'meshtastic.receive'` ist ein Catch-All Topic, das **alle** Meshtastic Messages empfängt - einschließlich Text-Nachrichten. **Ergebnis:** Jede Text-Nachricht wurde zweimal verarbeitet: 1. Einmal über `'meshtastic.receive.text'` (spezifisch) 2. Einmal über `'meshtastic.receive'` (generisch) Deshalb wurde auf `!ping` zweimal mit `!pong` geantwortet. ## Lösung Das generische Topic `'meshtastic.receive'` wurde aus der Subscription-Liste entfernt. ### Geänderte Datei **Datei:** `modules/meshtastic_handler.py` **Zeilen:** 150-157 ### Änderung ```python # VORHER (mit Duplikaten): topics_to_subscribe = [ 'meshtastic.receive.text', 'meshtastic.receive.data', 'meshtastic.receive.position', 'meshtastic.receive', # ❌ Verursacht Duplikate! 'meshtastic.connection.established', 'meshtastic.connection.lost' ] # NACHHER (ohne Duplikate): topics_to_subscribe = [ 'meshtastic.receive.text', # Text-Nachrichten 'meshtastic.receive.data', # Daten-Pakete 'meshtastic.receive.position', # Positions-Updates # 'meshtastic.receive', # ❌ NICHT verwenden - verursacht Duplikate! 'meshtastic.connection.established', 'meshtastic.connection.lost' ] ``` ## Test Nach der Änderung sollte der Bot auf `!ping` nur noch **einmal** mit `!pong` antworten. ## Hinweis Die spezifischen Topics (`meshtastic.receive.text`, `meshtastic.receive.data`, `meshtastic.receive.position`) reichen vollkommen aus, um alle relevanten Nachrichten zu empfangen. Das generische Topic ist nicht notwendig und verursacht nur Duplikate. ## Weitere betroffene Befehle Dieses Problem betrifft **alle** Bot-Befehle, nicht nur `!ping`: - `!help` / `!hilfe` - `!wetter` / `!weather` - `!info` - `!stats` - `!uptime` - `!ping` Alle würden doppelt ausgeführt werden. Mit diesem Fix funktionieren jetzt alle Befehle korrekt.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
meshdresden.eu/MeshDD_Bot_old#1
No description provided.