ESP8266 zur Heizungsüberwachung und anderes

Begonnen von Toshi, 17 November 2015, 14:54:21

Vorheriges Thema - Nächstes Thema

Toshi

Liebe Foristen,

das ist mein erster Tag und mein erstes Posting hier.
Allerdings kenne ich FHEM schon einige Jahre. Ich habe vor 4 Jahren ein älteres Haus gekauft und bin immer noch mit der Kernsanierung unterwegs.
Sehr früh brauchte ich etwas um wenigstens rudimentär die Funktion einer Drainage-Pumpe sowie Temps und Feuchtigkeit zu überwachen.
Inzwischen läuft ein Pi produktiv mit 7 Jalousien, 7 Dimmern, diversen Schaltern, Türkontakten etc. hauptsächlich auf Basis Homematic und ein bisschen FS20.
Hiermit vielen, vielen Dank an alle, die zur Entwicklung von FHEM beigetragen haben. Deshalb möchte ich jetzt auch ein bisschen an die Community zurückgeben.

Im Sommer habe ich angefangen ziemlich ernsthaft mit einem wirklich netten Chip, dem ESP8266, zu arbeiten.
Seit 6 Wochen läuft ein Prototyp stabil in meinem Heizungskeller und plottet mir Vor- und Rücklauf von Heizung und Warmwasser sowie die Raumtemp in mein FHEM.

Sollte hier Interesse bestehen erstelle ich gerne eine komplette Doku als HowTo zum Nachbau und als Basis für ähnliche Projekte.
Der Vorteil dieses Chips ist die unglaubliche Vielseitigkeit verbunden mit einem extrem geringen Preis. Meine ganze Heizungsüberwachung hat unter 2o€ gekostet.

Solltet ihr also Interesse an so einem Ansatz haben, sagt mir bitte, wo ich diese Doku am besten hinstelle.

Toshi




Thorsten Pferdekaemper

Hi,
also ich bin mir noch nicht sicher, ob ich tatsaechlich jemals irgend etwas auf dem ESP8266 bauen werde, aber das Teil ist sicherlich sehr interessant. Es waere ganz gut, wenn Du vielleicht erst einmal hier etwas mehr Details beschreiben wuerdest. Ein richtiges HowTo waere dann wohl am besten im Wiki aufgehoben.
...just my 2c.
Gruss,
   Thorsten
FUIP

schka17

Hi,

ja das ist definitv interessant.

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Pyromane

Hi,

ja würde auf großes Interesse bei mir stoßen.
Denn ich möchte ebenfalls meinen Heizkreislauf detailreich visualisieren, dafür waren mir die bisherigen Lösungen zu kostspielig.

Danke!

mproper23

Hallo,

das hört sich echt interessant an. Ich habe auch einige ESP8266 als Temperatursensoren an meiner Heizung und an einem S0-Logger (Hutschiene zum erfassen der PV-Leistung)
Ich lasse mir bisher die Daten in Thingspeak schreiben und die Visualisierung erfolgt extern über meine Homepage.
Hätte gerne aber das ganze in FHEM vereint, großer Vorteil wäre hierbei auch, dass ich dann über FHEM zBsp meinen Eigenverbrauch bei hoher PV-Leistung erhöhen könnte(Waschmaschine an usw.)

Gruß Andy

Olly

Hallo,

auch ich möchte mal Interesse an deiner Umsetzung bekunden.
Hab ähnliches vor, jedoch wollte ich einen RasPi mit FHEM und 1-Wire in den Heizungskeller bringen.
Eine Umsetzung mit ESP8266 hört sich aber auch interessant an. Was für Sensoren setzt du denn ein und über welches Protokoll überträgst du denn die Daten an FHEM.

Gruß

     Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

ckbln

Hallo,

auch ich hätte ein Interesse an einer stabilen Lösung. Ich habe auch schon diverse Versuche (DHT22, DS18B20) mit mehr oder weniger Erfolg bezüglich der Stabilität ausprobiert. Aktuell  teste ich diese http://www.esp8266.nu/index.php/Main_Page Lösung. Der Einsatz eines DS18B20 funktioniert schon ohne Probleme. Leider bekomme ich die Verbindung zu meinem MQTT Server noch nicht hin.

Gruß Christof

Toshi

