にゃん太郎とアマチュア無線

メインクーンのにゃん太郎と趣味のアマチュア無線と電子工作の記録です。 現役時代は大型汎用コンピューターの保守をやっていました。激務がたたり2型糖尿病になり治療中です。

タグ:docker

Amazonでraspberry-pi zeroをraspberry-pi3 pi4相当に変換するアダプタを購入してみました。これはインターフェイスがUSBx4 Ethnetアダプタに増設されます。

価格は2800円です。本体が3000円ちょいなんですこし高いですけど、、

別にzero2wでもwifi接続で安定しているんですが、2.4Gの無線しかサポートされていなくて、速度があまり出ないことと、USBが1個しかないので、ちょっと不便なので購入して試してみました。

IMG_20250208_074346

lsusbの結果です。

Bus 001 Device 003: ID 0bda:8152 Realtek Semiconductor Corp. RTL8152 Fast Ethernet Adapter
Bus 001 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 002: ID 1a40:0201 Terminus Technology Inc. FE 2.1 7-port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

単にUSB接続のEther接続のアダプタとUSB HUBが内蔵されているものですが、接続するだけでドライバもなにも必要なく、すぐにeth0と認識され使えます。
EtherNETはRTL8152ですね。まあ速度はUSB2.0なんであまり期待はできないけど、2.4GのWIFIよりは有線のほうが安定してつながることを期待しています。


aprsはcui用にaprxを使ってみました。VNCとjavaをインストールしてYAACも試してみたんですが、さすがに厳しいです。メニューを開くのに1~2分ぐらいかかってしまいます。

aprxは初めて使ってみたんですが、cuiなんで軽いです。設定は/etc/aprx.confですが、TH-D72用で/dev/ttyUSBで認識されすぐに設定できます。
ただ私の環境で、送受信は9600で144.64で設定して、direwolfで受信専用で144.66を設定したいんですが、interfaceの設定で同じコールサインが設定できません。
この部分でつまずいて、やむなくdirewolfの起動はあきらめました。

sudo /etc/init.d/aprx
Usage: /etc/init.d/aprx {start|stop|status|restart|force-reload}
このオプションで状態を確認できます。

まあraspberry-pi3と比較して、消費電力はたいして違いはないんですが、やはり3000円ちょいでここまでdockerとaprsががちゃんと動くってのはすごいと思います。時代の進歩を感じます。
せっかくですからrfkillコマンドでwifiとbluetoothを無効にしておきました。

でも欲をいえば、価格は同じでメモリーを1Gでwifiを5GにしてUSBをTYPE-Cにした、Zero3が出ることを期待したいです。







今は自宅サーバとしてraspberry-pi4ででアマチュア無線用のaprsサーバとNightscouサーバを、立ち上げているんですが、試しにraspberry-pi3とほぼ同じ性能で、価格は1/3のRaspberry-pi Zero 2WでNightscoutサーバを上げてみました。

Nightscoutは、糖尿病のCGM管理用のサーバでかなり高機能です。以前は無料のクラウドで使えていたみたいですが、今はサブスクで料金が発生します。

それでお金のない私は、自宅でRaspberry-piで立ち上げています。それをRaspberry-pi Zero 2Wで専用で上げてみました。24時間電源を入れるので消費電力も少ないし最適です。

CGM機器としてはリブレ2を使っています。これは500円玉大のパッチを腕に張り付けて、常時血糖値を取得してスマホアプリでその値を表示するというものです。その値をNightscoutサーバにupしてwebサーバ上で管理できます。

Nighscoutは、dockerで動作しますが、果たしてメモリーが512kbしかないZero 2Wでdockerがどの程度動くのか、、、

結論からいうとまったく問題なく動きました。NigscoutサーバとしてもレスポンスもPI4で上げているのとまったく差がありません。
とはいえさすがにメモリー容量が512kbではきびしく、ヘッドレス運用でもawap領域を1G以上取ったほうがいいです。 

DOCKERを使うので、OSはPI OS Lite (64Bit)を選択してSDカードにインストールしました。
ヘッドレス運用なんでguiは必要ないです。512KBのメモリーでは、さすがにデスクトップ環境で使うのはきびしいと思います。
またデフォルトのswap容量だと、500Mしかないんで、ssh接続でapt updateなんかすると、接続が不安定になり切断されることがあります。私は

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE=2048 

で2Gに拡張しました。

あとwifiで接続してるんですが、dhcpではなく固定ipに変更します。
64bitのBOOKWORMでは、固定IPに設定は面倒ですが、

sudo nmtui

で簡単に設定できます。

まず前回お世話になったドイツ語のサイトでインストールします。

dockerのインストールは

curl https://get.docker.com/ | sh

このコマンドだけです。少し時間はかかりますが、ものすごく簡単にインストールできます。

dockerにユーザを追加します。

sudo usermod -aG docker $USER &&
sudo reboot

再起動後 dockerのディレクトリとmongodbの入れ物を作ります。

cd /home/$USER/ &&
mkdir nightscout &&
cd nightscout &&
mkdir db
docker-compose.yamlを作成します。


cd /home/$USER/nightscout &&
nano docker-compose.yaml

私のdocker-compose.yamlです。

services:
    nightscout:
      image: markxoe/nightscout-cgm-remote-monitor-raspberrypi:latest
      environment:
        TZ: Japan/Tokyo
        MONGO_CONNECTION: mongodb://mongo:27017/nightscout
        API_SECRET: xxxxxxxxxxxx
        BG_HIGH: 250
       BG_LOW: 70
       BG_TARGET_TOP: 180
       BG_TARGET_BOTTOM: 80
       INSECURE_USE_HTTP: true
       #AUTH_DEFAULT_ROLES: denied
       ENABLE: delta direction rawbg iob dbsize careportal
     ports:
       - 1337:1337
     links:
       - mongo
     restart: always
   mongo:
     image: mongo:bionic
     restart: always
     volumes:
       - ./db:/data/db

これを保存後 dockerのイメージをダウンロードします。

docker compose pull

5分ぐらいかかります。

Nigscoutサーバを起動します。

 docker compose up -d

正常に起動したら、http://ローカルip/:1337で接続できるはずです。

あと mongodb-database-toolsをいれておけばdbのバックアップやリストアが簡単にできるようになるので入れておいてください。

Ubuntu 24.04 ARM 64です。このdebパッケージを

sudo dpkg -i ファイル名
 
でインストールします。

mongodbのバックアップは

docker ps -a でidを調べます。

バックアップは
docker exec CONTAINER_NAME mongodump --archive > db.dump

圧縮バックアップは
docker exec CONTAINER_NAME mongodump --archive --gzip > db.dump.gz

リストアは
docker exec -i CONTAINER_NAME mongorestore --archive < db.dump

docker exec -i CONTAINER_NAME mongorestore --archive --gzip < db.dump.gz

下記のスクリプトを用意して

#!/bin/sh

docker exec CONTAINER_NAME mongodump --archive > 'date +%y%m%d'.dump

これをcrontabで一週間に一度ぐらい実行すると、yymmdd.dumpが作成されます。


IMG_20250114_082434


家のwifiに接続したスマホ(xdrip)からNightscoutに、uploadした血糖値のCGMの値をリルタイムで表示しています。
流れとしては リブレ2--->リブレview--->スマホ(xdrip)--->  Nightscou---->esp32のcherp yerrow displayです。
スマホを除く費用は、zero2wを含めて全部で5000円以内でできます。

aprsはguiが使えなのでaprxを使いました。また別記事で書きます。

このページのトップヘ