GridEye: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 19: Zeile 19:
Mit diesem Python code kann aus den Sensordaten eine Heatmap generiert werden:
Mit diesem Python code kann aus den Sensordaten eine Heatmap generiert werden:
  <nowiki>
  <nowiki>
import paho.mqtt.client as mqtt
import paho.mqtt.client as mqtt
import numpy as np
import numpy as np
import math
import math
Zeile 60: Zeile 60:
</nowiki>
</nowiki>


[[Kategorie: Projekte]]
[[Kategorie:Projekte:Archiv]]

Aktuelle Version vom 11. Januar 2020, 13:17 Uhr

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")

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