GridEye

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Version vom 6. Juni 2017, 23:54 Uhr von Nikla (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „GridEye Sensoren, um im Entropia eine Heat-Heatmap zu erzeugen, Projekt gebastelt von Nikla. ====Doku==== Die aus dem GridEye…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

GridEye Sensoren, um im Entropia eine Heat-Heatmap zu erzeugen, Projekt gebastelt von Nikla.

Doku

Die aus dem GridEye Sensor ausgelesenen Daten können per MQTT (mqtt://vielseitigkeit.club.entropia.de) unter dem Topic /sandkasten/grideye/optionsraum abgerufen werden.

Der bisher einzige Sensor ist temporär im hauptraum unter Stahlträger montiert und pushed sekündlich seine Werte als Temperatur / Pixel * 4 in Grad Celsius.

TODO:

  • Mehr Sensoren (einen pro Raumsegment)
  • Bessere Befestigung (müssen höher gehängt werden für volle Abdeckung des Raums)
  • Schickes Webinterface zur Datenauswertung
  • Personenzählen mit integration in Clubstatus

Beispielcode

Mit diesem Python code kann aus den Sensordaten eine Heatmap generiert werden: import paho.mqtt.client as mqtt import numpy as np import math import matplotlib.pyplot as plt import seaborn as sns

def on_connect(client, userdata, flags, rc):

   print("Connected with result code "+str(rc))
   client.subscribe("/sandkasten/grideye/optionsraum")
  1. The callback for when a PUBLISH message is received from the server.

def on_message(client, userdata, msg):

   #print(str(msg.payload))
   words = str(msg.payload).split(",")
   words.pop(0)
   words.pop(64)
   #print(words)
   
   x_list = words
   x = np.array((x_list))
   x_res=x.reshape(8,8)
   fig, ax = plt.subplots(figsize=(15,15))
   x_res = x_res.astype(float)
   x_res = x_res / 4
   print(x_res)
   sns.heatmap(x_res, square=True, ax=ax, annot=True, fmt=".2f")
   plt.yticks(rotation=0,fontsize=16);
   plt.xticks(fontsize=12);
   plt.tight_layout()
   plt.savefig('colorlist.png')

client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message

client.connect("vielseitigkeit.club.entropia.de", 1883, 60)

client.loop_forever()