[OpenTRV-dev] python opentrv to emoncms script...
Bo Herrmannsen
bo.herrmannsen at gmail.com
Tue Oct 6 21:00:46 BST 2015
now the script is:
import sys
import serial
import json
port = "/dev/ttyUSB0"
baud = 4800
ser = serial.Serial()
ser.port = port
ser.baudrate = baud
try:
ser.open()
except:
sys.stderr.write("Error opening serial port %s\n" % (ser.portstr) )
sys.exit(1)
ser.setRtsCts(0)
while 1:
# Read from serial port, blocking
data = ser.read(1)
# If there is more than 1 byte, read the rest
n = ser.inWaiting()
if n:
data = data + ser.read(n)
sys.stdout.write(data)
if data.startswith('{'):
j = json.loads(data)
print j['@']
my logic is to print what comes in from serial and that part works fine
i then want to build on it and if we have a json string then write just the
units id...
the last part is failing me.. i get:
{"@":"151f","+":4,"T|C16":336,"O":1,"vac|h":94,"v|%":0}
{Traceback (most recent call last):
File "opentrvimport.py", line 35, in <module>
j = json.loads(data)
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 381, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting object: line 1 column 0 (char 0)
2015-10-06 17:05 GMT+02:00 Bo Herrmannsen <bo.herrmannsen at gmail.com>:
> Hi
>
> I started on a script that can read serial data from a rev2 unit and send
> the data on to emoncms.
>
> i get this on the serial line
>
> {"@":"2800","+":4,"T|C16":544,"vC|%":2340,"O":1}
>
>
> and so far i have this python script
>
>
> import serial
> import io
> import time
> ser = serial.Serial('/dev/ttyUSB0',4800)
>
>
> sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser, 1),
> encoding='ascii',newline='\r\n')
>
> while ser.isOpen():
>
> datastring = sio.readline()
>
> print datastring
>
>
>
>
> the serial data end with CRLF
>
> but it does not print anything.... where am i wrong?
>
> before i used this script:
>
> import serial
> import time
> s = serial.Serial('/dev/ttyUSB0',4800)
>
> while 1:
> if s.inWaiting():
> val = s.read(s.inWaiting())
> print val
>
> but then i got:
>
> {"@":"0950","
> +":
> 5,"
> t
> T|C
> ":
> 1
> 9,"
> vC|%
> ":
> 20
> 0,"
> T|
> C
> 1
> 6":
> 33
> 1}
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opentrv.org.uk/pipermail/opentrv-dev/attachments/20151006/8e493721/attachment.html>
More information about the OpenTRV-dev
mailing list