ESP8266 - Teil 1

dann werde ich mal hier in loser Folge alle Infos zusammentragen.

Das ganze Projekt besteht nur aus einem ESP8266 mit eigener Firmware und 5 DS1820 Temperatur-Sensoren.

Der 8266 wurde primär als WLAN-Modul für andere uC-Systeme entwickelt. Über eine serielle Schnittstelle (SPI) konnten dann Systeme wie z.B. Arduino etc. mit einem speziellen Befehlssatz auf WLAN zugreifen.
Intern besitzt dieser Chip selber aber auch einen 80MHz, 32-Bit Prozessor, den man mit eigener Software füttern kann. Man kann also eigene Software als Firmware flashen.
Ähnlich wie ein RasPi hat auch der 8266 diverse IO-Pins, die man aus der Software heraus ansteuern kann.

Zuerst meldet sich das System in meinem WLAN (N/WPA2) mit SSID und Key an und holt sich vom DHCP-Server eine Adresse.
Danach spricht der 8266 die 5 DS1820 regelmäßig selber an und liest die Werte aus. Aus den Werten wird eine HTTP-Get Zeile erstellt mit der die Werte alle 30 Sekunden an den FHEM-Server geschickt werden. Dort lauscht ein CUL_WS-Device und legt die Werte in einem Logfile ab, auf das drei Plot-Files zugreifen.
Zum debuggen kann man die aktuellen Werte und die IDs der Sensoren auch über ein Web-Interface vom 8266 direkt abrufen.

Think-Speak und Artverwandt hatte ich auch erst im Sinn, da es dafür viele fertige images zum Flashen gibt. Aber ich möchte nicht mit mehreren Systemen arbeiten und vor allem werde ich niemals Daten ausserhalb meines LANs ablegen.

Ein RasPi im Keller war mein ursprünglicher Plan, aber der 8266 ist ein cooles Spielzeug für Informatiker :-)), ausserdem kostet es weniger als ein Viertel und braucht keine updates.

Die erzeugte Grafik seht ihr oben. Das laufende System gibt es hier als Anhang.

Die Ausführung ist nicht unbedingt ein Meisterstück an deutscher Ingenieurskunst, aber es tut und hat als Projekt viel Spaß gemacht.

Die Schaltung ist auf Lochraster aufgebaut und sitzt in einem 70x70 Abzweigkasten. Die Spannungsversorgung erfolgt über ein microUSB-Netzteil/1A.
Die DS1820 versorge ich zusätzlich mit 3,3V über einen dritten Leiter. In der Software werden Die DS aber wie parasitäre Einheiten angesprochen.
Aus dem Abzweigkasten geht ein Telefonkabel zu einem weiteren Abzweigkasten von dem dann die 5 Kabel zu den Sensoren gehen.
Die DS sind mit Kabelbindern an den Heizungsrohren befestigt und mit Arma-Tape umwickelt.

Die Firmware erzeugt folgenden String :
GET /fhem?cmd=setreading 8266_Heizung state T1: nn.n T2: nn.n T3: nn.n T4: nn.n T5: nn.n
Im Logfile sieht das Ganze dann so aus :
2015-10-25_18:25:36 8266_Heizung T1: 18.56 T2: 41.25 T3: 40.75 T4: 31.81 T5: 35.25

Demnächst mehr

AndreasHH

Moin,

folgend ein Forenbeitrag, der den Weg von ESP Easy über MQTT an FHEM beschreibt.

http://forum.fhem.de/index.php/topic,43669.0.html

Alternative: Arduino IDE und den Beispielsketch mqtt_esp8266 als Grundlage zu nutzen. Hat den Vorteil, dass man die Datenübertragung zum MQTT-Broker flexibel handhaben kann.

Ich bin auch gerade am Thema dran, brauche allerdings noch ein paar Tage bis ich nähere Beschreibung zur Konfiguration liefern kann.
Generell funktioniert der FHEM-Empfang als auch darauf basierender Plot bereits.

Gruss

Andreas


FHEM 5.8, FB7490, FB7390, Linux-Server, Raspi 1, Raspi 2, FHEM2FHEM, div. FS20, div. FHT, div. HMS, div. Homematic, MQTT, ESP8266, Arduino

SpenZerX

Hi,

