※超初心者が書いた自分への備忘録です。
公式サイトのArduino IDEを参考に進めていく。
公式サイトの clone and download からtempにzipをダウンロードして解凍する。
platform.txt, boards.txt, espupload.py をコピーする。
Arduino IDE のアプリケーションデータフォルダとして
C:\Users\xxx\AppData\Local\Arduino15
に各種データが保存されている。
私の環境では
C:\Users\xxx\AppData\Local\Arduino15 ⇒ C:\Users\xxx\OneDrive\AppData\Local\Arduino15
とシンボリックリンクを設定している。
- 解凍した中からファイルをコピーする。※オリジナルファイルはバックアップしておく。 バックアップ
cd "C:\Users\admin\OneDrive\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2\"
move platform.txt platform.txt.bak
move boards.txt boards.txt.bak
cd "C:\Users\admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2\tools\"
move espupload.py espupload.py.bak
カレントディレクトリ Sonoff-Tasmota-6.4.1 として三つのファイルをコピーする。
platform.txt
boards.txt
espupload.py
cd "C:\Users\admin\OneDrive\Documents\Arduino\Sonoff-Tasmota-6.4.1"
copy /y "arduino\version 2.5.0\platform.txt" "C:\Users\admin\OneDrive\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\"
copy /y "arduino\version 2.5.0\boards.txt" "C:\Users\admin\OneDrive\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\"
copy /y "arduino\espupload.py" "C:\Users\admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\tools\"
lib フォルダのライブラリをコピーする。
xcopy /Y /Q /S /E lib\* "C:\Users\admin\OneDrive\Documents\Arduino\libraries\"
ビルドして重複するライブラリがあったら Tasmota で使わない方を削除する
sonoff フォルダをコピーする。
xcopy /Y /Q /S /E sonoff ..\
Mosquitto TLS 通信する為に Tasmota にフィンガープリント を設定する
- mosquitto のフィンガープリントを取得する(Pi にログインして実行する)
openssl s_client -connect localhost:8883 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin | sed 's/^.*=//' | sed 's/:/ /g'
- my_user_config.h の91~92行に フィンガープリント、ユーザー名、パスワードをセットする
#define MQTT_HOST "pi.local" // [MqttHost]
#define MQTT_FINGERPRINT1 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint1]
#define MQTT_FINGERPRINT2 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint2]
#define MQTT_PORT 8883 // [MqttPort] MQTT port (10123 on CloudMQTT)
#define MQTT_USER "DVES_USER" // [MqttUser] MQTT user
#define MQTT_PASS "DVES_PASS" // [MqttPassword] MQTT password
Arduino IDE でアップロード設定をする。
ツール >
Upload Using : Sereal ※先ずはUSBケーブルでテストする。
コンパイルする。
ファイル > 開く > sonoff\sonoff.ino
コンパイルだけを実行する。
無事エラーなしでコンパイル完了!
Witty にアップロードする。
COM7 でアップロード実行。
完了すると、RGB-LEDのブルー(GPIO13)が点滅した。
シリアルモニタを表示してWittyをリセットした。
00:00:00 Project sonoff Sonoff Version 6.4.1(sonoff)-2_5_0_BETA2
00:00:00 WIF: WifiManager active for 3 minutes
00:00:00 HTP: Web server active on sonoff-4540 with IP address 192.168.4.1
00:02:00 RSL: tele/sonoff/UPTIME = {"Time":"1970-01-01T00:02:00","Uptime":"0T00:02:00"}
00:03:02 APP: Restarting
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
00:00:00 Project sonoff Sonoff Version 6.4.1(sonoff)-2_5_0_BETA2
00:00:00 WIF: WifiManager active for 3 minutes
00:00:00 HTP: Web server active on sonoff-4540 with IP address 192.168.4.1
00:02:00 RSL: tele/sonoff/UPTIME = {"Time":"1970-01-01T00:02:00","Uptime":"0T00:02:00"}
00:03:02 APP: Restarting
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v0fd86a07
~ld
00:00:00 Project sonoff Sonoff Version 6.4.1(sonoff)-2_5_0_BETA2
00:00:00 WIF: WifiManager active for 3 minutes
00:00:00 HTP: Web server active on sonoff-4540 with IP address 192.168.4.1
何もしなければ3分経つとリスタートする仕様のようだ。
Sonoff for Witty にアクセスする。
PCのWiFiを sonoff-xxxx に接続して
ブラウザで 192.168.4.1 にアクセスすると
AP1, AP2 に家のWiFiをセットしたら設定終了で 192.168.4.1 の接続が切断される。
フィンガープリントチェックでエラーが出る。
orz
6.4.1 では TLS 接続できなかったので 5.14.0 にダウングレードして再チャレンジ
- Tasmota-5.14.0 上記と同じ手順で配置
- Arduino IDE > ツール > ボード > ボードマネージャー > 検索 ESP8266 > 2.4.1 にダウングレード
- Arduino IDE > ツール のアップロード設定を前記と同じようにする
#define STA_SSID1 "SSID" // [Ssid1] Wifi SSID
#define STA_PASS1 "パスワード" // [Password1] Wifi password
#define MQTT_HOST "Mosquitto IP" // [MqttHost]
#define MQTT_FINGERPRINT1 "フィンガープリントセット" // [MqttFingerprint1]
#define MQTT_FINGERPRINT2 "フィンガープリントセット" // [MqttFingerprint2]
#define MQTT_PORT 8883 // [MqttPort] MQTT port (10123 on CloudMQTT)
#define MQTT_USER "ユーザー名" // [MqttUser] MQTT user
#define MQTT_PASS "パスワード" // [MqttPassword] MQTT password
225行付近 コメント外す
#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem)
その他全てのサービスをコメントアウトして超ダイエット
- ビルド書込み
00:00:00 WIF: Connecting to AP1 Abo in mode 11N as sonoff-4540...
00:00:06 WIF: Connected
00:00:07 MQT: Attempting connection...
00:00:07 MQT: Verify TLS fingerprint...
00:00:07 MQT: Verified using Fingerprint1
00:00:07 MQT: Connected
00:00:07 MQT: tele/sonoff/LWT = Online (retained)
00:00:07 MQT: cmnd/sonoff/POWER =
00:00:07 MQT: tele/sonoff/INFO1 = {"Module":"Sonoff Basic","Version":"5.14.0","FallbackTopic":"DVES_1811BC","GroupTopic":"sonoffs"}
00:00:07 MQT: tele/sonoff/INFO3 = {"RestartReason":"External System"}
00:00:09 MQT: stat/sonoff/RESULT = {"POWER":"OFF"}
00:00:09 MQT: stat/sonoff/POWER = OFF
00:00:16 MQT: tele/sonoff/STATE = {"Time":"1970-01-01T00:00:16","Uptime":"0T00:00:15","POWER":"OFF","Wifi":{"AP":1,"SSId":"Abo","RSSI":64,"APMac":"6A:3B:38:B4:C7:02"}}
00:02:00 MQT: tele/sonoff/UPTIME = {"Time":"1970-01-01T00:02:00","Uptime":"0T00:01:59"}
00:05:16 MQT: tele/sonoff/STATE = {"Time":"1970-01-01T00:05:16","Uptime":"0T00:05:15","POWER":"OFF","Wifi":{"AP":1,"SSId":"Abo","RSSI":58,"APMac":"6A:3B:38:B4:C7:02"}}
00:10:01 APP: Serial logging disabled
Mosquitto TLS + パスワード認証で接続成功!!
6.4.1 + 2.5.0 TLS + パスワード認証で接続成功!!
- 公式のフォーラムで 6.4.1+2.5.0 で失敗する現象の議論の中でAxTLSを使うと成功したよとの書込みを参考にやってみた。
- VSCode + PlatformIO 環境でやった。
- sonoff.ino 36行目付近に
#ifdef USE_CONFIG_OVERRIDE
#include "user_config_override.h" // Configuration overrides for my_user_config.h
#endif
// 以下追加
#define USING_AXTLS
#if defined(USE_MQTT_TLS) && defined(ARDUINO_ESP8266_RELEASE_2_5_0) && defined(USING_AXTLS)
#include <ESP8266WiFi.h>
#include "WiFiClientSecureAxTLS.h"
using namespace axTLS;
#warning @@@@@@@@@@@ USING_AXTLS @@@@@@@@@@@
#endif // USING_AXTLS
- prlatform.ini を書き換えて実行
00:00:00 Project sonoff Sonoff Version 6.4.1.19(sonoff)-2_5_0
00:00:00 WIF: Connecting to AP1 aterm-b0135f-g in mode 11N as sonoff-4540...
00:00:04 WIF: Connected
00:00:04 HTP: Web server active on sonoff-4540 with IP address 192.168.0.7
03:44:12 MQT: Attempting connection...
03:44:12 MQT: Verify TLS fingerprint...
03:44:12 MQT: Verified using Fingerprint1
03:44:12 MQT: Connected
03:44:12 MQT: tele/sonoff/LWT = Online (retained)
03:44:12 MQT: cmnd/sonoff/POWER =
03:44:12 MQT: tele/sonoff/INFO1 = {"Module":"Sonoff Basic","Version":"6.4.1.19(sonoff)","FallbackTopic":"cmnd/DVES_1811BCBC_fb/","GroupTopic":"sonoffs"}
03:44:12 MQT: tele/sonoff/INFO2 = {"WebServerMode":"Admin","Hostname":"sonoff-4540","IPAddress":"192.168.0.7"}
03:44:12 MQT: tele/sonoff/INFO3 = {"RestartReason":"Software/System restart"}
03:44:12 MQT: stat/sonoff/RESULT = {"POWER":"OFF"}
03:44:12 MQT: stat/sonoff/POWER = OFF