MQTT und ESP8266 mit MAX7219 Display

Begonnen von Jack_n, 15 August 2023, 12:07:38

Vorheriges Thema - Nächstes Thema

Jack_n

Hallo Zusammen,

ich habe ein MAX7219 Display mit 4 Feldern und einen ESP8266 (lolin/wemos) nach folgendem Projekt angeschlossen und geflasht:

https://github.com/rdeangel/esp8266_max7219_rda_msg_board

Das hat alles super funktioniert, ich kann über das Web-Interface meine Nachrichten ausgeben und die Helligkeit usw. steuern.


Jetzt stehe ich aber komplett auf dem Schlauch, wie ich mit FHEM und MQTT irgendwas mit dem Teil anstellen kann.

Habt Ihr einen Tip, mit welchem Template ich da starten könnte, bzw. wie ich eine einfache Message ausgeben könnte ?

Vielen Dank !

betateilchen

Naja, Du musst in Deinem FHEM einen MQTT2_SERVER definieren, den Du dann in der Konfiguration des Displays angibst. Mit dem am Display konfigurierten topic könntest Du dann schon eine Nachricht von FHEM aus an das Display schicken

set <mqtt2_server> publish topic/zum/Display TextZurAnzeige
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

Zitat von: Jack_n am 15 August 2023, 12:07:38Jetzt stehe ich aber komplett auf dem Schlauch, wie ich mit FHEM und MQTT irgendwas mit dem Teil anstellen kann.

