Phidgets WhatsApp - be status för dina sensorer (2 / 3 steg)
Steg 2: Förbered system att arbeta med Python
Filen ifkit.py är en modifierad version av filen InterfaceKit-simple.py ingår i exemplen släpptes av Phidgets och sedan hämta de bibliotek och exempel från Phidgets.
Hämta Python-bibliotek:
wget http://www.phidgets.com/downloads/libraries/PhidgetsPython.zip
Eftersom biblioteken kommer som en zip-arkiv, behöver vi sannolikt du installera zip stöd
apt-get install zip unzip
Packa upp PhidgetsPython.zip
CD PhidgetsPython /
Nu kan vi installera Python-bibliotek:
python setup.py installera
Och hämta exemplen:
wget http://www.phidgets.com/downloads/examples/Python.zip
Packa upp Python.zip
CD Python /
CP InterfaceKit-simple.py /yowsup/src/ifkit.py
Redigera filen som har detta innehåll
#! / usr/bin/env python
"" "Copyright 2010 Phidgets Inc.
Detta arbete är licensierat under Creative Commons Attribution 2.5 Canada License.
Om du vill visa en kopia av denna licens, besök http://creativecommons.org/licenses/by/2.5/ca/
"""
__author__ = "Adam Stelmack"
__version__ = "2.1.8"
__date__ = "Maj 17 2010"
#Basic import
ctypes importera *
importera sys
importera slumpmässiga
importera os
#Phidget särskilda import
importera från Phidgets.PhidgetException PhidgetErrorCodes, PhidgetException
från Phidgets.Events.Events importera AttachEventArgs, DetachEventArgs, ErrorEventArgs, InputChangeEventArgs, OutputChangeEventArgs, SensorChangeEventArgs
importera InterfaceKit från Phidgets.Devices.InterfaceKit
#Create ett interfacekit objekt
försök:
interfaceKit = InterfaceKit()
utom RuntimeError som e:
skriva ut ("Runtime undantag: %s" % e.details)
Print("Exiting...")
Exit(1)
#Information med funktionen
def displayDeviceInfo():
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("| - anslutna-| - typ-| - serienr-| - Version-|")
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("| - %8s-| - % 30s-| - % 10d-| - %8 d-|" % (interfaceKit.isAttached(), interfaceKit.getDeviceName(), interfaceKit.getSerialNum(), interfaceKit.getDeviceVersion()))
print("|------------|----------------------------------|--------------|------------|")
skriva ut ("nummer av digitalingångar: %i" % (interfaceKit.getInputCount()))
skriva ut ("nummer av digitala utgångar: %i" % (interfaceKit.getOutputCount()))
skriva ut ("antal sensoringångar: %i" % (interfaceKit.getSensorCount()))
#Event handler återkopplingsfunktioner
def interfaceKitAttached(e):
Fäst = e.device
skriva ut ("InterfaceKit %i bifogad!" % (attached.getSerialNum()))
def interfaceKitDetached(e):
fristående = e.device
skriva ut ("InterfaceKit %i fristående!" % (detached.getSerialNum()))
def interfaceKitError(e):
försök:
Source = e.device
skriva ut ("InterfaceKit % i: Phidget fel % i: %s" % (source.getSerialNum(), e.eCode, e.description))
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
def interfaceKitInputChanged(e):
Source = e.device
# Skriv ut ("InterfaceKit % i: Input % i: %s" % (source.getSerialNum(), e.index, e.state))
def interfaceKitSensorChanged(e):
Source = e.device
# Skriv ut ("InterfaceKit % i: Sensor % i: %i" % (source.getSerialNum(), e.index, e.value))
def interfaceKitOutputChanged(e):
Source = e.device
# Skriv ut ("InterfaceKit % i: utdata % i: %s" % (source.getSerialNum(), e.index, e.state))
#Main programkod
försök:
interfaceKit.setOnAttachHandler(interfaceKitAttached)
interfaceKit.setOnDetachHandler(interfaceKitDetached)
interfaceKit.setOnErrorhandler(interfaceKitError)
interfaceKit.setOnInputChangeHandler(interfaceKitInputChanged)
interfaceKit.setOnOutputChangeHandler(interfaceKitOutputChanged)
interfaceKit.setOnSensorChangeHandler(interfaceKitSensorChanged)
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)
skriva ut ("öppning phidget objekt...")
försök:
interfaceKit.openPhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)
skriva ut ("väntar på Bifoga...")
försök:
interfaceKit.waitForAttach(10000)
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
försök:
interfaceKit.closePhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)
Print("Exiting...")
Exit(1)
annat:
# displayDeviceInfo()
temperatur = (interfaceKit.getSensorValue (0) * 0.22222)-61.11
fukt = (interfaceKit.getSensorValue (1) * 0.1906)-40.2
Print("Closing...")
försök:
interfaceKit.closePhidget()
utom PhidgetException som e:
skriva ut ("Phidget undantag % i: %s" % (e.code, e.details))
Print("Exiting...")
Exit(1)
Print("Done.")
OS.system ('sh./send.sh "+ str(temperature) +" "+str(humidity))
Exit(0)
Några av ändringarna i den ursprungliga koden, är läsningen av de analoga ingångarna 0 och 1 i förhållande till temperatur och luftfuktighet. Konvertering-formler är från Phidgets för varje sensor. Den sista raden kalla filen send.sh som hanterar whatsapp.
Skapa en ny fil /yowsup/src/send.sh med detta innehåll
#! / bin/bash
ECHO "aktuell temperatur är $1 ° C"
ECHO "aktuell luftfuktighet är $2%"
python yowsup-cli - c config.example -w -s 39xxxxxxxxxx "aktuell temperatur är $1 och aktuella luftfuktigheten är $2"
python yowsup-cli - c config.example -k - a -l
utgång 0
Ersätta xxxxxxxx med ditt mottagarnummer.
Denna fil är ansvarig att skicka variabler temperaturen och luftfuktigheten via WhatsApp, sedan sätter systemet i lyssna av nya meddelanden.