工場をモニタリングしよう。遠隔モニタリングソフトウエアのソースを無料公開
さてみなさまこんにちは
まぶちでございますよ。
最近は、工場移転があり、まぁいろいろトラブってですね。
もう高嶋政伸が【ねぇさん。】言うくらいの確率で事件が起こりますよね。
想定外のことがいろいろ起こるんです。
さて、工場のIOTについては進捗がすこしだけありましたので。
ラズパイでつかえるIOTモニタリングアプリを製作したので、そのソースコードを公開していこうと思います。
ラズベリーパイで、使用できます。
こんな感じ。ボタンで遠隔モニタリングをスタート・停止・キャプチャ保存ができます。
Pythonにopencvと、pillowのライブラリをインストールする必要があります。
※分からない人はコメントに乗せてください。解答ができます。
モニタリングソフト・ビジョンアシストV2
import cv2
#cv2をインポート
import tkinter as tk
#tkinterをインポートし、tkと省略
from PIL import Image, ImageTk
#PILライブラリをインポート
class CameraApp:
def __init__(self, video_source=0):
self.cap = cv2.VideoCapture(video_source)
self.root = tk.Tk()
self.root.geometry('800x800')
#800×800はモニタのサイズを変更できる。
self.root.title("TOMTOKOGYO.Camera App")
self.canvas = tk.Canvas(self.root, width=self.cap.get(cv2.CAP_PROP_FRAME_WIDTH), height=self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.canvas.pack(side=tk.TOP)
self.btn_start = tk.Button(self.root, text="モニタリングスタート", command=self.start_capture)
#モニタリングスタートは、ボタン名
self.btn_start.pack(side=tk.LEFT, pady=10, padx=10)
self.btn_stop = tk.Button(self.root, text="モニタリングストップ", command=self.stop_capture, state=tk.DISABLED)
#モニタリングストップは、ボタン名
self.btn_stop.pack(side=tk.LEFT, pady=10, padx=10)
self.btn_snapshot = tk.Button(self.root, text="キャプチャ", command=self.snapshot)
#モニタリングストップは、ボタン名
self.btn_snapshot.pack(side=tk.LEFT, pady=10, padx=10)
self.is_capturing = False
self.delay = 25
#delay(ディレイ)の数値をかえることで、更新頻度を変更
self.update()
self.root.deiconify()
self.root.mainloop()
def update(self):
if self.is_capturing:
ret, frame = self.cap.read()
if ret:
self.photo = ImageTk.PhotoImage(image=Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)))
self.canvas.create_image(0, 0, image=self.photo, anchor=tk.NW)
self.root.after(self.delay, self.update)
def start_capture(self):
self.is_capturing = True
self.btn_start.config(state=tk.DISABLED)
self.btn_stop.config(state=tk.NORMAL)
def stop_capture(self):
self.is_capturing = False
self.btn_start.config(state=tk.NORMAL)
self.btn_stop.config(state=tk.DISABLED)
def snapshot(self):
ret, frame = self.cap.read()
if ret:
cv2.imwrite("snapshot.png", cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
if __name__ == '__main__':
app = CameraApp()
トラブルシューティング
①ボタンが表示されない。
ラズパイ端末の解像度を変更してください。
②すぐに端末が落ちてしまう。
self.delay = 25
の値の25を50や100など増加させてください。
画面がカクつきますが、負荷を低減できます。
③最近抜け毛が気になる。
薬用紫電改を処方します。
(なんの話だバカッ‼)
ではまた~