#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);

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS