Stap 2: Voorbereiden op het systeem te werken met Python
Het bestand ifkit.py is een gewijzigde versie van het bestand InterfaceKit-simple.py in de voorbeelden uitgebracht door Phidgets opgenomen, dan download de bibliotheek en de voorbeelden van Phidgets.
De Python-libraries downloaden:
wget http://www.phidgets.com/downloads/libraries/PhidgetsPython.zip
Omdat de bibliotheken als een zip-archief komen, zullen wij waarschijnlijk moeten installeren zip ondersteuning
apt-get install zip unzip
unzip PhidgetsPython.zip
cd PhidgetsPython/
Nu kunnen we de Python bibliotheken installeren:
python setup.py install
En download de voorbeelden:
wget http://www.phidgets.com/downloads/examples/Python.zip
unzip Python.zip
cd Python/
cp InterfaceKit-simple.py /yowsup/src/ifkit.py
Bewerken van het bestand dat deze inhoud zal hebben
#!/usr/bin/env python """Copyright 2010 Phidgets Inc. This work is licensed under the Creative Commons Attribution 2.5 Canada License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.5/ca/ """ __author__ = 'Adam Stelmack' __version__ = '2.1.8' __date__ = 'May 17 2010' #Basic imports from ctypes import * import sys import random import os #Phidget specific imports from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, InputChangeEventArgs, OutputChangeEventArgs, SensorChangeEventArgs from Phidgets.Devices.InterfaceKit import InterfaceKit #Create an interfacekit object try: interfaceKit = InterfaceKit() except RuntimeError as e: print("Runtime Exception: %s" % e.details) print("Exiting....") exit(1) #Information Display Function def displayDeviceInfo(): print("|------------|----------------------------------|--------------|------------|") print("|- Attached -|- Type -|- Serial No. -|- Version -|") print("|------------|----------------------------------|--------------|------------|") print("|- %8s -|- %30s -|- %10d -|- %8d -|" % (interfaceKit.isAttached(), interfaceKit.getDeviceName(), interfaceKit.getSerialNum(), interfaceKit.getDeviceVersion())) print("|------------|----------------------------------|--------------|------------|") print("Number of Digital Inputs: %i" % (interfaceKit.getInputCount())) print("Number of Digital Outputs: %i" % (interfaceKit.getOutputCount())) print("Number of Sensor Inputs: %i" % (interfaceKit.getSensorCount())) #Event Handler Callback Functions def interfaceKitAttached(e): attached = e.device print("InterfaceKit %i Attached!" % (attached.getSerialNum())) def interfaceKitDetached(e): detached = e.device print("InterfaceKit %i Detached!" % (detached.getSerialNum())) def interfaceKitError(e): try: source = e.device print("InterfaceKit %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description)) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) def interfaceKitInputChanged(e): source = e.device # print("InterfaceKit %i: Input %i: %s" % (source.getSerialNum(), e.index, e.state)) def interfaceKitSensorChanged(e): source = e.device # print("InterfaceKit %i: Sensor %i: %i" % (source.getSerialNum(), e.index, e.value)) def interfaceKitOutputChanged(e): source = e.device # print("InterfaceKit %i: Output %i: %s" % (source.getSerialNum(), e.index, e.state)) #Main Program Code try: interfaceKit.setOnAttachHandler(interfaceKitAttached) interfaceKit.setOnDetachHandler(interfaceKitDetached) interfaceKit.setOnErrorhandler(interfaceKitError) interfaceKit.setOnInputChangeHandler(interfaceKitInputChanged) interfaceKit.setOnOutputChangeHandler(interfaceKitOutputChanged) interfaceKit.setOnSensorChangeHandler(interfaceKitSensorChanged) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Opening phidget object....") try: interfaceKit.openPhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Waiting for attach....") try: interfaceKit.waitForAttach(10000) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) try: interfaceKit.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Exiting....") exit(1) else: # displayDeviceInfo() temperature=(interfaceKit.getSensorValue(0)*0.22222)-61.11 humidity=(interfaceKit.getSensorValue(1)*0.1906)-40.2 print("Closing...") try: interfaceKit.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Done.") os.system('sh ./send.sh '+str(temperature)+ ' ' +str(humidity)) exit(0)
Sommige van de wijzigingen in de oorspronkelijke code, zijn het lezen van de analoge ingangen van 0 en 1 ten opzichte van de temperatuur en vochtigheid. De conversie formules worden geleverd door Phidgets voor elk type sensor. De laatste regel noemen het bestand send.sh die worden beheerd met whatsapp.
Maak een nieuw bestand /yowsup/src/send.sh met deze inhoud
#!/bin/bash echo "Current temperature is $1 °C" echo "Current humidity is $2 %" python yowsup-cli -c config.example -w -s 39xxxxxxxxxx "Current temperature is $1 and current humidity is $2" python yowsup-cli -c config.example -k -a -l exit 0
Xxxxxxxx vervangen door het nummer van uw geadresseerde.
Dit bestand is verantwoordelijk voor het verzenden van de variabelen temperatuur en vochtigheid via WhatsApp, dan zet het systeem in het beluisteren van nieuwe berichten.