Entwicklung: Sensor mit dem ESP8266 WLAN-Funkmodul

Begonnen von locutus, 09 November 2014, 19:30:06

Vorheriges Thema - Nächstes Thema

locutus

LUA-Code für zwei weitere Sensoren und RGB-LED-Ansteuerung.

1. Digitaler Feuchtesensor HTU21D
Die zip-Datei beinhaltet drei Beispiele:
- server - der Hygrometer startet mit einem WLAN-Konfigurationsassistenten. Nach erfolgreicher Verbindung muss nur noch die neue IP des Sensors im lokalen WLAN ermittelt werden.

- mqtt - der Client nimmt Verbindung zum MQTT Broker auf. Mit einer Subscription können die Sensorwerte empfangen werden. Bsp.:
define MQTT_ESP8266_HTU MQTT_DEVICE HTU21D
attr MQTT_ESP8266_HTU IODev mqtt
attr MQTT_ESP8266_HTU stateFormat {sprintf("%.1f",ReadingsVal("MQTT_ESP8266_HTU","state",0))." %"}
attr mqtt_ESP8266_HTU subscribeReading_state sensors/ESP8266-10872660/humidity

Die 8-stelige Chip ID muss ggf. ermittelt und korrigiert werden.

- fhem - der Client übermittelt Sensorwerte an ein FHEM dummy. Bsp.:
define HTU21D dummy
attr HTU21D stateFormat {sprintf("%.1f",ReadingsVal("HTU21D","state",0))." %"}


2. Digitaler Luftdrucksensor BMP085 / BMP180
Die zip-Datei beinhaltet ebenfalls drei Beispiele:
- server - Beschreibung siehe oben.

- mqtt - Beschreibung s. o. Bsp.:
define MQTT_ESP8266_BMP MQTT_DEVICE BMP085
attr MQTT_ESP8266_BMP IODev mqtt
attr MQTT_ESP8266_BMP stateFormat {sprintf("%.1f",ReadingsVal("MQTT_ESP8266_BMP","state",0))." hPa"}
attr MQTT_ESP8266_BMP subscribeReading_state sensors/ESP8266-10872660/pressure


- fhem - Beschreibung s. o. Bsp.:
define BMP085 dummy
attr BMP085 stateFormat {sprintf("%.1f",ReadingsVal("BMP085","state",0))." hPa"}


Die Sensoren wurden mit der angehängten Float Version der NodeMCU Firmware getestet.
i2c_scanner.lua hilft bei der Identifizierung der Hardware.

3. RGB LED WS2812 (NeoPixel)
Steuerung mit WifiLight:
define ESP8266_WS2812 WifiLight RGB LW12:192.168.178.10
attr ESP8266_WS2812 webCmd RGB
attr ESP8266_WS2812 widgetOverride RGB:colorpicker,RGB


Fabeulous Code prüft, ob eine Verbindung zum lokalen WLAN besteht. Die erste LED leuchtet nach dem einstecken erst rot. Nur wenn das Funkmodul sich erfolgreich mit dem vorher konfigurierten WLAN verbunden hat, leuchtet die LED kurz grün und geht dann aus.
In dieser Codezeile wird die Anzahl der NeoPixel festgelegt, hier sind es 8.
ws2812.writergb(4, string.char(R, G, B):rep(8))

Franz Tenbrock

Hallo
Habe mich auch vor einigen Monaten mit dem ESP beschäftigt, ebenso mit mysensors.
Das Breakoutboard hab ich ja , hab es mit dem TEMP ans Laufen bekommen
Dann leider überhaupt keien Zeit mehr gehabt, geht halt nciht mal so zwischendurch

Für meine Zisterne benötige ich noch ein Distanzmessung mit diesem Teil hier.

DYP-ME007Y Ultrasonic Sensor Module

Unter mysensors kann ich die Strecke auch messen.
http://www.mysensors.org/build/distance

Hab leider keine Ahnung wie man das mit dem MQTT Broker machen könnte
bzw geht das überhaupt ?

Bevor ich nun wieder Stunden lese wollte ich erst mal fragen.

