TASMOTA
中国で購入できるWEBスマートスイッチSONOFFシリーズは、一部中国語の専用ソフトをインストールしないと使えない。
またSONOFFのサーバーを経由して通信する為、安全性にも問題がある。
このSONOFFにTASMOTAというESPxxシリーズ用のカスタムファームウェアを入れれば、完全にローカルでコントロールできるようになり、コマンドを駆使して色々な事ができるようになる。
インストール手順
カスタムしない標準ファームウェアの場合、Tasmotizerを使うのが早い。使い方は以下の通り。
(要別途記述)
カスタムファームウェア
TASMOTAの標準ファームウェアには、基本的に電源をON/OFFするだけのものと、それに加えて1つ追加機能があるものしかない。下記例:
- リモコンの送受信を行いたい場合は、tasmota-ir.binを使用する。
- 温湿度モジュールを使いたい場合は、tasmota-sensor.binを使用する。
上記2つを同時に使用したい場合は、どうしてもファームウェアを自分でコンパイルする必要がある。
下記に最も簡単に作成できる手順と設定を記録する。
- 前条件:Githubのアカウントをあらかじめ作成しておくこと。
- tasmocompilerを使用する。まずこのリンクをクリックする。
- Gitpodというオンラインで使用するVisual Studio Codeのようなものが開き、自動的に必要なものを拾ってコンパイルを開始する。ここでGithubアカウントのユーザー名とパスワードを問われるので用意すること。
- Download Sourceを押下して、Nextを押下する。
- Custom Parametersには何も記載せずNextを押下する。
- バージョンの指定が表示されるので、Developから最新バージョンに変更してCompileをクリックする。
自動化の方法
tasmotaで自動化するには3つの方法がある。
- コマンド操作
- Script
- Rule
3つのうち後者2つは、カスタムファームウェアを自作する必要がある。めんどい。
また、ScriptとRuleは排他仕様なので、どちらかしか選択できない。
コマンド操作はBacklogを使って、最大30命令までのバッチ処理を行う事ができる。
ScriptとRuleの違い
- RuleはTASMOTA同様、ESPシリーズ用カスタムファームのESP Easyに実装されているRuleと互換のあり、標準ファームウェアの殆どは、Ruleが使える。
設定時間おき(ArduinoでいうTicker)とか、センサーの温度が上回ったり下がったり等をトリガーとして、指定したルールを実行するという設定をする。
Rules - Tasmota
Tutorial Rules - Let's Control It - ScriptはTASMOTAオリジナルの機能。夜間だけライトをつけてカメラの顔検出を有効にしたり、センサー値から体積を計算してアームの角度を変更したりなど、高度な処理ができる。
コマンドの追加と廃止があり、エラーログも最小限しか出力されないので、完全にプロ用。
Scripting - Tasmota
コマンド
基本的には次のように入力する。
注意:スペースや特殊文字は、ASCII 16進コードに置き換えて、前に%を付けること。
よく使うのは半角スペース(commandとvalueを切り分ける)が%20、セミコロン(次に実行するcommand)が%3Bとなる。
ここのサイトで正しいエンコード値を所得したほうが良い。
WEB経由:
http://<deviceIP>/cm?cmnd=<command>%20<value>
例:Switch1のモードを変更する
http://192.168.100.1/cm?cmnd=switchMode1%202 → JSONフォーマットで返す {"SwitchMode1":2}
MQTT経由:
Topic: cmnd/<deviceName>/<command> Payload:<value>
例:Switch1のモードを変更する
Topic: cmnd/Switch1/SwitchMode1 Payload:2 → JSONフォーマットで返す{"SwitchMode1":2}
コマンドが正しく実行されるかどうかは、consoleを開いて、Enter Commandに次のように入力する。
これは各種設定を行うときも同様。
<command> <value>
使用するコマンドの一覧は下記参照。
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マップで目的地にピンを刺し、右クリックメニューにて緯度経度の順で表示されるので、その値を代入する。

注: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
デバイスの回復
原文はこちら:
Device Recovery - Tasmota
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アドレスが表示される。




