問題タブ [sim800]
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.
google-cloud-platform - HTTP ブリッジを介した公開 - Google Cloud Platform - 問題
SIM800L gsm/gprs モジュールに接続された esp32 ボードがあります。このプロジェクトにはTinyGSMライブラリを使用しています。どういうわけか、http ブリッジを介してGoogle クラウドにデータを正常に公開するためのセットアップを取得できません。以前、curl を使用してこれを行う方法に関するドキュメントに示されている例を実行しましたが、成功しました。
TinyGSMとesp32で想定される同じリクエストを生成すると、Google サーバーから常に同じ http レスポンスを取得します。
"error": { "code": 403, "message": "呼び出し元に権限がありません", "status": "PERMISSION_DENIED" }
最初は間違った JWT と関係があると思っていましたが、意図的に間違ったものに変更すると、エラー メッセージは次のように変わります。
"error": { "code": 401, "message": "リクエストに必要な認証資格情報がありません。OAuth 2 アクセス トークン、ログイン Cookie、またはその他の有効な認証資格情報が必要です 。https://developers.google.com/identity/を参照してくださいサインイン/web/devconsole-project." 、「ステータス」:「認証されていません」}
したがって、無効なJWTの可能性を除外できると思います
プロジェクトの構成に何か問題があるのではないかと思いますが、その場合は、curl では常に機能するのに esp32 では機能しない理由がわかりません。
sim800 - Simcom sim868 MQTT を介したバイナリ データのサポートの公開
sim868 MQTT を介してバイナリ データを公開しようとしていますが、一部のバイナリ値の場合に問題に直面しています。たとえば、2 進数の 0 (0x00) を公開したい場合、AT コマンドを介して sim868 に 0x00 を送信すると、sim868 はそれを 0 (NULL 文字) と解釈し、文字列の末尾と見なします。ということで、0x00より前のデータをMQTTに公開するのですが、0x00も公開する必要があります。
sim800 シリーズの MQTT アプリケーション ノートに記載されているAT コマンドAT+SMPUB=topic,qos,retain,message を使用しています。
このコマンドにはデータ長のパラメータがないため、AT コマンドでデータ長を送信することはできません。
たとえば、上記の AT コマンドでこのメッセージを sim868 に送信しようとすると、.
メッセージ[]={0x48,0x00,0x01,0x02,0x4F}
最初のバイトのみを公開し、2 番目のバイトを NULL 文字 (文字列の末尾) として解釈するようです。
したがって、sim868 MQTT を介して 0x00 を発行する方法を知りたいので、sim868 はそれを NULL 文字ではなくバイナリ 0 として解釈します。