Das Ganze möchte ich dann an eine schaltbare Steckdose hängen und so dann manuelle eine Messung auslösen, habe 10000 Liter und benötige 1x in der Woche einen Wert
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

locutus

Mosquitto am Raspberry Pi installieren:
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-clients
cpan -i Net-MQTT


Verbindung zum MQTT-Broker in FHEM anlegen:
define mqtt MQTT 127.0.0.1:1883

FHEM-Device erstellen:
define MQTT_ESP8266_HCSR MQTT_DEVICE HCSR04
attr MQTT_ESP8266_HCSR IODev mqtt
attr MQTT_ESP8266_HCSR subscribeReading_state sensors/ESP8266-10872660/distance

Bitte die 8-stelige Chip ID (10872660) korrigieren.

Sensorwerte am RPi empfangen:
mosquitto_sub -d -t sensors/ESP8266-10872660/distance

Der LUA-Code für HC-SR04 ist ad hoc gebastelt, sollte aber auch mit DYP-ME007Y funktionieren.

Franz Tenbrock

Thanks
das ist dann wohl für mich
hab mir meine owncloud heute morgen geschossen, verzweifel da gerade ein wenig,
Bleibe hier aber dran

Schönene Abend noh
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

Kuzl

@ Franz:

du brauchst das nicht über eine schaltbare Steckdose machen. du kannst über MQTT mit fhem eine bidirektionale Verbindung aufbauen, also eine Messung direkt über FHEM auslösen. dazu musst du nur im Sketch eine Callbackfunktion z.b. unter sensors/ESP8266-10872660/measure machen und auf 1 abfragen. in der Funktion selbst löst du eine Messung aus und setzt measure wieder auf 0.
Wenn du dich ein wenig einliest ist das wirklich sehr einfach zu bewerkstelligen.

Viele Grüße,
Kuzl

Franz Tenbrock

Hallo,
also unter dem Carport ist der Tank mit Dom der Zisterne wo der ESP plaziert werden soll. Im Carportbereich habe ich eine schaltbare HM  Steckdose.
Da ich nur 1X oder eben nach Bedarf einen Wert aus dem Tank brauche möchte ich den ESP über die Steckdose aktivieren und anschließend (nach der Messung ) wieder abschalten. So wie ich gelesen habe zieht der ESP ja einiges an Strom ?? Muss ja nicht sein.
Entschuldige wenn ich für Verwirrung gesorgt habe.
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

Kuzl

Hi Franz,

So viel Strom zieht der ESP gar nicht, das was du gehört hast war bezogen auf einen Batteriebetrieb. Im normalen betrieb (ohne sleep usw.) zieht er so im durchschnitt max. 200mA bei 3.3V was auf 0,66W kommt.
Eine Homematic Steckdose zieht im Standby 0,5W

Kommt also fast aufs gleiche raus und du sparst dir die nicht gerade billige HM Steckdose. Und wenn du den ESP in einen Stromsparenderen Modus versetzt kommts sogar unter den Verbrauch des Zwischensteckers.

Gruß
Kuzl

MadMax-FHEM

#217
Hallo!

Ich bin ja gerade auch dabei einen "Füllstandsmesser" und einen "TemperaturFeuchte-Sensor" mit dem ESP8266 zu "basteln".

Aktuell noch auf "Breadboard".

Eigentlich mit dem Wunsch einen Betrieb per Batterie zu haben aber so wenig braucht der ESP dann (zumindest bei meinen Versuchen) aktuell doch noch nicht.

Aktuell im Einsatz ein ESP-12 und ein ESP-01.

Beim ESP-12 ist es einfach möglich mit "DeepSleep" zu arbeiten, da dort die Verbindung GPIO-16 (glaube ich) und Reset leicht möglich ist.

