ESP 8266学習の道十一(Mqtt通信)
20955 ワード
lua開発8266 APIマニュアル:https://nodemcu.readthedocs.io/en/master/
MQTTパケット形成リファレンスについて :http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718027
Windows下MQTTサーバ構築のApollo
(1)Apolloのダウンロード
目次
Windows下MQTTサーバ構築のApollo
(1)Apolloのダウンロード
(2)取付
(3)JDK取付
(4)サーバインスタンスの作成
三、MQTTクライアントテスト
ローカルWindowsにMQTTサーバをインストールして通信をテストする
次はesp 8266モジュールがmqttサーバに接続するテストプログラムです.
モジュールと別のクライアントの通信状態
ダウンロード:Download it today!
(2)取付
解凍して以下のファイルが得られます.
ここで注意しなければなりません.解凍します. apache-apollo-1.7.1所在フォルダ名は存在しません 中国語かスペースで、後で何か間違いがあったと言います.
に入る apache-apollo-1.7.1-windows-distroapache-apollo-1.7.1binフォルダ
shiftキーを押してapollo.cmdを選択し、右クリックします.コマンドウィンドウを開くには、ここを選択します.
次にcmdウィンドウでapollo.cmdを実行します.エラーが発生していることがわかります.上のUbuntuの下にインストールする時すでに言及して、更にJDKをインストールする必要があります.
(3)JDK取付
WIN 7 64ビットシステムはJDKをインストールし、環境変数を構成する:https://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html
ダウンロード:Java SE Development Kit 8 Downloads
Windowsシステムは何桁なのか、これはよくわかるでしょう.マイコンピュータ->プロパティを表示し、コンピュータに関する基本情報を表示します.
私のコンピュータはwin 10 64ビットで、jdk-8 u 144-windows-x 64.exeをダウンロードしてインストールします
次に、JDK環境変数を設定します.
マイコンピュータ->プロパティ->高度なシステム設定->高度な環境変数
このセクションでは、FFmpegのWindowsのインストールについて説明しています.ユーザー変数とシステム変数が表示されます.
「ユーザー変数」を現在のユーザー用に変更します.他のWindowsユーザーは使用できません.各ユーザーが使用できるようにするには、システム変数を変更する必要があります.
変数に既存のコンテンツを削除するのに十分ではないことに注意してください.変数が既に存在する場合は、後にセミコロン';'で区切り、追加します.
現在のユーザーのみを使用可能にし、ユーザー変数を変更すればいいです.
ユーザ環境変数に新しい変数JAVA_を作成するHOME,設定変数値F:Program FilesJavajdk 1.8.0_144
新しいPATH、変数値%JAVAを設定HOME%\bin;%JAVA_HOME%\jre\bin
新しいCLASSSPATHを作成し、変数値を設定します.JAVA_HOME%\lib\dt.jar;%JAVA_HOME%libtools.jar前の.は現在のディレクトリを示しています.「OK」ボタンをクリックします.
これで、構成が完了します.cmdを開いて構成が成功したかどうかをテストします.
Java-versionを入力し、バージョンjava version“1.8.0_144”を表示し、javac-versionを入力し、javac 1.8.0_を表示します.144、JDKのインストールと環境変数の構成が成功したことを説明します.
そして上に続きます.に入る apache-apollo-1.7.1-windows-distroapache-apollo-1.7.1binフォルダ
shiftキーを押してapollo.cmdを選択し、右クリックします.コマンドウィンドウを開くには、ここを選択します.
再びcmdウィンドウでapollo.cmdを実行すると、次のような情報が表示されます.
(4)サーバインスタンスの作成
参照:Getting Started Guide
CMDコマンドウィンドウでの入力 apollo create mybroker、もちろんmybrokerという名前は勝手につけることができます.
mybrokerを見ると、etcapollo.xmlファイルの下にサーバ情報を構成するファイルがたくさんあります.etcusers.propertiesファイルにはMQTTサーバに接続する際に使用するユーザー名とパスワードが含まれています.元のadmin=passwordを変更して、改行して新しいユーザー名パスワードを追加することができます.
bin:インスタンスに関連付けられた実行スクリプトを保存します.etc:インスタンスプロファイルdataの保存:永続メッセージを格納するためのデータファイルログの保存:回転ログファイルtmpの保存:エージェント実行間で安全に削除された一時ファイルの保存
cmdを開き、apache-apollo-1.7.1binmybrokerbinapollo-broker.cmd runを実行してサーバを開きます.次の図に示します.
ここは注意が必要です. apache-apollo-1.7.1所在フォルダ名は存在しません 中国語またはスペース.私の上にあるのは360安全閲覧ダウンロードというディレクトリの下に保存されているからです.指定したパスが見つからない場合があります.
次にブラウザを開き、 http://127.0.0.1:61680/またはhttps://127.0.0.1:61681/
Apollo Consoleウィンドウにアクセスできます.
デフォルトのログインIDとパスワードは admin および password
三、MQTTクライアントテスト
Apolloサーバのインストールが完了しました.次に、パブリケーションサブスクリプションを簡単にテストします.
この中にはネット上に MQTTプロトコルのApache Apolloインストール使用 この文章はjavaを使って、Androidでテストしました.
これは私には向いていませんAndroidがわかりません 青やせしいたけですね.
もう一つはグーグルブラウザの拡張プログラムです mqttlens
まずプラグインを追加します
クリックして拡張プログラムを追加
検索 mqttlens、最後にCHROMEに追加
インストール完了!
テストを行います
先に実行 Apolloサーバ
そして起動 mqttlens
次にConnections+をクリックします
下図が表示され、関連情報を記入します.
そして、パブリケーションインタフェースにアクセスします.
WindowsにMQTTサーバをインストール、これで終了です.
MQTTサーバリファレンスをローカルコンピュータ側にインストールします. https://blog.csdn.net/qq_29350001/article/details/76680646
ローカルWindowsにMQTTサーバをインストールして通信をテストする
私は私のコンピュータを使ってmqttサーバーをテストして、mqttサーバーipは本機のipで、ポートはmqttサーバーを作成する時、tcp接続のあのポートを創立します
ユーザー名とパスワードmqttサーバのインストール時に確立された、ファイル 「apache-apollo-1.7.1binmybrokeretc」の下 「users.properties」および「groups.properties」ファイルでの変更
ローカルmqttサーバのテスト結果:
次はesp 8266モジュールがローカルmqttサーバに接続するテストプログラムです.
ESP 8266モジュールを設定してルータに接続した後にmqttクライアントを作成してmqttサーバーに接続する
リモートサーバに接続するときは、リモートサーバipとローカル接続が同じであることを知る必要があります.
SMartで接続ルータをバインドすると、モジュールはルータの接続情報を知らず、ブロードキャストでそのネットワークに接続していることをモジュールに知らせる
mqttclient.luaファイル:mqttclient.luaファイルにコメントを追加しないでください.メモにコメントを追加するのは、よりよく理解するためだけです.プログラムをモジュールにアップロードする必要がある場合は、コメントをすべて削除することに注意してください.
モジュールと別のクライアントの通信状態
MQTTパケット形成リファレンスについて :http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718027
Windows下MQTTサーバ構築のApollo
(1)Apolloのダウンロード
目次
Windows下MQTTサーバ構築のApollo
(1)Apolloのダウンロード
(2)取付
(3)JDK取付
(4)サーバインスタンスの作成
三、MQTTクライアントテスト
ローカルWindowsにMQTTサーバをインストールして通信をテストする
次はesp 8266モジュールがmqttサーバに接続するテストプログラムです.
モジュールと別のクライアントの通信状態
ダウンロード:Download it today!
(2)取付
解凍して以下のファイルが得られます.
ここで注意しなければなりません.解凍します. apache-apollo-1.7.1所在フォルダ名は存在しません 中国語かスペースで、後で何か間違いがあったと言います.
に入る apache-apollo-1.7.1-windows-distroapache-apollo-1.7.1binフォルダ
shiftキーを押してapollo.cmdを選択し、右クリックします.コマンドウィンドウを開くには、ここを選択します.
次にcmdウィンドウでapollo.cmdを実行します.エラーが発生していることがわかります.上のUbuntuの下にインストールする時すでに言及して、更にJDKをインストールする必要があります.
(3)JDK取付
WIN 7 64ビットシステムはJDKをインストールし、環境変数を構成する:https://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html
ダウンロード:Java SE Development Kit 8 Downloads
Windowsシステムは何桁なのか、これはよくわかるでしょう.マイコンピュータ->プロパティを表示し、コンピュータに関する基本情報を表示します.
私のコンピュータはwin 10 64ビットで、jdk-8 u 144-windows-x 64.exeをダウンロードしてインストールします
次に、JDK環境変数を設定します.
マイコンピュータ->プロパティ->高度なシステム設定->高度な環境変数
このセクションでは、FFmpegのWindowsのインストールについて説明しています.ユーザー変数とシステム変数が表示されます.
「ユーザー変数」を現在のユーザー用に変更します.他のWindowsユーザーは使用できません.各ユーザーが使用できるようにするには、システム変数を変更する必要があります.
変数に既存のコンテンツを削除するのに十分ではないことに注意してください.変数が既に存在する場合は、後にセミコロン';'で区切り、追加します.
現在のユーザーのみを使用可能にし、ユーザー変数を変更すればいいです.
ユーザ環境変数に新しい変数JAVA_を作成するHOME,設定変数値F:Program FilesJavajdk 1.8.0_144
新しいPATH、変数値%JAVAを設定HOME%\bin;%JAVA_HOME%\jre\bin
新しいCLASSSPATHを作成し、変数値を設定します.JAVA_HOME%\lib\dt.jar;%JAVA_HOME%libtools.jar前の.は現在のディレクトリを示しています.「OK」ボタンをクリックします.
これで、構成が完了します.cmdを開いて構成が成功したかどうかをテストします.
Java-versionを入力し、バージョンjava version“1.8.0_144”を表示し、javac-versionを入力し、javac 1.8.0_を表示します.144、JDKのインストールと環境変数の構成が成功したことを説明します.
そして上に続きます.に入る apache-apollo-1.7.1-windows-distroapache-apollo-1.7.1binフォルダ
shiftキーを押してapollo.cmdを選択し、右クリックします.コマンドウィンドウを開くには、ここを選択します.
再びcmdウィンドウでapollo.cmdを実行すると、次のような情報が表示されます.
(4)サーバインスタンスの作成
参照:Getting Started Guide
CMDコマンドウィンドウでの入力 apollo create mybroker、もちろんmybrokerという名前は勝手につけることができます.
mybrokerを見ると、etcapollo.xmlファイルの下にサーバ情報を構成するファイルがたくさんあります.etcusers.propertiesファイルにはMQTTサーバに接続する際に使用するユーザー名とパスワードが含まれています.元のadmin=passwordを変更して、改行して新しいユーザー名パスワードを追加することができます.
bin:インスタンスに関連付けられた実行スクリプトを保存します.etc:インスタンスプロファイルdataの保存:永続メッセージを格納するためのデータファイルログの保存:回転ログファイルtmpの保存:エージェント実行間で安全に削除された一時ファイルの保存
cmdを開き、apache-apollo-1.7.1binmybrokerbinapollo-broker.cmd runを実行してサーバを開きます.次の図に示します.
ここは注意が必要です. apache-apollo-1.7.1所在フォルダ名は存在しません 中国語またはスペース.私の上にあるのは360安全閲覧ダウンロードというディレクトリの下に保存されているからです.指定したパスが見つからない場合があります.
次にブラウザを開き、 http://127.0.0.1:61680/またはhttps://127.0.0.1:61681/
Apollo Consoleウィンドウにアクセスできます.
デフォルトのログインIDとパスワードは admin および password
三、MQTTクライアントテスト
Apolloサーバのインストールが完了しました.次に、パブリケーションサブスクリプションを簡単にテストします.
この中にはネット上に MQTTプロトコルのApache Apolloインストール使用 この文章はjavaを使って、Androidでテストしました.
これは私には向いていませんAndroidがわかりません 青やせしいたけですね.
もう一つはグーグルブラウザの拡張プログラムです mqttlens
まずプラグインを追加します
クリックして拡張プログラムを追加
検索 mqttlens、最後にCHROMEに追加
インストール完了!
テストを行います
先に実行 Apolloサーバ
そして起動 mqttlens
次にConnections+をクリックします
下図が表示され、関連情報を記入します.
そして、パブリケーションインタフェースにアクセスします.
WindowsにMQTTサーバをインストール、これで終了です.
MQTTサーバリファレンスをローカルコンピュータ側にインストールします. https://blog.csdn.net/qq_29350001/article/details/76680646
ローカルWindowsにMQTTサーバをインストールして通信をテストする
私は私のコンピュータを使ってmqttサーバーをテストして、mqttサーバーipは本機のipで、ポートはmqttサーバーを作成する時、tcp接続のあのポートを創立します
ユーザー名とパスワードmqttサーバのインストール時に確立された、ファイル 「apache-apollo-1.7.1binmybrokeretc」の下 「users.properties」および「groups.properties」ファイルでの変更
ローカルmqttサーバのテスト結果:
次はesp 8266モジュールがローカルmqttサーバに接続するテストプログラムです.
ESP 8266モジュールを設定してルータに接続した後にmqttクライアントを作成してmqttサーバーに接続する
リモートサーバに接続するときは、リモートサーバipとローカル接続が同じであることを知る必要があります.
SMartで接続ルータをバインドすると、モジュールはルータの接続情報を知らず、ブロードキャストでそのネットワークに接続していることをモジュールに知らせる
mqttclient.luaファイル:mqttclient.luaファイルにコメントを追加しないでください.メモにコメントを追加するのは、よりよく理解するためだけです.プログラムをモジュールにアップロードする必要がある場合は、コメントをすべて削除することに注意してください.
MqttServerIP="192.168.0.102" --Mqtt ip ip
MqttServerPort=61613 --Mqtt
MqttUserName="admin" --Mqtt
MqttUserPassword="password" --Mqtt
MqttLinkStat = 0 --Mqtt
UartReceData = "" --
UartReceCnt = 0 --
UartReceTempCnt = 0 --
wifi.setmode(wifi.STATION) -- station
local stacfg={
ssid="TP-Link",
pwd="12345678"
}
wifi.sta.config(stacfg) -- station
wifi.sta.autoconnect(1) -- wifi
Clientid = wifi.sta.getmac() -- mac mqtt ID
ClientSubscribeTopic = "AAA" --
ClientPublishTopic = "111" --
MqttClient=mqtt.Client(Clientid,3,MqttUserName,MqttUserPassword) -- mqtt
MqttClient:lwt(ClientPublishTopic,"offline",1,1) --
local function ConnectSuccess(client) -- mqtt
print("MqttServer connect sucess")
client:subscribe(ClientSubscribeTopic,0,function(client)print("subscribe sucess")end)
MqttLinkStat = 1
tmr.stop(3)
end
local function ConnectFailed(client, reason) -- mqtt
print("MqttServer connect fail")
MqttLinkStat = 0
tmr.start(3)
end
tmr.alarm(3, 2000, 1, function() -- 3 mqtt /
MqttClient:connect(MqttServerIP, MqttServerPort, 0,ConnectSuccess,ConnectFailed)
end)
tmr.alarm(2,10,1,function()
if UartReceCnt ~= 0 then
if UartReceTempCnt == UartReceCnt then
UartReceTempCnt = 0
UartReceCnt = 0
--send to-Mqtt
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,UartReceData,1,1,function(client) end)
end
else
UartReceTempCnt = UartReceCnt
end
end
end)
-- mqtt
MqttClient:on("offline", function(client, topic, data) tmr.start(3) end)
-- mqtt
MqttClient:on("message", function(client, topic, data)
if data == "switch;relay=1" then
gpio.write(2,1)
if gpio.read(2)==1 then
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,"ON-RELAY",1,1,function(client) end)
end
end
end
if data == "switch;relay=0" then
gpio.write(2,0)
if gpio.read(2)==0 then
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,"OFF-RELAY",1,1,function(client) end)
end
end
end
end)
--
uart.on("data",0,function(data)
UartReceData = UartReceData..data
UartReceCnt = UartReceCnt + 1
end,0)
-- wifi ip
printip = 0
wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
printip = 0
end)
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
if printip == 0 then
print("+IP->"..T.IP)
end
printip = 1
end)
モジュールと別のクライアントの通信状態