Arduino schéma - arduino.sk

Wifi teplomer - NodeMCU v AP móde

Kompletné projekty s návodom a zdrojovým kódom
Príspevky: 53
Registrovaný: Uto 23. Dec 2014 2:15:50

Wifi teplomer - NodeMCU v AP móde

Poslaťod martinius96 » Ned 17. Sep 2017 1:02:11

Wifi teplomer je projekt, kde sa využíva NodeMCU v AP móde, je to vlastne hotspot, ku ktorému sa pripojíte a následne môžete prezerať teploty, alebo veličiny iných čidiel, ktoré k NodeMCU pripojíte. Hodnoty sa prezerajú cez webový prehliadač na stránke, ktorú NodeMCU generuje. Nachádza sa na rovnakej IP/DNS príznaku ako aj brána (NodeMCU). V tomto riešení je demonštrácia dvoch čidiel DS18B20 s využitím OneWire protokolu. Nakoľko ho programujem cez ArduinoIDE a Arduino príkazmi, tak si myslím, že je v poriadku, že som ho vložil na Arduino fórum. Riešenie popisuje iba jednoduchú HTML tabuľku s výpisom dvoch hodnôt. Pozor! V kóde je treba html kód písať do jedného riadka, inak sa neskompiluje! Obrázky sú ilustračné.
Parametre projektu:
    NodeMCU v úlohe prístupového bodu (AP)
    Vlastné SSID a WPA2 PSK šifrovanie
    Vlastná IP (statická)/DNS príznak
    Bezpečná webstránka prístupná z domácej siete
    Vždy pri načítaní stránky aktuálne info (informatívny charakter)
Obrázok
Obrázok
Kód: Vybrať všetko
#include <OneWire.h>                 //KNIZNICA ONEWIRE PRE VYUZITIE ONEWIRE ZBERNICE
#include <DallasTemperature.h>       //KNIZNICA PRE TEPLOTNE CIDLA
#define ONE_WIRE_BUS 2               //DEFINICIA PINU AKO ZBERNICE PRE ONEWIRE ZARIADENIA
OneWire oneWire(ONE_WIRE_BUS);       //ONEWIRE ČÍTAŤ IBA NA PORTE DEFINOVANOM VYSSIE
DallasTemperature sensors(&oneWire);
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <SPI.h>
const char *ssid = "ESPap";
const char *password = "thereisnospoon";

ESP8266WebServer server(80);

/* IP stranky je 192.168.4.1 (predpísané kniznicou)
*/
void handleRoot() {
  sensors.begin();
sensors.requestTemperatures(); 

server.send(200, "text/html", "<!DOCTYPE html><html><body><table><tr><td>Cidlo</td><td>Hodnota</td></tr><tr><td>DS18b20 - dnu</td><td>"+(String)sensors.getTempCByIndex(0)+"</td></tr><tr><td>DS18b20 - von</td><td>"+(String)sensors.getTempCByIndex(1)+"</td></tr></table></body></html>");
}

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  Serial.print("Konfigurujem access point...");
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssid, password);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("IP adresa pristupoveho bodu je: ");
  Serial.println(myIP);
  server.on("/", handleRoot);
  server.begin();
  Serial.println("Webserver bezi");
}

void loop() {
  server.handleClient();
}

Dáta sa aktualizujú vždy, keď klient refreshne stránku. To znamená, že má k dispozícii vždy aktuálnu teplotu.
Podporiť ma a nájsť zaujímavé riešenia môžete na: [url]arduino.php5.sk[/url]

Príspevky: 53
Registrovaný: Uto 23. Dec 2014 2:15:50

Re: Wifi teplomer - NodeMCU v AP móde

Poslaťod martinius96 » Štv 14. Dec 2017 13:18:06

Update: 14.12.2017 prebehla aktualizácia súborov na Githube, doplnené knižnice pre pripojenie periférii.
Github repozitár: https://github.com/martinius96/nodemcu-wifi-teplomer

Obrázok užívateľa
Príspevky: 312
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Wifi teplomer - NodeMCU v AP móde

Poslaťod tomXX » Uto 10. Apr 2018 22:42:45

Tak ja som sa so svojím trochu aj graficky vyhral, nech to vyzerá ako v roku 2018 :) Ešte chcem graf prerobiť z antialiasovaného PNG na responzívne SVG.

Obrázok
Obrázok
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Príspevky: 53
Registrovaný: Uto 23. Dec 2014 2:15:50

Re: Wifi teplomer - NodeMCU v AP móde

Poslaťod martinius96 » Štv 19. Apr 2018 22:33:19

Ako sa to podarilo? Viem, že stránka na NodeMCU nemôže byť väčšia ako 4kB ak sa nemýlim. Príde mi to moc grafiky na 4kB :)

Obrázok užívateľa
Príspevky: 312
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Wifi teplomer - NodeMCU v AP móde

Poslaťod tomXX » Sob 12. Máj 2018 9:48:34

martinius96 píše:Ako sa to podarilo? Viem, že stránka na NodeMCU nemôže byť väčšia ako 4kB ak sa nemýlim. Príde mi to moc grafiky na 4kB :)


Tak, že na Arduine beží webserver ktorý iba servuje stránku s dátami a veľkosťou cca 250 bajtov (čistý text, žiaden JSON) a na webhostingu mám cronjob ktorý si tú stránku stiahne každých 5 minút, rozparsuje, uloží do DB a ten grafický dashboard a grafy bežia na webhostingu a renderujú sa na požiadanie. Ale aj ten dashboard má len 1.1kB, lebo tam nie je žiadna grafika, iba HTML a CSS, ikonky sú špeciálny ikonový font. To je tá výhoda, ak si človek vie nakódiť aj web (HTML, PHP, CSS, JS, MySQL) a má normálny webhosting.
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Späť na Hotové projekty