工場をモニタリングしよう。遠隔モニタリングソフトウエアのソースを無料公開

さてみなさまこんにちは

まぶちでございますよ。

 

最近は、工場移転があり、まぁいろいろトラブってですね。

もう高嶋政伸が【ねぇさん。】言うくらいの確率で事件が起こりますよね。

 

想定外のことがいろいろ起こるんです。

 

 

さて、工場の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など増加させてください。

画面がカクつきますが、負荷を低減できます。

 

③最近抜け毛が気になる。

薬用紫電改を処方します。
(なんの話だバカッ‼)

 

ではまた~

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)