====== TASMOTA ======
中国で購入できるWEBスマートスイッチSONOFFシリーズは、一部中国語の専用ソフトをインストールしないと使えない。
またSONOFFのサーバーを経由して通信する為、安全性にも問題がある。
このSONOFFにTASMOTAというESPxxシリーズ用のカスタムファームウェアを入れれば、完全にローカルでコントロールできるようになり、コマンドを駆使して色々な事ができるようになる。
===== インストール手順 =====
カスタムしない標準ファームウェアの場合、Tasmotizerを使うのが早い。使い方は以下の通り。
(要別途記述)
===== カスタムファームウェア =====
TASMOTAの標準ファームウェアには、基本的に電源をON/OFFするだけのものと、それに加えて1つ追加機能があるものしかない。下記例:
* リモコンの送受信を行いたい場合は、tasmota-ir.binを使用する。
* 温湿度モジュールを使いたい場合は、tasmota-sensor.binを使用する。
上記2つを同時に使用したい場合は、どうしてもファームウェアを自分でコンパイルする必要がある。
下記に最も簡単に作成できる手順と設定を記録する。
- **前条件:Githubのアカウントをあらかじめ作成しておくこと。**
- [[https://github.com/benzino77/tasmocompiler|tasmocompiler]]を使用する。まず[[https://gitpod.io/#https://github.com/benzino77/tasmocompiler|このリンク]]をクリックする。
- Gitpodというオンラインで使用するVisual Studio Codeのようなものが開き、自動的に必要なものを拾ってコンパイルを開始する。ここでGithubアカウントのユーザー名とパスワードを問われるので用意すること。
- (Chromeブラウザの場合)1~2分後にURL欄にポップアップブロックがありましたと表示されるので、アイコンをクリックして、URLを開く。(その他のブラウザの場合)勝手に別タブが開く。\\ {{imgpaste:202510:htmikan-20251019-070354.png}}\\ {{imgpaste:202510:htmikan-20251019-070404.png}}
- Download Sourceを押下して、Nextを押下する。
- WiFIのSSIDとパスワードを入力してNextを押下する。(正直言ってなぜ必要なのかわからない)\\ {{imgpaste:202510:htmikan-20251019-070434.png}}
- Generic ESP8266を選択して、機能としては下記を選択してNextを押下する。\\ {{imgpaste:202510:htmikan-20251019-070446.png?500}}
- Custom Parametersには何も記載せずNextを押下する。
- バージョンの指定が表示されるので、Developから最新バージョンに変更してCompileをクリックする。
- コンパイルが完了すると、下記のように表示されるので、Firmware.binをクリックしてダウンロードする。\\ 必要ならばplatformio_override.iniもダウンロードする。(後で何の機能を選択したかを追うことができる)\\ {{imgpaste:202510:htmikan-20251019-070506.png?500}}
===== 自動化の方法 =====
tasmotaで自動化するには3つの方法がある。
* コマンド操作
* Script
* Rule
3つのうち後者2つは、カスタムファームウェアを自作する必要がある。めんどい。
また、ScriptとRuleは排他仕様なので、どちらかしか選択できない。
コマンド操作はBacklogを使って、最大30命令までのバッチ処理を行う事ができる。
===== ScriptとRuleの違い =====
* RuleはTASMOTA同様、ESPシリーズ用カスタムファームの[[https://espeasy.readthedocs.io/en/latest/|ESP Easy]]に実装されているRuleと互換のあり、標準ファームウェアの殆どは、Ruleが使える。\\ 設定時間おき(ArduinoでいうTicker)とか、センサーの温度が上回ったり下がったり等をトリガーとして、指定したルールを実行するという設定をする。\\ [[https://tasmota.github.io/docs/Rules/|Rules - Tasmota]]\\ [[https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules|Tutorial Rules - Let's Control It]]
* ScriptはTASMOTAオリジナルの機能。夜間だけライトをつけてカメラの顔検出を有効にしたり、センサー値から体積を計算してアームの角度を変更したりなど、高度な処理ができる。\\ コマンドの追加と廃止があり、エラーログも最小限しか出力されないので、完全にプロ用。\\ [[https://tasmota.github.io/docs/Scripting-Language/|Scripting - Tasmota]]
==== コマンド ====
基本的には次のように入力する。
**注意:スペースや特殊文字は、ASCII 16進コードに置き換えて、前に%を付けること。
よく使うのは半角スペース(commandとvalueを切り分ける)が%20、セミコロン(次に実行するcommand)が%3Bとなる。
[[https://www.urlencoder.org/|ここのサイト]]で正しいエンコード値を所得したほうが良い。**
WEB経由:
http:///cm?cmnd=%20
例:Switch1のモードを変更する
http://192.168.100.1/cm?cmnd=switchMode1%202 → JSONフォーマットで返す {"SwitchMode1":2}
MQTT経由:
Topic: cmnd// Payload:
例:Switch1のモードを変更する
Topic: cmnd/Switch1/SwitchMode1 Payload:2 → JSONフォーマットで返す{"SwitchMode1":2}
コマンドが正しく実行されるかどうかは、consoleを開いて、Enter Commandに次のように入力する。
これは各種設定を行うときも同様。
使用するコマンドの一覧は下記参照。
[[https://tasmota.github.io/docs/Commands/|Commands - Tasmota]]
個人的に設定しておくべき、もしくは使いそうな内容は以下の通り
=== BacklogとDelay(★必須) ===
30桁までのバッチ処理を実施したい時、Backlogと入力してからコマンドを入れる。
コマンドとコマンドの区切りは;(セミコロン)、最終行にセミコロンは不要。
待つときはDelayを使う。単位は0.1秒なので、1秒は10、1分は600となる。最大3600(6分)。
※時間はあまり正確ではないらしい
例:(電源OFF、10秒待ってから電源ON)
Backlog Power off; Delay 100; Power on
=== タイムゾーンの設定(★必須) ===
初期値はグリニッジ標準時になっているので、日本なら+9時間にしないといけない。
現在日時はstatus 7と入力すれば表示される。
例:
Timezone +9
=== NTPサーバーの設定 ===
初期で登録されているNTPサーバー3つは遠いので、国内サーバーに変更する。しなくても別段問題はない。
3つ指定ができるので、先頭に数字を入れる必要がある。
例:
NtpServer1 ntp.jst.mfeed.ad.jp
=== Latitude(緯度)とLongitude(経度) ===
Timerの設定でsunrise(日の出)とsunset(日の入り)時刻を指定できるが、この計算に使用する。
要するに日が落ちたらライトをつけ、日が昇ったらライトを消す等の運用に使用する。
googleマップで目的地にピンを刺し、右クリックメニューにて緯度経度の順で表示されるので、その値を代入する。
{{imgpaste:202510:htmikan-20251019-070528.png}}
注:TASMOTAは利用状況の確認としてこの情報を送るので、最寄りの県庁所在地等、自宅以外が望ましい。
例:
Latitude 35.68963
Longitude 139.69218
34.49190, 133.94605
=== 自分のMACアドレスを調べる ===
Status 5と入力する。
=== 電源投入時の動作 ===
停電等で一時的に電源が落ちた後に復旧した場合、どのように動作するかを指定するには、PowerOnStateを使用する。
0:常にオフ 1:常にオン 2:最後に保存した状態の反対 3:最後に保存した状態(初期値)4:オンにした後、以降の操作は無効 5:PulseTime秒後にオン
現在の状態はSetOption 0で確認、PulseTimeは1~111までは0.1秒単位だけど、112以降は100足して1秒単位となる。例:113 → 13秒、460 → 360秒で6分
==== 導入時にすること ====
SONOFFテスト 20210803
ON用:
[[http://192.168.1.106/cm?cmnd=Power%201]]
OFF用:
[[http://192.168.1.106/cm?cmnd=Power%200]]
再起動試験用(OFFして5秒後にON)→ OK!
[[http://192.168.1.106/cm?cmnd=Backlog%20Power%200%3B%20Delay%2050%3B%20Power%201]]
NTPサーバー設定用
[[http://192.168.1.106/cm?cmnd=Backlog%20Timezone%20%2B9%3B%20NtpServer1%20ntp.jst.mfeed.ad.jp%3B%20]]
===== デバイスの回復 =====
原文はこちら:
[[https://tasmota.github.io/docs/Device-Recovery/|Device Recovery - Tasmota]]
[[https://tasmota.github.io/docs/Getting-Started/#initial-configuration|Getting Started - Tasmota]]
まずデフォルトでは、TASMOTAはOTAアップグレードによる自動更新を行うために、既存の設定を保持しようとする。
それでもWifiがつながらない等の適切な操作が出来なくなった場合、電源のOFF/ONでデバイスをリカバリーすることができる。
これをFast Power Cycle Device Recoveryという。
この機能はSetOption65にて確認できる。初期値は0で有効だが、電源が不安定で再発する場合は、これを1にして無効にすることができる。
作業手順は以下の通り。
- デバイスの電源を30秒以上オフにする。
- 10秒未満の間隔でデバイスの電源を6回オン、オフして、7回目にオンにしたままにする。
- デバイスが初期化されて、WiFiがホストモードで起動するので、スマホなどで接続する。\\ その時のAP名はtasmota_XXXXXX-####となる。(例 tasmota_3D5E26-7718)\\ ※ホストモードは起動後3分間のみ有効で、また無効になる。
- WiFi接続後、192.168.4.1をブラウザで開くと、初期設定画面になる。\\ 有効なWifiとパスワードを指定してSaveすると、TASMOTAが取得したIPアドレスが表示される。