vielleicht kannst du mal einen Reichweitenvergleich machen, mit / ohne Antenne. Würde mich interessieren was die bringt.

Olly

Hallo,

erst mal ein großes Danke von mir an Toshi für die ausführliche Beschreibung.
Reichweite wäre bei mir auch ein Thema. Keine Ahnung, ob mein WLAN bis in den Keller reicht. Den RasPi hätte ich per PowerLAN angebunden.
@Toshi: Kannst du noch was zu den verwendeten 1-Wire Sensoren sagen. Sind das spezielle, z. B. in Metallhülsen? Und wie hast Du die an den Rohren befestigt?

Gruß

     Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

Toshi

Teil 2  8266 - Modelle und Reichweiten

Den 8266 gibt es nur in einer Bauform und wird auch nur von einer Firma in China gefertigt. Leider ist diese Bauform für Bastler nicht geeignet (Reflow, Größe etc.)
Für den Betrieb benötigt der 8266 zusätzlich noch per SPI angebunden Flash-Speicher.
Deshalb wird der 8266 üblicherweise auf einem Breakout-Board angeboten, der den 8266 selber, Speicher sowie eine Antenne umfasst.
Von diesen Breakout-Boards gibt es inzwischen mehr als 12 unterschiedliche Modelle. Sie unterscheiden sich in der Anzahl der herausgeführten IO-Ports, der Antenne, einer HF-Kapselung etc.
Interessant sind die Baureihen 8266-07 und 8266-12. Beide Modelle führen die maximale Anzahl an Pins nach draussen. Bei beiden Modellen sind der Chip und der Speicher unter einer Metallkappe abgedeckt (angeblich FC-zertifiziert).
8266-012 verfügt über eine auf das PCB geätzte Antenne, die Baureihe 07 hat dagegen eine kleine Keramikantenne onboard sowie einen Anschluß für eine externe Antenne.

Reichweitentest :
Basis  Fritzbox 7490 , freie Sicht in einem großen Zimmer , Entfernung ca. 6m
Arbeitsplatzrechner mit AVM 866AC Stick     -59 dB
8266-012 als NodeMCU                              -72 dB
RasPi mit edimax nano                                -76 dB
8266-07 keramik on board                         -78 dB
8266-07 externe Antenne                           -52 dB

Die 07-Baureihe mit externer Antenne schlägt also den neuesten AVM-Stick :-).
Auf Youtube gibts ein Video in dem angeblich über 4km mit externer Antenne und einem AP mit Richtantenne erzielt werden.

Mein 8266 (-87dB) im Keller ist so hart an der Grenze der Reichweite, dass die Verbindung noch als up gesehen wird, ein Ping von der FritzBox zum 8266 nicht mehr geht aber der 8266 seinen Web-Request an den FHEM-Server noch absetzen kann. Die 7490 ist leider bzgl. der Reichwerte kein gutes Produkt. Ich werde deshalb einige Devolo-Wlan-Repeater nachrüsten, die ihren Uplink über Power-Lan machen (z.B. dLAN 500WiFi).

Die eingesetzten DS1820 sind die ganz einfachen im Plastikgehäuse mit drei Anschlüssen. Drei Adern des Telefonkabels anlöten, die einzelnen Beinchen gegeneinander mit ISO-Tape isolieren und drumherum ein kurzes Stück Schrumpfschlauch drüber. Den Sensor habe ich mit der flachen-Seite direkt auf das Kupferrohr der Heizung gelegt, das Kabel habe ich mit zwei Kabelbindern als Zugentlastung auch am Rohr festgemacht und das Ganze dick mit Armaflex-Tape umwickelt. Die maximalen Temperaturen liegen bei mir bei 65C !!!
Armaflex verträgt über 100, DS und Schrumpfschlauch sollten das auch abkönnen, bei den Kabelbindern würde ich bei höheren Temps aufpassen. Wie immer sind alle Angaben ohne Gewähr und das Basteln an der Heizung erfolgt auf eigenes Risiko ! :-)


NodeMCU vs standard-Breakout

