Ulanzi TC001 が来た！ Awtrix 3 に入れ替えた！

## アリエクで10日かかった
Ulanzi TC001 が アリエクで初回購入者価格 USD 33.86（5153円） だったので12/11に注文（円安のタイミングだったのでポチったが、その翌日 USD 32.86 に下がっていた）。

https://www.ulanzi.jp/products/ulanzi-pixel-smart-clock-2882

翌日には発送されたが、追跡番号は CNG → LP～SG と変化し、シンガポールポスト経由となるものの、14日～18日の4日間情報は更新されず、次の更新で日本到着。
シンガポールポスト経由は最近は佐川で配達されるとのことで、一部商品が届かないまま配達完了になったという話もあって心配したが、21日に無事受け取れた。
シールは CNG 、 LP 、佐川12桁コードの3つが貼られ、佐川の住所は日本語に直されていた。
![tc001review1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/5745dd92-0056-c527-8971-c16196cf17a9.jpeg)

## まずは Ulanzi のファームウェアを使ってみる
本体付属のファームウェアでできることはマニュアルに書かれている通りである。

https://cdn.shopify.com/s/files/1/0136/3119/3188/files/Ulanzi_TC001_Smart_Pixel_Clock_Instruction_Manual.pdf?v=1705976117

天気は現況を表示するため、中国以外の地点を指定しても表示できない。

### YouTube チャンネル登録者数カウンターとして十分使えそう
一番使い道のありそうな YouTube チャンネル登録者数カウンターについて検証する。
Awtrix 3 と違って Ulanzi ファームウェアは単体で YouTube チャンネル登録者数カウンターとして動作するため、安価なカウンターとして使用することが可能だ。
最大5桁まで表示でき、6桁以上だとスクロールする。
そのため、6桁以上に関しては短縮表記を設定できるが、6桁は ○○○K となってスクロールしないものの、7桁・8桁はそれぞれ ○.○○○M 、 ○○.○○M となってスクロールしてしまう（YouTube APIの仕様上、4桁表示させても最下桁は必ず0になってしまうので、4桁目の表示は全く意味がない）。9桁になると ○○○M となって再びスクロールしない。

まとめると、登録者1桁から銀の盾レベルのユーチューバーにはこのカウンターは十分使える。
一方金の盾以上のユーチューバーだと登録者数表示がスクロールしてしまうため、おすすめできない。
![tc001review2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/d1774cb5-b8cc-d206-547e-ab2cc166588b.jpeg)
![tc001review3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/90f14192-5fd1-39e6-5780-23fdf99ae4e8.jpeg)

なお、 YouTube Data API v3 の使用量を見る限り、この YouTube 登録者数カウンターは15分ごとに情報を取得しているようである。
加えて、設定画面でYouTube部分の設定を変更する度に（ID 変更せず、色を変更するだけでも）情報取得が行われる。
![tc001review3_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/72118c27-1cb6-8b26-7e39-b1eec0dfaf44.png)


## ファームウェアのバックアップ
今回購入した TC001 のファームウェアバージョンは 1.7.3 であった。
![tc001review4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/53e68fe8-42e6-e4d3-250e-9072545287c4.png)

公式サイトがリカバリー用に置いているファームウェアはファイル名から推測するとバージョン 1.7.1 であるため、念のためファームウェアのバックアップを取ることにした。

以下のサイトを参考に、 python で esptool をインストール後、 read_flash で PC に転送、保存する。 COM ポート番号は挿した USB ポートによって変化するため、デバイスマネージャで確認すること。

https://sequr.be/blog/2023/03/ulanzi-tc001-desktop-clock-awtrix/

実行すると本体がビープ音を鳴らしながらファームウェアが転送され、終了時に本体がリセット処理される。
![tc001review5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/6419f127-091f-d096-aa5b-661196d53ac8.png)

逆に Ulanzi のファームウェアに戻したくなったら、同じ esptool を使って今度は write_flash してやればよい。

https://lang-ship.com/blog/work/esp32-esptool-py/

## Awtrix 3 のインストール
さあ、いよいよ Awrtix 3 のインストール。
ブラウザからできてしまう。
公式ページから Flasher を選択

https://blueforcer.github.io/awtrix3/

![tc001review6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/801c3355-9b47-6231-9b5d-dc5dbeaa3c92.png)

2つあるうち、上の Ulanzi TC001 and custom builds flasher で CONNECT
![tc001review7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/47a654fa-9f3b-4984-1230-26325d05946f.png)

ブラウザが接続先の選択を求めてくるので、 TC001 に相当するものを選択（今回はペア設定済みと出てきているが、予めポート番号をデバイスマネージャで確認することを勧める）。
![tc001review8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/6378b3e6-8691-f500-18c7-0a22b18de92c.png)

本体がピープ音を鳴らしながら書き換え作業が進行する。 PC には進捗状況の円グラフが表示されるが、66%で止まって次の更新は完了になる。
![tc001review9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/1383775e-f850-2b97-0794-188046c9e48d.png)
![tc001review10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/04fb7aaa-ccf5-070b-f403-2c7cd12e0afe.png)

