
A szükséges alkatrészek
- ESP8266 (ESP-1 változat), magyar ára jelenleg kb. 1000Ft, kínai ára 520Ft-tól
- Dallas DS18B20 1wire modul (felhúzóellenállással), magyar ára 468Ft, kínai ára 326Ft
- [USB-soros átalakító (pl. FTDI232 vagy klónja)] – csak programozáshoz
- [3.3V táp, pl. microUSB töltő + LM1117 3.3V stabilizátor IC, 500mA vagy nagyobb terhelhetőség ajánlott]
Szoftveres könyvtárak
Mind telepíthető a Vázlat -> Könyvtár tartalmazása -> Könyvtárak kezelése… menüpontból
Vezetékelés
A programozáshoz a GPIO0 lábat a GND-vel össze kell kötni, csatlakoztatni USB-re az FTDI232 modult, majd 5 másodperccel később elindítani a programozást. Hosszú várakozás után az ESP modul kilép a feltöltés módból, ilyenkor a folyamatot újra kell kezdeni. Az FTDI232 modulon a jumpert 3.3V állásba kell állítani!
| DS18B20 | ESP8266 ESP-1 | FTDI232 |
|---|---|---|
| Vcc | Vcc | Vcc 3.3V! |
| GND | GND | GND |
| DQ | GPIO2 | |
| Rx | Tx | |
| Tx | Rx | |
| CH_PD -> Vcc | ||
| GPIO0 -> GND (csak feltöltéshez) |
A program
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const char* ssid = "LegyesHome";
const char* password = "12345678";
ESP8266WebServer server(80);
const int led = 13;
void handleRoot() {
digitalWrite(led, 1);
char temperatureStr[5];
sensors.requestTemperatures();
float temp1 = sensors.getTempCByIndex(0);
dtostrf(temp1,2, 0, temperatureStr);
String s = "{\"temperature\":";
s += temperatureStr;
s += ",\"location\":\"server_room_1\"";
s +="}";
server.send(200, "application/json", s);
digitalWrite(led, 0);
}
void setup(void){
Serial.begin(115200);
sensors.begin();
pinMode(led, OUTPUT);
digitalWrite(led, 0);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp8266")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.onNotFound(handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
Sketch uses 253 203 bytes (58%) of program storage space. Maximum is 434 160 bytes.
Global variables use 35 788 bytes (43%) of dynamic memory, leaving 46 132 bytes for local variables. Maximum is 81 920 bytes.
Egyéb dolog, ami még kellhet
Munin plugin (PHP)

#!/usr/bin/php
<?php
if ( count($argv) == 2 && $argv[1] == 'autoconf' ) {
exit('yes');
}
if ( count($argv) ==2 && $argv[1] == 'config' ) {
echo 'graph_title Temperature'.PHP_EOL;
echo 'graph_vlabel Celsius'.PHP_EOL;
echo 'graph_category Sensors'.PHP_EOL;
echo 'temperature.label Temperature'.PHP_EOL;
echo 'temperature.type GAUGE'.PHP_EOL;
echo 'temperature.colour COLOUR0'.PHP_EOL;
echo 'temperature.draw AREA'.PHP_EOL;
exit();
}
$json = file_get_contents('http://192.168.11.211');
$j = @json_decode( $json );
if ( isset( $j->temperature ) ) {
echo 'temperature.value '.$j->temperature.PHP_EOL;
}
?>
A plugin helye esetemben a /usr/share/munin/plugins/esp8266 . Ennek futtathatónak kell lennie: sudo chmod +x /usr/share/munin/plugins/esp8266. Majd kell egy szimbolikus link: sudo ln -s /usr/share/munin/plugins/esp8266 /etc/munin/plugins. Végül újra kell indítani a node-ot: sudo service munin-node restart.
Remélem valaki hasznát veszi 🙂
Update #1
Meglepően egyenletesen karcol a kis olcsóság és mindig ad is értéket a DTH11-es modulommal ellentétben. A kis szünetet a grafikonban én okoztam, relévezérléssel kísérleteztem, sajnos nem ad le elég áramot a relémodul behúzásához, de egy LED-et el bír villogtatni. Szal’ valószínűleg tranzisztorral vagy FET-tel kell illeszteni a relét.


