AVR-NET-IO als Gewächshaussteuerung

Hallo AVR-Freunde,

diesmal möchte ich von meiner Gewächshaussteuerung berichten:

Gewächshaus

Diese basiert auf der AVR-NET-IO Platine von Pollin (hier im Versuchsaufbau):

AVR-NET-IO Versuchsaufbau

Dabei deckt die Steuerung folgende Bereiche ab:

Schema Gewächshaussteuerung

  • Sonsoren:
    • Temperatur (aussen und innen)
    • Luftfeuchte (innen)
    • Helligkeit (innen)
    • Fenster und Tür
  • Aktoren:
    • Lüftung
    • Lüftungsklappe
    • Heizung
    • Luftbefeuchtung
    • Pflanzenlicht
    • Beschattung
    • Bewässerung

Sensoren werden ein SHT-71 (Temperatur und Luftfeuchte) für innen und ein DS1820 (1-Wire) für aussen verwendet. Sowie ein Fotowiderstand zur Messung der Helligkeit bzw. Sonneneinstrahlung.
Die Öffnungszustände der Fenster und Türen erfolgen durch Microschalter.

Die Parameter der Steuerung sind kompfortabel über eine Web-Seite aus einstellbar:

Webseite Steuerung

Die gemessenen Werte werden über eine Daten-Webseite daten.html mit einem PHP-Script ausgelesen und in eine mySQL-Datenbank gespeichert, um sie als jpgraph-Diagramme (über 24h, 48h, Woche, Monat) auswerten zu können.

AVR-NET-IO als Gewächshaussteuerung weiterlesen

Werte als JpGraph Digramm darstellen

Historische Werte lassen sich zum Beispiel mit JpGraph als Diagramm darstellen.

Dazu benötigt man lediglich die JpGraph Lib und eine PHP-Datei, die das Bild generiert.

Hier ein Beispiel eines 48 Stunden Digramms für 2 Werte (Temperatur und Luftfeuchte):

Dieses PHP-Skript wird dann ganz einfach in eine HTML-Seite als IMG-Tag

<img href="jpgraph_48h.php">

mit eingebunden.

Das generierte Diagramm sieht dann z.B. so aus:

EIB-Visualisierung mit PHP

Ich habe meine EIB Heizungs Steuerung mit PHP und linKNX visualisiert!

Für die Anzeige verwende ich ein Bild, welches ich selbst erstellt habe und meine Heizungsanlage darstellt:

heizung

Darauf habe ich an den Stellen, wo die Werte erscheinen sollen entsprechende Layer (DIV) deviniert, in denen die Werte dargestellt werden sollen.

In den Layern wird eine get-Funktion mit
<?php getEibValue(‚temp_speicher‘); ?>
aufgerufen und gibt zur Laufzeit dann den Wert aus.

Bei den Ventilen und Pumpen wird der aktuelle Zustand angezeigt und kann durch klicken auf den Wert verändert werden. Dabei wird eine set-Funktion
<?php setEibValue(‚pumpe_ofen‘,1); ?>
aufgerufen, die den Wert an den EIB-Bus schickt.

Beschreibung der Funktionen

Neben der Visualisierung der Zustände und Werte lasse ich noch die gesammelten Temperatur-Werte als Diagramm darstellen.

Die Diagramme erstelle ich dynamisch für verschiedene Zeitintervalle (24h, 48h, Woche, Monat und Jahr):

Heizung Graph 24h
24 Stunden

48 Stunden
48 Stunden

1 Woche
1 Woche

1 Monat
1 Monat

Wie dies funktioniert, siehe: Werte als Diagramm darstellen

EIB-Werte sammeln

Um z.B. Temperatur-Werte historisch zu halten und darstellen zu können, habe ich ein PHP-Skript update.php programmiert, welches mir Werte z.B. von linKNX ausliest und mit einem timestamp in eine mySQL Datenbank (mySQL ist auch auf dem NAS DS209) schreibt:

Dieses PHP-Skript wird per cron-Job mit

wget http://localhost/update.php

alle 10 Minuten auf dem NAS DS209 aufgerufen.

Somit habe ich eine Historie mit einer Auflösung von 10 Minuten in der mySQL-Datenbank.

Auswerten lässt sich diese Historie z.B. mit Digrammen, wie dies funktioniert, steht hier:
Werte als Diagramm darstellen