月別アーカイブ: 2022年2月

wahoo TICKRの電池切れ

先日の2022年ツーリング開始は喜ばしいイベントだったのですが、走行中に心拍数計測ベルト wahoo TICKRの電池が切れてしまい、走行記録に心拍数がない状態になってしまいました。

普段は心拍数も込みでGPSデータを記録し、運動記録保存アプリのSTRAVAで推定の運動負荷を自動計算して記録に残していました。心拍数データ抜きだと相対的に運動負荷が軽めに記録されてしまうので少々残念です。

バッテリー残量を簡単に計測することはできないので、1シーズン毎に予防保守的に電池を交換するなどしていった方が確実に運用できるかもしれません。

週末中心の運用で1年少々もつかどうか、という感覚を持っています。

2022年の自転車ツーリング開始

今年の長野県は雪が多かった上に冷え込みもここ数年よりも厳しく、なかなか屋外を走る機会に恵まれませんでした。ようやく走れる状況になってきたと判断しておなじみの千曲川サイクリングロードを走ってみました。

中には入りませんでしたが上田城址を見て来ました。

千曲川サイクリングロードの優れた点として、全体的に日当たりがいい点が挙げられます。なので、一定日数晴れた日が続けばこのように路面状況は良好な状態になります。

一方で、橋の下など終日日の当たりにくい場所は写真のように凍った雪が残っているのを多数目撃しました。徐々に最高気温が高くなると思うので消えるのも時間の問題とは思いますが、当面の間走行には注意が必要そうに思います。

また長野県の色々な場所を発見しに行けるのが楽しみです。

Raspberry Piで部屋の温度を長期間記録する(自動実行編)

部屋の温度を測定してデータベースに記録するところまではできたので、今度はこのプログラムを定期的に実行してデータをためていきます。

Linux系OSの場合”cron”というデーモンでプログラムの自動実行が可能です。Windowsでいうところのタスクスケジューラ的な使い方ができるものです。

cronの設定ファイルを開く

cronは設定ファイルに各プログラムをどういうスケジュールで実行するかを書き込むことで設定を行います。

設定ファイルはcrontabという名前で、ターミナルから以下の通りにコマンドを入力すると中身を編集することができます。

<ターミナル>
crontab -u [ユーザ名] -e

Raspberry Piの場合デフォルトのユーザ名はpiに設定することが多いと思うので、その場合は crontab -u pi -e と入力すればOKです。

cronのスケジュールの書き方

crontabを開くとエディタが起動するので、スケジュールを書いていきます。

基本的な記法は以下の通りです。

<crontab>
* * * * * [実行する内容]

最初のアスタリスクは前方から”分・時・日・月・曜日”を意味しています。

<crontab>
#毎日8時59分に実行
59 8 * * * [実行する内容]

#毎時29分に実行
29 * * * * [実行する内容]

実行する内容はプログラムの名前をフルパスで記述します。プログラムの名前だけで動作しない場合、そのプログラムを実行するファイルの環境変数が設定されていない可能性があります。この場合、プログラムの名前の手前部分に実行するファイルの名前を明示的に指定すると動きます。

今回の場合はPythonなので以下の通りになります。私が今回作った環境ではPythonの実行パスがあわせて必要で、最初これにしばらく気づかず解決にずいぶん時間がかかりました。

<crontab>
#ファイル名のみ設定
#毎時29分に実行
29 * * * * /home/Document/roomtemp.py

#Pythonの実行パスも含めて設定
#毎時29分に実行
29 * * * * /usr/bin/python3 /home/Document/roomtemp.py

crontabを保存して終了して設定は完了です。

cronの実行と設定確認

crontabで設定ができたら、念のためcronを再起動しておくと確実です。

<ターミナル>
sudo systemctl restart cron

これでうまく動いてくれれば大丈夫です。動作を確認したい場合は以下のコマンドで実行ログが出るので、cronでプログラムが実行されたかどうかをチェックできます。

<ターミナル>
sudo /etc/init.d/cron status -l

-lのオプションをつけておかないと結果が省略されて見づらくなってしまうので、-lを付けておいた方が良いと思います。

まとめ

これでプログラムを定期的に実行し、データを蓄積することができるようになりました。次回ではためたデータをグラフ化して見る方法をまとめてみたいと思います。

Radeon Software22.2.3がリリース

2/24付けで22.2.3がリリースされています。私の環境ではここ最近ドライバのアップデートをしていなかったのですが、しばらく間隔が空いたのでアップデートしてみることにしました。

Radeon Software Adrenalin 22.2.3 Release Notes

[amd.com]

最適化タイトルとしてはElden Ring、Shadow Warrior 3、GRID Legendsの3タイトルが挙がっています。エルデンリングはかなり話題のタイトルなので、プレイする方はドライバのアップデートを検討しても良いと思います。

