Projekt - ESPeasy mit I2C-Display, MQTT

Begonnen von bartman121, 31 März 2017, 09:13:40

Vorheriges Thema - Nächstes Thema

bartman121

Moin,

ich bin derzeit ein bisschen am basteln und überlege eine Display über I2C per Espeasy zu steuern. Ich finde die Lösung per HTTP nicht sonderlich schön, Hintergrund ist, dass es Probleme bei nicht-Erreichbarkeit des Displays geben kann.

Als Lösung habe ich derzeit Espeasy-Mega gewählt --> https://www.letscontrolit.com/wiki/index.php/ESPEasyMega

Hier kann man ein Device MQTT-Import definieren. Dieses Device subscribed am broker bis zu vier topics, darüber kann man einiges an Werten übergeben. Man kann auch mehrere MQTT-Import-Devices machen, dann hat man X*4 Werte ....

Die Werte kann man ins Display schreiben:
Use the device tab on the ESP Easy webinterface and create a new task by editing one of the available tasks. Select "LCD Display" from the dropdown box.

Enter template texts into lines 1 to 4. Plain text will be shown on the display exactly as entered. If you want to show a value, enclose <task name> and <value name> between brackets, separated by a hashtag.

So if you have a dallas sensor running, with taskname "Dallas", to get the temperature value, use this:

[Dallas#Temperature]


mittels "Rules" kann man auch "Display on" und "Display off" per MQTT machen....

Man kann direkt von fhem Werte über den broker publishen und über MQTT-Import holen oder man subscribed bestehende Sensorwerte, viel ist möglich.


Derzeit kan man mittels MQTT-Import nur float-Werte importieren.
Frage dazu:
Ist bei MQTT irgendwo festgelegt, dass man nur Zahlen publishen darf/soll?
Wenn nein, dann müsste man ESPEasyMega etwas modifizieren und dann könnte man auch "Texte" importieren.

Der Vorteil dieser Lösung besteht darin, dass man sich Dank MQTT wenig Gedanken machen muss, das Display kann "unabhängig befüllt" werden und bei Bedarf kann man das Ding von fhem einschalten oder halt mittels button, sensor am Display...

Meinungen, Fragen, bei Bedarf kann ich heute Abend mal ein bei Screenshots meiner Konfigs machen.



Thorsten Pferdekaemper

Zitat von: bartman121 am 31 März 2017, 09:13:40
Moin,Frage dazu:
Ist bei MQTT irgendwo festgelegt, dass man nur Zahlen publishen darf/soll?
Also der MQTT-Standard sagt gar nichts über das Nachrichtenformat aus. Es wird auch keine Typinformation übermittelt, d.h. man kann genau genommen nicht einmal allgemein feststellen, was das für ein Datentyp ist.
Gruß,
   Thorsten
FUIP

dev0

Zitat
Ich finde die Lösung per HTTP nicht sonderlich schön, Hintergrund ist, dass es Probleme bei nicht-Erreichbarkeit des Displays geben kann
Das ist bspw. beim ESPEasy Modul nicht der Fall. Es ist auch ein resend der Kommands möglich, sobald der ESP wieder erreichbar ist.

tklein

hallo,

bei mir gehen 6 Zeilen per MQTT zu befeuern. Allerdings stehe ich momentan vor einem Rätsel. Vielleicht kann mir jemand dabei helfen:
mosquitto_pub -t wemos/line2 -m "14" klappt während
mosquitto_pub -t Wemos_Schlafzimmer/line2 -m "12" keine Daten an das Display sendet. Dabei ist das der Name des Devices.

Das dumme ist nur, dass ich nicht mehr weiss, warum da noch nur wemos drin steht... :o

verwirrte Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

bartman121

Im DEVICE mqtt-Import muss das topic geändert werden.

tklein

@bartman121

f@@k das glaube ich ja nicht. Besten Dank für den Stubs in die richtige Richtung.

Gruß Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Rince

Irgendwo in deinem Framework versteckt sich eine void callback:


void callback(const char[] topic, byte* payload, unsigned int length)

Dann kommt Code der die empfangenen Daten in irgend etwas konvertiert, bzw. als irgend einen Typ wohin schreibt.

Da könntest du nachlesen.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

bartman121

@dev0
Irgendwie hatte ich das easpeasy-Modul gar nicht auf den Schirm

Ich mag es jetzt aber über MQTT machen.

@Rince
Danke, es ging bei der Frage eher darum ob es Standard-konform wäre auch Texte als Payload zu übertragen.

Grüße

Rince

Prinzipiell kann so gut wie alles als Payload geschickt werden. Das hat Thorsten ja schon​geschrieben.
Ich würde mit MQTT Spy oder MQTT fx mal ansehen, was denn am Broker gepublished wird. Damit kannst du eingrenzen ob das am Publisher liegt oder am Subscriber.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)