Beim ESP-01 (hatte ich halt einfach mal bestellt und noch rumliegen) hatte ich Fädeldraht ist mir aber für eine "echte" Lösung zu "wackelig"...
Dann einen ATTiny85 zum Wecken...
Aktuell probiere ich die Variante, per MOSFET den gesamten ESP inkl. Sensoren ein- und auszuschalten per ATTtiny85, gefällt mir aktuell am besten...
Habe hier aber noch nicht gemessen, betreibe es momentan mit einer PowerBank...
...also noch nicht wirklich mit Batterie...
Da muss ich aber noch schauen was ich beim ATTiny alles einstelle(n kann) damit dort möglichst wenig Strom benötigt wird.
Allerdings wird hier wohl ein StepUp Modul notwendig sein, wenn ich zuverlässig mit Batterie arbeiten will...
...da weiß ich nicht wieviel das braucht.
Aber ich hoffe hier noch auf einen anderen Temperatur/Feuchte Sensor weil der aktuell verwendete DHT11 ist mir zu ungenau und arbeitet erst mit 5V zuverlässig...
Warte noch auf meinen HTU21D, soll mit 3V schon arbeiten.
D.h. StepUp-Modul auf 3,3V für alles.
Aktuell habe ich eines auf 5V (für den DHT) und dann wieder StepDown für den ESP...


Für den Füllstandsmesser habe ich den ESP-12 am Start.
Die Verwendung von "nur" DeepSleep beim ESP-12 braucht mir für einen echten Batteriebetrieb noch zu viel Strom.

Leider keine genaue Messung des Stroms da meine aktuelle Messgerätelandschaft dafür irgendwie (noch) nicht taugt aber ich habe 0,2V Spannungsabfall/-verlust bei der Battrie (2xAA) pro Tag.
Allerdings wie gesagt bin ich noch am Probieren und aktuell hängen sowohl die Sensoren bzw. in dem Fall der UltraSonic und die diversen StepUp/StepDown Module "dauernd" an der Batterie, nur der ESP geht in DeepSleep (10min).

Nächste Variante wäre die/den Sensor durch den ESP anzuschalten, wenn gemessen wird, evtl. auch den notwendigen StepUp auf 5V ebenfalls erst einzuschalten, wenn der Sensor messen soll und von der Batterie halt "nur" ein StepUp auf 3,3V zum Betrieb des ESP...

Oder halt ebenfalls schalten per ATTiny85 wie beim ESP-01.
Hier halt mit der Möglichkeit eine "Minimalkommunikation" zu haben um zu sehen wann der ESP fertig ist (z.B.) und dann wieder ausschalten.

Bei der "ATTiny-Schaltvariante" mit dem ESP-01 gebe ich dem ESP einfach 10s (reicht für Verbindungsaufbau und Daten senden, allerdings mit statischer IP / DHCP dauert deutlich länger) und schalte ihn dann wieder aus.
Wenn es doch mal nicht reichen sollte, ist es nicht schlimm. 3 Min später erfolgt die nächste Messung...
Würde mir reichen...


Die Schaltvariante habe ich auch gewählt, weil ich es schon hatte, dass sich der ESP nach einem Reset nicht mehr "einkriegt" und dann gar nicht mehr oder erst sehr spät wieder "einfängt" und zwischenzeitlich halt Strom zeiht, da er sich in dem Zustand auch nicht wieder schlafen legt...
Wenn ich ihn einfach über den ATTiny ein und wieder ausschalte hatte ich dieses Problem noch nicht. bzw. wenn er mal anfängt sich nicht mehr zu "fangen" ist es kein Problem weil er wird ja einfach wieder ausgeschaltet und dann neu eingeschaltet und spät. dann war es wieder gut...

Nicht so bei der DeepSleep Variante.
Gerade beim ESP-01.
Gut evtl. "Fädeldrahtproblem" etc. aber fand ich nicht so zuverlässig...


Desweiteren würde ich auch gerne die Batteriespannung messen und schicken aber ist auch nicht so einfach, da der ESP "nur" 1V "messen" kann...
...jaja Spannungsteiler etc. aber das funktioniert auch icht so zuverlässig, da ich einen Spannungseinbruch habe immer wenn der ESP "bootet" und die Messung macht.
Nicht viel "nur" so 0,2V aber unschön.
Außerdem fließt ja über den Stannungsteiler auch unnötig Strom...
Mal sehen was mir da einfällt bzw. auch das wäre dann bei der "Ein-/Ausschaltvariante" gelöst...

Ich verwende als Programmierumgebung die Arduino-IDE bzw. den Compiler etc. der Arduino-IDE unter Eclipse...
...also keine NodeMCU-FW.