Die üblichen Break-Out-Module sind für Bastler auch noch keine Freude. Das Rastermass  liegt bei 2mm und nicht bei 2,54, wie es für Breadboards und Lochrasterplatinien nötig ist.  Allerdings kann man sich auch einen "Polypen" basteln, der dann weiterverarbeitet werden kann (siehe Bild).
Zusätzlich muss man Folgendes bedenken: Der 8266 ist ein 3.3V Device. 5V als Versorgungsspannung oder auch auf den I/O-Pins bedeutet den sofortigen Tod. Diese Dinger haben keine Toleranz. Weiterhin benötigt man noch einen Schalter und einen Jumper mit den entsprechenden Spannungen um den 8266 zum Flashen zu bewegen. Ein bisschen zickig ist das Ding schon :-). Zum Flashen kann man spezielle USB-Seriell-Kabel verwenden (gibts bei adafruit, exptech etc. für unter 10€ und werden von windows 7 sofort erkannt)

Alternativ gibt es Open-Source-Hardwareprojekt, welches ein 8266-012-Modul auf einem Breakout-Board verwendet. Diese Platinen werden als NodeMCU gehandelt, es gibt aber aber auch vergleichbare Produkte wie das Huzzah von Adafruit. Hier sind schon der Spannungswandler 5V->3,3V, eine USB-kompatible serielle Schnittstelle, eine LED sowie Taster für Reset und Flash mit onboard.

Für die ersten Gehversuche würde ich immer das NodeMCU empfehlen, einfach MicroUSB-Kabel an den Rechner anschliessen und loslegen.
Im Keller habe ich bewusst das 07 verwendet, da ich unbedingt die externe Antenne benutzen wollte.

Ein NodeMCU gibts in D für ca. 13€, in China (Aliexpress) für unter 6€
ein einfaches 07 kostet in D ca. 6€ in China 2,20€ !! Eine 32bit-CPU mit 4MByte Speicher und 80Mhz für 2€ ist schon sensationell. Mit diesem Teil hätte es Apollo-13 nie gegeben :-)

Im nächsten teil geht es dann an die Firmware-Programmierung

Bilder :  8266-07 vs nodemcu mit 8266-012, DS1820 im Schrumpfschlauch, Sensor unter Arma-Tape, Komponenten auf Lochraster

scuba

Sehr spannendes Projekt! Danke für die tolle Dokumentation!
Ich plane derzeit etwas ähnliches bei mir im Keller. Zusätzlich zu den Temperaturen möchte ich auch noch den Schaltzustand der Pumpen abgreifen. Ein Ansatz wäre eine "Stromzange" http://de.aliexpress.com/item/Free-Shipping-New-Non-invasive-0-100A-AC-Sensor-Split-Core-Current-Transformer-SCT-013-000/32280304935.html?ws_ab_test=searchweb201556_2_79_78_77_80,searchweb201644_5,searchweb201560_9 auf den Zuleitungen...

Was mich noch interessieren würde ist die Stromaufnahme von dem Ding bzw. in wie weit ein Batteriebetrieb über einen vernünftigen Zeitraum möglich ist.


Franz Tenbrock

Hallo mache das zur Zeit mit 1 Wire
Habe aber esps hier ...
Bräuchte aber noch mehr Temp Werte da ich eine Solaranalge habe.
Vor und Rücklauf Heizung
Vor und Rücklauf Solar
Speicher oben und unten
sowie Aussentemperatur,das Kabel geht einfach durch die Wand...

soltle doch auch gehen
oder?
WLAN bei mir im Keller kein Problem.

cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Toshi

@Scuba

Ich habe im Sommer mit diesem Teil eine Überwachung für  eine Wasserdruckerhaltungspumpe gebaut. Parallel zum Motor habe ich eine 230V/ControlLed geschaltet. Die LDR habe ich zusammen mit einem Foto-Widerstand in schwarzem Schrumpfschlauch eingeschweisst. Den LDR kann man dann über eine Widerstandsbrücke an einen GPIO anschliessen und abfragen. Der ESP logt die Schaltzeiten in einen SQL-Server und schickt mir bei zu langen Laufzeiten eine e-Mail. (Man könnte natürlich auch einen handelsüblichen Opto-Koppler nehmen :-), dafür hat man hier eine super galvanische Trennung)

Zum Batteriebetrieb kann ich leider nichts sagen. ImDeepSleep mit WLAN aktiv soll das Ding 10microA brauchen, beim Senden bis zu 300mA. Das kommt also wohl sehr stark auf das Programm an.