e-tipsmemo

ごった煮

EDCB-WineをEDCB-Linuxに入れ替えた

EDCB-Wineはdockerでインストールでき、設定もGUIでできるので便利だが、なぜか30分以上の番組の録画が失敗して、30分で録画が打ち切られるので ネイティブ動作するものに入れ替えた。

Linux版のEDCBを使う | ひろぐら
Linux版EDCBのインストール - にゃののん日記

BonDriver_LinuxPTXでの導入記事が多いが、EDCBを入れるところまでは同じで、
BonDriver_LinuxMirakcをビルドして入れ替える。
Mirakurun経由でLinux版EDCBを使う | ひろぐら

自分の環境では、recisdbでの処理時点で B25デコード完了しているので、
この改装ではB25デコード処理は 0にしている。

最終的な構成はこのようになっていると思う。
すべてLinuxで動作している。
リモート視聴は、TailscaleでつないでKonomiTVで見る。

KonomiTVでリアルタイム視聴時には、BonDriverを経由していないので、BonDriverのチューナー数の管理外になってしまう。
EDCBがすべてのチューナーを使用してEpg取得中に視聴しようとすると、視聴に失敗すると思う。
逆に、EDCBがチューナーを4つだと思って並列に4録画しようとしても、仮に同じ番組を視聴に使っていると、録画に失敗する可能性がある。(4つ同時に録画することなどほぼないが)

なので、EDCBのlegacy設定から、EDCBが使用するチューナーを4つではなく、3つにしておいたほうがいいかもしれない。


その他

Amazonで探しても、PLEXチューナーが売ってないみたい
ヨドバシやツクモで売っているが昔に比べ値段が倍になっている?

EpgTimerのWeb管理画面が正しく表示されない

あるとき、EpgtimerのWeb管理画面でるEMWUIの表示がおかしくなった。


code.getmdl.ioのテーマが403でアクセスできなくなっているようなので、
cloudflareのものに置き換える。

EDCB-Wine/EDCB/Setting/HttpPublic.ini
の3行目を変更する。

[SET]
;テーマカラーを変更する
;css=<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.pink-red.min.css" />
css=<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.pink-red.min.css" />

docker再起動いらずでEMWUIが治った。

Twitterを"code.getmdl.io"で検索したら見つかった。
https://x.com/RONJIX/status/2011583952419701031?s=20

追記

EDCB-Wineの最新版にアップデートすることで治る

RF over Fiberをしてみたかったが

ツイッターで面白そうなことをしている人がいたので試してみてみた。

twi_kingyoさんはRF信号をそのままSFPモジュールに入れる基板を作り
テレビ信号を光ファイバーで送っていた。

GithubにKicadデータがアップロードされている。
GitHub - kingyoPiyo/SFP_BreakoutBoard

追試も歓迎とされている。

JLCPCBで基板製造は2ドルだったが、
小さい部品だけ実装して、90ドル。

狭ピッチのUSB-CコネクタやSFPコネクタをはんだ付けするのも苦労したので多少高くなるとしても実装してもらったほうが良かった。

写真しか手がかりがないが、TX+にだけ信号を入れているようなのでそれだけ実装した。
またこの写真で使用されているSFPもモジュールがなんなのかわからなかったが、
線形性確認しているツイートでは
GoFiber GSFP-BX-D1550.3kmといものを使用しているが、テレビ受像実験でもそれを使用しているのかはわからない。
https://x.com/twi_kingyo/status/1933814388454297732?s=20
大バズしている元のツイートでは黄色いパーツ部分だけが一致している。

とりあえず接続したが・・

画像の情報を頼りに
アンテナFコネ→SMA TX+→SFP→ファイバー→受光ダイオード→F型コネクタ→テレビ
と接続したが
テレビは映らなかった。

反省

狭ピッチのはんだづけに結構手間取ったのがまずかったかもしれない
3.3Vが正しくでているのは確認しているが、
問題はSFPコネクタのほう


見た感じショートはしていないように見えるがよく見えない。

もしくはtwi_kingyoさんの画像をよく見ると、基板側SMAオスが普通つながっているところに、なにかつながっているようにも見える。
TX-、RX+、RX-は終端されている?必要があるのかもしれない。

とりあえず終端抵抗をつなげて再トライ。
もう1枚基板はあるのではんだづけもトライしてダメだったら
あきらめかも。

HomeassistantのダッシュボードからLEDを操作する

前回、ESPhomeでプログラミングされたESP32デバイスとそれにつながるLEDを、WSLからcurlで操作した。

e-tipsmemo.hatenablog.com
これをhomeassistant上から操作できる設定を行う。

作業

ESPhomeアドオンを使用するには
アドオンが使用可能なOS版homeassistantが必要だが、
一度ESPhomeでプログラミングされたデバイスを操作するには、
Docker版でもよいと知った。

Docker版には「アドオン」がない。

最初は過去記事のプログラムのままhomeassistantの設定をいじったりなどしていたが、
ChatGPTに聞いたところ、エンティティの設定に"name"がないと、homeassistant上から見つけられないとのこと。

なので、nameプロパティを追加する。

switch:
  - platform: gpio
    pin: GPIO2
    id: gpio2_led
    name: "status_led"

すると、設定の「デバイスとサービス」から

バイスが”発見”される

「追加」をすると、apiキーの入力を求められるので、

ESPhomenのプログラム中にあるkeyを入力する。

そうすると、デバイス内のエンティティの状態の表示や操作が可能になる。

また、homeassistantのトップページにも自動で追加されている。

ちなみに

web_server:
  port: 80 # 通常はポート80を使用

