Da ich nicht meterlange Kabel für Temperatur Sensoren in meinem Haus verlegen will und kann, hab ich mich
mal etwas mit dem Daumennagelgroßen ESP8266 beschäftigt.
WLAN hat wohl jeder und was bietet sich denn besser an, als Meßdaten via WLAN an den Sensor Transceiver zu schicken.
Was wird benötigt?
NodeMcu Firmware, esp8266_flasher, DS18B20.lua Library und ESPlorer als Programmier-Schnittstelle.
Mein Code Beispiel sieht dann so aus:
Alles anzeigen
Leider geht das ganze momentan nur mit der NodeMcu Integer Firmware (Float stürzt beim laden des Libraries ab) aber wenn Gradzahlen ohne Kommastellen ausreichen, dann klappt das ganz gut mit SHC 2.2
P.S. Oliver Hut ab für so viel Engagement, ein Home Automationssystem für den "Kleinen Geldbeutel" zu entwickeln.
mal etwas mit dem Daumennagelgroßen ESP8266 beschäftigt.
WLAN hat wohl jeder und was bietet sich denn besser an, als Meßdaten via WLAN an den Sensor Transceiver zu schicken.
Was wird benötigt?
- ESP8266 (hier ES-01 V2 aus EBAY 5 Stück für 12.-€)
- DS18B20 Temperatur Sensor
- 4,7kOhm Widerstand
- 3 Volt Netzteil (500mA reichen)
- USB-->seriell Konverter (muss auf 3.3V umschaltbar sein)
NodeMcu Firmware, esp8266_flasher, DS18B20.lua Library und ESPlorer als Programmier-Schnittstelle.
Mein Code Beispiel sieht dann so aus:
Quellcode
- --init.lua
- --Autor Hans Thuering
- --Ver 1.0.7
- -- Lizenz: Frei zur allgemeinen Verwendung
- -- für den Betrieb am SHC kann man natürlich die ganzen Codeteile
- -- für die serielle Ausgabe loeschen bzw. auskommentieren.
- -- Diese dienten mir nur zur Kontrolle
- --Abfragemodul für DS18B20 Sensoren laden
- --
- --Konfiguration Router Zugang
- wifi.sta.config("FritzBox","wlanpass")
- wifi.sta.connect()
- --Schleife bis IP zugeteilt
- tmr.alarm(1, 5000, 1, function()
- if wifi.sta.getip()== nil then
- print("IP nicht gefunden, warte...")
- else
- -- IP gefunden Schleife gestoppt
- tmr.stop(1)
- print("ESP8266 Modus ist: " .. wifi.getmode())
- print("Meine MAC Adresse ist: " .. wifi.ap.getmac())
- print("Konfiguration erfolgreich. Meine IP: "..wifi.sta.getip())
- end
- --
- -- Temperaturmodul
- --
- require('ds18b20')
- -- ESP-01 GPIO Belegung definieren (hier ES-01Modul)
- gpio0 =3
- gpio2 =4
- --GPIO festlegen (bei ES-01 nur 0 und 2 moeglich)
- ds18b20.setup(gpio2)
- --Sensor auslesen
- t=ds18b20.read()
- --Falls was schief geht
- if(t==nil) then
- t=0
- end
- --Wiederholung und Update der gesendeten Daten
- tmr.alarm(0,30000, 1, function()
- t=ds18b20.read()
- --Daten an SHC Server schicken (klappt momentan nur mit
- --NodeMCU integer. it der Float Firmware stuerzt das Ganze ab)
- print("Temperatur Wohnzimmer:" .. t .. " C\n")
- conn=net.createConnection(net.TCP, 0)
- conn:on("receive", function(conn, payload) print(payload) end )
- conn:connect(80,"raspi4")
- conn:on("connection", function(conn, payload)
- print('\nVerbunden')
- conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=2&sid=28-ab08de9275&type=1&v1="..ds18b20.read()
- .." HTTP/1.1\r\n"
- .."Host: raspi4\r\n"
- ..("Connection: close\r\n")
- .."Accept: */*\r\n"
- .."User-Agent: Mozilla/4.0 "
- .."compatible; esp8266 Lua; "
- .."Windows NT 5.1)\r\n"
- .."\r\n")
- end)
- -- Anzeige wenn Verbindung beendet
- conn:on("disconnection", function(conn, payload) print('\nVerbindung getrennt') end)
- conn:connect(80,'raspi4')
- end)
- end)
Leider geht das ganze momentan nur mit der NodeMcu Integer Firmware (Float stürzt beim laden des Libraries ab) aber wenn Gradzahlen ohne Kommastellen ausreichen, dann klappt das ganz gut mit SHC 2.2
P.S. Oliver Hut ab für so viel Engagement, ein Home Automationssystem für den "Kleinen Geldbeutel" zu entwickeln.
Lebe deine Träume als ein Leben lang nur zu träumen!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hthuering ()