Pushbutton mit ESP und MQTT
|
09.01.2020, 00:31
Beitrag #1
|
|||
|
|||
Pushbutton mit ESP und MQTT
Moin,
ich bin gerade dabei einen Pushbutton bzw. Dashbutton mit einem ESP-01 zu bauen. Ich habe nun folgendes zusammengebaut: Code: //********************************************************************** Zwei Probleme: 1) Die Callback Funktion wird nur ausgelöst. Wenn eine MQTT Nachricht in das Topic eingeht. Wie kann ich die Funktion im loop aufrufen, dass er einfach das Topic ausliest. Es hat ja irgendein Wert, was mein Broker gespeichert hat. 2) Der Wert in mqtt_state wird am anfang korrekt gespeichert. Dieser hat z.B. den Wert 0. Den schicke aktuell Manuell raus. Wenn ich nun die 1 an das Topic sende, dann kommt eine 13 raus. Wenn ich dann wieder eine 0 sende kommt eine 3. Wenn ich aber 00 oder 01 sende, dann passt es... Hier mal die Serial Console: Code: 00:26:24.270 -> SDK:2.2.2-dev(38a443e)/Core:2.6.2=20602000/lwIP:STABLE-2_1_2_RELEASE/glue:1.2-16-ge23a07e/BearSSL:89454af |
|||
09.01.2020, 06:53
Beitrag #2
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
bin zwar auch neu in der Materie aber das liest sich nach einen C bzw C++ Fehler.
Du liest über das string ende raus: Code: void callback(char* topic, byte* payload, unsigned int length) { Man darf nicht ein Byte Array einfach son in einen String umwandel da könnte das 0 Byte für das Ende fehlen und das Liest du wild im speicher rum was ja auch zu den Ausgaben passt. Da steht 13 und nicht 1. wenn du da nur die zahlen 1 bis 0 verwenden willst kann du ein haufen rechnen zeit sparenen wenn du einfach schreibst: int mqtt_state = payload[0] - 0x30; Die Zahl 1 ist Hexzeichen 31 und so mit geht es einfacher. Wie gesagt funktioniert nur bei einstelligen Zahlen. Ich würde ganz Vorne noch eine Prüfung auf length machen. Zitat:1) Die Callback Funktion wird nur ausgelöst. Wenn eine MQTT Nachricht in das Topic eingeht. Warum will man pollen wenn man doch Events hat ? Mein Projekt |
|||
09.01.2020, 11:53
Beitrag #3
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
(09.01.2020 06:53)DerkleinePunk schrieb: bin zwar auch neu in der Materie aber das liest sich nach einen C bzw C++ Fehler. Ah. Danke! Das werde ich heute abend mal testen. würdest du mir noch netterweise verraten wie ich die Prüfung auf Lenght mache? Zitat:1) Die Callback Funktion wird nur ausgelöst. Wenn eine MQTT Nachricht in das Topic eingeht. (09.01.2020 06:53)DerkleinePunk schrieb: Warum will man pollen wenn man doch Events hat ? Sorry: Wie bitte? ![]() Bevor ein MQTT Befehl versendet wird, muss der aktuelle Status des Topics geprüft werden. Damit er die Lampe entweder ein oder ausschalten muss. Also muss ich die Callbackfunktion oder von mir aus auch eine andere Funktion im loop aufrufen. Da mein Ablauf im Callback erst ausgeführt wenn eine Nachricht im Topic ankommt, das ist nicht gewollt, weil dann würde er die Lampe z.B. direkt wieder ausschalten. Der ESP geht dann in den DeepSleep und kann so keine MQTT Nachrichten empfangen. Durch den Knopfdruck wird er gestartet, da dann keine MQTT Nachricht in das Topic reinkommt, passiert auch nichts. Da fällt mir beim schreiben ein: Kann ich im Loop nicht einfach in ein anderes Topic publishen, das Topic wird mit dem callback abgefragt. Nur wie komme ich dann in die Abfrage des richtigen Topics? Ohh das verwirrt so. |
|||
09.01.2020, 11:53
Beitrag #4
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
@TO: Haben Dir die Antworten nebenan nicht gefallen?
In welchem Forum hättest Du denn jetzt gern die Antworten oder lieber in keinem? Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
09.01.2020, 12:02
Beitrag #5
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
Na danke...
Zwei Foren = Verschiedene Leute = Verschiedene Anworten und Lösungen. Und die Antwort im anderen Forum war ja klar und deutlich und habe neue Fragen bzw. um neue Hilfe gebeten. Verstehe gerade ein Problem nicht. Und DerkleinePunk hat schnell geantwortet und ich weiß nicht ob er in dem anderen Forum geantwortet. Ich bin auf jede Hilfe angewiesen und freue mich. Aber sowas muss nicht sein. |
|||
10.01.2020, 13:37
Beitrag #6
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
(09.01.2020 12:02)FirstS0ul schrieb: Na danke... In den mir bekannten deutschen Foren zum Thema HTML, JavaScript und PHP wirst du bei Crosspostings umgehend zu Recht, gerecht behandelt. Du bist nicht der Mittelpunkt des Universums! Die Helfer in den Foren helfen in ihrer Freizeit gerne, aber nur sehr ungern doppelt und dreifach! Gruß Fips Meine Esp8266 & ESP32 Projekte |
|||
10.01.2020, 14:03
(Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2020 14:31 von FirstS0ul.)
Beitrag #7
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
Dann braucht man nicht doppelt antworten. Jeder muss ja nicht in jedem Forum angemeldet sein.
Oh mann... Egal. Entweder wir machen jetzt weiter und helfen einander oder wir lassen es ganz. Wollte nur mehr Leute erreichen. EDIT: Problem 2 wäre gelöst. Danke für den Tipp an DerkleinePunk. |
|||
10.01.2020, 14:31
Beitrag #8
|
|||
|
|||
RE: Pushbutton mit ESP und MQTT
(10.01.2020 14:03)FirstS0ul schrieb: ... und helfen einander ..... Nach dem du schon Hilfe in beiden Foren erhalten hast, solltest du zunächst deine oben genannten guten Absichten unter Beweiß stellen und deine Hilfe aktiv anderen zukommen lassen. Gruß Fips Meine Esp8266 & ESP32 Projekte |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste