ESP8266 PHP admin paneli için öneri

ulasttc

Hectopat
Katılım
4 Kasım 2021
Mesajlar
108
Daha fazla  
Cinsiyet
Erkek
Merhaba.

Düşündüğüm bir proje hakkında sizden yardım istiyorum. Proje şu şekilde olacak.

Birden fazla ESP8266 ya da ESP32 kullanarak, PHP ve websocket tabanlı bir uygulama geliştirmek istiyorum. Her cihazın kendine ait bir ID ya da MAC adresi veritabanına otomatik olarak kayıt olacak. Ve kontrol edilebilecek.
A firması'nın, sıcaklık nem değerleri. Işık aç-kapat işlemleri.
B firması'nın, sıcaklık nem değerleri. Işık aç-kapat işlemleri.
...Gibi

Bu sistemi hazır olan thinger.IO ya da blynk gibi sistemler değil de. Kendi sunucumda yapmak istiyorum. Çok araştırmama rağmen, hep ESP8266 ya da ESP32 ino uzantılı kodlamaların içinde CSS HTML JS gibi kodların gömülmesiyle olan projeler çıktı karşıma.

Yardımcı olabilecek ya da fikir, örnek gösterebilecek olursa çok sevinirim.
Şimdiden teşekkür ederim.
 
Son düzenleyen: Moderatör:
Ayrı bir sunucuda PHP mi ne istiyorsan serverini kur çalıştır. ESP8266 ile de verileri aralıklarla PHP Server'e POST at. Ne diye ESP'nin içine gömmeye çalışıyorsun ki?

C++:
#ifndef firmware_config_h
#define firmware_config_h

#include <inttypes.h>

#define RST_PIN D1

#define WIFI_SSID           ""
#define WIFI_PASS           ""
#define LOGIN_REMOTE_ADDR   ""
#define EXIT_REMOTE_ADDR    ""
#define POST_JSON_STRING    "{\"uid\": %u}"

#endif

C++:
#include "config.h"

#define  INFO(fmt, ...) serial_printf("[ INFO] " fmt, ##__VA_ARGS__);
#define  WARN(fmt, ...) serial_printf("[ WARN] " fmt, ##__VA_ARGS__);
#define ERROR(fmt, ...) serial_printf("[ERROR] " fmt, ##__VA_ARGS__);

void setup() {
    serial_init(9600);
    wifi_init();
}

void loop() {

    // TODO: this might cause some problems with the WiFi
    // stack's execution, test it properly
    if (!wifi_check_connectivity()) {
        WARN("not connected to wifi\n");
        wifi_connect_loop();
        return;
    }
}

C++:
#include <WiFiClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

void wifi_init() {
    wifi_connect_loop();
}

void wifi_connect_loop() {
    INFO("connecting to wifi: %s", WIFI_SSID);
    WiFi.begin(WIFI_SSID, WIFI_PASS);

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

    Serial.print("\n");
    INFO("connected to wifi: %s\n", WiFi.localIP());
}

bool wifi_check_connectivity() {
    return WiFi.status() == WL_CONNECTED;
}

int wifi_request_access(uint32_t uid, uint8_t reader) {
    WiFiClient client;
    HTTPClient http;
    char request_body[20];

    http.begin(client, reader == 0 ? LOGIN_REMOTE_ADDR : EXIT_REMOTE_ADDR);
    http.addHeader("Content-Type", "application/json");

    snprintf(request_body, sizeof(request_body), "{\"uid\": %zu}", uid);
    INFO("req summary: %u:%u:request_body:%s\n", reader, uid, request_body);

    int http_code = http.POST(request_body);
    INFO("respone http code: %d\n", http_code);

    // TODO: add response body based checks
    return http_code < 0 ? http_code : http_code == 200;
}


Ofis kapısı projesi için yazdığımız bir sistem. Örnek olabilir.
 
Son düzenleme:
Herkese fikirleri için teşekkür ederim. Sanırım yanlış anlaşılma oldu. Ben PHP yada HTML CSS gibi kodlamaları ESP'nin içine gömmeye çalışmıyorum. Bulduğum örneklerin hepsinde ESP içinde HTML ve CSS kodları mevcut.

Ayrıca kullanmak istediğim ortamda WebSocket olmalı, yani verileri eşzamanlı görmeliyim.Sanırım tek sorun. birden fazla ESP'nin içindeki değerleri ya da kontrolleri admin sayfası içinde ayrı ayrı göstermek olabilir.
 
ESP8266 WebSocket kullanabilir. WS zaten HTTP protokolü ile çalışır. Performans konusunda endişelerim var ama bir deneyin derim.

Buraya bakabilirsiniz.

Dilerseniz kısa aralıklı bir timer kullanabilirsiniz. Bu da anlık olmasa bile veri akışı sağlar.

Ya da ESP8266 sistem her veri aldığında data post edebilir. Bu post istegini arada baska bir istemci tutarak ana bilgisayara bildirebilirsiniz.

Daha detaylı yardımcı olmamı isterseniz bana bildirin.
 
ESP8266 WebSocket kullanabilir. WS zaten HTTP protokolü ile çalışır. Performans konusunda endişelerim var ama bir deneyin derim.

Buraya bakabilirsiniz.

Dilerseniz kısa aralıklı bir timer kullanabilirsiniz. Bu da anlık olmasa bile veri akışı sağlar.

Ya da ESP8266 sistem her veri aldığında data post edebilir. Bu post istegini arada baska bir istemci tutarak ana bilgisayara bildirebilirsiniz.

Daha detaylı yardımcı olmamı isterseniz bana bildirin.

Örnek için teşekkür ederim hocam. Bu örneği ESP32 üzerinde kullanmıştım. Dediğim gibi HTML, CSS, JS kodlarını ESP32 kodlarına yazmışlar. Ancak benim istediğim bu şekilde değil

Websocket kullanmak istememin amacı. Verileri eş zamanlı görmek, ileride de başka kontrol edebilecek belirli kişiler için kullanmak istiyorum.

Örneğin 10 tane ESP32 kullanacağım. Bunların belirli ID'sini ya da Mac Adreslerini veritabanına kaydedip (GET-POST) mantığı olabilir. Panel üzerinden arama yaparak verilerini görmek amacım. Gerektiği yerde ısı sıcaklık LED açıp kapatma ya da başka işlemleri tek bir panel üzerinden + kullandığım hosting üzerinden kontrol etmek istiyorum

MQTT'yi daha önce incelemiştim. Fena olmayan bir sistem, sanırım Free sunucular neredeyse yok denecek kadar az
 
MQTT'yi daha önce incelemiştim. Fena olmayan bir sistem, sanırım Free sunucular neredeyse yok denecek kadar az
Ngrok ile localhost'u açabilirsiniz diye düşünüyorum. Free sunucu diğer sistemlerde nasıl olacak onu anlayamadım üstüne neden free sunucu isteniyor?.

Adafruit'e de bakabilirsiniz. Başka da bir seçenek yok zaten.
 

Technopat Haberler

Geri
Yukarı