としたときのESP32上のWebサーバーからも操作できるようになっていた。(すごい)


curlでESP32に接続されたLEDを操作するプログラムをESPhomeで書く

現在、homeassistant(ESPhome)があるネットワークと、ESP32がWIFI接続されるネットワークが別になってしまうので、
ESP32がネットワークで接続されているか(Wifiで)を確認すべく、curlでgpioを操作することをためす。

調査

ESPhomeから書き込まれたESP32がhomeassistantから操作されるときには、
ESPHomeネイティブAPITCP/IPベース)というのが使用されてる様子。
curlからネイティブAPIを使用するのは大変らしいので、esp32の中にREST APIを使用できるサーバーを有効化することがで、REST APIを使用し、curlで操作できる。

web_serverを有効化したところ、このような画面が見えており、
OTA updateも可能な様子。

プログラム全体

esphome:
  name: esp32-wifi
  friendly_name: ESP32_WIFI

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Wifi Fallback Hotspot"
    password: "xxxxxxxxx"

captive_portal:

web_server:
  port: 80 # 通常はポート80を使用

switch:
  - platform: gpio
    pin: GPIO2
    id: gpio2_led

# interval:
#   - interval: 500ms
#     then:
#       - switch.toggle: gpio2_led

動作

プログラムを書き込むと、シリアルポートのログにIPアドレスが表示されるので
そこに対して、curlで操作を行う


コマンドは以下

 curl -X POST -d "" http://<ip_address>/switch/<id>/toggle

LEDが点滅するとともに、gpio2_ledをtoggleするログが表示される。

[19:58:31][0;36m[D][switch:030]: 'gpio2_led' Toggling ON.[0m
[19:58:31][0;36m[D][switch:065]: 'gpio2_led': Sending state ON[0m
[19:58:32][0;36m[D][switch:030]: 'gpio2_led' Toggling OFF.[0m
[19:58:32][0;36m[D][switch:065]: 'gpio2_led': Sending state OFF[0m
[19:58:33][0;36m[D][switch:030]: 'gpio2_led' Toggling ON.[0m
[19:58:33][0;36m[D][switch:065]: 'gpio2_led': Sending state ON[0m

Webサーバーのページにも表示されている(すごい)

その他

ESP32が発売された当初、Arduino IDEでプログラミングするしかなく、それなりにwebサーバーを立てようもんならjavascriptを書いた文字列をコードに埋め込んでどうのこうのする必要があって、かなりめんどくさそうだった。
それがめちゃくちゃ簡単に準備できて、しかもデバッグログも出てくるしすごい。

次のステップではWifiではなく、有線経由での接続確認を行いたいと思う。

HomeassistantのESPhomeでLED点滅プログラム

これも以前にやったものとほぼ同じだが、今回は自作基板で行う
e-tipsmemo.hatenablog.com

また、ESPhomeのバージョンが更新されたことで、Wifiのパスワードなどが別のyamlファイルに記述されるようになっている(前から?)

また、シリアルモニタをつなげていることで、Wifiが接続されていることも確認できた。

プログラム

点滅させたいLEDの宣言については、
Blink. How? - #5 by stevemann - ESPHome - Home Assistant Community
ここの回答通り。
outputにはtoggleプロパティがない様子。

esphome:
  name: esp32-wifi
  friendly_name: ESP32_WIFI

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Wifi Fallback Hotspot"
    password: "xxxxxx"

captive_portal:
    
switch:
  - platform: gpio
    pin: GPIO2
    id: gpio2_led

interval:
  - interval: 500ms
    then:
      - switch.toggle: gpio2_led

本体プログラム(ESP32_WIFI)とは別に右上のsecretsのところからwifiSSIDとパスワードを記載する。

ビルドと書き込み


右上の「Install」の後、プログラム手法を選んで、(今回はManual download)


~~~.binがダウンロードされる。

あとはESP flasherなどで、シリアルポート経由でダウンロードする。

コンソールを開きっぱなしにしていると、WIFIの接続完了や、
switchのtoggleのログが流れてくる

またルーターの管理画面などを見てみると(ASUSのアクセスポイントの管理画面)
Androidとは別の何かしらの機器がつながっており

このマックアドレスは、Espressif Inc.のものだとわかる。

ProxmoxにHomeassistantの導入

以前、Raspberry piにHomeassistantを導入して家のオートメーションを少し行ったことがあったが、
結局Raspberry piの管理がめんどうで使わなくなってしまった。

e-tipsmemo.hatenablog.com


再びIoT的なことをしたくなったので、今度はProxmoxのVMとしてhomeassistantとそこへのアドオンとして、ESPHomeをインストールしてみる。

Proxmoxへのインストール

ISOイメージは存在しないらしいので、qcow2をダウンロードして、
それを起動する。
やり方は以下の動画と全く同じ。
youtu.be

メモリが2GBだと少し動作が遅い気もするので、4GBにしたほうが良いかもしれない。

起動

URLにアクセスすると、なにかしらの初期セットアップが開始するが、
それにかなり時間がかかる。
体感30分?

一番最初に作ったアカウントがadminのようなものになり、
アドオンの管理などができる.

ESPhomeの導入

[設定]-->[アドオン]-->[アドオンストア]からESPhome device builderというのがインストールできる。
このインストールも時間がかかった。体感20分

昔とはアイコンが変わっている様子

感想

特にはまったポイントはなかっただメモリの割り当てが小さかったのか、インストールが遅かったのが心配だった。
その後、ESP32へのバイナリのビルドなどを行ったがとくに遅すぎるというわけでもなかったので、メモリは2GBでもよいのかもしれない。