FHEM ESPEasy MQTT anbinden

Ich habe mich jetzt schon seit einiger Zeit mit dem ESP beschäftigt und wollte ihn neben den anderen Komponenten nun auch in FHEM einbinden.
Dabei habe ich nach einer Lösung gesucht die einfach anzubinden ist und das als “nicht” Softie auch nicht viel Programmieraufwand erfordert.

Dabei bin ich auf ESPEasy gestoßen und habe es nun mit FHEM verbunden.

Als Protokoll setze ich MQTT ein. Zuerst also den MQTT Broker auf den Server installieren und in FHEM einrichten:

Kriwanek MQTT installieren ,Wenzlaff.de

UPDATE (2016-06-20): Nachdem wir beim Usertreffen auf eine Herausforderung gestoßen sind, hiermal ein paar Tips zur Fehlersuche:

  • Immer aktuelles Version vom MQTT Broker verwenden unterm RPi / Debian
    wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

    sudo apt-key add mosquitto-repo.gpg.key
    cd /etc/apt/sources.list.d/
    sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
    sudo apt-get update
    sudo apt-get install mosquitto
  • mosquitto service stoppen und manuell laufen lassen, damit man sieht das zum Beispiel eine zu alte Version auf dem RPi läuft:
    sudo service mosquitto stop
    mosquitto

FHEM
#MQTT FHEM
define mqttServer MQTT 127.0.0.1:1883
attr mqttServer room MQTT

Als Testobjekt habe ich einen meiner NodeMCU’s genommen. Auf der ESPEasy die aktuelle Release (R120) runtergeladen und unter Windows den Flash.cmd als Administrator ausgeführt (vermeidet eventuell COM Port Fehler)ESPEasyFWUpload .
Das Flashen einer ESPEasy Version mit Arduino habe ich hier beschrieben.
Nach dem Flashen meldet sich der ESP mit einem WLAN-AP (ESP_xx) und mit configesp kann man sein Handy/PC direkt verbinden zum erstmaligen Setup. Dazu ruft man die Webseite des ESPs auf mit dem verbundenen Gerät http://192.168.4.1
Das Setup besteht eigentlich nur daraus seinen AP auszusuchen und den Key einzugeben. Danach meldet er noch die neue IP Adresse und ist ab den Zeitpunkt unter dieser erreichbar.

Die Konfiguration ist in ein paar Minuten erledigt, sie enthält grundsätzlich folgende Schritte (hier nur die Werte die geändert werden sollten):

  1. Config:
    Name: Name des Devices
    Admin Password: kann geändert werden
    Unit nr:   Habe hier für jeden ESPEasy eine eigen Nummer eingetragen
    Protocol: PiDome MQTT (damit hat es direkt funktioniert)
    Locate Controller: IP adress sollte immer funktionieren
    Controller IP: Die IP Adresse des MQTT Servers. Anmerkung: Gebt hier die Netzwerk-IP-Adresse von eurem FHEM bzw. MQTT-Broker Servers ein (zB: 192.168.178.2)
    Controller Port: 1883 (standard)
    Sesor Delay:   Sekunden in dem die Werte übertragen werden, hierbei werden Schalter nicht berücksichtigt, dh. Schalterstati werden direkt übermittelt
    ESP IP:  feste IP oder feste MAC Zuweisung im DHCP Server einstellen
    GW/Subnet/DNS: sind an das Netz anzupassen
  2. Hardware:
    SDA / SCL: kann auf Standard bleiben
    Pin mode: legt den Zustand (Ausgang) nach einem Reset oder einschalten fest, für Relais oder Lampen nützlich
  3. Devices:
    Hier erfolgt nun das wesentliche für die Sensoren. Es steht eine Liste zu Verfügung zB.:  DHT, DS18b20, Helligkeit, Schalter usw.
    Ich habe einen DHT22, Switch und 4 OneWire (DS18b20) angeschlossen. (siehe Bildergalerie)

    Hinweis: beim  DHT22 und  OneWire jeweils ein >= 4,7KOhm PullUp an der Datenleitung nach 3,3V angeschließen !

    Wichtig sind die IDx/Variable Werte, diese werden für den MQTT Broker als %id% verwendet.

    OneWire ESPEasy

    OneWire ESPEasy Device

  4. Tools –> Advanced
    Hier wird die Einstellung für den MQTT Broker vorgenommen
    Publish Template: habe den wie folgt geändert
    /fhem/DeviceName/%id%/%valname%
    zBBild: /fhem/esp152/1/Temperature
    Die weiteren Einstellung können unberührt gelassen werden.

Unter Tools –> LOG kann man nützliche Hinweise finden, wie zB: can’t connect to MQTT Broker usw.

Das wars auch schon mit dem ESP Config, natürlich muss die Hardware dementsprechend angeschlossen und in FHEM konfiguriert werden.

In FHEM ist diese Konfiguration so eingepflegt:

define esp152_t1 MQTT_DEVICE
attr esp152_t1 IODev mqttServer
attr esp152_t1 room TempSensor, MQTT
attr esp152_t1 stateFormat T Temperature °C
attr esp152_t1 subscribeReading_Temperature /fhem/esp152/1/Temperature

define esp152_h1 MQTT_DEVICE
attr esp152_h1 IODev mqttServer
attr esp152_h1 room MQTT
attr esp152_h1 stateFormat H Humidity %
attr esp152_h1 subscribeReading_Humidity /fhem/esp152/1/Humidity

define esp152_s1 MQTT_DEVICE
attr esp152_s1 IODev mqttServer
attr esp152_s1 room MQTT
attr esp152_s1 stateFormat Sw Switch
attr esp152_s1 subscribeReading_Switch /fhem/esp152/2/Switch

Der Wert esp152 ist der Name den ihr unter ESPEasy publishtemplate vergeben habt. Die Zahl 1 und 2 ist die %id% die ihr im ESPEasy unterm Device eingestellt habt.

 

Es werden bestimmt noch weitere Artikel und Erfahrungen mit dem ESP und der Firmware folgen…


Hier die Bilder:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.