Energieseminar / Inselfitness

1 stars 3 forks source link

RaspberryPi #3

Open FelixMau opened 11 months ago

FelixMau commented 11 months ago

Um eine alternative Infrastruktur zu erstellen welche nur Arduino und RaspberryPi beinhaltet, gibt es mehrere Schritte, die wir beachten sollten:

  1. Hardware-Verbindung:

    • Dies kann über USB, serielle Verbindung (UART) oder andere Kommunikationsprotokolle erfolgen, abhängig von den verwendeten Modellen und Komponenten. Das Setup erscheint mir hier recht einfach und stabil zu sein.
  2. Arduino-Code:

    • Wir müssten einen Arduino-Code schreiben, der die Messdaten liest und über die serielle Schnittstelle an den Raspberry Pi sendet. Hier ist ein einfaches Beispiel mit einem analogen Sensor:

      void setup() {
      Serial.begin(9600);
      }
      
      void loop() {
      int sensorValue = analogRead(A0);
      Serial.println(sensorValue);
      delay(1000); // Optional: Verzögerung zwischen den Messungen
      }

      Ich denke dies wäre ebenfalls simpel und leicht nachzuvollziehen! Wichtig wäre hier sich ein Datenmodell zu überlegen.

  3. Raspberry Pi Setup:

    • Auf dem Pi könnten wir mit Raspian arbeiten
  4. Python-Skript auf dem Raspberry Pi:

    • Mit dem Raspberry können wir dann die Daten in pyhton verarbeiten und abrufen

      Installieren von PySerial mit dem Befehl:

      pip install pyserial
    • Beispielcode:

      import serial
      
      ser = serial.Serial('/dev/ttyUSB0', 9600)  # Überprüfe den Port entsprechend
      
      while True:
       data = ser.readline().decode('utf-8').strip()
       print("Received data:", data)
       # Hier kannst du den Code hinzufügen, um die Daten zu verarbeiten und auf den Webserver hochzuladen
  5. Apache Webserver: Hier hatte Thai schon einen Webserver mit den Eduroam spezialitäten erstellt?

  6. Webseite erstellen:

    • Das Pythonscript kann dann mit einem Cronjob eine einfache HTML-Seitee erstellen, die die Messdaten darstellt.
    • Diese müssen wir dann im Verzeichnis des Apache-Webservers (normalerweise unter /var/www/html/) platzieren.
    • Alternativ kann dafür auch Streamlit genutzt werden welche die Datenverarbeitung und Websiteerstellung komplett übernimmt, dafür ist man hier etwas unflexibel. Die Website erreicht man dann über den localhost bzw. indem man Apache einfach auf einen anderen Port umleitet.
FelixMau commented 11 months ago

Ich schalge folgenden Workflow für den Raspberry code vor:

  1. Code kann jeder im Team hier entwickeln.
  2. Der Code wird im main Branch auf Git im RaspberryPi Ordner verwaltet
  3. Über git pull wird das entsprechende Skript auf den Pi gezogen
  4. das Git Konto ist das Energieseminar Konto

Um den Raspberry Pi aufzusetzen habe ich

FelixMau commented 10 months ago

Conda has shown to be to much of an overkill since there has been trouble installing it properly Streamlit is also not used since dash has more options and the refreshrates can be set manually as well as trigger regulary to read from Serial.

FelixMau commented 10 months ago

To Fix on next meeting:

FelixMau commented 9 months ago

After realising #7 problem updating RaspberryCode is necessary.

Code is splitted into read_serial.py and app.py

read_serial.py reads saved logging data that is created via grabserial and moreover refines and aggregates data on daily basis (see #9)

app.py converts the data into dashboard webpage and triggers data manipulation.