Mehrere Sonoff über MQTT schalten ???

  • Hallo,


    ich habe auf meinen Raspberry NodeRed und MQTT-Broker Mosquitto installiert.

    Aktuell habe ich 3 Sonoff-Relais aufgebaut.


    Mein Problem: Die Steuerung und Statusanzeige eines Relais funktioniert super!!!

    Nun kommt das nächste Relais ran und die Probleme beginnen. Ich verwende für jedes Relais natürlich einen eigenen Topic, eigene IP usw.


    Aktuell habe ich 3 Relais dran. Deaktiviere ich in zwei Relais MQTT funktioniert das 3. Relais wieder super.

    Ich habe festgestellt, dass bei 3 aktiven Relais (MQTT) die Befehle nicht übertragen werden (ON / OFF). Wenn ich mir das über die Konsole anschaue, fehlen die einfach.

    Bei einem Relais sind die Befehle/Status wieder vollständig dargestellt.

    Der MQTT-Broker kann die Relais scheinbar nicht unterscheiden.



    Liegt das Problem vielleicht im MQTT-Broker??? Müssen dort vielleicht die Namen der Relais eingetragen werden?

    Ich war der Meinung, dass ein unterschiedlicher Topic für jedes Relais ein eindeutiges Unterscheidungsmerkmal ist.


    Wie gesagt bei 3 aktiven Relais (MQTT) funktioniert mal das eine mal das andere Relais (ein völlig unstabiler Zustand).

  • Hallo pinie_pinie,


    vielen Dank für dein Beitrag. Falls du Hilfe zu Produkten suchst, die du bei uns (CREATIONX) erworben hast, dann kannst du jederzeit die Hilfe-Seite auf unserer Seite aufrufen.

    Ich bin mir aber sicher, dass dir hier unsere fähigen Community-Mitglieder helfen werden ;-)


    P.S. besuche auch unseren YouTube-Kanal mit vielen hilfreichen Videos von uns ...


    Vielen Dank!



    (Dieser Beitrag wurde automatisch erstellt.)

  • Was redest du da?


    Im Sonoff unter Einstellungen MQTT Einstellungen:


    Host: = IP Adresse deines MQTT Host (localhost geht sicher nicht)

    Port: = Port auf dem der Host läuft

    Client: = Name des Sonoff zur Unterscheidung

    Benutzer: = User den du im MQTT Broker angegeben hast

    Passwort: = Passwort für den Broker

    und die letzten beiden Werte

    Topic =sonoff

    und

    Full Topic = %prefix%/%topic%/

    bitte genau so belassen bis du genau weisst was du da änderst.


    Ich bin mir nicht im Klaren darüber was du damit meinst das beide Systeme auf dem Raspi laufen?

    Vermutlich hast du da einen Denkfehler drin.

  • Hallo,


    sorry, meine Ausführungen bezogen sich auf NodeRed. Da kann man "localhost" im mqtt-node eintragen.

    Im Sonoff hast du völlig recht!!!

    Ich tippe auf den Client-Eintrag. Wenn ich den ändere, funktioniert das Relais über MQTT nicht mehr.


    Muss man im MQTT-Broker was eintragen (vielleicht den Namen freigeben, oder so???)

    Vielleicht steht bei mir nur ein Name drin und deshalb habe ich diese Erscheinung. Bei mir hatte alle

    3 Relais nämlich den gleichen Client-Namen.


    Vielen Dank.


    Thoralf

  • Tasmota kennt das Spezialtopic grouptopic. Wenn du auf der Tasmota-Konsole bei allen Sonnoffs den Befehl

    Code
    1. grouptopic GleicherName

    einhackst, kannst du mit dem Befehl

    Code
    1. mosquitto_pub -h BrokerIP -t cmnd/GleicherName/power -m "1"

    alle Geräte anschalten und mit der "0" wieder abschalten - oder was auch immer du auf den Geräten mit demselben grouptopic gleichzeitig machen willst. Die Syntax in meinem Beispiel bezieht sich auf bash und das Paket Mosquitto-clients. In NodeRed müsste sollte es ziemlich ähnlich implementiert sein.

  • Das stimmt schon was pinie_pinie sagt.


    Zumindest beim Mosquitto.


    Wenn der Topic nicht mitverändert wird, reagiert der Schalter sowohl auf den Client Namen als auch auf den Topic! Angezeigt wird im mosquitto_sub allerdings NUR der Topic. Ich hatte das auch schon und eben nochmal überprüft. Sprich ist der Topic überall gleich, schalten beim Topic aufruf alle. Er müsste also mit dem Client-Namen den Schaltbefehl geben und bekommt aber den Topic zurück. Wenn aber alle den gleichen Topic haben, sieht er nie welcher wirklich schaltet weil der Standart immer sonoff ist.


    d.h. es müssen um Überschneidungen auszuschließen sowohl der Topic als auch der Client auf den gleichen Namen gesetzen werden und gut ist.


    Um alle zu schalten, wie JoergZ beschreibt ist dann der grouptopic sinnvoll.

    Online Compiler


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E Sensoren

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

    Einmal editiert, zuletzt von HoerMirAuf ()

  • Ich glaube das, wovon ihr sprecht, hängt damit zusammen, dass beim flashen in der user_config.h immer das Geräte-Topic mit "sonoff" vorbelegt ist. Es macht Sinn dieses Geräte spezifische Topic entweder schon vor dem flashen oder bei neu geflashten Sonoffs gleich über die Weboberfläche zu ändern. Denn MQTT folgt einer klaren Baumstruktur cmnd/Gerät/Befehl "Wert". Wenn man ohne Änderungen mehrere Geräte flasht, heißen die alle für MQTT "sonoff". Seit ich MQTT häufiger einsetze, bekommt jeder Sonoff seinen eigenen MQTT-Namen. Über HTTP hat ja auch jedes Kistchen seine eigne IP und bei Domoticz seine idx.

  • Hallo,


    vielen Dank für Eure Beiträge.

    Meine Geräte laufen jetzt alle zusammen.

    Wie schon erwähnt, hatte ich für jedes sonoff ein eigenes Topic. Das macht aus meiner Sicht auch Sinn, da

    jedes Gerät über sein eigenes Topic Befehle empfängt bzw. seinen Status absetzt (über MQTT).


    Ich habe den Client Namen jetzt bei jedem Gerät verändert (Name + eine Zahl fortlaufend). Die Sache funktioniert ohne Probleme.


    Nur zur Ergänzung: Node Red und Mosquitto laufen auf meinem Raspberry Pi3 ohne Probleme zusammen.

    Also noch einmal vielen Dank.