Hatte ich mir kurz angesehen aber war irgendwie nicht so mein Fall...


Gut ich habe gesehen, dass es seit Oktober hier nichts mehr neues gab...
...hoffe aber, dass es weiter geht!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

chunter1

Ich hoffe auf eine universelle Integration des ESP8266 in die FHEM Umgebung.

Interessant wären z.B. folgende Funktionen standardmäßig bereit zu stellen: ADC, PWM, I/O, I2C, 1-wire
Damit könnte man dann endlich auch mal ein Poti oder eine Spannung messen.

Und das bei unglaublich günstigen Preisen:
Das ESP8266-12E gibts als nacktes Modul schon ab ca. 2,20€.
Als fertiges Aufsteckmodul mit USB Anschluss ab ca. 6,5€.

Batteriebetrieb ist interessant aber nicht primäres Ziel weil als Aktor verwendet sowieso sofortige Reaktion gewollt ist.


Papaloewe

Schau Dir mal ESPEasy an:
http://www.esp8266.nu/index.php/Main_Page

Aus meiner Sicht geht das in die Richtung und die Einbindung in FHEM geht auch ohne MQTT-Broker, sondern über HTTP direkt.


Gruß
Thomas

chunter1

@Papaloewe

Super, an genau sowas hab ich gedacht.
Und Gott sei Dank verwendet es nicht MQTT.
Bin kein Fan von unnötiger Komplexität/Fehlerquellen ;)

SvenJust

FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

locutus

#222
Hallo zusammen,
basierend auf Samsis Bastelprojekt ist diese Platine entstanden.

Hard- und Softwarespezifikationen:
- ESP8266 (ESP-03) WLAN-Modul
- Si4936CDY Dual N-Channel MOSFET
- TS2940CW-3.3 LDO Festspannungsregler
- U.FL-Antennenbuchse für externe Antenne
- LED für Serial Activity
- Programmierschnittstelle für USB zu TTL-Wandler mit 3,3 V-Logik
- NodeMCU Firmware
- Boot loop protection
- Quick WiFi Setup
- Max. Eingangsspannung: 12 VDC
- Laststrom pro Kanal: 1.5 A
- Platine-Durchmesser: 37 mm

Kurze Beschreibung der Vorgehensweise:
Beim ersten Start des ESP8266 wird ein Access Point (die blaue LED auf der Platine leuchtet 10x kurz auf) mit der SSID SetupWiFiLED erstellt. Die Zugangsdaten des eigenen WLAN-Netzes werden im Webbrowser unter der Adresse http://192.168.4.1/ eingeben. Nach dem Speichern der Daten, startet der ESP8266 neu und versucht sich zu verbinden. Im Fehlerfall beginnt das Funkmodul wieder mit 10 Verbindungsversuchen.

In der fhem.conf wird der LED-Controller z. B. folgendermaßen definiert:
define WiFiLED WifiLight RGB LW12:192.168.1.100
attr WiFiLED colorCast 0, -20, -20, -25, 0, -10
attr WiFiLED webCmd RGB
attr WiFiLED whitePoint 1, 0.75, 0.25
attr WiFiLED widgetOverride RGB:colorpicker,RGB


Besteht hier im Forum Interesse an diesem WLAN-RGB-Controller? Ich habe noch einen kleinen Bestand an bestückten und vorprogrammierten Platinen und werde einige davon entbehren können.
Stückpreis: 9,- € zzgl. Brief- oder Paketporto.

eppi

Zitat von: locutus am 28 Februar 2016, 18:28:41
Besteht hier im Forum Interesse an diesem WLAN-RGB-Controller? Ich habe noch einen kleinen Bestand an bestückten und vorprogrammierten Platinen und werde einige davon entbehren können.
Stückpreis: 9,- € zzgl. Brief- oder Paketporto.
Hallo Locutus.
Ich hätte gerne einen fertig bestückten WLAN-RGB Controller.

Danke und Gruss Eppi

schka17

Hallo Locotus, ich würde 3 nehmen .

Gruß

Karl


Sent from my iPad using Tapatalk
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