既知の不具合ではEnhanced Sync有効の状態で画面に何も表示されなくなってしまう問題が挙げられています。暫定的な緩和策としてEnhanced Syncをオフにすることが案内されています。

NE-BS658-Kグリル調理運転試験

新しいオーブンレンジでグリル調理の試験を行ってみました。この機種はオーブン機能を使うことでグリル料理にも対応しており、プリセットされた料理集の中にもグリル料理が多数収録されています。

今回は手動で塩コショウした鶏もも肉を焼いてみました。

できあがりはこんな感じで、ほどよく焦げ目も付きちょうど良い焼き具合です。従来この手の料理はスキレットを使ってガスコンロの魚焼きグリルを使って焼いていました。

それはそれで満足のいく出来だったのですが、オーブンレンジを使った場合はタイマーで加熱ができるので、他の作業と並行して行っても焼き過ぎることがないのがメリットです。

グリル用のプレートには割合深めに溝が切ってあり、調理中に発生した脂分を落とせるのも良いと思います。

プレートはかなり凝った作りで、表面はフッ素コーティングでくっつかないようになっています。

火の番をするのが面倒なグリル料理にはかなり活躍してくれると思います。

WordPress5.9.1がリリース

メンテナンスリリースとして5.9.1がリリースになりました。マイナーなアップデートはセキュリティリリースも込みになることが多い中、メンテナンスのみのリリースは珍しく感じます。5.9になった直後なので見つかったバグがさっそく修正されているのではないかと思います。

WordPress 5.9.1 メンテナンスリリース

[wordpress.org日本語版]

リリースノートにそれらしいことは書いていないのですが、私の環境では5.9になってからエントリ作成時に投稿カテゴリーの選択欄がクリックしても展開されない問題があり、毎回ダッシュボードのクイック編集モードで直していました。

5.9.1にして以降この問題は起きていないので、非常に助かっています。

東御市海野宿橋は3/1に開通予定

2019年の台風19号の被害で長らく通行止めだった東御市の海野宿橋がとうとう2022/3/1に開通するとのことです。

東御市道 白鳥神社線が3月1日に復旧完了。海野宿への主要アクセス道路が再開通。2019年台風19号で「海野宿橋」流出など被害

[トラベル Watch]

2021年度中の復旧を見込むということだったので、予定通りに復旧が完了することになります。

この橋が通行可能になると国道18号の海野宿入口交差点から直接海野宿方面に入ることができ、観光に非常に便利です。また海野宿入口交差点からはしなの鉄道の大屋駅まで右左折なしで移動できる海野バイパスと呼ばれる道路があり、こちらも良く通らせてもらっています。

ぜひ動画などで紹介したい道路なので、復旧後に自転車で走ってみるのが楽しみです。

オイスターソースとめんつゆの煮物

煮物のレシピを1つ教えてもらいました。”味付けにオイスターソースとめんつゆを同量使う”という簡単なものです。

鶏つくねと野菜をこの味付けで煮てみました。

確かに単純ながらこれだけで味付けが一発で決まり、便利です。めんつゆにしてもオイスターソースにしても割とバランスの取れた味なので、失敗しにくいということかもしれません。

今回の試作品では具材の総容量が約400ml、オイスターソースはクックドゥのオイスターソース、めんつゆは創味のつゆを小さじ2ずつ使用しました。味の濃さ的にはこんなものではないかと思います。調味料はいずれもかなり濃いめのものなので、ちょっと多すぎるだけでも味が濃くなる危険性があります。

煮物は調味料同士のバランス取りが難しいポイントですが、このレシピは調味料同士が同量なので作りやすくて良いと思います。味も独特なのでいつもの煮物からちょっと変えてみたいときに便利です。

Raspberry Piで部屋の温度を長期間記録する(データベース編)

今回Raspberry Piで部屋の温度を記録するに当たって、おおよそ以下のような設計を考えました。

  1. Raspberry Piで部屋の温度を測定する
  2. データベースに測定時刻と共に温度データを蓄積する
  3. データベースの情報を元にグラフを描画する

1の手順については準備編で紹介した書籍、”Raspberry Piで学ぶ電子工作”で紹介されているので、それを流用します。今回のエントリは2の部分です。

SQLiteによるデータの蓄積

簡易なデータベースとして今回はSQLiteを使うことにしました。SQLiteはローカルでの利用に向いた手軽なデータベースとしてよく使われているものだそうです。

コードは以下のような感じになりました。

<Python>
#UTF8
import smbus
from time import sleep
import sqlite3
import datetime

#温度測定プログラム"Raspberry Piで学ぶ電子工作 プログラム7-1を流用"
#変数"InputValue"に温度が格納される

#データベースファイルが存在しない場合は作成
dbpath = '/home/pi/Documents/roomtemp_db.sqlite'

