Umweltstation

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

Umweltstation Anleitung

Hier erfährst du, wie du eine kleine Umweltstation selbst aufbauen kannst. Es geht zum einen um die Umweltstation selbst und zum anderen um Services, welche exklusiv in Freifunk angeboten werden können.

Projekte anderer Communities zum Zeitunkt der Erstellung dieser Seite:

http://luftdaten.info/http://opendata-stuttgart.github.io/feinstaub-map/

https://www.hiveeyes.org/https://swarm.hiveeyes.org/grafana/dashboard/db/hiveeyes-labs-wedding?from=20160416&to=20160601

https://sensebox.de/https://opensensemap.org/

Prinzip

Es gibt viele Möglichkeiten für eine Umsetzung solch eines Vorhabens. Was wird benötigt?

  • Einen Computer.
    • RaspberryPi, Arduino, NodeMCU
  • Der Computer muss geeignete Schnittstellen besitzen.
    • UART, USB, GPIO, I2C, 1-Wire, SPI,
  • Sensoren
    • Temperatur, rel. Feuchte
      • DHT22 (größerer Messbereich!), DHT11
    • Luftdruck
      • BMP180
    • Licht
      • BH1750
    • Feinstaub
      • SDS021, SDS011
        • Hat eine begrenzte Lebensdauer!
        • Soll nur bis 70% rel. Luftfeuchte betrieben werden!
        • Braucht also eine Lufttrocknung! (20W-40W Lampe?)
    • Wind
      • Noch nicht festgelegt
    • UV-Licht
      • Siehe Sensoren in Sensebox
    • Farben
      •  ???
  • Schaltung bzw. Schaltplan
  • Firmware zur Datenerfassung
    • Raspbian, OpenWRT, Lede, Python-Script, Arduino.ino
  • Webseite mit Datenbank und Anzeigetools zur Anzeige
    • RoundRobin, MQTT


Beispiel Umweltstation 1

Hier sei die einfachste und erste umgesetzte Umweltstation beschrieben. Erhältlich sind diese Artikel fast alle bei Segor. Den Feinstaubsensor gibt es unkompliziert bei Alibaba. Preise sind stark gerundet. Stückliste:

  1. RaspberryPi(egal), SDCard(Raspbian), Netzteil(5V USB) (Segor ca. 50€)
  2. Adapter GPIOs BreadBoard oder Protoboard (Segor 5€ tbc.)
  3. DHT22 (Segor 9,50€)
  4. SDS011 (Alibaba 30€)
  5. pMOS IRF5305 (Segor 1,20€)
  6. nMOS IRLZ44N (Segor 0,80€)
  7. FlexJumper Weiblich/Männlich Männlich/Männlich Weiblich/Weiblich (Segor 3 x 2.50€, Amazon ist billiger)
  8. Lichtsensor (Segor 6,50€)
  9. Barometer BMP280/180 (Segor 4,80€)
  10. FlexJumper Kontakte (Segor 100Stück 5,20€)
  11. FlexJumper Gehäuse (Segor 0,80€ pro Stück)
  12. Dann braucht man noch 3 Farben von Litze 0,14mm²(Segor 10m 1,40€)
  13. Ein Gehäuse (mit Transparentem Deckel?) vielleicht PK 220 GT (Segor 26,90€)


Software auf Raspberry zum Auslesen der Sensoren

  • python
    • pyserial
    • paho-mqtt
    • Adafruit_DHT


Software auf Raspberry zum Anzeigen der Werte

Achtung, nicht jeder Raspberry benötigt eine Grafana, InfluxDB, Kotori Installation, sondern nur ein oder zwei. Der Berlin-Freifunk-Interne RaspberryPI mit der IP: 10.230.4.30 bietet den Service an. Ob er stabil laufen wird ist eine andere Frage.

Wenn jemand den Dienst neu aufsetzen will muss installiert werden.

  • Grafana
  • InfluxDB
  • Kotori
  • Mosquitto

nach der Anleitung unter http://www.hiveeyes.org

Beispiel für einen Service-Eintrag in Luci:

Unter /services/olsr_v4/plugins/namservice-plugin/

ein Feld "service" erzeugen mit folgendem Inhalt:

http://10.230.4.30:3000/dashboard/db/freifunk3ΙtcpΙFeinstaub

Python-Skript zum Auswerten der Sensoren

Das folgende Script wird noch abgewandelt bzw. läuft schon. Der Loop wird dann mittels Cron-Job sichergestellt. Dann bleibt das Script immer gleich, aber der Abstand kann in der crontab verändert werden. Dann läuft auch nicht sinnlos ein sleep(30000).




# -*- coding: utf-8 -*-
import serial,time,struct,sys,os,math,json,logging
import paho.mqtt.client as mqtt
import Adafruit_DHT
import RPi.GPIO as GPIO

logger=logging.getLogger(__name__)

sensor_args = { '11': Adafruit_DHT.DHT11,
                '22': Adafruit_DHT.DHT22,
                '2302': Adafruit_DHT.AM2302 }

sensor=22
pin=4
mqtt_host="localhost"
mqtt_topic=u'{realm}/{network}/{gateway}/{node}/message-json'.format(
   realm='hiveeyes',
   network='Freifunk3',
   gateway='Berlin-FH',
   node='Warschauer'
   )

pid=os.getpid()
client_id='{}:{}'.format('hiveeyes',str(pid))
backend=mqtt.Client(client_id=client_id,clean_session=True)
backend.connect(mqtt_host)

GPIO.setwarnings(False)

if(1):#try:
   GPIO.setmode(GPIO.BOARD)
   GPIO.setup(22,GPIO.OUT)
if(0):#except:
   print "Error in GPIO"
   print "GPIOs geöffnet"

