Skocz do zawartości
Mrpatryk

Przesyłanie danych na strone WWW

Pomocna odpowiedź

Dnia 29.09.2018 o 01:44, kaczakat napisał:

Przykład działający na ESP8266:


#include <ESP8266WiFi.h>
const char* ssid= "SSID";
const char* password = "HASLO";
const int httpPort = 80;
const char* host = "IP"; //IP serwera z MySQL
float temp=22.26, humidity=35.33;
  

void setup() {
 Serial.begin(115200);
 WiFi.begin(ssid, password);  
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
Serial.println(WiFi.localIP());
}
void loop() {
 Serial.println(temp);  
 
 temp+=1.02; //zmieniamy wartości do bazy danych dla lipy
 humidity+=1.05;  
 if(temp>40) 
 {
   temp=21.26;
   humidity=34.33;
 }

  WiFiClient client; //wysylanie do PHP i MySQL
  if (!client.connect(host, httpPort)) {
   Serial.println("connection failed");
   
 }
 else
 {
String url = "/esp.php?";
   url += "id=1"; 
   url += "&t="; 
   url += temp;
   url += "&h="; 
   url += humidity;
 client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");  
 }
 delay(5000);               
}

Do tego skrypt PHP na serwerze:


<?php
define ('DBHOST', 'localhost:3306)'); 
define ('DBNAME', 'esp'); // nazwa bazy danych
define ('DBUSER', 'USER'); // nazwa usera ustawic w PHPMYADMIN
define ('DBPASS', 'HASLO'); // haslo usera ustawic w PHPMYADMIN
/* Laczenie z baza danych */
mysql_connect(DBHOST, DBUSER, DBPASS) or die('Nie polaczono!');
mysql_select_db(DBNAME) or die ('Brak polaczenia z baza danych!');
mysql_query('SET NAMES utf8');

$id = ($_GET['id']); 
$temp = ($_GET['t']);
$hum = ($_GET['h']);

if ($id == '1') {
    $total = mysql_result(mysql_query("SELECT count(*) FROM `esp1`"),0);
    mysql_query("INSERT INTO `esp1` (temp,hum) values ('".$temp."','".$hum."') ");
}
echo 'Ок';
?>

To przerobiony przykład Ethernetu z poprzedniego linku na ESP.

To kiedyś użyłem do testu ze swoją bazą MySQL na dysku sieciowym i działało. Akurat czas to był podawany przez bazę danych w chwili wpisania od klienta. Sama wizualizacja na serwerze dysku to też osobna zabawa. Na forum Arduino pl jest też jakiś przykład zapisu do bazy na serwerze zdalnym http://forum.arduinopolska.pl/watek-komunikacja-z-http-przez-esp8266?highlight=sql - może zagadaj do niego, bo napisał, że korzysta z ENC.

Można też po prostu wysyłać dane na serwer IOT, np. Thinkspeak. Na Youtube poszukaj kanału Andreas  Spiess, korzystałem z jego przykładu zamieniając tylko POST na GET i działa super.

 

Możesz podrzucić mi link do tej biblioteki bo ściągam już 6 z rzędu i kur*** brakuje co chwile jakiś plików w nich.

Udostępnij ten post


Link to post
Share on other sites

