ESP32 WiFi ロガー - TCP、UDP、または Websocket のいずれかを使用して、WiFi 経由でメッセージをログに記録します
アプリの例:
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
menuconfig で構成されている場合ESP_LOGE, ESP_LOGW, ESP_LOGI, ESP_LOGD, ESP_LOGV
によって生成されたログを送信できます
使用パターンはESP_LOGX()
と同じ
wifi_log()_x
関数を使用して Wi-Fi 経由でログを出力します
例: wifi_log(TAG, "%s", "logger test");
ESP_LOGE, ESP_LOGW, ESP_LOGI, ESP_LOGD, ESP_LOGV
ログも、menuconfig で設定されている場合、Wi-Fi 経由で送信されます。
void app_main()
でstart_wifi_logger()
呼び出してロガーを開始します。ロギング関数wifi_log_x() (x = e,w,i,d,v)
呼び出してメッセージをログに記録することも、 menuconfig
で設定されている場合はESP_LOGW
などの通常の ESP-IDF ロギング API 関数を使用することもできます。
menuconfig
構成を構成する
Example Connection Configuration
WiFi SSID とパスワードを設定するComponent config
WiFi Logger configuration
Route logs generated by ESP_LOGX to the wifi logger
- システム API によって書き込まれたログがリモート ロガーに送信されるようにルーティングされるかどうかを選択します。Network Protocol (TCP/UDP/WEBSOCKET)
- 使用するネットワーク プロトコルを設定しますUDP/TCP Network Protocol
Server IP Address
- ESP32 によって送信されたログ メッセージを受信するサーバーの IP アドレスを設定します。Port
- サーバーのポートを設定しますWEBSOCKET Network Protocol
Websocket Server URI
- ログが送信される Websocket サーバーの URI を設定します。サーバーの IP アドレスは、Linux マシンでifconfig
実行することで確認できます。
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
- システム API によって書き込まれたログがリモート ロガーに送信されるようにルーティングされるかどうかを選択します。UDP/TCP Network Protocol
Server IP Address
- ESP32 によって送信されたログ メッセージを受信するサーバーの IP アドレスを設定します。Port
- サーバーのポートを設定しますWEBSOCKET Network Protocol
Websocket Server URI
- ログが送信される Websocket サーバーの URI を設定します。Queue Size
-詳細構成、変更は自己責任で行ってください。 ログ メッセージをロガー タスクに渡すために使用される freeRTOS キュー サイズを設定します。logger buffer size
-詳細設定、変更は自己責任でESP 形式のログ メッセージの生成に使用される char 配列のバッファ サイズを設定します #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
}
}