seri=serial.Serial()
seri.port="/dev/ttyUSB0"
seri.baud=9600
seri.open()
seri.flushInput()
#print "Serial geöffnet"


byte,lastbyte="\x00","\x00"
while True:
  mittelwert=10.
  pm_25=0
  pm_10=0
  index=0
  humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
  if humidity is not None and temperature is not None:
    if (humidity<70):
       faktor=1
    else:
       faktor=1
    GPIO.output(22,GPIO.LOW)
    time.sleep(2)
    while index<mittelwert:
      lastbyte=byte
      if seri.inWaiting()>0:
        byte=seri.read(size=1)
        if lastbyte=="\xAA" and byte=="\xC0":
          index+=1
          #print pm_25,pm_10,index
          if seri.inWaiting()>0:
             sentence = seri.read(size=8)
             readings=struct.unpack('>BBBBBBcc',sentence)
             #print readings,index
             lb25=float(readings[0])
             hb25=float(readings[1])
             lb10=float(readings[2])
             hb10=float(readings[3])
             pm_25+=(hb25*256+lb25)/10.
             #print pm_25,index,lb25,hb25
             pm_10+=(hb10*256+lb10)/10.
             #print pm_10,index
    measurement={
    'Temperatur':float(temperature),
    'Feuchte':float(humidity),
    'Staub-PM25':float(pm_25/mittelwert),
    'Staub-PM10':float(pm_10/mittelwert)
    }
    #print measurement
    payload=json.dumps(measurement)
    backend.publish(mqtt_topic,payload)
    #print pm_25,pm_10,temperature, humidity
    GPIO.output(22,GPIO.HIGH)
    time.sleep(faktor*60-3)
backend.disconnect()

Aufbau zur Lufttrocknung

Der folgende Aufbau wurde realisiert, weil der Staubsensor empfindlich gegen Luftfeuchtigkeit reagiert.

Hier dargestellt das Resultat im Zusammenbau.

Zusammenbau

Hier dargestellt die Anbindung an die Elektronik.

Anbindung

Hier dargestellt der Einbau der Heizung.

  • Halogenstrahler 100W (Die Leistung kann durch Pulsbetrieb reduziert werden.) an Kabel gelötet und isoliert.
  • Halogenstrahler in Edelstahl-Abfluss-Rohr geschoben.
  • Abflussrohr in Abwasserrohr geschoben (von Dachrinne? kleinste Größe?)

Passt alles super genau. Das umgebördelte Ende hält die Position des Rohrs.

Heizung

Hier der Anbau des Lüfters mit Heisskleber.

Lüfter

Die Blindstopfen eignen sich super zum Bohren und Bearbeiten. Wenn man etwas falsch gemacht hat, muss man nicht das ganze Rohr wegschmeißen.

Brandschutz!

Es gibt eine Sache die sehr wichtig ist, dass ist die Sicherheit gegen Brand. Bei der Trocknung wird eine Lampe zur Enthalpieerhöhung verwendet. Die Leistung der Lampe wird innerhalb des Rohres festgehalten. Nur ein kleiner Lüfter soll die Luft bewegen. Das Rohr kann sich also aufheizen.

Warum ist das Thema so wichtig? Weil Relais aber auch Triac, Mosfet bzw. Thyristor unbemerkt kaputt gehen können. Der schlimmste Fall ist hier das verkleben der Kontakte oder der Kurzschluss im Halbleiter. Dann brennt die Lampe dauerhaft.

Um eine Sicherheit gegen Brand zu garantieren, können zwei Wege genommen werden.

  • Die Lampe hat ausreichend wenig Leistung, um dauerhaft brennen zu können (Worst-Case ist Sommer, Sonnenbeschienen).
  • Lampe hat mehr Leistung zum Verkürzen der Aufheizphase und wird nur kurz betrieben.
    • Es bedarf einer Sicherheitsabschaltung! Die Elektronik muss redundant aufgebaut werden, und darf sich nicht einschalten lassen, wenn ein Kreis defekt ist.

Bei einem Brand oder einem Schmelzen der Kunststoff-Hüllen kann es auch passieren, dass die Netzspannungskabel auf Stahl-Balkon-Brüstungen zum Liegen kommen. Hier muss vorerst jeder selbst sehen, wie das Thema zu lösen ist. Hier ist ein Fehlerstrom-Schutzschalter die Wahl, wenn man nicht weiter weiß.

Vorsicht vor Netzspannung!

In der hier vorgestellten Lufttrocknungsanlage wird mit Netzspannung gearbeitet. Netzspannung bei 230V erzeugt über den relativ konstanten Haut- und Körperwiderstand einen lebensgefährlichen Strom von über 30mA. Eine versehentliche Berührung mit spannungsführenden Teilen muss demnach ausgeschlossen werden. Zu diesem Zweck verwende ich nur handelsübliche Bauteile, wie Lüsterklemmen und entsprechende Lampen-Kabel mit entsprechend genormten Schukosteckern. Die Lüsterklemmen sollten innerhalb des Kunststoff-Gehäuses platziert werden. Zwischen Lüsterklemmen und Kabeldurchführung muss eine Zugentlastung sitzen. Das kann ein Knoten oder auch ein Doppelring sein. Beim Ab-isolieren darf die restliche Isolation nicht beschädigt werden. Es muss eine Zugentlastung vorgesehen werden. Das Gehäuse muss vor Regen Sicher sein. Wenn nicht garantiert werden kann, dass die Anlage voll Wasser läuft sei ein Fehlerstrom-Schutz-Schalter anzuwenden.



Beispiel mit Sensebox Hardware

tbd.

Beispiel mit Luftdaten.info Hardware

tbd.