Habt Ihr einen Tip, mit welchem Template ich da starten könnte, bzw. wie ich eine einfache Message ausgeben könnte ?
Ein attrTemplate gibt es nicht, aber was ist so schwierig daran, sich an Welche Informationen sollte man bei Fragen zu MQTT-Geräten bereitstellen? zu halten, https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt zu finden, und dann wenigstens direkt zu den MQTT-Basisinfos des Projekts (https://github.com/rdeangel/esp8266_max7219_rda_msg_board#mqtt-topic-publishingsubscribing) zu verlinken?

Der Wiki-Artikel ist sicher verbesserungsfähig, aber es gibt in der attrTemplate-file zu MQTT2_DEVICE ziemlich viele Beispiele....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

juergen012

#3
Hallo,
ich habe ein ULANZI TC001 mit awtrix Light geflasht. In fhem habe ich zusätzlich zum MQTT2-Server die MQTT_GENERIC_BRIDGE installiert. Jetz kann ich z.B
mqttPublish temperature:topic={"awtrix/notify"} temperature:expression={toJSON({icon=>"temperature",text=>"".$value." °C"})}
   userattr   temperature
einen Text übergeben.
Fhem unter Proxmox

Wernieman

Da Du den MQTT2-Server hast, brauchst Du dann wirklich noch die MQTT_GENERIC_BRIDGE? Ist die nicht für einen externen MQTT-Server gedacht?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: Wernieman am 17 August 2023, 13:47:24Da Du den MQTT2-Server hast, brauchst Du dann wirklich noch die MQTT_GENERIC_BRIDGE? Ist die nicht für einen externen MQTT-Server gedacht?
Völlig falsche Frage. Hat nichts mit der IO-Type zu tun....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

juergen012

Die MQTT_GENERIC_BRIDGE nutze ich um Readingsänderungen (Temperatur/ Regenvorhersage/ Telefonanruf etc.) sofort auf das Display zu "pushen". Habe keine andere Lösung in fhem dafür gefunden. Klappt super!!
Fhem unter Proxmox

Beta-User

Zitat von: juergen012 am 17 August 2023, 14:21:50Die MQTT_GENERIC_BRIDGE nutze ich um Readingsänderungen (Temperatur/ Regenvorhersage/ Telefonanruf etc.) sofort auf das Display zu "pushen". Habe keine andere Lösung in fhem dafür gefunden. Klappt super!!
U. a. dafür ist die MGB gedacht (@Wernieman: daher das "falsche Frage"), aber natürlich geht es auch, einen gesonderten anderen Eventhandler (notify etc.; oder was timer-gesteuertes) anzulegen, und dann entweder einen publish-Befehl direkt auf das IO zu geben (wie von betateilchen vorgeschlagen), oder einen "set"-Befehl an ein MQTT2_DEVICE abzusetzen. Wie immer gibt es viele Wege nach Rom...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

Macht doch nicht immer alles so kompliziert und geht nicht immer von Eurem Erfahrungsstand aus!  >:(

Meines Erachtens geht es hier im Thread (zumindest ursprünglich einmal) nur darum, ein Verständnis dafür zu bekommen, wie man nun nach der Hardwarebastelei auch tatsächlich von FHEM aus einen Text auf das Display bekommt.

Und dafür ist das direkte publish über das IO-Device als erster Schritt die einfachste Variante.

Komfortabler machen und Feinheiten einbauen kann man danach immer noch. Aber man muss doch als Anwender erstmal das Prinzip verstanden haben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jack_n

Hallo Betateilchen,

vielen Dank für Deinen Beitrag.
Es ist wie Du schreibst - ich bin nur per Hobby am basteln und tüfteln mit FHEM und habe mit MQTT bishher so gut wie nix gemacht.
Programmierkentnisse hab ich nur aus der Schule (80er Jahre)....
Eine erste Nachricht habe ich jetzt über das publish hinbekommen, mal sehen wie ich weiterkomme.

Danke !

Jack_n

Hallo nochmal an Alle,

leider komme ich aus eigener Kraft nicht weiter und bitte Euch noch mal um Hilfe.

In der Weboberfläche des ESP8266 habe ich den MQTT Zugang konfiguriert und dort auch den Topic Präfix mit "MAX7219" eingetragen.

In FHEM mit set  mqttBroker publish MAX7219 Testnachricht bekomme ich auf dem Display die gesendete Nachricht angezeigt, so weit schon mal top.

Ab hier stehe ich aber wieder auf dem Schlauch.

Der Author der aufgespielten Software auf dem ESP8266 beschreibt die MQTT Eingabe jetzt so:

{
  "MSG":"Test",
  "BRI":"0"
}

Es gibt noch mehr JSON Parameter um zB. die Geschwindigkeit einzustellen usw.

Genau hier hänge ich jetzt fest und habe trotz vielem nachlesen und suchen keinen Weg gefunden das umzusetzen.

Würdet Ihr mich bitte noch mal in die richtige Richtung schubsen ?

Vielen Dank
Joachim

betateilchen

Du solltest Dir angewöhnen, auch Deine Testnachrichten als json zu verschicken, so wie es auf github beschrieben ist.

set mqttBroker publish MAX7219 {"MSG":"Testnachricht"}

Zitat von: Jack_n am 09 September 2023, 09:36:52Der Author der aufgespielten Software auf dem ESP8266 beschreibt die MQTT Eingabe jetzt so:

{
  "MSG":"Test",
  "BRI":"0"
}

Das json, das schon Deine Testnachricht enthält, wird einfach um einen zweiten Wert für die Helligkeit ergänzt. Ansonsten ist die Übertragung exakt die gleiche Prozedur wie bei Deiner nur-Text-Nachricht

set mqttBroker publish MAX7219 { "MSG":"Test", "BRI":"0" }

Und so kannst Du jeden weiteren Parameter einfach mit in die Nachricht packen.

{ "MSG":"Test", "BRI":0, "REP":5, "BUZ":3 }
Noch ein Hinweis: Das vom Autor vorgegebene

"BRI":"0"
ist gemäß json Spezifikation falsch. Numerische Werte werden in json nicht in Anführungszeichen gesetzt.
Deshalb habe ich die Anführungszeichen in meinem Beispiel nicht vergessen, sondern bewusst weggelassen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jack_n

Hallo Betateilchen,

wenn ich den folgenden Code anwende, dann wird exakt das alles inklusive der geschweiften Klammern auf dem Display ausgegeben.

set mqttBroker publish MAX7219 { "MSG":"Test", "BRI":"0" }
Das Logfile von mqttBroker mit Verbose 5 sagt das:

2023.09.09 11:48:11 5:   mqttBroker_192.168.178.160_57740 ESP-MSG-D056FB => MAX7219:{"MSG":"Testnachricht"}
2023.09.09 11:48:11 5: out@192.168.178.160:57740 PUBLISH: 0 (0)(7)MAX7219{"MSG":"Testnachricht"}
2023.09.09 11:48:15 5: in@192.168.178.160:57740 PINGREQ: (192)(0)
2023.09.09 11:48:15 4:   mqttBroker_192.168.178.160_57740 ESP-MSG-D056FB PINGREQ
2023.09.09 11:48:15 5: out@192.168.178.160:57740 PINGRESP: (208)(0)




TomLee

#13
Und wenn du es an den json-Topic sendest ?

set mqttBroker publish MAX7219/json { "MSG":"Test", "BRI":0 }
ZitatPlease Note:

    Any message published to a subscribed topic ending with /json will require a json message with any number of parameters passed above (MSG is mandatory to display a message).
    Any message published to a subscribed topic NOT ending with /json will take a message as a plain string with no additional parameter. (hard coded default parameters will be used, in future configurable I hope).

Jack_n

Tschakka, genau das war es !!!!

Vielen Dank für Eure Hilfe !!!!