Kategorie: Allgemeines

Lichtsensor: BH1750 (GY-30)

Voraussetzungen

Modul verbinden

GND –> Ground
VCC –> 3.3V
SDA –>GPIO2
SCL –> GPIO3
ADDR –> nicht benötigt

Quelltext für Python

#!/usr/bin/python
import smbus
import time
 
# Define some constants from the datasheet
 
DEVICE     = 0x23 # Default device I2C address
 
POWER_DOWN = 0x00 # No active state
POWER_ON   = 0x01 # Power on
RESET      = 0x07 # Reset data register value
 
# Start measurement at 4lx resolution. Time typically 16ms.
CONTINUOUS_LOW_RES_MODE = 0x13
# Start measurement at 1lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
# Start measurement at 0.5lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_1 = 0x20
# Start measurement at 0.5lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_2 = 0x21
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_LOW_RES_MODE = 0x23
 
#bus = smbus.SMBus(0) # Rev 1 Pi uses 0
bus = smbus.SMBus(1)  # Rev 2 Pi uses 1
 
def convertToNumber(data):
  # Simple function to convert 2 bytes of data
  # into a decimal number
  return ((data[1] + (256 * data[0])) / 1.2)
 
def readLight(addr=DEVICE):
  data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1)
  return convertToNumber(data)
 
def main():
 
  while True:
    print "Light Level : " + str(readLight()) + " lx"
    time.sleep(0.5)
   
if __name__=="__main__":
   main()

 

Quellen

Programmierung: Was kommt wohin?

Eine Frage, die ich mir zwischenzeitig auch gestellt habe ist, wo programmiere ich eigentlich meine ganzen Funktionen. Ein Logik-Server kann sich natürlich um alles kümmern. Es hat halt nur den Nachteil: wenn der ausfällt, fallen alle darüber geregelten Funktionen aus. Bei der einen oder anderen Sache wäre das nicht so schlimm. Bei der anderen um so fataler.

Ein Blick ins KNX-User-Forum brachte mir diesen Thread. Dort folgt als Fazit: Sicherheitsrelevante bzw. kritische Grundfunktionen gehören bei KNX als dezentrales System auch dezentral programmiert. Sprich die Lichtschaltung sollte auch bei ausgefallenem Logik-Server noch funktionieren. Szenen sind eher als Komforfunktion anzusehen, daher gehören diese auch auf den Logik-Server.

Eine weitere sicherheitsrelevante Anregung in dem Zusammenhang war z.B. noch: was passiert, wenn die Wetterstation die 300km/h Windgeschwindigkeit nicht mehr melden kann? Eine zweite Sicherheitsebene könnte genau das überprüfen und im Zweifel die Rollos hochfahren.

Smarthome Projekt

Hallo! In Kürze starte ich hier einen Blog zu meinem Smart Home Projekt. Ich werde euch an meiner Umsetzung meines „Smart homes“ teilhaben lassen. Durch Fotostrecken, How To’s und Technikberichte möchte ich auch euch das Smart Home schmackhaft machen. Unter anderem werden folgende Techniken/Themen behandelt:

  • KNX
  • DALI
  • 1-WIRE
  • Homematic

Stay tuned!

© 2024 Smarthome

Theme von Anders NorénHoch ↑