前回はS7-1500を使ってMQTT BrokerにTopicをPublishとSubscribeする方法紹介しました。そして今回はUser-loginの機能を追加しようと思います。つまり接続するときはBroker側からUser名とPasswordが求められるようになります。まぁ、セキュリティー上は少しだけ安全になったかな?
もしそのあたりが覚えてない方はこのLINKで参考してくださいね。
Broker側
まずUser名とPasswordを作ります。
touch password.txt
sudo nano password.txt
password.txtの中にUserName:PasswordのようなFormatになっています。
いまはテストなので適当でOKです。
そしてコマンドを使ってPasswordをHashします。
mosquitto_passwd -U password.txt
先のpassword.txtはこうになりますね。
s71500:$6$+WslwdBhwO0Fz6lR$R72WzInfmXyUP+YXMdoTq6TAlkCB6dfC7pKGdYmOV0xHEyZ/QgP0gvFOcQnojiaTzdNIcoUSGdhtxV6R/j1rwg==
s71200:$6$3iKgiCbBJojToAJ+$CBTWKTbSMAFe5Z2e/UoccTm1X7vuGvrDIEKsA0oko8p1XPUUCKuyC00NqhHPYKRSn615gXuTCiQ4pbiXY0zVvw==
次はpassword.txtを /etc/mosquitto/にCopyします。
sudo cp password.txt /etc/mosquitto/
/etc/mosquitto/mosquitto.conf を編集します。
sudo nano /etc/mosquitto/mosquitto.conf
allow_anonymous trueをComment Outし、LoginされてないUserはアクセスできないように設定します。
#allow_anonymous true
allow_anonymous false
次はPassword fileのPathを指定します。
password_file /etc/mosquitto/password.txt
最後はBrokerをRestartします。
sudo systemctl restart mosquitto
試し
User名とPasswordを指定なしでやりますと接続拒否されます。
sudo mosquitto_pub -d- -t a -m hi
-u はUserNameで-Pはパスワードですね。そのように指定し接続するとBrokerに拒否されることがありませんね。(もちろんUser NameとPasswordが合ってる場合、ね)
sudo mosquitto_pub -d -u s71500 -P 12345678 -t Station/01/Unit2/Temp -m 41.1
サーバー側にもPublishされたことがあると分かります。それでBroker側準備完了。
シーメンス側
connectFlagのuserNameとpasswordのBoolをTrueにします。(Line2,3)
そしてuserNameとpasswordを設定します。(Line5-9)
やるのはそれだけです。
こちらはUser Name・Passwordが不正の場合、EnableのBoolをONするとErrorになり、Statusも16#0000_80A3になると分かります。
そしてこちらはUser Name・Passwordが正しい場合ですね。
以上になります。はーい、お疲れ様です。