ESP32 WiFi logger - تسجيل الرسائل عبر شبكة WiFi، باستخدام إما TCP أو UDP أو Websockets
مثال التطبيق:
protocol_examples_common (esp-idf/examples/common_components/)
cd <your_esp_idf_project>
mkdir components
cd components
cp $IDF_PATH/examples/common_components/protocol_examples_common . -r
git clone https://github.com/VedantParanjape/esp-wifi-logger.git wifi_logger
قم بتغيير CMakeList.txt لإضافة السطر الموضح أدناه:
set(EXTRA_COMPONENT_DIRS <relative_path_to_component_folder>)
يجب أن يحتوي مجلد المكون على مكون protocol_examples_common
و wifi_logger
sudo apt-get install netcat
nc -lu <PORT>
nc -l <PORT>
websocat -s <IP_ADDRESS_OF_YOUR_MACHINE>:<PORT>
websocat -s $(ip -o route get to 8.8.8.8 | sed -n 's/.*src ([0-9.]+).*/1/p'):1234
nc -l 1212
wifi_log_e() - Generate log with log level ERROR
wifi_log_w() - Generate log with log level WARN
wifi_log_i() - Generate log with log level INFO
wifi_log_d() - Generate log with log level DEBUG
wifi_log_v() - Generate log with log level VERBOSE
يمكن إرسال السجلات التي تم إنشاؤها بواسطة ESP_LOGE, ESP_LOGW, ESP_LOGI, ESP_LOGD, ESP_LOGV
، إذا تم تكوينها من خلال القائمة
نمط الاستخدام مماثل لـ ESP_LOGX()
استخدم وظيفة wifi_log()_x
لطباعة السجلات عبر شبكة wifi
مثال: wifi_log(TAG, "%s", "logger test");
سيتم أيضًا إرسال سجلات ESP_LOGE, ESP_LOGW, ESP_LOGI, ESP_LOGD, ESP_LOGV
عبر wifi، إذا تم تكوينها في Menuconfig.
اتصل بـ start_wifi_logger()
في void app_main()
لبدء تشغيل المُسجل. يمكن استدعاء وظيفة التسجيل wifi_log_x() (x = e,w,i,d,v)
لتسجيل الرسائل أو يمكن استخدام وظائف ESP-IDF Logging API العادية مثل ESP_LOGW
إذا تم تكوينها من خلال menuconfig
.
تكوين menuconfig
Example Connection Configuration
قم بتعيين WiFi SSID وكلمة المرورComponent config
WiFi Logger configuration
Route logs generated by ESP_LOGX to the wifi logger
- حدد ما إذا كان يتم توجيه السجلات المكتوبة بواسطة واجهة برمجة تطبيقات النظام لإرسالها إلى المسجل عن بعدNetwork Protocol (TCP/UDP/WEBSOCKET)
- قم بتعيين بروتوكول الشبكة المطلوب استخدامهUDP/TCP Network Protocol
Server IP Address
- قم بتعيين عنوان IP للخادم الذي سيتلقى رسائل السجل المرسلة بواسطة ESP32Port
- قم بتعيين منفذ الخادمWEBSOCKET Network Protocol
Websocket Server URI
- يضبط URI لخادم Websocket، حيث سيتم إرسال السجلات يمكن معرفة عنوان IP الخاص بالخادم عن طريق تشغيل ifconfig
على جهاز يعمل بنظام التشغيل Linux
idf.py menuconfig
Example Connection Configuration
WiFi SSID
- اضبط WiFi SSID للاتصالWiFi Password
- تعيين كلمة مرور WiFi Component config
WiFi Logger configuration
Network Protocol (TCP/UDP/WEBSOCKET)
- قم بتعيين بروتوكول الشبكة المطلوب استخدامهRoute logs generated by ESP_LOGX to the wifi logger
- حدد ما إذا كان يتم توجيه السجلات المكتوبة بواسطة واجهة برمجة تطبيقات النظام لإرسالها إلى المسجل عن بعدUDP/TCP Network Protocol
Server IP Address
- قم بتعيين عنوان IP للخادم الذي سيتلقى رسائل السجل المرسلة بواسطة ESP32Port
- قم بتعيين منفذ الخادمWEBSOCKET Network Protocol
Websocket Server URI
- يضبط URI لخادم Websocket، حيث سيتم إرسال السجلاتQueue Size
- تكوين متقدم، قم بالتغيير على مسؤوليتك الخاصة قم بتعيين حجم قائمة انتظار freeRTOS المستخدم لتمرير رسائل السجل إلى مهمة المسجل.logger buffer size
- التكوين المتقدم، قم بالتغيير على مسؤوليتك الخاصة. قم بتعيين حجم المخزن المؤقت لصفيف char المستخدم لإنشاء رسائل السجل بتنسيق ESP #include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "wifi_logger.h"
void app_main ( void )
{
start_wifi_logger (); // Start wifi logger
while ( 1 )
{
wifi_log_e ( "test" , "%s %d %f" , "hello world wifi logger" , 43 , 45.341223242 ); // write log over wifi with log level -> ERROR
wifi_log_w ( "test" , "%s %d %f" , "hello world wifi logger" , 43 , 45.341223242 ); // write log over wifi with log level -> WARN
wifi_log_i ( "test" , "%s %d %f" , "hello world wifi logger" , 43 , 45.341223242 ); // write log over wifi with log level -> INFO
wifi_log_d ( "test" , "%s %d %f" , "hello world wifi logger" , 43 , 45.341223242 ); // write log over wifi with log level -> DEBUG
wifi_log_v ( "test" , "%s %d %f" , "hello world wifi logger" , 43 , 45.341223242 ); // write log over wifi with log level -> VERBOSE
vTaskDelay ( 100 ); // Wait for 100ms, prevent watchdog from triggering a reset
}
}