diff --git a/examples/python/sensors/sensorscallback.py b/examples/python/sensors/sensorscallback.py new file mode 100644 index 00000000..7a592b89 --- /dev/null +++ b/examples/python/sensors/sensorscallback.py @@ -0,0 +1,48 @@ + +from ctypes import c_int, c_ubyte, c_void_p, POINTER, string_at, create_string_buffer, c_char_p, c_int, byref #imports allowing the use of our library +import time +import platform +from datetime import datetime + +#platform specific imports: +if (platform.system() == 'Windows'): + #Windows + from ctypes import windll, WINFUNCTYPE + lib = windll.LoadLibrary('TelldusCore.dll') #import our library +else: + #Linux + from ctypes import cdll, CFUNCTYPE + lib = cdll.LoadLibrary('libtelldus-core.so.2') #import our library + +TELLSTICK_TEMPERATURE = 1; +TELLSTICK_HUMIDITY = 2; + +#function to be called when a sensor event occurs +def callbackfunction(protocol, model, id, dataType, value, timestamp, callbackId, context): + + print "Sensor:", string_at(protocol), string_at(model), "id:", id + if(dataType == TELLSTICK_TEMPERATURE): + print "Temperature:", string_at(value), "C,", datetime.fromtimestamp(timestamp) + elif(dataType == TELLSTICK_HUMIDITY): + print "Humidity:", string_at(value), "%,", datetime.fromtimestamp(timestamp) + print "" + + +if (platform.system() == 'Windows'): + CMPFUNC = WINFUNCTYPE(c_void_p, POINTER(c_ubyte), POINTER(c_ubyte), c_int, c_int, POINTER(c_ubyte), c_int, c_int, c_void_p) #first is return type +else: + CMPFUNC = CFUNCTYPE(c_void_p, POINTER(c_ubyte), POINTER(c_ubyte), c_int, c_int, POINTER(c_ubyte), c_int, c_int, c_void_p) + +cmp_func = CMPFUNC(callbackfunction) + +lib.tdInit() +callbackid = lib.tdRegisterSensorEvent(cmp_func, 0) + +print "Waiting for events..." +try: + while(1): + time.sleep(0.5) #don't exit +except KeyboardInterrupt: + print "Exiting" + lib.tdUnregisterCallback(callbackid) + lib.tdClose() diff --git a/examples/python/sensors/sensorspoll.py b/examples/python/sensors/sensorspoll.py new file mode 100644 index 00000000..042bebec --- /dev/null +++ b/examples/python/sensors/sensorspoll.py @@ -0,0 +1,49 @@ + +from ctypes import c_int, c_ubyte, c_void_p, POINTER, string_at, create_string_buffer, c_char_p, c_int, byref #imports allowing the use of our library +from threading import Timer +import time +import platform +from datetime import datetime + +#platform specific imports: +if (platform.system() == 'Windows'): + #Windows + from ctypes import windll, WINFUNCTYPE + lib = windll.LoadLibrary('TelldusCore.dll') #import our library +else: + #Linux + from ctypes import cdll, CFUNCTYPE + lib = cdll.LoadLibrary('libtelldus-core.so.2') #import our library + +TELLSTICK_TEMPERATURE = 1; +TELLSTICK_HUMIDITY = 2; + +def poll(): + print "getting sensors" + + protocollength = 20 + modellength = 20 + valuelength = 20 + + protocol = create_string_buffer(protocollength) + model = create_string_buffer(modellength) + idvalue = c_int() + dataTypes = c_int() + while(lib.tdSensor(protocol, protocollength, model, modellength, byref(idvalue), byref(dataTypes)) == 0): + print "Sensor: ", protocol.value, model.value, "id:", idvalue.value + value = create_string_buffer(valuelength) + timestampvalue = c_int() + + if((dataTypes.value & TELLSTICK_TEMPERATURE) != 0): + success = lib.tdSensorValue(protocol.value, model.value, idvalue.value, TELLSTICK_TEMPERATURE, value, valuelength, byref(timestampvalue)) + print "Temperature: ", value.value, "C,", datetime.fromtimestamp(timestampvalue.value) + + if((dataTypes.value & TELLSTICK_HUMIDITY) != 0): + success = lib.tdSensorValue(protocol.value, model.value, idvalue.value, TELLSTICK_HUMIDITY, value, valuelength, byref(timestampvalue)) + print "Humidity: ", value.value, "%,", datetime.fromtimestamp(timestampvalue.value) + + print " " + +lib.tdInit() +poll() +lib.tdClose() \ No newline at end of file