本体が再起動すると「AP MODE」と表示される。
スマホ等で Awtrix のアクセスポイントに接続、無線 LAN 情報を設定すると再起動。
自機 IP 表示をするようになり、ネットワーク設定は完了となる。

## タイムゾーンの設定
最低限やる必要があるのはタイムゾーン設定である。これをしないとなぜか UTC でもない、日本標準時より8時間前の時刻が表示されてしまう。
以下の情報を入力したら Save configuraion だけでなく Restart ESP も必要。

https://cysec-journeys.com/ulanzi-desktop-pixel-clock-tc001-review/

![tc001review11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/b56fc0ff-eac4-6a6a-c166-e48c717c1b92.png)

## MQTT の設定
後は MQTT の設定。 Broker の設定がゆるいものであれば、 サーバーの IP アドレスを入れるだけで設定完了である。
設定を間違って MQTT 通信がうまくいっていない場合、ディスプレイ左下に黄色のドットが表れることで確認できる（一度 IP アドレスを入れ間違え、ドット表示が出てしまった）。

![tc001review12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/2a84e1d4-0d7e-3f10-3df8-095ebf217d68.png)

Publish 側は トピックの先頭部分を、ここで設定した Prefix にしてやればよい。
デフォルトだと Prefix は awtrix_ の後ろにMACアドレス下位6桁が入っている。

## アイコンの転送
MQTT 経由で送受信するのはテキスト(JSON)のみなので、表示に使うアイコンは先に本体へ保存しておく必要がある。

Icons タブから LaMetrix Developer のアイコンがダウンロードできる…はずだが、なぜかダウンロードできなかった。

今回は AWTRIX Flows の assets で配布されていた画像ファイルを Files 画面から入れることにした。
左上のボタンでファイル選択、右上の入力窓でフォルダを指定（最初はルートに入れる設定なので、 `/ICONS/` を手打ちで指定）。 Upload ボタンで本体に保存できる。
![tc001review13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/95f6ccb0-9cc4-47ea-4822-81598f0dde75.png)
ファイル名の変更は、ファイルを右クリック→ `Rename/Move`
![tc001review14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/b2e316b9-4211-c731-bcce-43f11730a179.png)

## MQTT が受信できた！
以上の設定が完了すると、後は勝手に MQTT を受信し、必要に応じて画面が追加されていく。
YouTube チャンネル登録者数カウンターも無事表示することがてきた。
6桁まではスクロールせずに表示でき、7桁以上はスクロールが発生する（もちろん、 MQTT で Publish をする前処理で短縮表記にするなど、回避策はある）。
![tc001review15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/956fc530-dc0b-97c5-8744-5afd6920b64c.png)
アイコンが無くても、数字のみ表示される。
![tc001review16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/3c72047e-d1e3-0719-7129-9a7ae1a642b7.png)

## Awtrix のスマホアプリも使ってみる
さて、ここまでは全部無料で使える Awtrix 3。唯一有料なのはスマホ用アプリである。
Android 版は620円、 iOS 版は600円。

https://play.google.com/store/apps/details?id=de.awtrix.light&hl=ja

https://apps.apple.com/jp/app/awtrix-3/id6459478110

このアプリでは以下の項目が GUI で設定変更できる。
![tc001review17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/75d7120b-a2b2-e418-7979-034430e8f30a.jpeg) ![tc001review18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/9351a93a-e61a-3135-eaad-6adbbe061a83.jpeg) ![tc001review19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/727bacdb-8091-e64e-679a-5bf962d9b6f1.jpeg) ![tc001review20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/3687aa52-10a4-8283-3015-e0aa9ffd47c6.jpeg)

同様の設定は PC から curl コマンドや MQTT メッセージを使って行うことも可能（追記：本体の3つのボタンでも一部項目の設定は可能）だが、アプリの方が手っ取り早い。

さっそく Auto Transition をオフにし、時計表示を秒付きに変更した。
![tc001review21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/0eabdc59-8532-de0b-5b77-a3a5a5d973a6.png)

Awtrix なら日付を 年-月-日 で表示することも可能だ。
![tc001review22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3943774/5070ed8c-9e96-2367-ebca-37995bfb3b12.png)

設定は以上。

他に、右上のハンバーガーメニューから、アイコンの作成、アイコンのダウンロード（LaMetrix Developer とは違うアイコンサイトのようだ）などが行える。

## 手頃な価格で情報表示
以上、長々とUlanzi TC001 と Awtrix 3 の紹介をした。
ピクセル数が少なく、日本語表示もできないのがやや残念ではあるが、その分大きなドットで視認性は高い。
価格もお手頃。アリエクが不安なら公式サイトからも購入できる。送料がかかるが、ブラックフライデーなどで20%程度の値引きセールを行っているため、公式から購入しても数千円程度の違いしかない。
日本語によるレビューはあまりないが、海外サイトや YouTube で多数解説がなされているので参考にできる。
興味があればぜひ試してみてほしい。