こんばんは 久しぶりの投稿で、 タイトル思いつかなかったのでハンターハンターのようなタイトルですが。 RaspberryPiを使った簡単なIoTのソースを作成しました。 具体的な説明はその2で行いますが送信側と受信側のソースを張ります。
送信側(光検知用ソース(getLightSensor.py)) 送信側ソースですが、1秒ごとに光を検知し、 一定時間指定の明るさの値を検出したら受信側にWebSocket通信で送信します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import grovepi #GrovePIを使う際のモジュール import time import asyncio import ws_send as ws #WebSocket送信用モジュール ALERT_MESSAGE = "ラズパイからのalert!!" ALERT_CNT = 600 #検出秒を指定(例として600秒(10分)) light_sensor_port = 1 grovepi.pinMode(light_sensor_port,"INPUT") #検知秒数 cnt = 0 while True: try: #初期化 sensor_value = 0.0 resistance = 0.0 #光測定 sensor_value = grovepi.analogRead(light_sensor_port) print(sensor_value) if sensor_value > 500: #測定値が500の場合、明るいと判断とする。 cnt += 1 else: #一度でも500未満の場合は、リセットする。 cnt = 0 if cnt == ALERT_CNT: #明るい時が指定秒(10分)経った場合は、アラート。 print(ALERT_MESSAGE) asyncio.run(ws.alert_send(ALERT_MESSAGE)) print("送信完了") cnt = 0 time.sleep(1) #1秒停止 except KeyboardInterrupt: break except (IOError,TypeError) as e: print("Error: "+str(e)) break
送信側(WebSocket送信用モジュール(ws_send.py)) 1 2 3 4 5 6 7 import asyncio import websockets async def alert_send(message): uri = "ws://192.168.xxx.xxx:xxxx" #送信先アドレス async with websockets.connect(uri) as websocket: await websocket.send(message)
受信側(socketReceiver.py) 受信サーバーを起動し、送信側からWebSocket通信で送られたら 受信します。 受信した際はコンソール出力として “受信した内容:ラズパイからのalert!!”と表示され、光検知したら受信側(別PC)に送信されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import asyncio import websockets import time async def accept(websocket, path): #受信を待つ print("受信待機中・・・") message = await websocket.recv() print("受信した内容:"+message) while True: str = input("please key.....") if str == 'quit': #quit入力したらwebsocket終了 await websocket.close() print("サーバーを閉じました") asyncio.get_running_loop().stop() time.sleep(3) return else: #そのまま入力したら再度受信待ちへ break def main(): start_server = websockets.serve(accept, "192.168.xxx.xxx", xxxx) #受信側のIPアドレスとポート番号を記載し、サーバーを立ち上げる print("サーバー起動") asyncio.get_event_loop().run_until_complete(start_server) if not (asyncio.get_event_loop().is_closed()): asyncio.get_event_loop().run_forever() print("終了") main()
ひとまず今日は夜中なのでこれまで 続き(詳しいこと)は今週末に書こうかと思います。
お疲れ様でした。
今回の記事のオススメ曲 VIDEO
Lotus Juiceといえばペルソナシリーズの楽曲で歌ってるラッパーです。 この曲はLotus Juiceさんのアルバムに収録されてる曲です。 いやーかっこいいですね。 では、また次回。