#コネクション生成
connection = sqlite3.connect(dbpath)

#カーソル生成
cursor = connection.cursor()

#テーブルが存在しない場合は作成
#ID、日付時刻、温度の3列で構成
cursor.execute("CREATE TABLE IF NOT EXISTS roomtemptable (id INTEGER PRIMARY KEY AUTOINCREMENT, datetime TEXT, temp REAL)")

#現在時刻を取得
nowdt = datetime.datetime.now()
nowdt = nowdt.strftime('%Y%m%d-%H:%M:%S')

#SQLコマンド実行
sql = 'insert into roomtemptable (datetime, temp) values (?, ?)'
data = (nowdt, inputValue,)
cursor.execute(sql, data)
connection.commit()

connection.close()

SQLiteの面白いと思ったところはコード内でファイル作成から行えるところです。既に同名のファイルが存在した場合は上書きせずにスキップしてくれるので、作る方としては楽です。これはテーブルについても同様です。

SQLコマンドの実行はcursorインスタンスのexecuteメソッドで行います。SQL文のパラメータはタプル(データの組)としてexecuteメソッドの第2引数に設定することができます。他にもパラメータの使い方はあるようなのですが、何となく私はこの記法が理解しやすかったのでそうしました。

日付時刻の処理

少々詰まったのは日付時刻の処理で、取得したdatetime型の情報を文字列型に変換する方法が分からずに苦労しました。結局datetimeオブジェクトのstrftimeメソッドで変換可能なことが分かったのでそれを使いました。

まとめ

このプログラムを実行することでデータベースを作成し、その中のテーブルに日付時刻と共に温度情報を書き込むことができます。

後はこのプログラムを定期的に実行すればOKです。次回のエントリではcronを使ってこのプログラムを自動実行する方法を整理してみたいと思います。

参考リンク

sqlite3—SQLite データベースに対する DB-API 2.0 インターフェース

datetime—基本的な日付型および時間型

[Python.org]

Pythonのドキュメント群は非常に分かりやすい日本語情報があるので、何と言ってもオフィシャルの情報が頼りになりました。

Raspberry Piで部屋の温度を長期間記録する(準備編)

部屋の環境測定のために、温度を一定時間ごとに長期間モニタリングする方法はないかと考えていました。多少のプログラミングの心得があればRaspberry Piで実現可能らしいことが分かったので材料を準備して試してみることにしました。

用意したもの

  • 講談社 Raspberry Piで学ぶ電子工作(書籍)
  • 講談社 Raspberry Piで学ぶ電子工作用パーツセット
  • Raspberry Pi4 ModelB(8GB)
  • Raspberry Pi4用ケース
  • HDMIケーブル TypeDオス-TypeAオス
  • スイッチングACアダプタ(USB TypeC)5.1V-3.8A
  • MicroSDHCカード
  • Raspberry Pi Zero WH
  • Raspberry Pi Zero WH用ケース
  • スイッチングACアダプタ(USB MicroB)5V-3A

Raspberry Pi本体が2種類あるのはPi4が開発機でZero WHが本番機という構成のためです。開発機が本番機を兼ねる場合は上記リスト中下側の3行は不要になります。

今回は本体を2台用意しているので正味の調達価格は2.6万円くらいになってしまいましたが、とりあえず1台で始めるなら2万円くらいで書籍やパーツも含めて一通り揃うと思います。

書籍について

今回入門書として使った”Raspberry Piで学ぶ電子工作”はとても分かりやすく、かなりの良書だと思いました。

Linux系のOSやプログラミングが一切未経験という方が読んでも分かるように説明がされており、分かりやすい説明の見本としても秀逸なのではないかと思います。

そしてこの書籍に関しては書籍の内容と連動したパーツセットが秋月電子通商で販売されていて、これも便利です。電子工作部品は規格が分かりにくく、慣れていないと必要な部品を揃えるのが難しいと思います。

私は過去に作ろうと思った物の部品に発注忘れや発注間違いがあって何度も注文したり、必要な部品の最低発注数量が数百個となっていたりで困った記憶があります。

この点、この書籍連動パーツセットを買えば過不足なく部品が入っていて書籍の内容を全てこなせますし、書籍の内容を終えたら部品を別の用途にそのまま転用できるので無駄がなく便利です。いきなりアラカルトで部品を揃えるより確実にオススメできます。

プログラミングの入門にも

書籍の内容はRaspberry Pi上で動くPythonのプログラムを使ってLEDを光らせたり画像を取得したりするといった内容です。

現実世界にプログラムで指示したことが反映されるので、学習初期にありがちな”プログラムで何をしたらいいか分からない”や”プログラムで文字が表示されても別に面白くない”といった問題を解決できます。学習者のモチベーション維持に非常に良いのではないかと思います。