2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

駐車場の「特定日料金」の罠を、Raspberry Piと電子ペーパーで回避する

2
Posted at

Gカレ1.jpg

駐車場の「特定日料金」の罠を、Raspberry Piと電子ペーパーで回避する

1. 悲劇の始まり:安さの裏にある「4倍の罠」

私が愛用している駐車場は、普段は1日300円と駐輪場も商売上がったりの安さなのです。しかし、そこには恐ろしい罠が。
近隣施設でイベントがある日だけ、料金が5倍(1,600円)に跳ね上がるのです。
                       ↑100円どこいった?

事前に施設のHPでイベント日を確認するなどの対策はしていましたが、人間は忘れる生き物。
「たまたま確認を怠った日」に限って特定日にぶち当たり、数回にわたって高額な代金を支払わされる悲劇に!

ああ、ラメーン何杯分だろうと

まくらを濡らすくらいなら。

そんなしがない動機で開発?は始まりました。

2. 完成した?システム

実装した主な機能

  • 特定日の赤字警告: カレンダーの予定に「警戒」などのキーワードがあれば、電子ペーパーの第2色(赤)で強調表示。
  • 詳細な天気予報: OpenWeatherMap APIから、最高/最低気温の「予想時刻」まで抽出して表示。6時間ごとの天気も。
  • Googleカレンダー同期: 直近の予定をリストアップし、時間ごとに整理。
  • 月間カレンダー: 今日の日付を黒丸で強調表示。

3. ハードウェア構成とDIYの工夫

Gカレ2.jpg

まず汚いですね。
江戸っ子なら卒倒するレベル。
強引の総合デパートです。
とりあえずホットボンドで固めてしまえ。
無理やりぶち込めば何とかなると遠い偉人は言いました。
うんうん。
終わり良ければ総て良し。

閑話休題

何故に所謂LCDではなく電子なペーパーにしたのか?
それは...
ちらつかない辞めれないかっぱえ...

画面焼き付きとか考慮

そして

かっこいい ←とても重要

ということで電子ペーパーを採用!

部品たち

部品ども 詳細
マイコン的な何か Raspberry Pi Zero 2W
ディスプレイ的な何か Waveshare 7.5インチ 電子ペーパー (https://ja.aliexpress.com/item/1005008130176175.html?channel=twinner)
フレーム的な何か 木製フォトフレーム的なダイソー的な+多分表のカバーのみ移植手術(ガラス、キャンドゥ)
裏ふた(黒)的な何か ダイソー的なアクセサリーケース(仕切り破壊+黒スプレー)
その他得体のしれない何か カインズで買ってきたアルミサッシ。裏ブタを止めるための金具となる。市販品でこんな小さな部品はなかなかない←ならば作る!(たぶんこれhttps://www3.roymall.jp/shop/g/grhc2-038125/) とおしゃれでない黄色のマスキングテープ(建築用、多分3M、建デポで買ったかもしれない)

DIYのポイント: 市販のフォトフレームをそのまま使うのではなく、とりあえずぶった切る。リューター便利。 以上


4. ソフトウェア実装のポイント

① 「最高気温が何時か」を計算 (weather.py)

OpenWeatherMapの hourly データを走査し、今日1日の中で最も気温が高くなる(または低くなる)時刻を特定したほうがいいかなと思いまして

# 24時間の予報データから最高・最低とその時刻を抽出
for hour_data in data['hourly']:
    dt_jst = datetime.fromtimestamp(hour_data['dt'], JST)
    if today_start <= dt_jst <= today_end:
        temp = Decimal(str(hour_data['temp'])).quantize(Decimal('0.1'))
        
        if temp < min_temp:
            min_temp = temp
            min_time = dt_jst.strftime('%H:%M')
        if temp > max_temp:
            max_temp = temp
            max_time = dt_jst.strftime('%H:%M')

② キーワードによる「Red警告」 (draw.py)

Googleカレンダーの予定名に「警戒」などが含まれている場合、

highlight_keywords = ["警戒", "特別", "重要"]

# スケジュール名にキーワードが含まれていれば赤色で描画
if any(keyword in s_name for keyword in highlight_keywords):
    self.draw_red.multiline_text(pos, text, font=self.get_font('ja', font_size), fill=COLORS['red'])

③ Pillowによる緻密なレイアウト描画らしい

画像を見ていただければわかる通り、今日の日付を強調するデザインや、天気アイコンと降水確率の配置など、Pillowを使って1ピクセル単位で調整しました。

# 今日の日付を黒い円(または角丸)で強調する実装例
self.draw_black.rounded_rectangle(
    [x0, y0, x1, y1],
    radius=corner_radius,
    fill=COLORS['black']
)
self.draw_black.text((center_x, center_y), day_text, font=font, fill=COLORS['white'], anchor='mm')


5. 運用と効果

運用方法

cron を使い、1時間に1回スクリプトを実行。念の為?正時1分に実行

導入後の変化

家を出る瞬間にデバイスをチラッと見るだけで、**「あ、今日は警戒日だ。あかんひ」**と瞬時に判断できるようになりました。
また、最高気温の予想時刻がわかるため、引きこもりのQOL爆上がり?かも、知らんけど

6. まとめ

技術は正義!

はい、すみません
ただこの記事書いている人只々はやりのAIに聞き倒して(Githubもパクッて)作っただけなので何も参考にならないと思いますが皆さんみたいなProは軽くできると思いますのでアイデアとして参考に

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?