#author("2019-06-19T09:17:59+00:00","","") #author("2019-06-19T09:20:38+00:00","","") [[小野田]] モザイク処理 moazaiku.py センサ収集 python get_data.py アルディーノのセンサデータ順番 なんのデータか不明 arduino 0 = arduino 1 = mac からvnc https://darmus.net/raspberry-pi-mac-vnc/ GPS取得できない=>窓にモジュール出して10分まつ 山本くんの使っているセンサ取得ソースにライブラリを加えたもの #ref(filesketch_jun14a.zip); ** IoTデータフロー可視化のプロトタイピング用の強力なライブラリ [#d95c6621] https://nodered.org/docs/hardware/raspberrypi 日本語でのラズパイ連携法 https://qiita.com/utaani/items/7155c62d6c5e96822afb ** server.py [#a29541d2] # -*- Coding: utf-8 -*- import socket import csv from graph_maker import SubGraph, GraphManager, calc_grid, auto import matplotlib.pyplot as plt import sys import numpy as np class SensaData(): def __init__(self): # 温度 self.temperature = [0 for i in range(10)] # 湿度 self.humidity = [0 for i in range(10)] # 気圧 self.atmospheric_pressure = [0 for i in range(10)] # 照度 self.illuminance = [0 for i in range(10)] # 人感 self.motion_detector = [0 for i in range(10)] # 加速度 self.acceralation_x = [0 for i in range(10)] self.acceralation_y = [0 for i in range(10)] self.acceralation_z = [0 for i in range(10)] # 角速度 self.angular_velocity_x = [0 for i in range(10)] self.angular_velocity_y = [0 for i in range(10)] self.angular_velocity_z = [0 for i in range(10)] # 磁気コンパス (表示しない) self.compass_x = [0 for i in range(10)] self.compass_y = [0 for i in range(10)] self.compass_z = [0 for i in range(10)] # 体温 self.body_temperature = [0 for i in range(10)] # 心拍 self.heart_beat = [0 for i in range(10)] # GSR # self.gsr = [0 for i in range(10)] def update(self, datum_list): self.temperature.append(datum_list[0]) self.humidity.append(datum_list[1]) self.atmospheric_pressure.append(datum_list[2]) self.illuminance.append(datum_list[3]) self.motion_detector.append(datum_list[4]) self.acceralation_x.append(datum_list[5]) self.acceralation_y.append(datum_list[6]) self.acceralation_z.append(datum_list[7]) self.angular_velocity_x.append(datum_list[8]) self.angular_velocity_y.append(datum_list[9]) self.angular_velocity_z.append(datum_list[10]) self.compass_x.append(datum_list[11]) self.compass_y.append(datum_list[12]) self.compass_z.append(datum_list[13]) self.body_temperature.append(datum_list[14]) self.heart_beat.append(datum_list[15]) # self.gsr.append(datum_list[16]) # pop self.temperature.pop(0) self.humidity.pop(0) self.atmospheric_pressure.pop(0) self.illuminance.pop(0) self.motion_detector.pop(0) self.acceralation_x.pop(0) self.acceralation_y.pop(0) self.acceralation_z.pop(0) self.angular_velocity_x.pop(0) self.angular_velocity_y.pop(0) self.angular_velocity_z.pop(0) self.compass_x.pop(0) self.compass_y.pop(0) self.compass_z.pop(0) self.body_temperature.pop(0) self.heart_beat.pop(0) # self.gsr.pop(0) def get_all(self): return [self.temperature, self.humidity, self.atmospheric_pressure, self.illuminance, self.motion_detector, self.acceralation_x, self.acceralation_y, self.acceralation_z, self.angular_velocity_x, self.angular_velocity_y, self.angular_velocity_z, self.compass_x, self.compass_y, self.compass_z, self.body_temperature, self.heart_beat] # the number of sensa NUM_SENSOR = 14 NUM_GRAPH = 17 SEC = 1 net = socket.gethostbyname_ex(socket.gethostname())[2] if len(net) == 0: raise OSError print('available to connect:',net[0]) times = [0 for i in range(10)] sensa = SensaData() cnt = 0 t = 0 # グラフの初期化 g1 = SubGraph(y_lim=(0,40), title="Temperature") g2 = SubGraph(title="Humidity") g3 = SubGraph(y_lim=(900,1100), title="Atmospheric Pressure") g4 = SubGraph(y_lim=(250,350), title="Illuminance") g5 = SubGraph(y_lim=(-0.1,1.1), title="Motion") g6 = SubGraph(y_lim=(-50,50), title="Acc x") g7 = SubGraph(y_lim=(-50,50), title="Acc y") g8 = SubGraph(y_lim=(-50,50), title="Acc z") g9 = SubGraph(y_lim=(-5,5), title="Angular x") g10 = SubGraph(y_lim=(-5,5), title="Angular y") g11 = SubGraph(y_lim=(-5,5), title="Angular z") g12 = SubGraph(y_lim=(0,1000), title="Compass x") g13 = SubGraph(y_lim=(0,1000), title="Compass y") g14 = SubGraph(y_lim=(0,1000), title="Compass z") g15 = SubGraph(y_lim=(30,45), title="Body Temperature") g16 = SubGraph(y_lim=(50,250), title="Hurt Beat") #g17 = SubGraph(y_lim=(400,600), title="GSR") #graphs = auto(NUM_GRAPH) graphs = [g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g16] GM = GraphManager(*graphs) GM.init_plot() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((net[0], 50007)) s.listen(1) while True: conn, addr = s.accept() with conn: try: while True: data = conn.recv(1024) if not data: break decoded_data = data.decode() datum_list = decoded_data.split(',') datum_list = [float(i) for i in datum_list] print(datum_list) print(type(datum_list[0])) # update values t += SEC times.append(t) times.pop(0) sensa.update(datum_list[:-1]) ys = sensa.get_all() GM.set_alldata(times, *ys) GM.pause(1.0) # with open('sample_writer_row.csv', 'a', newline='') as f: # writer = csv.writer(f) # writer.writerow(decoded_data) conn.sendall(b'Received: '+ data) except KeyboardInterrupt: print('Save all data') sensa.save() sys.exit() ** ソースコード [#i313d478] #ref(server2.py);