問題タブ [nodemcu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
string - 大きな文字列を管理する方法
ESP8266 の最近のテストで、メモリ制限にぶつかりました。
ESP8266 で利用可能な AP の json を提供する単純な http サーバーがあります。
パリの自宅にいると、AP リストが長くなり、ペイロードの最大サイズに達します。
このメモリ パニックを回避するために、json をいくつかのチャンクに分割してから、1 つずつ送信したいと考えています。
私はこれを書きました:
次に、これで関数をテストしようとしました:
いくつかのテストの結果:
約 1500 バイトのメモリ制限に達したようです。
この制限を超えるためのアドバイスは何ですか?
dns - ローカルホストに接続できません
127.0.0.1:8000 (Django アプリケーション) でサーバーを実行しています。すべて問題ありません。ブラウザまたは curl からアクセスできます。
しかし、データを送信するために ESP8266 を接続しようとすると、何かが壊れており、localhost サーバーに接続することさえできません。
I have tried:
Nothing is printed.
I tried with conn:connect(8000, "localhost")
, conn:connect(8000, "http://127.0.0.1")
, conn:connect(80, "127.0.0.1")
. Same results, nothing is printed. With the last one, I have a "DNS fail!" message.
Just to check, with conn:connect(80, "www.google.com")
, "in connection" is printed.
Any guess?
string - 特定の文字の間の部分文字列を検索
Lua 言語に慣れていないので、助けてください。POST を介していくつかの値を受信しようとしていますが、値は次のようなものです。
上記のコードの実際の結果は次のとおりです (Web ブラウザーを介して ssid=htc および password=fr を送信しています):
文字列にパスワードのみを入れ、別の文字列に ssid を入れたいと思います。したがって、私の考えは、次のロジックを使用して文字列を検索することです。 pwd=" and ("&" または文字列の末尾)
lua - ループが実行されている場合、wifi.sta モジュールは接続しますか?
.connect には次のような簡単なことを行うコールバックがないため、モジュールが実際に wifi AP に接続するタイミングを検出しようとしています。
しかし、ループ内では .sta.status() の出力は常に 1 です。終了時に、コマンド =wifi.sta.status() を IDE から手動で送信すると、5. なぜですか?
mqtt - NodeMCU と ESP8266: mqtt パブリッシュが遅い
Marcel の NodeMCU カスタム ビルドhttp://frightanic.com/nodemcu-custom-build/で作成されたファームウェアで esp8266 を使用しています 。「dev」ブランチと「master」をテストしました。
ここにある「 Connect to MQTT Broker」コードを少し変更しましたhttps://github.com/nodemcu/nodemcu-firmware
私は mosquitto を mqtt ブローカーとして使用しており、すべてのトピック#でサブスクライバーを立ち上げました。
結果は次のとおりです。メッセージは正しく到着しますが、サブスクライバーに到着するのは本当に遅いです (それぞれ約 1 秒)...なぜですか?
また、UDP を優先して mqtt アーキテクチャを変更しようとしました。esp8266 は 100 メッセージを高速で送信します。
更新 1#:
私はさらにいくつかの実験を行いました:
- [android phone + a mqtt publisher] を使用してブローカーとサブスクライバーをテストすると、サブスクライバーはすぐにメッセージを受信します
- 「デバッグ」を有効にして nodemcu をロードしたところ、興味深い発見がありました: 続きを読む
デバッグログとソースコードを読んで理解したことについて..メッセージをメモリに保存する一種のキューがあり、タイマー(頻度/間隔はわかりません)がキューからメッセージを読み取り、それを介して送信しますmqtt。100通のメッセージを送ろうとするとキューが増えるのですが、同時にメッセージを届けることができません(もしかしたら競合状態?)。
ここで 2 つ目の問題があります。15 を超えるメッセージがエンキューされた後、ファームウェアがクラッシュし、デバイスが再起動します。これは、メモリが使用できなくなったという症状のようです。
lua - パニック: Lua API の呼び出しで保護されていないエラーが発生しました (stdin:8: グローバル 'run' (nil 値) を呼び出しようとしています)
https://github.com/nodemcu/nodemcu-firmwareから NodeMCU を使用して、次のコードを実行します。
このエラーが発生しました:
これを解決するにはどうすればよいですか?