Pārlūkot izejas kodu

上傳檔案到 'KDAIS1'

allen 4 gadi atpakaļ
vecāks
revīzija
d6b2c345c6
2 mainītis faili ar 125 papildinājumiem un 0 dzēšanām
  1. 54 0
      KDAIS1/get_cpuusage.py
  2. 71 0
      KDAIS1/udp_client.py

+ 54 - 0
KDAIS1/get_cpuusage.py

@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#pip3 install psutil
+#pip3 install gpiozero
+import psutil
+import time
+import os
+import datetime
+import requests
+import urllib
+import time
+from gpiozero import CPUTemperature
+path ="http://www.aisky.com.tw/field/reboot.php"
+nr = "GTW009002001"
+
+
+
+def get_cpuusage():
+  cpu_usage_core = psutil.cpu_count()
+  cpu_usage = psutil.cpu_percent(interval=0.3)
+  print('cpu count: {}'.format(cpu_usage_core))
+  print('cpu percent: {}'.format(cpu_usage))
+  
+  cpu = CPUTemperature()
+  cpu_temp = cpu.temperature
+  print('temperature is :{}'.format(cpu_temp))
+  
+  if  cpu_temp >= 70:
+      data = {'nr': nr, 'info': 'overheat', 'data': str(cpu_temp)}
+      data = urllib.parse.urlencode(data)
+      data = data.encode('utf-8')
+      req = urllib.request.Request(path, data)
+      req.add_header('User-Agent', 'Magic Browser')
+      resp = urllib.request.urlopen(req)
+      respData = resp.read()
+      print(data)
+      time.sleep(1)
+      os.system('sudo reboot')
+  elif cpu_usage > 60:
+      data = {'nr': nr, 'info': 'overload', 'data': str(cpu_usage)}
+      data = urllib.parse.urlencode(data)
+      data = data.encode('utf-8')
+      req = urllib.request.Request(path, data)
+      req.add_header('User-Agent', 'Magic Browser')
+      resp = urllib.request.urlopen(req)
+      respData = resp.read()
+      print(data)
+      time.sleep(1)
+      os.system('sudo reboot')
+
+
+while True:
+  get_cpuusage()
+  time.sleep(3)

+ 71 - 0
KDAIS1/udp_client.py

@@ -0,0 +1,71 @@
+import cv2
+import socket
+import math
+import pickle
+import sys
+import time
+import datetime
+
+#max_length = 65000
+max_length = 65000
+host =  "60.250.156.230"
+port = 8000
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+#cap = cv2.VideoCapture('rtsp://admin:admin@192.168.50.182/av2_0')
+#cap = cv2.VideoCapture('rtsp://admin:abcd1234@192.168.51.48/av2_0')
+cap = cv2.VideoCapture('rtsp://admin:abcd1234@169.254.185.181/av2_0')
+#cap = cv2.VideoCapture(0)
+ret, frame = cap.read()
+x = datetime.datetime.now()
+t=x.minute*60+x.second
+y = 0
+print(x)
+print(x.second)
+encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),75]
+while ret and (y-t)!=60:
+    # compress frame
+    #time.sleep(0.1)
+    z = datetime.datetime.now()
+    y = z.minute*60+z.second
+    frame = cv2.resize(frame, (240,180), interpolation=cv2.INTER_AREA)
+    retval, buffer = cv2.imencode(".jpg", frame,encode_param)
+
+    if retval:
+        # convert to byte array
+        buffer = buffer.tobytes()
+        # get size of the frame
+        buffer_size = len(buffer)
+
+        num_of_packs = 1
+        if buffer_size > max_length:
+            num_of_packs = math.ceil(buffer_size/max_length)
+
+        frame_info = {"packs":num_of_packs}
+        # send the number of packs to be expected
+        print("Number of packs:", num_of_packs)
+        sock.sendto(pickle.dumps(frame_info), (host, port))
+        
+        left = 0
+        right = max_length
+
+        for i in range(num_of_packs):
+            print("left:", left)
+            print("right:", right)
+
+            # truncate data to send
+            data = buffer[left:right]
+            left = right
+            right += max_length
+
+            # send the frames accordingly
+            sock.sendto(data, (host, port))
+
+    ret, frame = cap.read()
+    time.sleep(0.04)
+
+
+print("done")
+x = datetime.datetime.now()
+print(x)