こういった家ダッシュボードを運用している。 可視化はGrafana、データストアはInfluxdb 裏側のデータ収集のスクリプトはPython2で動いていたのだが、今回それのPython3移行対応をやった。特にスマートメーターからデータを引っこ抜くところが鬼門だったので記録しておく。 ちなみに使っているWi-SUNモジュールはテセラテクノロジーの RL7023 Stick-D/IPS というやつで、本体はPCは RaspberryPi 3B+ です。 移行するに至った理由 このスクリプトは数年以上安定して動いており、特に積極的に移行したい気持ちはなかった。しかし、このほどラズパイのSDカードが壊れた。 仕方なくOSごと再構築したところ各種バージョンがもろもろ上がってしまい、Python2はもはやデフォルトではインストールされなくなった。 この状態からPython2を使い続けようと思うならばソースからコンパイルという感じになるのだが、これはさすがに面倒だしもう未来がない。Dockerも考えたがラズパイにはストレージ消費が重い。 なのですっぱり諦めて、スクリプトの方をPython3対応に修正する方針に切り替えた。元はPython2.7あたりだったのを3.9に上げる感じになる。 ※上げること自体は目的ではなく安定稼働すればヨシなので最新にはしてない。OSにデフォルトで入っていたやつをそのまま使っている。 そもそもPython自体よくわからず雰囲気で書いている。最初にPython2を使ったのも、Qiitaにあったスマートメーターと通信するサンプルプログラムがPython2用で書かれていたというだけの理由だった。 移行作業その1:とりあえず自動変換をかける 2to3 --- Python 2 から 3 への自動コード変換 こういったものがあるので何も考えず全適用してみた。文字列置換でどうにかなる程度の修正を程度やってくれる感じ。 2to3 -n -w /path/to/target/dir/ こんな感じで実行する。 何が変わったのか差分を眺めてみると from __future__ import print_function が全面的に削除された for XXX in YYY が for XXX in list(YYY) に書き換えられた 同一モジュール内のimport文が
家で使っているペンダントライト(照明器具)の話。 星型で、名前もそのままエトワール ふだんの見た目は綺麗でよいのだが、圧倒的に掃除方法がわからない。 この複雑な形状をいいことにホコリがあちこちに蓄まる。困る。 ここがつらいよエトワールの掃除 複雑な多面体である 星の頂点が12あり、掃除すべき面の数は60 面ごとにガラスの裏表があるので掃除ポイントとしては倍の120 途中どこまで掃除済みなのか絶対にわからなくなる 調べたら 小星型十二面体 というやつらしい(FGOの聖晶石よりトゲトゲ多いです) 外にも内にもホコリが付着する 外はまだしも内は狭い隙間に手を入れて拭くしかなく、作業性が悪い 目に見えているホコリがガラスの裏表どちらに付着しているのかわからない あらゆる頂点が鋭角にできている 吊り下げ時の姿勢のままに自立できない 掃除の最中もガタガタ動くので割れないか心配になる そもそもガラスと真鍮の組み合わせがずっしり重い 内部に手を入れられる唯一の窓は、構造が悪い 掃除中にちょっと傾けるだけで、この窓がパカパカ開閉する 開閉のたび本体にぶつかるので割れそうで怖い ロック機構が脆弱なせいでぶつかったときに歪み、ロックできなくなる デザイン優先の構造 全体が溶接されていて分解もできない 電球ソケットも取り外せない ケーブルやチェーンやソケットがくっついたままの状態でしか掃除できない 結果、外して水ぶっかけ丸洗いみたいなことができない よくわからない角度でしか接地しない 試みた掃除方法 両手にニトリル手袋をつける → 平面ガラスに指紋がとても目立つので、皮脂がつかないように 洗剤としてバスマジックリンを採用 → 油性の汚れを落とすために洗剤を使ってみた → 以前ウェットティッシュやマイクロファイバークロスを試したが綺麗にならなかったので 少量の水と洗剤をつけたスポンジでランプシェードの内と外を拭く → 電装系が残ったままなので水は少なめ → ゴシゴシしすぎるとガラスが傷付きそうなので優しく 洗って絞ったスポンジで全体を乾拭きする → 水に弱そうなので、あらかじめできるだけ拭き取る キムワイプで全体をしっかり乾拭きする → ティッシュだと繊維ゴミがいっぱい付きそうなのでキムワイプ 一通り点検して、汚れや拭きムラを探しキムワイプで拭く で、どうなったか こうなった。 洗剤まで投入