Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from twisted.python import log, usage
- from twisted.internet import reactor
- from twisted.internet.serialport import SerialPort
- from twisted.web.client import Agent
- from twisted.web.http_headers import Headers
- from struct import unpack
- import sys
- class JamesOptions(usage.Options):
- optParameters = [
- ['outfile', 'o', None, 'Logfile [default: sys.stdout]'],
- ['baudrate', 'b', 38400, 'Serial baudrate [default: 9600'],
- ['port', 'p', '/dev/tty.usbserial-A600ezgH', 'Serial Port device'],
- ]
- class XbeeLogger:
- def decodeFloat(self, var):
- text = ""
- for i in range(0, len(var)):
- text += var[i]
- return unpack('f', text)[0]
- def handle_packet(self, xbeePacketDictionary):
- response = xbeePacketDictionary
- agent = Agent(reactor)
- d = agent.request(
- 'GET',
- "http://localhost/emoncms2/api/post?apikey=MYAPIKEY&json={real_power:" + str(self.decodeFloat(response.get("rf_data")[0:4])) + ",apparent_power:" + str(self.decodeFloat(response.get("rf_data")[4:8])) + ",power_factory:" + str(self.decodeFloat(response.get("rf_data")[8:12])) + ",vrms:" + str(self.decodeFloat(response.get("rf_data")[12:16])) + ",irms:" + str(self.decodeFloat(response.get("rf_data")[16:20])) + "}",
- Headers({'User-Agent': ['James House Control']}),
- None)
- def cbResponse(ignored):
- #log.msg('Response received')
- pass
- d.addCallback(cbResponse)
- def cbShutdown(failure):
- log.err(failure)
- d.addErrback(cbShutdown)
- print 'src addr long:' + str(response.get('source_addr_long'))
- #print "Tamanho:|" + str(len(response.get("rf_data"))) + "|"
- #print "Real Power:|" + str(self.decodeFloat(response.get("rf_data")[0:4])) + "|"
- #print "Apparent Power:|" + str(self.decodeFloat(response.get("rf_data")[4:8])) + "|"
- #print "Power Factor:|" + str(self.decodeFloat(response.get("rf_data")[8:12])) + "|"
- #print "Vrms:|" + str(self.decodeFloat(response.get("rf_data")[12:16])) + "|"
- #print "Irms:|" + str(self.decodeFloat(response.get("rf_data")[16:20])) + "|"
- if __name__ == '__main__':
- o = JamesOptions()
- try:
- o.parseOptions()
- except usage.UsageError, errortext:
- print '%s: %s' % (sys.argv[0], errortext)
- print '%s: Try --help for usage details.' % (sys.argv[0])
- raise SystemExit, 1
- logFile = o.opts['outfile']
- if logFile is None:
- logFile = sys.stdout
- log.startLogging(logFile)
- from xbeeService.protocol import ZigBeeProtocol
- class XbeeTest(ZigBeeProtocol, XbeeLogger):
- pass
- port = o.opts['port']
- log.msg('Attempting to open %s at %dbps as a %s device' % (port, o.opts['baudrate'], ZigBeeProtocol.__name__))
- s = SerialPort(XbeeTest(), o.opts['port'], reactor, baudrate=o.opts['baudrate'])
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment