NEWS
[Projekt] Scrolling OLED-display und Sonoff-Relais für iobroker via MQTT
-
MOD-Edit by eric2905; 03.05.2017/10:00; Betreff angepasst
dieses Projekt ermöglicht die Anzeige von iobroker-Daten auf einem kleinen OLED-Display. Die Übertragung erfolgt über WLAN mit Hilfe des MQTT Protokolls. Iobroker verfügt bereits über einen MQTT-server-adapter, dadurch gestaltet sich die Anbindung relativ einfach. Auf dem ESP-Modul habe ich den ESPeasy sketch laufen mit dem scrolling display Plugin. Die Kosten belaufen sich auf ca. 15 Euro. (mittlerweile auch mit ESP-01 (Kosten 2 Euro) getestet)
Insgesamt sind 12 Textfelder per MQTT beschreibbar. Im Beispiel sind die zusammengefasst in 6 Seiten zu 2 Zeilen, obere Zeile Beschriftung, untere Zeile die Daten. Diese Struktur, wie auch die Scroll-Geschwindigkeit lassen sich bequem mit dem Browser einstellen.
http://www.letscontrolit.com/forum/viewtopic.php?t=1149
:!: Nachtrag 6.3.17 Infos für das Hinzufügen von Sonoff-Relais beigefügt
Beispiel Sonoff basic 1 Kanal ohne Sensor.
-
Welches Display ist das genau!? [emoji4]
Sieht gut aus
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro
-
da gibts wohl einige Alternativen. wichtig: I2C OLED Driver IC: SSD1306. Schau mal auf https://blog.squix.org/ aber auch in der Bucht. Als ESP Modul habe ich ein Wemos D1 mini verwendet. Ist zwar etwas teurer, aber dafür ist der 3.3V Regler und der USB-Adapter schon fixfertig drauf. Gesamtkosten ca. 15 Euro, geht aber auch deutlich billiger, je nach ESP-modul und Lieferant (China, wenn man genug Zeit hat).
Ich hab mir überlegt, ob ich eine Kurzanleitung schreibe, es gibt doch einige Fallstricke, aber insgesamt ist das Projekt sehr einfach zu realisieren, sogar ohne Lötkolben :mrgreen: die 2 Module mit 4 Kabeln verbinden, USB aufstecken zum Programmieren und als Stromversorgung (5V).
-
hier die Kurzanleitung, ohne Anspruch auf Vollständigkeit. Ich beschreibe hauptsächlich die Problemstellen z.T. als Ergänzung zu den offiziellen Anleitungen. Die gleiche Anleitung lässt sich auch als Grundlage für ganz andere Aufgaben des ESP8266 Moduls verwenden (verschiedene Sensoren, Relais, Sonoff-Module)
https://www.letscontrolit.com/wiki/inde … are_Upload
Anmerkung 12.5.17 in der ESPEasy_v2.0.0-dev x Version - ist das Datenupdate per html und MQTT deaktiviert. Der Grund dafür ist die Lebenszeit des Flash-Speichers, die bei zu vielen Schreib-Operationen stark abnimmt. Mit der Version R148 funktioniert alles wie beschrieben, aber auch hier sollte man auf möglichst lange Update-Intervalle >30 Minuten achten.
Wer Scrolling OLED einsetzen will, der kompiliere den Sketch gem. untenstehenden spoiler oder melde sich bitte per PM für einen downloadlink für die kompilierte Version R148 unter Angabe des verwendeten ESP8266 Moduls.
Anleitung Einrichtung der Programmierumgebung Arduino IDE
! 1. Einrichtung der Programmierumgebung Arduino IDE für ESP8266 u.a. mit Oled-Display
! clean portable install gem. http://www.letscontrolit.com/wiki/index … are_Upload
! https://www.arduino.cc/en/main/software arduino ide download : zip file for non admin install (aktuell 1.8.1)
! zip-file entpacken nach (z.B.) c:\arduino-1.8.1
! der Abschnitt Download ESP Easy Firmware sieht bei mir etwas anders aus:
! Verzeichnis ESPEasy und libraries aus http://www.letscontrolit.com/downloads/ESPEasy_R120.zip
! kopieren nach c:\arduino-1.8.1\portable\sketchbook
! c:\arduino-1.8.1\portable\sketchbook\ESPEasy überschreiben mit R148 Dateien aus
! github. Version R148
! Master Branch https://github.com/letscontrolit/ESPEasy/tree/master
! download ESPEasy plugins: https://github.com/letscontrolit/ESPEas … Playground. Daraus
! _P205_FrameOLED.ino und Extra_Utilities.ino nach c:\arduino-1.8.1\portable\sketchbook\ESPEasy kopieren
! esp8266-oled-ssd1306.zip entpacken nach c:\arduino-1.8.1\portable\sketchbook\libraries
! Arduino.exe starten und ESPEasy.ino laden
! Sketch/Überprüfen-Kompilieren sollte keine Kompilerfehler ausgeben. -
Konfiguration ESP8266 mit ESPEasy
nach dem Firmware-upload http://www.letscontrolit.com/wiki/index … are_Upload
ist das Modul als Accesspoint ESP_0 erreichbar (am eigenen Laptop bestehende WiFi Verbindung trennen und mit ESP_0 verbinden) Falls der AP ESP_0 nicht erscheint, kurz aus- und wieder einschalten. Anschliessend nicht vergessen, wieder mit dem Heim-Netzwerk zu verbinden.
Login und Setup nach folgender Anleitung http://www.letscontrolit.com/wiki/index.php/EasySetup
hier die Zugangsdaten (SSID/Passwort) zum eigenen Wlan eintragen. Anschliessend das Modul unter der zugeteilten IP connecten.
Beispielkonfiguration:
mittlerweile auch mit ESP-01 (Kosten 2 Euro) getestet: SDA geht hier auf GPIO0 und SCK auf GPIO2, Speisung 3.3VAchtung, der Name des Oled-Device darf nicht "oled " sein
:!: Beispiel Sonoff-Relais Modul
Rules müssen eingeschaltet werden: /tools/advanced/rules Haken setzen
on relay#state do if [relay#state]=0 gpio,13,1 else gpio,13,0 endif endon on button#state do if [button#state]=0 gpio,12,0 gpio,13,1 else gpio,12,1 gpio,13,0 endif endon
-
(Test-)Konfiguration des iobroker MQTT-Adapters
5. Publish-topic für ausgehende Befehle:
. In diesem Fall (ESPEasy-OLED-Scroll-Display) setzt sich der Topic wie folgt zusammen /Modulname/cmd/devicename/Anzeigeplatz/Anzeigetext. Im Beispiel:
/easy_wemo/cmd/wemo/1/Anzeigetext-1 (vgl. die Bezeichnungen in der ESPEasy Konfiguration). Die Zuordnung der Anzeigeplätze hängt von der Zeilenzahl ab. Bei 2 Zeilen bedeutet 1 die obere Zeile im 1. Frame, 2 die untere Zeile im 1. Frame usw. (der eigentliche Topic ist /Modulname/cmd/ der Rest wird als payload gesendet: devicename,Anzeigeplatz,Text)
Siehe ioBroker script im letzten Kapitel.
IOBroker kennt die publish-topics nicht:
Hier gibts ein kleines Problem: die clients geben in der Regel die Befehle, die sie erwarten nicht bekannt. Deshalb muss man diese dem iobroker händisch beibringen. Im MQTT Adapter sind diese Topics als Datenpunkte abgebildet. Leider habe ich keinen eleganten Weg gefunden, diese Datenpunkte unter mqtt.0 zu generieren, meine diesbez. Anfrage im Forum blieb unbeantwortet. Aber es gibt einen relativ einfachen Weg, dies zu tun, nämlich mit dem MQTT-tool MQTT.fx. (oder mit der Android app MQTT Dashboard) Mit diesem Tool kann man gleichzeitig den MQTT-Server wie auch die MQTT-clients testen. Einzige Bedingung ist, dass der iobroker MQTT-server eingeschaltet ist. Wird vom Tool aus ein Befehl (publish) an den client abgesetzt, wird der betreffende Datenpunkt unter mqtt.0 unmittelbar eingetragen. Erst dann lassen sich von ioBroker aus auch MQTT-Befehle absetzen. Beide Tools beschreibe ich im nächsten Kapitel.
-
Vielen Dank für die Anleitung!!!! [emoji1360][emoji6]
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro
-
[emoji106] super Anleitung!
-
Tools
mqtt.fx für Windows download http://mqttfx.jfx4ee.org/index.php
iobroker mqtt-server einstellen
subscribe (zum Test noch ohne Einschränkungen) und popup-notifications für jedes telegramm
und hier das Wichtigste: ein publish Befehl zum Darstellen eines Texts und Eintrag des Datenpunkts in iobroker
Beispiel für das Schalten eines Sonoff-RelaisAndroid app MQTT Dashboard
Server einrichten
subscribe
publish
Beispiel für das Schalten eines Sonoff-Relais -
IOBroker javascript
einfaches Testscript - less than perfect - aber tut für mich genau das, was es muss (siehe video-clip im 1. Post)
Das script liest Messdaten von HM-Sensoren und sendet sie per MQTT an das OLED-Display. Dank Wifi lässt sich das Display frei platzieren, als Stromversorgung genügt ein einfaches USB-Netzteil mit 5V - zumindest bei Verwendung eines Wemos-Moduls mit eingebautem 3.3V Regler. Achtung, nicht alle ESP8266-Module haben diesen Spannungsregler eingebaut, da muss man selber für 3.3V sorgen. Versehentliche Einspeisung von 5 V überleben diese nicht.
schedule("*/30 * * * *", function () { // alle 30 Minuten - für Tests ggf auskommentieren setState("mqtt.0.easy_wemo.cmd","wemo,1,T_aussen"); // Beschriftungszeilen setzen via MQTT setState("mqtt.0.easy_wemo.cmd","wemo,3,Wohnzimmer"); setState("mqtt.0.easy_wemo.cmd","wemo,5,Keller"); var temp=getState("hm-rpc.2.IEQ0020678.1.TEMPERATURE").val; // HM-Datenpunkte auslesen und in Variablen schreiben var wz_t=getState("hm-rpc.2.MEQ0476362.1.TEMPERATURE").val; var wz_h=getState("hm-rpc.2.MEQ0476362.1.HUMIDITY").val; var k_t=getState("hm-rpc.2.MEQ0477427.1.TEMPERATURE").val; var k_h=getState("hm-rpc.2.MEQ0477427.1.HUMIDITY").val; setState("mqtt.0.easy_wemo.cmd","wemo,2,"+temp+" °C"); // Variablen nach ESP8266 schreiben via MQTT setState("mqtt.0.easy_wemo.cmd","wemo,4,"+wz_t+" °C / "+wz_h+" %rH"); setState("mqtt.0.easy_wemo.cmd","wemo,6,"+k_t+" °C / "+k_h+" %rH"); }); // für Tests ggf auskommentieren
so, das wars, ist doch noch länger geworden. Ich hoffe, dem einen oder andern hilfts. Aufgrund der Vielzahl möglicher Module habe ich mich in dem Bereich etwas kurz gehalten, aber das Internet ist ja voll mit Anleitungen und Schaltungsvorschlägen. Gut an ESPEasy ist, dass es gerade im Bereich der GPIO sehr flexibel ist. Wie schon angedeutet lassen sich mit ESPEasy eine Vielzahl verschiedener Sensoren, aber auch Relais und Schalter anschliessen, auch simultan.
Es lohnt sich, die Webpage http://www.letscontrolit.com/wiki/index.php/ESPEasy genauer durchzulesen.
Nachtrag 18.4.17 : falls sich bei den Topics Probleme ergeben, kann es sein, dass es am leading / liegt. Manchmal wird dieses / am Anfang vorgegeben (so z.B. auch im ESP Easy default) - ich selbst habs überall entfernt, da damit nur eine (leere) Ebene eingeschoben wird.
die entsprechende Konfiguration im ESPEasy sieht dann so aus:
-
Guten Morgen starfish,
Dank deiner Hilfe habe ich es ja geschafft, ESP Easy auf den ESP8266 zu flashen. Läuft super.
Du hast in diesem Beitrag auch die MQTT-Verbindung dokumentiert. Ich will folgendes machen:
Heizung wird in 4 Wochen umgebaut. Ich möchte mit einem ESP8266 und mehreren DS18B20
div Temperaturen im Keller erfassen und in IoBroker anzeigen. ESP und DS18B20 läuft.
Womit ich nicht klarkomme, ist MQTT. (Oder eine andere Verbindung zum IoBroker)
In ESP-Easy so eingestellt wie in deinem Screenshot, OpenHAB MQTT, IP des IoBroker, User und Password.
In IoBroker den MQTT-Adapter (später noch den MQTT-Client) installiert, in MQTT-Adapter folgendes eingestellt:
-
Client/subscriber
-
IP des ESP
-
Username und Kennwort wie im ESP
Will ich unter Instanzen mqtt.0 starten, wird der Kreis ganz links gelb, jedoch nicht grün.
Habe leider im Forum nix gefunden, was mache ich verkehrt ????
Was müßte ich unter MQTT-Einstellungen eintragen ?
Oder muß ich dem MQTT-Client verwenden ?
Grüße Ingo
-
-
hallo Ingo,
als erstes lösche mal den mqtt-client aus den Instanzen. Ich habe nur den mqtt adapter 1.3.2 laufen.
Der gelbe Punkt bedeutet, dass noch kein client mit dem server Kontakt aufgenommen hat. In dem Punkt ist meine Anleitung (eher "Starthilfe") nicht ganz klar - überall wo 192.168.0.162 steht, muss DEINE iobroker-IP stehen (also im ESPEasy).
Ist Dein ESPEasy überhaupt erreichbar mit dem Browser? bzw. angemeldet an Deinem AccessPoint? (welche IP?)
zu den MQTT-Adapter Einstellungen habe ich in meiner Anleitung auch 2 screenshots (Test-)Konfiguration des iobroker MQTT-Adapters) - die kannst Du so übernehmen (ausser Dein Username/Kennwort).
Kannst Du mir per PM screenshots schicken von ESP-easy und iobroker-adapter konfiguration?
-
Hallo Satrfish.
Ich habe meinen WEMO und den MQTT Adapter installiert bekommen.
Mein Wemo heist GaragenESP er hat 2 Relays an GPIO 14 und GPIO 12angeschlossen
das Relay an GPIO14 heist tor1
Beim Einschalten bekommen ich als State in MQTT Fx folgendes angezeigt
! /GaragenESP/tor1/state
! 1Was ich noch nicht genau verstehe wozu nun die Rules da sind und wieso dein Schaltbefehl bei die an
easy/relay/gpio/12 geht
demnach müsste mein MQTT Befehl GaragenESP/tor1/state heißen? Oder liege ich da verkehrt.
ich habe folgende Rule eingefügt
on tor1.state do if [tor1.state]=0 gpio,14,1 else gpio,14,0 endif endon
Vielleicht kannst Du mir ja helfen.
Gruß Stefan
-
hallo Stefan,
so wie ich verstehe, hast Du kein Sonoff Relais? In dem Fall hast Du auch keine Taster und keine (eigenständigen) LEDs zur Schaltanzeige? Unter dieser Voraussetzung brauchst Du gar keine Rule zu schreiben, sondern kannst die Relais direkt über GaragenESP/gpio/12 bzw GaragenESP/gpio/14 und 0 bzw. 1 als payload schalten. So entfallen zwar die individuellen Namen für die Relais (Tor1 …) aber es ist die einfachste Möglichkeit, das Ziel zu erreichen. Die Devices Switchinput und Rules kannst Du löschen. Versuchs mal so, und melde Dich wieder über PM.
(die Rules in meinem Beispiel sind für Sonoff gedacht, damit die LED und das Relais gleichzeitig eingeschaltet werden. Die 2. Funktion ist fürs manuelle Einschalten des Relais über den eingebauten Taster gedacht).
-
Sorry das ich jetzt erst antworte. Aber Tapatalk nervt mich manchmal ein wenig.
Ich habe tatsächlich kein Sonoff Relay sondern ein selbstgebautes.
Ich werde das ganze nochmal testen. Wobei ich noch nicht gefunden habe wie ich bei ESPEasy erkenne dass er die mqtt Meldung tatsächlich bekommen hat.
Ich werde es in Ruhe nochmal Testen.
Gruß Stefan
Gesendet von iPhone mit Tapatalk
-
Hallo, danke Dir für die gute Anleitung.
Ich möchte ein Wemos ESP-12 mit 512k verwenden. Gibt es Nachteile gegeüber den 4M Modulen?
-
Ich habe tatsächlich kein Sonoff Relay sondern ein selbstgebautes.
Ich werde es in Ruhe nochmal Testen.
Gruß Stefan
Gesendet von iPhone mit Tapatalk `
Guten Morgen.
Wie versprochen die kurze Rückmeldung.
Mit dem mqtt Befehl hat es super geklappt. Jetzt schalten beide Relais und der DHT sendet fleißig.
Jetzt. Leibt mir nur noch das Skript offen, welches mir die Bestätigung der Relais bearbeitet und sie wieder zurücksetzt. Da sie nur als Taster für die Garagentore dienen sollten.
Gruß Stefan
Gesendet von iPhone mit Tapatalk
-
Hallo, danke Dir für die gute Anleitung.
Ich möchte ein Wemos ESP-12 mit 512k verwenden. Gibt es Nachteile gegeüber den 4M Modulen? `
die 512k Module würde ich neu nicht erwerben. Grad beim espeasy 512k - sketch hast Du nur die basic plugins und OTA - update (übers WLAN) geht auch nicht.Diese würde ich nur verwenden, wenn die Bastelkiste voll ist damit.4M hat also klar Vorteile. ich empfehle die Module mit USB-Schnittstellenwandler und 3.3V Spannungsregler (z.B. Wemos D1 mini und ähnliche). Bekanntlich laufen die ESP8266 mit 3.3V - 5V sind tödlich (ohne obenerwähnten Spannungsregler).
-
Jetzt. Leibt mir nur noch das Skript offen, welches mir die Bestätigung der Relais bearbeitet und sie wieder zurücksetzt. Da sie nur als Taster für die Garagentore dienen sollten.
Gruß Stefan
Gesendet von iPhone mit Tapatalk `
jetzt ist mir klar, was Du meinst. ich hab da so eine Idee, muss aber zuerst testen.
so, wenn ich Dein Problem richtig verstanden habe, sollte dies laufen:
erstelle ein Device in espeasy als gpio pin nimmst Du irgendeinen freien (hier testweise 14)
dann in den rules :on tast#state do if [tast#state]=0 gpio,12,0 else pulse,12,1,500 endif endon
der Tast-puls (500ms) wird jedesmal ausgelöst, wenn Du von 0 -> 1 schaltest auf easy_th/gpio/14 (dazwischen wieder auf 0 schalten) (easy_th durch deine Bezeichnung ersetzen) - den Datenpunkt erstellen mit mqtt.fx
-
Hallo, danke Dir für die gute Anleitung.
Ich möchte ein Wemos ESP-12 mit 512k verwenden. Gibt es Nachteile gegeüber den 4M Modulen? `
die 512k Module würde ich neu nicht erwerben. Grad beim espeasy 512k - sketch hast Du nur die basic plugins und OTA - update (übers WLAN) geht auch nicht.Diese würde ich nur verwenden, wenn die Bastelkiste voll ist damit.4M hat also klar Vorteile. ich empfehle die Module mit USB-Schnittstellenwandler und 3.3V Spannungsregler (z.B. Wemos D1 mini und ähnliche). Bekanntlich laufen die ESP8266 mit 3.3V - 5V sind tödlich (ohne obenerwähnten Spannungsregler). `
boah, habe bereits schon einen mit 512k bestellt :?
Aber jetzt würde ich mir noch einen mit 4M nachlegen.
Kannst Du unter dem Link schauen ob dies das richtige Teil ist?
http://www.ebay.de/itm/D1-Mini-NodeMCU- … SwFqJWn1os
Das Teil ist allemal 4M Version, und hat einmal den Pin mit 5V und 3,3V
Die Spannungsversorgung kann ich entweder über die micro USB Schnittstelle, oder die 5 und 3,3V gegen die Mase anlegen richtig?