Fórum témák

» Több friss téma
Lapozás: OK   61 / 137
(#) Dzsony válasza pipi hozzászólására (») Ápr 22, 2018 /
 
Köszönöm a tanácsokat, elmondom mi volt a baj. Arduino IDE programot használtam a feltöltésre Mac és windows között váltakozva. Valamiért Windows alól feltöltöttel nem akart helyesen működni, Mac alól rendesen felmásolja a modulra a programot, ilyennel még nem találkoztam.
A hozzászólás módosítva: Ápr 22, 2018
(#) Dzsony válasza andyka hozzászólására (») Ápr 22, 2018 /
 
Aha, ennek utána nézek mert nekem csak AP módra van szükségem. És az miért lehet, hogy néha amikor telefonnal vagy notebook-ról tánézek az elérhetjő wifi hálózatokra, akkor látható a gyári ESPxyxyxy SSID is? Nem mindig, csak időnként.
(#) Dzsony hozzászólása Ápr 26, 2018 /
 
Arra jöttem rá, hogy csak itthon működik a programom... amint nem látja az itthoni wifimet akkor szinte sehogyan sem akar elindulni rajtra a AP webserver programom. Megjelenik AP hálózatnak, lehet is hozzá csatlakozni, de alig tölt be valami, háttér, szövegeket igen, de kapcsolgatni a gombokkal nem tudok, olyan mint amikor nem tölt be teljesen egy netes oldal, a folyamat csík megáll a felénél. Egyszerűen nem tudom felfogni, mivel AP üzemmód indulása van neki megadva. Valaki így első ránézésre lát benne valami hibát? (a HTML részt kivettem, mert nagyon hosszú és szerintem nem relevéns) köszönöm!
  1. #include <ESP8266WebServer.h>
  2. #include "FS.h"
  3. #define D1 5 //ESP8266 modulon a D1 PIN
  4. struct station_info *stat_info;
  5. struct ip_addr *IPaddress;
  6. IPAddress address;
  7. const char *ssid = “AP neve”;
  8. const char *password = “AP jelszava“;
  9.  
  10. int relay = LOW; //alap állapot
  11.  
  12. ESP8266WebServer server(80);
  13.  
  14. //HTML button kapcsolgatja a ledet (LedOn, LedOff linkekkel)
  15.  
  16. void setup() {
  17.     delay(1000);
  18.     Serial.begin(9600);
  19.     SPIFFS.begin();
  20.     Serial.println();
  21.  
  22.     WiFi.softAP(ssid, password);
  23.  
  24.     IPAddress apip = WiFi.softAPIP();
  25.     Serial.print("visit: \n");
  26.     Serial.println(apip);
  27.    
  28.     server.on("/", handleRoot);
  29.     server.on("/LEDOn", handleLedOn);
  30.     server.on("/LEDOff", handleLedOff);
  31.     server.begin();
  32.     Serial.println("HTTP server beginned");
  33.     Serial.print("Soft-AP IP address = ");
  34.     Serial.println(WiFi.softAPIP());
  35.     WiFi.hostname(“AP neve“);
  36.     pinMode(D1, OUTPUT);
  37.     digitalWrite(D1, relay);
  38. //képet jelenítek meg a flashből    
  39. server.on("/image", []() {
  40.       File f = SPIFFS.open(“/kep.png", "r");
  41.      server.streamFile(f, "image/jpeg");
  42.      int filesize = f.size();
  43.      String WebString = "";
  44.      WebString += "HTTP/1.1 200 OK\r\n";
  45.      WebString += "Content-Type: image/jpeg\r\n";
  46.      WebString += "Content-Length: " + String(filesize) + "\r\n";
  47.      WebString += "\r\n";
  48.      //server.sendContent(WebString);
  49.      server.send(200, "text/html", WebString);
  50.  
  51.      char buf[1024];
  52.      int siz = f.size();
  53.      while(siz > 0) {
  54.        size_t len = std::min((int)(sizeof(buf) - 1), siz);
  55.        f.read((uint8_t *)buf, len);
  56.        //server.client().write((const char*)buf, len);
  57.        server.sendContent((const char*)buf);
  58.        siz -= len;
  59.        f.close();
  60.      }
  61. });
  62.  
  63. }
  64.  
  65.  
  66. void loop() {
  67.    server.handleClient();
  68.  
  69. }
A hozzászólás módosítva: Ápr 26, 2018
(#) pipi válasza Dzsony hozzászólására (») Ápr 26, 2018 / 2
 
a sorosra printeld már ki a WiFi.getMode() mit mond?
és csinálj egy WiFi.printDiag(Serial); -t is, mit mond?

ha nem állítod a wifi módot, akkor az 5évvel ezelőtt kipróbált mintaprogram beállítása van még mindig érvényben

nálam így van a wifi init...
if (WiFi.getMode() != WIFI_AP) //enum WiFiMode { WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3 };
{
WiFi.disconnect();
WiFi.mode(WIFI_AP);
Serial.println("***WiFi.disconnect");
}
else
Serial.println("***WiFi not req. disconnect");

// Serial.println("****printdiag4");

// WiFi.printDiag(Serial);
// Serial.println("***");



WiFi.softAP(config.AP_ssid.c_str(), config.AP_password.c_str());
.....
(#) Dzsony válasza pipi hozzászólására (») Ápr 26, 2018 /
 
Oh nem hiszem el...AP+STA módban volt, ez magyaráz mindent. Köszönöm a segítséged!
(#) andyka válasza Dzsony hozzászólására (») Ápr 30, 2018 /
 
Az egyik server.on miert van a server.begin utan. A server.begin kellene az utolso legyen.
(#) dinamo hozzászólása Máj 1, 2018 /
 
Sziasztok,
Kezdő vagyok a témában, lenne egy kérdésem. Van nálam egy ilyen modul:
https://www.hestore.hu/prod_10038103.html
Az usb-s soros porton pc-vel osszekotve, puttyal szépen bejelentkezik a board (baud rate=74880):

ets Jan 8 2013,rst cause:2, boot mode3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ld

Azt gondolnám, hogy ebben a heyzetben lehet neki adni az AT parancsokat, de sajna semmit nem reagál (AT, ATE, stb). Ezen kívül a wifi része is látszólag műxik, látom, mint AP-t (192.168.4.1), tudok is hozzá csatlakozni, a dhcp-je ki is oszt egy címet pl. a pc-nek, de ha a browserben megpróbálom megnyitni a http://192.168.4.1 olalt, nem jön be semmi. Arduino IDE-vel rá tudtam tölteni a szokásos led villogtató programot és villog is a led.

Szóval a kérdésem, hogy mit kellene ezzel tenni, hogy vagy AT parancsokkal v. a webes feluleten tudjam bizgetni, beállítani, stb?
(#) andyka válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Keress valami wemos mintakodot. Ez nem AT parancsokkal mukodik szerintem (NodeMCU firmware).
A hozzászólás módosítva: Máj 1, 2018
(#) nedudgi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
A 74880Bd a bootloader sebessége a soros porton. Később, ha betöltötte a förmvert, 9600Bd, vagy 115200Bd a sebesség.
(#) dinamo válasza andyka hozzászólására (») Máj 1, 2018 /
 
Nem az enyem a board, emiatt egyelore nem irnam felul a firmwaret. Viszont eljutottam ehhez a cikkhez:
https://medium.com/meta-design-ideas/getting-started-with-nodemcu-c...d#ee91
A kepen latszik, hogy nodeMCU eseten milyen boot uzenet jelenik meg. Nekem nem ez jon, tehat vszinu nem nodeMCU. Feltelepitettem ezt az ESPlorer nevu programot, ezzel is probalom bizgetni (pl. beepitetten tud AT parancsokat tud kuldeni CR+LF veggel), de a boot uzeneten kivul semmi valasz.
Esetleg ez a boot uzenet, amit az elso beirasomba bemasoltam, mond valakinek valamit?
(#) dinamo válasza nedudgi hozzászólására (») Máj 1, 2018 /
 
A boot uzenet utan probaltam valtani ezekre a sebessegekre, meg minden egyebre, de sajna nem valaszol AT parancsokra semmit. ESPlorer log:
INFO: Try to open port COM5, baud 74880, 8N1
May 01, 2018 11:37:10 AM ESPlorer.ESPlorer log
INFO: Open port COM5 - Success.
May 01, 2018 11:37:20 AM ESPlorer.ESPlorer log
INFO: RTS set to OFF
... itt szepen bejon a bootloader uzenete ...
May 01, 2018 11:37:32 AM ESPlorer.ESPlorer log
INFO: Try to reconnect with baud 115200...
May 01, 2018 11:37:32 AM ESPlorer.ESPlorer log
INFO: sending:print(uart.setup(0, 115200, 8, 0, 1, 1 ))<CR><LF>
May 01, 2018 11:37:33 AM ESPlorer.ESPlorer log
INFO: Reconnect: Success.
May 01, 2018 11:37:41 AM ESPlorer.ESPlorer log
INFO: sending:AT<CR><LF>
May 01, 2018 11:37:52 AM ESPlorer.ESPlorer log
INFO: ERROR: Communication with MCU not established.
May 01, 2018 11:37:56 AM ESPlorer.ESPlorer log
INFO: Close port COM5 - Success.
May 01, 2018 11:37:57 AM ESPlorer.ESPlorer log
INFO: Serial port COM5 save as default.
May 01, 2018 11:37:57 AM ESPlorer.ESPlorer log
INFO: Baud rate 9600 save as default.
May 01, 2018 11:37:57 AM ESPlorer.ESPlorer log
INFO: Try to open port COM5, baud 9600, 8N1
May 01, 2018 11:37:57 AM ESPlorer.ESPlorer log
INFO: Open port COM5 - Success.
May 01, 2018 11:38:06 AM ESPlorer.ESPlorer log
INFO: sending:AT< CR >< LF >
(#) nedudgi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Nem is fog reagálni az AT parancsokra. A leírás szerint NODEMCU förmver van rajta. (Ez egy Lua alapú, interaktív nyelv.)
A hozzászólás módosítva: Máj 1, 2018
(#) pipi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Idézet:
„Arduino IDE-vel rá tudtam tölteni a szokásos led villogtató programot és villog is a led.”
akkor mégiscsak felülírtad a firmware-t. Szóval csak azt tudja, amit rátöltöttél, ezzel az AT parancsos felület nyilván elveszett, még ha volt is esetleg. Ha ezt akarod akkor újra rá kell tölteni.
A hozzászólás módosítva: Máj 1, 2018
(#) dinamo válasza pipi hozzászólására (») Máj 1, 2018 /
 
Na de ha felülírtam a firmwaret, akkor mi írja ki bekapcsoláskor a boot üzenetet, és hogy lehetséges, hogy megjelenik mint wifi access point a 192.168.4.1 címen, és dhcp serverként osztja az ip címet, ha csatlakozok hozzá?
Arduino ide-vel megpróbáltam rátölteni ezt a példaprogramot:
https://github.com/espressif/arduino-esp32/blob/master/libraries/Wi...er.ino
el is indul, de nem hajlandó csatlakozni a routeremhez, a WIFI.begin()-t lelovi néhány másodperc után a watchdog.
Nem lehet, hogy ennek a "boot mode (3,6)"-nak van jelentősége? Rákeresve, azt látom, hogy többféle variáció lehet.
(#) dinamo válasza nedudgi hozzászólására (») Máj 1, 2018 /
 
Lentebb mar belinkeltem egy kepet, hogy elvileg milyen boot üzenetet ad egy nodeMCU:
https://medium.com/meta-design-ideas/getting-started-with-nodemcu-c...5d5c1d
az enyém nem ilyen, hanem ilyen:
ets Jan 8 2013,rst cause:2, boot mode3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ld

Az a "~ld" gyanús még a végén, olyan, mintha átváltana más baudratere, és mondjuk kiírná, hogy "ready". Ha így lenne, akkor várná az AT parancsokat azon a sebességen. Csak az a baj, hogy nem tudom, hogy milyen sebességen. A 9600, 115200-at kipróbáltam, nem reagál rá. aztán persze lehet, hogy az "~ld" valami más.
(#) nedudgi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Nem AT parancsot vár. AT parancsot csak az AT firmware ismer el, a többi hibásnak tartja. Azzal ne foglalkozz, hogy az elejét (a bootloader fecsegése) felismerd. A Putty-t állítsd csípőből 9600, vagy 115200 Bd sebességre. Esetleg megpróbálhatod a 19200Bd-t.
(#) pipi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
A mintaprogi hiányos, a wifi módot nem állítja, az a kitudjamikori előző programban beállított mód
(AP, STA, AP+STA). Lásd ezen az oldalon feljebb a hozzászólásomat. csinál egy printdiag-ot
Az esp-ben van egy bootloader ennek látod a kimenetét, ennek a bootloadernak a feladata, hogy pl az arduino ide fel tudja tölteni a programot. A bootloader nem kezel wifit. Mint már írták a baudot állítsd a mintaprogramban lévő 115k-ra, és nézd a sorost.
(#) andyka válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Egyszeruen toltsel ra egy wemos mintaprogramot (ESP8266 e12 -set) es kell hogy menjen. Pont mintha egy Wemos mini lenne. Nem AT meg ilyesmi kezdetleges holmi
(#) dinamo válasza pipi hozzászólására (») Máj 1, 2018 /
 
Koszi, ez segitett. Mar korabban is probaltam a modot allitani, de a forditaskor kaptam egy olyan hibat, hogy nincs mode() fuggvenye a Wifi.. classnak. Nem volt jo a Wifi.h include, ami a peldaprogramban volt, most betettem helyette a ESP8266WebServer.h-t, ahogy itt lentebb is van, es lon vilagossag, csatlakozott a routeremhez, es elindult webserverkent, tudom villogtatni az egyik rajta levo ledet. Valojaban ez mar eleg nekem, az AT parancsokkal csak jatszani akartam, valoszinuleg tenyleg nem az a firmware van rajta.
A bootloaderen kivul lennie kell benne alapbol egy komplett wifi stacknek, mert ha kitorlom a user programomat (ures setup+loop), AP-kent akkor is latszik az ESP, pingelni lehet es csatlakozni is hozza, csak eppen egyeb kommunikaciot nem ad (pl. valami beallitos weboldalt, amit szerettem volna latni).
(#) pipi válasza dinamo hozzászólására (») Máj 1, 2018 /
 
Az üres setup/loop nem ures program, nézd csak meg a méretét, amit letöltesz, abba bizony sokminden van helyből, mire a setup függvényedhez odaér, egy csomó mindent konfigurál(hat)...
Valahol volt valóban üres bin fájl (lehet akkor láttam mikor a lua-t próbáltam), na azzal próbáld ki, mit lát utána... De szerintem lényegtelen....
(#) Zekageri hozzászólása Máj 4, 2018 /
 
Üdv srácok , lenne 1-2 problémám egy NodeMCU esp8266-al. Remélem hozzám jobban értő fülekre találok.
Nos Először is leírom a projektet. Egy RFID-s kis beléptető rendszert akarok , webes felülettel. Ahol az RFID részét egy Arduino uno kezeli , ott vannak a tagok ,a kártyák kódjai , ott dől el hogy melyik kártya kicsoda , meg egyéb mókaságok. Ez a story az RX-TX-en kommunikál az említett NodeMCU-val , ami felel a webes részéért , a bejelentkezett emberkék webre kiíratásával illetve később egy SPIFFS file systembe való logolással ( bár azt lehet hogy az unon csinálom meg ). Nos az a helyzet hogy a webes részénél akadtak olyan problémák amiket egy kicsit nehezen hidaltam át , mint pl a JavaScript , Ajax téma a web HTML részénél , ugyanis nem szeretnék folyton rá frissíteni az oldalra amikor új adatot szeretnék megnézni , hanem egy Dinamikus Content frissítést végzek hogy le frissítse nekem ha új adat jött. Ez megy is szinte tökéletesen , a probléma csak az hogy ha több kérelmet írok bele , pl ha ki akarom íratni a legutolsó bejelentkezett emberke nevét , és azt hogy mikor jelentkezett be , ezen felül még csináltam egy rendszer Uptime számlálót is hogy nézzem mióta bootolt be a rendszer. Akkor ezek közül csak egy function getData(){} funkciót pörget végig , ez esetben a szerver uptimet , és a többit nem frissíti le. Mivel nem vagyok túl otthonos a JavaScriptben ezért nem értem , viszont azt észre vettem hogy ha a funkciók nevei nem getData akkor mintha észre sem venné a program. Belinkelem ide az ino file kódomat és a HTML részét is , mivel külön fájlban van a kettő.

Először is az INO arduino kód:

  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <SoftwareSerial.h>
  5. #include <ESP8266mDNS.h>
  6. #include <time.h>
  7. #include <ArduinoOTA.h>   // Többszöri upload miatt!
  8. #include <FS.h>
  9. #include "index.h"        // EZ A HTML WEB PAGE JAVASCRIPTEL!
  10. #include "Bevitel.h"      // Ez egy próba page! (blank)
  11.  
  12. #define LED 2             //Boardon lévő led
  13.  
  14. SoftwareSerial ardu(14, 12);
  15.  
  16.  
  17. char Jani[5] = {"Jani"};
  18. int egyszer;
  19. char a;                   // Ardu ide jön be!
  20.  
  21. /**************************  UPTIME SZÁMLÁLÓ *******************************/
  22. byte hh=0; byte mi=0; byte ss=0;    // Óra , perc , másodperc.
  23. unsigned int dddd=0;                // days (for if you want a calendar)
  24. unsigned long lastTick=0;           // Az idő amikor az óra utoljára Tickelt.
  25. char timestring[25];                // Outputnak
  26. /**************************  UPTIME SZÁMLÁLÓ *******************************/
  27.  
  28. //SSID és Password a routeré!
  29. const char* ssid = "Hitec";
  30. const char* password = "*****";
  31.  
  32. ESP8266WebServer server(80); //Server on port 8266
  33.  
  34. //==========================================================================|
  35. // Innentől akkor hajtódik végre ha az IP vagy a DNS megnyílik a browserben!|
  36. //==========================================================================|
  37.  
  38. void handleRoot() {
  39.  String s = MAIN_page;              //HTML kontentet olvasunk
  40.  server.send(200, "text/html", s);  //Elküldjük a web page-nek.
  41. }
  42.  
  43. void handleOldal1(){
  44.  
  45.   String D = Bevitel_page;
  46.   server.send(200, "text/html", D);
  47.   Serial.println("Elküldtük az oldal kérelmet");
  48.  
  49. }
  50. /*
  51. void handleADC() {
  52.   if (ardu.available() > 0){
  53.     a = ardu.read();
  54.     Serial.println(a);
  55.     time_t now = time(nullptr);
  56.     Serial.println(ctime(&now));
  57.     String ido = String(ctime(&now));
  58.     Serial.println(ido);
  59.   }
  60.   if (a == '1')
  61.   {
  62.     String adcValue = String(Jani);
  63.     server.send(200, "text/plane", adcValue);     //Az ajax kérésnek küldjük el csak!
  64.     server.send(200, "text/plane", ido);
  65.   }
  66. }*/
  67.  
  68. void handleJani(){
  69.   if (ardu.available() > 0) {
  70.     a = ardu.read();
  71.     Serial.println(a);
  72.   }
  73.   if (a == '1'){
  74.     String JaniValue = String(Jani);
  75.     server.send(200, "text/plane", JaniValue);
  76. }
  77. }
  78.  
  79. void handleIdo(){
  80.   if (ardu.available() > 0){
  81.     time_t now = time(nullptr);
  82.  
  83.   while(egyszer < 1){
  84.   String IdoValue = String(ctime(&now));
  85.   Serial.println(IdoValue);
  86.   egyszer++;
  87.   server.send(200, "text/plane", IdoValue);
  88.   }
  89.   }
  90. }
  91.  
  92. void handleUptime(){
  93.   sprintf(timestring,"%d days %02d:%02d:%02d", hh, mi, ss);
  94. //Serial.print(timestring);
  95.   server.send(200, "text/plane", timestring);
  96. }
  97.  
  98.  
  99. void handleLED() {
  100.  String ledState = "OFF";
  101.  String t_state = server.arg("LEDstate");           //Refer  xhttp.open("GET", "setLED?LEDstate="+led, true);
  102.  Serial.println(t_state);
  103.  if(t_state == "1")
  104.  {
  105.   digitalWrite(LED,LOW); //LED ON
  106.   ledState = "ON";       //Feedback parameter
  107.  }
  108.  else
  109.  {
  110.   digitalWrite(LED,HIGH); //LED OFF
  111.   ledState = "OFF";       //Feedback parameter  
  112.  }
  113.  
  114.  server.send(200, "text/plane", ledState);          //Send web page
  115.  
  116. }
  117.  
  118.  /******** Idő változók ***********/
  119. int timezone = 3;
  120. int dst = 0;
  121. /******** Idő változók ***********/
  122.  
  123. /******************** HTTP USERNAME ÉS PASSWORD ***************/
  124.   const char* www_username = "admin";
  125.   const char* www_password = "admin";
  126. /******************** HTTP USERNAME ÉS PASSWORD ***************/
  127.  
  128.  
  129. //==============================================================
  130. //                         SETUP
  131. //==============================================================
  132. void setup(void){
  133.  
  134.   ArduinoOTA.onError([](ota_error_t error) { ESP.restart(); });
  135.   ArduinoOTA.begin();                               // Többszöri upload miatt!
  136.  
  137.   Serial.begin(115200);
  138.  
  139.   WiFi.begin(ssid, password);                       //Connect to your WiFi router
  140.   Serial.println("");
  141.  
  142.   pinMode(LED,OUTPUT);                              // Belső led outputra
  143.  
  144.  
  145.   // Wait for connection
  146.   while (WiFi.status() != WL_CONNECTED) {
  147.     delay(500);
  148.     Serial.print(".");
  149.   }
  150.  
  151.  
  152. server.on("/", [](){
  153.     if(!server.authenticate(www_username, www_password))
  154.       return server.requestAuthentication();
  155.     //server.send(200, "text/plain", "Login OK");
  156.     server.send(200, "text/html", MAIN_page);
  157.   });
  158.  
  159.   server.begin();                  //Start server
  160.  
  161.   //If connection successful show IP address in serial monitor
  162.   Serial.println("");
  163.   Serial.print("Csatlakoztunk ide: ");
  164.   Serial.println(ssid);
  165.   Serial.print("IP cím: ");
  166.   Serial.println(WiFi.localIP());                 //IP address hozzárendelve az ESP-hez.
  167.  
  168.   server.on("/", handleRoot);                     //Milyen rutint dolgozzon fel a rootban , ez a megjelenítendő PAGE.
  169.   server.on("/readD", handleOldal1);
  170.   server.on("/setLED", handleLED);
  171. //  server.on("/readADC", handleADC);
  172.   server.on("/readIdoValue", handleIdo);
  173.   server.on("/readJani", handleJani);
  174.   server.on("/readtimestring", handleUptime);
  175.  
  176.  
  177.  
  178.   Serial.println("HTTP server elindult");
  179.  
  180.   Serial.print("Ezzel nyisd meg: http://");
  181.   Serial.print(WiFi.localIP());
  182.   Serial.println("/ Bármilyen browserben hogy elinduljon.");
  183.  
  184.   /* IDŐŐŐŐŐŐ ************************************************************************/
  185.   configTime(2 * 3600, 0, "hu.pool.ntp.org" /*"time.nist.gov"*/);   //"pool.ntp.org"
  186.   Serial.println("\nGlobális idő lekérése...");
  187.   while (!time(nullptr)) {
  188.     Serial.print(".");
  189.     delay(500);
  190.   }
  191.   //Serial.println("");
  192. /* IDŐŐŐŐŐŐ ************************************************************************/
  193.  
  194.  
  195. /************************* HOSTNAME ÉS FELTÖLTÉSI JELSZÓ ********************************************************/
  196.   ArduinoOTA.setHostname("Hitec-ESP");
  197.   ArduinoOTA.setPassword((const char *)"Administrator");
  198. /************************* HOSTNAME ÉS FELTÖLTÉSI JELSZÓ ********************************************************/
  199. /*
  200. SPIFFS.begin();
  201. SPIFFS.format();
  202. */
  203. }
  204. //==============================================================
  205. //                     LOOP
  206. //==============================================================
  207. void loop(void){
  208.   server.handleClient();          //Handle client requests
  209.   ArduinoOTA.handle();
  210.  
  211. /***************  UPTIME TICK ********************/
  212.  if ((micros() - lastTick) >= 1000000UL) {
  213.   lastTick += 1000000UL;
  214.   ss++;
  215.  if (ss>=60) { ss-=60; mi++; }
  216.  if (mi>=60) { mi-=60; hh++; }
  217.  if (hh>=24) { hh-=24; dddd++; }
  218. }
  219. /***************  UPTIME TICK ********************/
  220.  
  221.  
  222. /*
  223. // open file for writing
  224.   File f = SPIFFS.open("/f.txt", "w");
  225.   if (!f) {
  226.       Serial.println("file open failed");
  227.   }
  228.   Serial.println("====== Writing to SPIFFS file =========");
  229.   if (ardu.available() > 0) {
  230.     a = ardu.read();
  231.     Serial.println(a);
  232.   }
  233.   if (a == '1'){
  234.     time_t now = time(nullptr);
  235.     String IdoValue = String(ctime(&now));
  236.   for (int i=1; i<=10; i++){
  237.     f.print("Jani: ");
  238.     f.println(IdoValue);
  239.     Serial.println(IdoValue);
  240.     }
  241. }/*
  242.     f.print("Millis() : ");
  243.     f.println(millis());
  244.     Serial.println(millis());
  245.   }
  246.  
  247.   f.close();
  248.  
  249.   // open file for reading
  250.   f = SPIFFS.open("/f.txt", "r");
  251.   if (!f) {
  252.       Serial.println("file open failed");
  253.   }  Serial.println("====== Reading from SPIFFS file =======");
  254.   // write 10 strings to file
  255.   for (int i=1; i<=10; i++){
  256.     String s=f.readStringUntil('\n');
  257.     Serial.print(i);
  258.     Serial.print(":");
  259.     Serial.println(s);
  260.   }
  261.  
  262.   // wait a few seconds before doing it all over again
  263.   delay(3000);
  264. */
  265. }



És a HTML része:

  1. const char MAIN_page[] PROGMEM = R"=====(
  2. <!DOCTYPE html>
  3. <html>
  4. <link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css' integrity='sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4' crossorigin='anonymous'>
  5. <META HTTP-EQUIV=Content-Type Content=text/html; Charset=UTF-8>
  6. <META HTTP-EQUIV=Content-Language Content=hu>
  7. <body>
  8.  
  9. <meta name='viewport' content='width=device-width, initial-scale=1'>
  10.  
  11.  <h1 class="text-center">Hitec AJAX próba web.</h1><br>
  12.  
  13. <div id="demo">
  14.  <kbd>Belső LED ajax próbája:</kbd><tab1></tab1>
  15.  <button type="button" class='btn btn-success' onclick="sendData(1)">LED ON</button><tab1></tab1>
  16.  <button type="button" class='btn btn-danger'  onclick="sendData(0)">LED OFF</button><BR>
  17.  <dt>A LED állapota : </dt><span id="LEDState">NUL</span><br>
  18. </div>
  19.  
  20.  
  21.          
  22. <div>
  23.    <br><br>
  24.    <div class="w3-container">
  25.    <dt>Utolsó bejelentkezés : </dt><span id="JaniValue">Senki</span><tab1></tab1>
  26.    <dt>Ekkor: </dt><span id="Ido">0</span><br>
  27.    </div>
  28.    <dt>A pontos idő : </dt><span id="idoz">ido</span><br>
  29. </div><br>
  30.  
  31. <div align="right" class="w3-container">
  32. <input type="text" id="myInput" align="right" onkeyup="myFunction()"
  33. placeholder="Név keresés.." title="Írj be egy nevet"><br>
  34. <table style='width: 50%' align='right' id="myTable" class='table table-striped
  35. table-dark'>
  36.  
  37.  <thead>
  38.    <tr>
  39.      <th scope='col'>#</th>
  40.      <th scope='col'>Név</th>
  41.      <th scope='col'>Tag-Kód</th>
  42.      <th scope='col'>Jog</th>
  43.    </tr>
  44.  </thead>
  45.  
  46.  <tbody id="myTable">
  47.    <tr>
  48.      <th scope='row'>1</th>
  49.      <td>Imi</td>
  50.      <td>48494870535348676870565613</td>
  51.      <td>HITEC</td>
  52.    </tr>
  53.  
  54.  <tr>
  55.    <th scope='row'>2</th>
  56.      <td>Ádi</td>
  57.      <td>48494853546750686654705113</td>
  58.    <td>HITEC</td>
  59.  </tr>
  60.  
  61.  <tr>
  62.    <th scope='row'>3</th>
  63.      <td>Bali</td>
  64.      <td>48524848566952655055695513</td>
  65.    <td>HITEC</td>
  66.  </tr>
  67.  
  68.  <tr><th scope='row'>4</th>
  69.      <td>Jani</td>
  70.      <td>48494852706869544950486713</td>
  71.    <td>HITEC</td>
  72.  </tr>
  73.  
  74.  <tr>
  75.    <th scope='row'>5</th>
  76.      <td>Gabi</td>
  77.      <td>5664848555455705248505013</td>
  78.    <td>HITEC</td>
  79.  </tr>
  80. </table>
  81.  
  82. </div>
  83.  
  84.  
  85. </body>
  86.  
  87. <!--                              JAVASCRIPT                       -->                  
  88. <script>
  89.  
  90. var d = new Date();
  91. document.getElementById("idoz").innerHTML = d;
  92.  
  93. function sendData(led) {
  94.  var xhttp = new XMLHttpRequest();
  95.  xhttp.onreadystatechange = function() {
  96.    if (this.readyState == 4 && this.status == 200) {
  97.      document.getElementById("LEDState").innerHTML =
  98.      this.responseText;
  99.    }
  100.  };
  101.  xhttp.open("GET", "setLED?LEDstate="+led, true);
  102.  xhttp.send();
  103. }
  104.  
  105. setInterval(function() {
  106.  // Call a function repetatively with 1 Second interval
  107.  getData();
  108. }, 1000);                     //1000mSeconds update rate
  109.  
  110. function getData() {
  111.  var xhttp = new XMLHttpRequest();
  112.  xhttp.onreadystatechange = function() {
  113.    if (this.readyState == 4 && this.status == 200) {
  114.      document.getElementById("JaniValue").innerHTML =
  115.      this.responseText;
  116.    }
  117.  };
  118.  xhttp.open("GET", "readJani", true);
  119.  xhttp.send();
  120. }
  121.  
  122. function loadData() {
  123.  var xhttp = new XMLHttpRequest();
  124.  xhttp.onreadystatechange = function() {
  125.    if (this.readyState == 4 && this.status == 200) {
  126.      document.getElementById("Ido").innerHTML =
  127.      this.responseText;
  128.    }
  129.  };
  130.  xhttp.open("GET", "readIdoValue", true);
  131.  xhttp.send();
  132. }
  133.  
  134.  
  135.  
  136. function getData(){
  137.  var xhttp = new XMLHttpRequest();
  138.  xhttp.onreadystatechange = function() {
  139.    if (this.readyState == 4 && this.status == 200) {
  140.      document.getElementById("uptime").innerHTML =
  141.      this.responseText;
  142.    }
  143.  };
  144.  xhttp.open("GET", "readtimestring", true);
  145.  xhttp.send();
  146. }
  147.  
  148. function myFunction() {
  149.  var input, filter, table, tr, td, i;
  150.  input = document.getElementById("myInput");
  151.  filter = input.value.toUpperCase();
  152.  table = document.getElementById("myTable");
  153.  tr = table.getElementsByTagName("tr");
  154.  for (i = 0; i < tr.length; i++) {
  155.    td = tr[i].getElementsByTagName("td")[0];
  156.    if (td) {
  157.      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
  158.        tr[i].style.display = "";
  159.      } else {
  160.        tr[i].style.display = "none";
  161.      }
  162.    }      
  163.  }
  164. }
  165.  
  166. </script>
  167. <script src='https://code.jquery.com/jquery-3.3.1.slim.min.js' integrity='sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo' crossorigin='anonymous'></script>
  168. <script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js' integrity='sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ' crossorigin='anonymous'></script>
  169. <script src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js' integrity='sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm' crossorigin='anonymous'></script>
  170.  
  171. <!--                                                     JAVASCRIPT                                             -->                  
  172.  
  173.  
  174. <style>
  175. .footer {
  176.    position: fixed;
  177.    left: 25;
  178.    bottom: 0;
  179.    width: 10%;
  180.    background-color: red;
  181.    color: white;
  182.    text-align: center;
  183. }
  184.  
  185. #myInput {
  186.  background-image: url('/css/searchicon.png');
  187.  background-position: 10px 10px;
  188.  background-repeat: no-repeat;
  189.  width: 50%;
  190.  font-size: 16px;
  191.  padding: 12px 20px 12px 40px;
  192.  border: 1px solid #ddd;
  193.  margin-bottom: 12px;
  194. }
  195.  
  196. </style>
  197.  
  198. <style type="text/css">
  199.            dummydeclaration { padding-left: 4em; }
  200.            tab1 { padding-left: 4em; }
  201.            tab2 { padding-left: 8em; }
  202.            tab3 { padding-left: 12em; }
  203.            tab4 { padding-left: 16em; }
  204.            tab5 { padding-left: 20em; }
  205.            tab6 { padding-left: 24em; }
  206.            tab7 { padding-left: 28em; }
  207.            tab8 { padding-left: 32em; }
  208.            tab9 { padding-left: 36em; }
  209.            tab10 { padding-left: 40em; }
  210.            tab11 { padding-left: 44em; }
  211.            tab12 { padding-left: 48em; }
  212.            tab13 { padding-left: 52em; }
  213.            tab14 { padding-left: 56em; }
  214.            tab15 { padding-left: 60em; }
  215.            tab16 { padding-left: 64em; }
  216.  
  217.        </style>
  218.        
  219.  
  220. <div class="footer">
  221.  <p>Created by: Geri</p>
  222.  Uptime :<span id="uptime">0</span>
  223. </div>
  224.  
  225.  
  226. </html>
  227. )=====";



Elnézést a sok comment miatt , sok minden próbálgatok. A másik nagy problémám pedig az lenne hogy az oldal néha naaaaagyon elkezd Laggolni , viszont néha csak úgy amikor ő gondolja csak pár ms-nyi PING van. Van amikor a led akár 1-2 másodpercet is késik miután a weben megnyomtam a gombot. Ez a scriptek miatt lehet , de még nem jöttem rá hogy miért.

Edit: Tehát a lényeg hogy a HTML-ben 3 db getData funkció van , és nem tudja hogy melyiket csinálja.
A hozzászólás módosítva: Máj 4, 2018
(#) sanyisay válasza Zekageri hozzászólására (») Máj 6, 2018 /
 
Üdv.
Egy tipp.

Idézet:
„Edit: Tehát a lényeg hogy a HTML-ben 3 db getData funkció van , és nem tudja hogy melyiket csinálja.”


Ezzel szerintem is ennyi a probléma nem több.

Viszont ha jobban megnézed...
getData()
loadData()
sendData(led)

ezek mind ugyanazt csinálják.

Elég csak egy belőle.
e helyett
  1. xhttp.open("GET", "setLED?LEDstate=" + led, true);

az egész útvonalat add át a függvénynek ne csak a paramétereket.
  1. url="setLED?LEDstate=" + led;
  2. xhttp.open("GET", url, true);

Kapott értéket meg ne az ajax függvényben dolgozd fel, tedd változóba, vagy bármi.

Remélem érthető amit írtam.
A hozzászólás módosítva: Máj 6, 2018
(#) Zekageri válasza sanyisay hozzászólására (») Máj 7, 2018 /
 
Nos nem , nem igazán értem. Hogyha meghagyok egy getData funkciót , és abban kezelem le az összes get requiestet akkor nem csinál semmit.

Edit: De , csinál egy funkcióval is ,csak ha benne van a 3 cuccosom akkor laggol az egész szerver.
A hozzászólás módosítva: Máj 7, 2018
(#) sanyisay válasza Zekageri hozzászólására (») Máj 7, 2018 /
 
Először is, külön kódban érdemes tesztelni a szerver és html kommunikációt, minden egyéb nélkül. SW serial, ota, stb nélkül. Nem mindig a szerverrel lesz a gond.

getData()

Következő JS kód, két oldalt hív meg az esp-n és a visszakapott választ kiírja.
Ha nem sikerült kapcsolódni az esp-hez 2 másodpercig (ezt változtathatod) akkor a hibát írja ki.
Sajnos sok mindentől függ, hogy mennyi idő kell a csatlakozáshoz. Ha valós időben akarod vezérelni a dolgokat akkor websocket kell, de azt sima kapcsolásra nem érdemes használni.

esp IP címét kihagyhatod, ha az esp-n van tárolva a html oldal, bár fejlesztéskor gyorsabb pc-n tárolni, később pedig az esp fájlrendszerén.

ESP egyszere több adatot is küldhet string formába egymás után fűzve és az így egybe kapott adat "tömböt" HTML oldalon a JavaScript szétválogatja változókká. Én erre a JSON formát használom.


  1. var ServerURL = "http://192.168.1.1/";  // esp IP címe
  2.         // ajax üzenet küldés
  3.         function getData(url, data = "") {
  4.             var xhr = new XMLHttpRequest();
  5.             xhr.open("GET", ServerURL + url + data, true);
  6.             var timeout = setTimeout(
  7.                 function() {
  8.                     xhr.abort();
  9.                     xhr.status = 599;
  10.                     alert("Nem jött válasz. nincs skapcsolat");
  11.                     xhr.responseText = "OFF Offline";
  12.                 }, 2000); // 2 másodpercet vár a válaszra
  13.             xhr.onreadystatechange = function() {
  14.                 if (xhr.readyState != 4) {
  15.                     return;
  16.                 }
  17.                 clearTimeout(timeout);
  18.                 if (xhr.status >= 200 && xhr.status < 300) {
  19.                     if (this.responseText != null) {
  20.                         // esp felől érkező üzenet feldolgozása
  21.                         if (url == "readtimestring") {
  22.                             alert(url + " -- " + this.responseText);
  23.                         }
  24.                         if (url == "setLED") {
  25.                             alert(url + " -- " + this.responseText);
  26.                         }
  27.                     }
  28.                 }
  29.             }
  30.             xhr.send(null);
  31.         }
  32.  
  33.         getData('readtimestring');
  34.         getData('setLED', "?LEDstate=led");
(#) Zekageri hozzászólása Máj 8, 2018 /
 
Köszönöm , nagyon segítőkész vagy. ^_^ A funkciódat beillesztettem a programba az én getData függvényem helyett ahol benne voltak a funkciók , viszont így csak az alertet kapom meg. Ami azt jelenti hogy belép a funkcióba , de kétlem hogy (átírtam 5 ms-re) 5 másodperc alatt nem jönne be az egyébként 1 másodpercenként érkező uptime számláló.
(#) Zekageri válasza sanyisay hozzászólására (») Máj 8, 2018 /
 
Tuti hogy a getData() funkció miatt laggol , ha megpingelem a szervert maximum 60ms-es válaszideje van , viszont amikor akcióban van és csinálná amit kell akkor késik akár 7 másodpercet is , ha kiveszem a getData funkcióból a cuccokat és csak pl a bejövő nevet hagyom ott akkor már nem laggol. Amit küldtél getData funkciót meg nem igazán értem hogy hogy kellene bele építenem a programomba. Mint írtam , hogyha lecserélem totálba az én getData funkciómmal akkor nem megy.
A hozzászólás módosítva: Máj 8, 2018
(#) sanyisay válasza Zekageri hozzászólására (») Máj 8, 2018 /
 
Amit küldtem az ennyire azért nem egyszerű. Azt nem a kódodba kell beépíteni, hanem azzal tudod tesztelni amit írtam. Amikor már működik és érted a mintámat akkor tudod átírni a saját kódodat. Én úgy szoktam hogy csinálok egy html oldalt ahol semmi nincs csak a JS kód, ott tesztelem az esp vel a kommunikációt és amikor már ez megy utána lehet a szépítéssel foglalkozni. Addig meg csak alert vagy console.log ra íratom ki az adatokat.

Ez előtti lépés pedig az hogy a böngésző címsorába írom az esp felé küldött üzenetet, simán megjelenik a válasz a böngészőben, és meg lehet nézni az időt is ami a válasz megérkezéséig eltelt. GET nél persze.

Tehát pingelés helyett,
Böngészőben megnyomod a ctrl + shift + i bilentyűket (megnyílik egy fejlesztői ablak)
ott keresel egy hálózat fület
simán beírod a címsorba hogy
  1. 192.168.1.1/setLED?LEDstate=1
persze az esp ip címével amivel kommunikálni szeretnél.
hálózat fülön bellül vannak oszlopok ott van egy IDŐ oszlop ott látod a válasz mikor érkezett meg.
Ha itt megjönnek az esp felől az adatok akkor ajaxal is jónak kell lennie.

Lehet egyéb hibákat keresni a html kódban, mint az egyforma nevek, stb. az említett fejlesztői ablakban ezek is látszanak, mint pld hol állt le hiba miatt a JS futása. Sokat segít a fejlesztésben és a tanulásban.
Persze elsőre semmit nem mond de nagyon hasznos kis ablak.
(#) Zekageri válasza sanyisay hozzászólására (») Máj 9, 2018 /
 
Helló! Nos értem a kódodat , működik is ezzel a módszerrel. Viszont látom a logban hogy 1 másodperc alatt kb 10.000x megnézi hogy van-e valami és be crashel a chrome böngésző , ledobja a láncot. Viszont pl az uptime számláló működik , megy , számol úgy kb 7-10 másodpercig , de nem bírja tovább.


Így írtam meg:

  1. setInterval(function() {
  2.   // Meghívjuk a funkciót 1 másodpercenként.
  3.       getData();
  4. }, 1000);                     //1000mSeconds update rate
  5.  
  6. var ServerURL = "http://192.168.1.108/";
  7.  
  8. function getData(url, data = "") {
  9.  
  10.   var xhr = new XMLHttpRequest();
  11.   xhr.open("GET", ServerURL + url + data, true);
  12.   var timeout = setTimeout(
  13.                 function() {
  14.                     xhr.abort();
  15.                     xhr.status = 599;
  16.                     alert("Nem jött válasz. nincs kapcsolat");
  17.                     xhr.responseText = "OFF Offline";
  18.                 }, 2000); // 2 másodpercet vár a válaszra
  19.               xhr.onreadystatechange = function() {
  20.                 if (xhr.readyState != 4) {
  21.                     return;
  22.                 }
  23.                 clearTimeout(timeout);
  24.                 if (xhr.status >= 200 && xhr.status < 300) {
  25.                     if (this.responseText != null) {
  26.  
  27.                         // esp felől érkező üzenet feldolgozása
  28.  
  29.                         if (url == "readtimestring") {
  30.                             document.getElementById("uptime").innerHTML =
  31.                             this.responseText;
  32.                         }
  33.                         if (url == "setLED") {
  34.                             document.getElementById("LEDState").innerHTML =
  35.                             this.responseText;
  36.                         }
  37.                     }
  38.                 }
  39.             }
  40.             xhr.send(null);
  41.  
  42.         getData('readtimestring');
  43.         getData('setLED', "?LEDstate=led")
  44. }
(#) Zekageri válasza Zekageri hozzászólására (») Máj 9, 2018 /
 
Több ezer requestet akar feldolgozni egy másodperc alatt.

what.png
    
(#) Johnycorp hozzászólása Máj 9, 2018 /
 
Sziasztok!

Szembetalálkoztam egy bosszantó problémával pár darab ESP-07 modulnál.
Még konkrétan Januárban vettem 35 db-ot a HESTORE-n. Sajnos csak most jutott odáig a projekt, hogy mindet beépítsem és programozzam.
A 35 közül 6 db egyszerűen nem működik. Az ESP-07 modul piros és kék LED-je is folyamatosan világít.
Kommunikálni nem lehet vele, nem küld még indításkor sem semmit, nem programozható.
Próbáltam már az ESPTOOL programot és a kapcsolódó oldalakat is megnéztem.

Úgy tűnik, hogy firmware gond van. De én sem tudok rátölteni ugyebár. A nyákpanelt átnéztem, ellenállások, vezetősávok és tápfeszültség is rendben. De át is forrasztottam már.
Egyik panelen kicserélve a modult egy másikra (eBay beszerzésű), egyből működik, programozható, teszi a dolgát, sokadik bekapcsolásra is.

Van valakinek ötlete erre a problémára?
Következő: »»   61 / 137
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem