前提・実現したいこと
Raspberry Pi Zero WHで、現在接続しているWiFiのSSIDと現在時刻を定期的にLCDに出力するプログラムを作成しています。
Pythonでコードを作成し、cronを使用して1分おきに処理(情報取得~LCD描画)を実行したいです。
発生している問題
RaspberryPi
1$ python3 lcd.py
LCD
1SSID: aterm-xxxxxxx 22021年10月25日 23:00
このコマンドで実行した場合は期待通りの動作をしてくれます。
しかし、cronで実行した場合、エラーにはなりませんがSSIDが取得できずに何も表示されません。
cron
1* * * * * python3 /home/pi/py/lcd.py
LCD
1SSID: 22021年10月25日 23:00
該当のソースコード
lcd.pyの内容は以下の通りです。
Python
1# -*- coding: utf-8 -*- 2import subprocess 3import board 4from PIL import Image, ImageDraw, ImageFont 5import adafruit_ssd1306 6import datetime 7 8i2c = board.I2C() 9oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c, addr=0x3c) 10 11# 現在日時取得 12dt_now = datetime.datetime.now( 13 datetime.timezone(datetime.timedelta(hours=9))) 14dispDatetime = dt_now.strftime('%Y年%m月%d日 %H:%M') 15 16# SSID取得 17cmd = 'iwconfig wlan0|grep ESSID' 18r = subprocess.Popen( 19 cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 20(stdout, stderr) = r.communicate() 21resStr = stdout.decode().rstrip() 22idx = resStr.find('ESSID:') 23dispSSID = resStr[idx + 7:-1] 24 25# Clear display. 26oled.fill(0) 27oled.show() 28 29# Create blank image for drawing. 30image = Image.new("1", (oled.width, oled.height)) 31draw = ImageDraw.Draw(image) 32 33font = ImageFont.truetype( 34 "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc", 12) 35font2 = ImageFont.truetype( 36 "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc", 12) 37 38# Draw the text 39draw.text((0, 0), "SSID: " + dispSSID, font=font, fill=255) 40draw.text((0, 18), dispDatetime, font=font2, fill=255) 41 42# Display image 43oled.image(image) 44oled.show() 45
試したこと
原因は何となくわかっていて、cronで実行した場合、iwconfigの標準出力が得られずにSSIDが空欄になってしまうことが原因だと思っています。
そこで以下のようなコマンドに変更してファイルから情報取得しようと思案し実行しましたが、cronによる起動で実行した場合は、やはりファイルに何も出力されません。
iwconfig wlan0|grep ESSID > /home/pi/py/iwconfig_dest.txt
このような場合、代替案が思いつかずアドバイスを頂戴したく存じます。
補足情報(FW/ツールのバージョンなど)
OSはRaspberry Pi OS Liteです。
シェル等の使用も検討してはいますが、シェルそのものにあまり知見がありません。
Pythonだけでどうにかしてしまうほうが作りはシンプルかなと思い暫く突き進んできたのですが、単純に私の知識が無いだけなのか、そういうものだと割り切って、さっさとシェル等の別モノに手を出すべきか躊躇しているところです。
情報の不足ございましたらお申し付けください。
あなたの回答
tips
プレビュー