from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_ambient_light import BrickletAmbientLight # Callback function for illuminance reached callback (parameter has unit Lux/10) def cb_illuminance_reached(illuminance): print("Illuminance: " + str(illuminance / 10.0) + " Lux") print("Too bright, close the curtains!") if __name__ == "__main__": ipcon = IPConnection() # Create IP connection al = BrickletAmbientLight(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Get threshold callbacks with a debounce time of 10 seconds (10000ms) al.set_debounce_period(10000) # Register illuminance reached callback to function cb_illuminance_reached al.register_callback(al.CALLBACK_ILLUMINANCE_REACHED, cb_illuminance_reached) # Configure threshold for illuminance "greater than 200 Lux" (unit is Lux/10) al.set_illuminance_callback_threshold(">", 200 * 10, 0) raw_input("Press key to exit\n") # Use input() in Python 3 ipcon.disconnect()
class WeatherStation: HOST = "localhost" PORT = 4223 ipcon = None lcd = None al = None al_v2 = None hum = None hum_v2 = None baro = None def __init__(self): self.xively = Xively() self.ipcon = IPConnection() while True: try: self.ipcon.connect(WeatherStation.HOST, WeatherStation.PORT) break except Error as e: log.error('Connection Error: ' + str(e.description)) time.sleep(1) except socket.error as e: log.error('Socket error: ' + str(e)) time.sleep(1) self.ipcon.register_callback(IPConnection.CALLBACK_ENUMERATE, self.cb_enumerate) self.ipcon.register_callback(IPConnection.CALLBACK_CONNECTED, self.cb_connected) while True: try: self.ipcon.enumerate() break except Error as e: log.error('Enumerate Error: ' + str(e.description)) time.sleep(1) def cb_illuminance(self, illuminance): if self.lcd is not None: text = 'Illuminanc %6.2f lx' % (illuminance / 10.0) self.lcd.write_line(0, 0, text) self.xively.put('AmbientLight', illuminance / 10.0) log.info('Write to line 0: ' + text) def cb_illuminance_v2(self, illuminance): if self.lcd is not None: text = 'Illumina %8.2f lx' % (illuminance / 100.0) self.lcd.write_line(0, 0, text) self.xively.put('AmbientLight', illuminance / 100.0) log.info('Write to line 0: ' + text) def cb_humidity(self, humidity): if self.lcd is not None: text = 'Humidity %6.2f %%' % (humidity / 10.0) self.lcd.write_line(1, 0, text) self.xively.put('Humidity', humidity / 10.0) log.info('Write to line 1: ' + text) def cb_air_pressure(self, air_pressure): if self.lcd is not None: text = 'Air Press %7.2f mb' % (air_pressure / 1000.0) self.lcd.write_line(2, 0, text) self.xively.put('AirPressure', air_pressure / 1000.0) log.info('Write to line 2: ' + text) temperature = self.baro.get_chip_temperature() / 100.0 # \xDF == ° on LCD 20x4 charset text = 'Temperature %5.2f \xDFC' % temperature self.lcd.write_line(3, 0, text) self.xively.put('Temperature', temperature) log.info('Write to line 3: ' + text.replace('\xDF', '°')) def cb_enumerate(self, uid, connected_uid, position, hardware_version, firmware_version, device_identifier, enumeration_type): if enumeration_type == IPConnection.ENUMERATION_TYPE_CONNECTED or \ enumeration_type == IPConnection.ENUMERATION_TYPE_AVAILABLE: if device_identifier == LCD20x4.DEVICE_IDENTIFIER: try: self.lcd = LCD20x4(uid, self.ipcon) self.lcd.clear_display() self.lcd.backlight_on() log.info('LCD 20x4 initialized') except Error as e: log.error('LCD 20x4 init failed: ' + str(e.description)) self.lcd = None elif device_identifier == BrickletAmbientLight.DEVICE_IDENTIFIER: try: self.al = BrickletAmbientLight(uid, self.ipcon) self.al.set_illuminance_callback_period(1000) self.al.register_callback(self.al.CALLBACK_ILLUMINANCE, self.cb_illuminance) log.info('Ambient Light initialized') except Error as e: log.error('Ambient Light init failed: ' + str(e.description)) self.al = None elif device_identifier == BrickletAmbientLightV2.DEVICE_IDENTIFIER: try: self.al_v2 = BrickletAmbientLightV2(uid, self.ipcon) self.al_v2.set_configuration( self.al_v2.ILLUMINANCE_RANGE_64000LUX, self.al_v2.INTEGRATION_TIME_200MS) self.al_v2.set_illuminance_callback_period(1000) self.al_v2.register_callback( self.al_v2.CALLBACK_ILLUMINANCE, self.cb_illuminance_v2) log.info('Ambient Light 2.0 initialized') except Error as e: log.error('Ambient Light 2.0 init failed: ' + str(e.description)) self.al_v2 = None elif device_identifier == BrickletHumidity.DEVICE_IDENTIFIER: try: self.hum = BrickletHumidity(uid, self.ipcon) self.hum.set_humidity_callback_period(1000) self.hum.register_callback(self.hum.CALLBACK_HUMIDITY, self.cb_humidity) log.info('Humidity initialized') except Error as e: log.error('Humidity init failed: ' + str(e.description)) self.hum = None elif device_identifier == BrickletHumidityV2.DEVICE_IDENTIFIER: try: self.hum_v2 = BrickletHumidityV2(uid, self.ipcon) self.hum_v2.set_humidity_callback_configuration( 1000, True, 'x', 0, 0) self.hum_v2.register_callback( self.hum_v2.CALLBACK_HUMIDITY, self.cb_humidity_v2) log.info('Humidity 2.0 initialized') except Error as e: log.error('Humidity 2.0 init failed: ' + str(e.description)) self.hum_v2 = None elif device_identifier == BrickletBarometer.DEVICE_IDENTIFIER: try: self.baro = BrickletBarometer(uid, self.ipcon) self.baro.set_air_pressure_callback_period(1000) self.baro.register_callback( self.baro.CALLBACK_AIR_PRESSURE, self.cb_air_pressure) log.info('Barometer initialized') except Error as e: log.error('Barometer init failed: ' + str(e.description)) self.baro = None def cb_connected(self, connected_reason): if connected_reason == IPConnection.CONNECT_REASON_AUTO_RECONNECT: log.info('Auto Reconnect') while True: try: self.ipcon.enumerate() break except Error as e: log.error('Enumerate Error: ' + str(e.description)) time.sleep(1)
# -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID = "XYZ" # Change XYZ to the UID of your Ambient Light Bricklet from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_ambient_light import BrickletAmbientLight # Callback function for illuminance callback def cb_illuminance(illuminance): print("Illuminance: " + str(illuminance/10.0) + " lx") if __name__ == "__main__": ipcon = IPConnection() # Create IP connection al = BrickletAmbientLight(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Register illuminance callback to function cb_illuminance al.register_callback(al.CALLBACK_ILLUMINANCE, cb_illuminance) # Set period for illuminance callback to 1s (1000ms) # Note: The illuminance callback is only called every second # if the illuminance has changed since the last call! al.set_illuminance_callback_period(1000) raw_input("Press key to exit\n") # Use input() in Python 3 ipcon.disconnect()
HOST = "localhost" PORT = 4223 UID = "XYZ" # Change XYZ to the UID of your Ambient Light Bricklet from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_ambient_light import BrickletAmbientLight # Callback function for illuminance reached callback (parameter has unit Lux/10) def cb_illuminance_reached(illuminance): print("Illuminance: " + str(illuminance/10.0) + " Lux") print("Too bright, close the curtains!") if __name__ == "__main__": ipcon = IPConnection() # Create IP connection al = BrickletAmbientLight(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Get threshold callbacks with a debounce time of 10 seconds (10000ms) al.set_debounce_period(10000) # Register illuminance reached callback to function cb_illuminance_reached al.register_callback(al.CALLBACK_ILLUMINANCE_REACHED, cb_illuminance_reached) # Configure threshold for illuminance "greater than 200 Lux" (unit is Lux/10) al.set_illuminance_callback_threshold(">", 200*10, 0) raw_input("Press key to exit\n") # Use input() in Python 3 ipcon.disconnect()
HOST = "localhost" PORT = 4223 UID = "XYZ" # Change XYZ to the UID of your Ambient Light Bricklet from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_ambient_light import BrickletAmbientLight # Callback function for illuminance callback (parameter has unit Lux/10) def cb_illuminance(illuminance): print("Illuminance: " + str(illuminance / 10.0) + " Lux") if __name__ == "__main__": ipcon = IPConnection() # Create IP connection al = BrickletAmbientLight(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Register illuminance callback to function cb_illuminance al.register_callback(al.CALLBACK_ILLUMINANCE, cb_illuminance) # Set period for illuminance callback to 1s (1000ms) # Note: The illuminance callback is only called every second # if the illuminance has changed since the last call! al.set_illuminance_callback_period(1000) raw_input("Press key to exit\n") # Use input() in Python 3 ipcon.disconnect()