Mój przykład nie jest do typowych płytek Arduino, tylko do ESP. Musisz sobie zainstalować definicje płytek do Arduino, dodajesz link z nimi (http://arduino.esp8266.com/stable/package_esp8266com_index.json) do FILE->Preferences-> Additional Board Manager URLs ->OK click, potem wchodzisz w manager płytek, wybierasz i instalujesz ESP8266, po dodaniu wybierasz płytkę np. ESP WEMOS i kompilujesz. Opis całości tu: https://github.com/esp8266/Arduino . Jest też mnóstwo tutoriali PL.

Jak instalowałeś/wgrywałeś coś ręcznie to może lepiej odinstaluj najpierw.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Wrzucilem bilbioteke EPS8266wifi i niestety wywala bład " fatal error: bearssl/bearssl.h: No such file or directory" .

20 minut temu, kaczakat napisał:

Mój przykład nie jest do typowych płytek Arduino, tylko do ESP. Musisz sobie zainstalować definicje płytek do Arduino, dodajesz link z nimi (http://arduino.esp8266.com/stable/package_esp8266com_index.json) do FILE->Preferences-> Additional Board Manager URLs ->OK click, potem wchodzisz w manager płytek, wybierasz i instalujesz ESP8266, po dodaniu wybierasz płytkę np. ESP WEMOS i kompilujesz. Opis całości tu: https://github.com/esp8266/Arduino . Jest też mnóstwo tutoriali PL.

Jak instalowałeś/wgrywałeś coś ręcznie to może lepiej odinstaluj najpierw.

czyli to co wrzuciłes tzn tamten kod nie jest bezposrednio na arduino ? tylko na EPS ? trzeba go na niego wrzucić czy jak ? "tępy jestem" 😄

 

Edytowano przez Mrpatryk

Udostępnij ten post


Link to post
Share on other sites

Płytka ESP8266 może być dodatkiem do np. ARDUINO UNO, wtedy używasz bibliotek, program wgrywasz do UNO, ESP jest tylko dodatkiem wykorzystywanym jako most UART-WIFI, urządzenie peryferyjne jak wyświetlacz czy NFR24L01, ledy, przyciski.  

Płytka ESP8266 może zastąpić UNO, wtedy robisz to co napisałem poprzednio. Wtedy program wgrywasz do ESP8266. Standardowo nie ma tego w programie Arduino, trzeba doinstalować przez managera płytek. Ale tu też tego nie ma, trzeba najpierw wkleić link gdzie ma płytek z rodziny ESP8266 szukać. Dalej wykorzystujesz ARDUINO IDE do pisania programu i wgrywania, ale nie piszesz go już dla UNO tylko dla ESP. Mój przykład jest do tego wariantu. Jaśniej nie umiem.

Udostępnij ten post


Link to post
Share on other sites
3 minuty temu, kaczakat napisał:

Płytka ESP8266 może być dodatkiem do np. ARDUINO UNO, wtedy używasz bibliotek, program wgrywasz do UNO, ESP jest tylko dodatkiem wykorzystywanym jako most UART-WIFI, urządzenie peryferyjne jak wyświetlacz czy NFR24L01, ledy, przyciski.  

Płytka ESP8266 może zastąpić UNO, wtedy robisz to co napisałem poprzednio. Wtedy program wgrywasz do ESP8266. Standardowo nie ma tego w programie Arduino, trzeba doinstalować przez managera płytek. Ale tu też tego nie ma, trzeba najpierw wkleić link gdzie ma płytek z rodziny ESP8266 szukać. Dalej wykorzystujesz ARDUINO IDE do pisania programu i wgrywania, ale nie piszesz go już dla UNO tylko dla ESP. Mój przykład jest do tego wariantu. Jaśniej nie umiem.

podczas wgrywania na ESP8266 mam taki otóz bład

"warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed"

 

programik napisalem taki jak podesłałes pozmieniałem sobie dane, wszystko na localhost .

Udostępnij ten post


Link to post
Share on other sites

O wykorzystywaniu ESP jest mnóstwo tutoriali, artykułów,  filmów na YOUTUBE, nie wymagaj tu na forum indywidualnego kursu. Nikt nie wie jakie masz ESP,  czy umiesz podłączyć je do USB, czy Ci wykrywa port COM, czy ten port COM wybrałeś. Nie wgrywa, bo możesz mieć kabel do dupy, bo masz słabe zasilanie, w ogóle nie ten COMPORT, słabe napięcie USB, płytka jest uszkodzona, wtyczka nie łączy, +500 innych powodów. Jak 5 minut temu nie wiedziałeś jak to dograć do Arduino to oczywiście nic o tym nie wiesz i najpierw uzupełnij wiedzę.

A ogólnie w Arduino napisałeś już ze 100 szkiców, opanowałeś podstawy i pływasz w tym jak ryba w wodzie czy w piątek zainstalowałeś Arduino? A jak w piątek to ten kurs Arduino z Forbota opanuj na początek.

Udostępnij ten post


Link to post
Share on other sites
26 minut temu, kaczakat napisał:

O wykorzystywaniu ESP jest mnóstwo tutoriali, artykułów,  filmów na YOUTUBE, nie wymagaj tu na forum indywidualnego kursu. Nikt nie wie jakie masz ESP,  czy umiesz podłączyć je do USB, czy Ci wykrywa port COM, czy ten port COM wybrałeś. Nie wgrywa, bo możesz mieć kabel do dupy, bo masz słabe zasilanie, w ogóle nie ten COMPORT, słabe napięcie USB, płytka jest uszkodzona, wtyczka nie łączy, +500 innych powodów. Jak 5 minut temu nie wiedziałeś jak to dograć do Arduino to oczywiście nic o tym nie wiesz i najpierw uzupełnij wiedzę.

A ogólnie w Arduino napisałeś już ze 100 szkiców, opanowałeś podstawy i pływasz w tym jak ryba w wodzie czy w piątek zainstalowałeś Arduino? A jak w piątek to ten kurs Arduino z Forbota opanuj na początek.

ESP8266-01 chce je zaprogramowac przez arduino IDE, port jest ok, płytka zmieniona na Generic ESP8266Module, zasilanie z osobnego zasilacza. 

Udostępnij ten post


Link to post
Share on other sites

Wspólna masa jest? Przed próbą wgrywania miałeś komunikację komendami AT, działała prawidłowo przed wgraniem szkicu? Masz przy zasilaniu dołożony jakiś kondensator chociaż ceramiczny 100n? Programowanie ESP01 wygląda tak:, zasilasz VCC i GND, wspólna masa z konwerterem USB/UART, TX-RX, RX-TX, zalecany konwerter poziomów jeśli UART jest na 5V, 5-3.3V, przez rezystory 10k podłączasz  RST, CHPD i GPIO0 do VCC, robisz reset,  sprawdzasz komunikację komendami AT, prędkość terminala 9600 lub 115200, odpowiada chociaż OK na AT to powiedzmy działa, podłączasz zworką  GPIO0 do GND (można zrobić przycisk), robisz reset zwierając na chwilkę do GND (możesz sobie jakiś przycisk na płytce dodać), jak masz dorobione przyciski to sekwencja zwierania do GND jest 0, RST, puszczasz 0,  masz go w trybie programowania, ustawiasz Upload między 9600 a 900 000, wgrywasz. Odpinasz zworkę GPIO0, robisz reset, testujesz program.

ESP01 jest chyba najtańszy, łatwiej zacząć z NODE MCU lub Weemos. Mają od razu USB, automatyczne reset/wgrywanie, pracują stabilniej bo mają kondensatory na płytce,  koszt zamiast dyszki około dwóch.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Z programatorem dalem sb rade, komendy at działają, użyłem szkicu:

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

Niestety nie łączy mi się z siecią pomimo ze podałem nazwę i hasło sieci ? Co może być nie tak. kropkę wyświetla co 500 tak jak delay jest ustawiony , raz czy dwa po ponownym wgraniu udało się uzyskać IP itp ... co jest nie tak ? 

Edytowano przez Treker
Poprawiłem formatowanie.

Udostępnij ten post


Link to post
Share on other sites

Jeśli czasem łączy, a czasem nie to pewnie problem z zasięgiem lub słabe zasilanie, przy ESP01 dobrze jest dodać kondensator 100n + ewentualnie 1000u. Starsze moduły sprzed 2 lat działały spoko nawet zasilane z adaptera FTDI, ostatnio kupione działały niestabilnie, musiałem dodać przetwornicę zasilaną wprost z USB i kondensatory.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
18 godzin temu, kaczakat napisał:

Jeśli czasem łączy, a czasem nie to pewnie problem z zasięgiem lub słabe zasilanie, przy ESP01 dobrze jest dodać kondensator 100n + ewentualnie 1000u. Starsze moduły sprzed 2 lat działały spoko nawet zasilane z adaptera FTDI, ostatnio kupione działały niestabilnie, musiałem dodać przetwornicę zasilaną wprost z USB i kondensatory.

Już się połączyłem , podolaczyłem go pod osobne źródło zasilania, teraz mam problem ze nie przesyła wgl do bazy danych żarnych elementów. Port podany prawidłowy oraz ip bazy danych też :

WiFiClient client; //wysylanie do PHP i MySQL
  if (!client.connect(host, httpPort)) {
   Serial.println("connection failed");
   
 } cały czas wyswietla połaczenie nieudane. 

Port i httpPort:

const int httpPort = 80;
const char* host = "127,0,0,1";

 

Edytowano przez Treker
Poprawiłem formatowanie.

Udostępnij ten post


Link to post
Share on other sites

Najpierw sprawdź czy umiesz wstawić coś do bazy danych z palca, używając przeglądarki czy np. SocketTest3. Jak to Ci działa OK, to wiesz, że baza jest OK, skrypt PHP jest OK i skupiasz się na kodzie ESP. Kod natomiast napisałem dla testu, zadział, ucieszył, zapomniałem. Ja kodu użyłem w sieci wewnętrznej, ale na forum wrzuciłem komuś, kto ma jakiś serwer w Internecie i podziękował, że zadziałało. Nie wiem czy wykorzystał jak jest czy wprowadzał jakieś modyfikacje.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Baza działa napisałem szybko skrypt i formularz i dodaje mi  rekordy do bazy testowej , jednak jest problem bo arduino nie chce się połaczyc. Baza jest ok, cos z tym łączeniem jest nie tak :

const int httpPort = 80;
const char* host = "127.0.0.1";

 WiFiClient client; 
  if (!client.connect(host, httpPort)) {
   Serial.println("connection failed");
   } 

Co moze byc nie tak ze nie chce tego połączyć ? 

Edytowano przez Treker
Poprawiłem formatowanie.

Udostępnij ten post


Link to post
Share on other sites

Może to, że 127.0.0.1 to jest zawsze lokalny adres — czyli adres tej maszyny, na której działa program. Jak rozumiem, ty się chcesz łączyć z innym komputerem, musisz więc podać jego zewnętrzny adres.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...