[OpenTRV-dev] opentrv to emoncms

Aideen McConville aideen at amcc.myzen.co.uk
Thu May 7 15:56:17 BST 2015


Sending data to emonCMS looks like:

 

http://host/emoncms/input/post.json?json={cc-watts:200,cc-temp:22.5}&apikey=…..

 

or (since emonCMS version 8.4.?)

 

http://host/emoncms/input/post.json?node=1&json={cc-watts:200,cc-temp:22.5}&apikey=…..

 

Currently, with the Conrad units, there's only an idea of house codes, rather than individual node codes (I think). You could improvise by setting different frost values to differentiate different units

 

Ideally, use MQTT early in the mix with a tree structure like

house/opentrv/study/temp

house/opentrv/study/light

house/opentrv/bedroom1/temp

house/emonTx/watts

house/emonTx/pipetemp

etc

 

Node-Red makes it easy to connect these things with minimal coding. It is well versed in the ways of MQTT, JSON and even emonCMS so lots of examples out there (but still with a degree of flux between versions).

 

Having several Pi's is power for the course :-)

 

From: opentrv-dev-bounces at lists.opentrv.org.uk [mailto:opentrv-dev-bounces at lists.opentrv.org.uk] On Behalf Of Bo Herrmannsen
Sent: 07 May 2015 15:29
To: Closed list for developer discussions
Subject: Re: [OpenTRV-dev] opentrv to emoncms

 

hmm

 

my idea so far...:

 

i have one spare usb port left... use that with and ftdi and extend the serial plug so i could wall mount an OpenTRV and use that one to collect the data from all the others.

 

could the perl example be used to forward the data so they show up in emoncms as individual nodes? or how does it work?

 

2015-05-07 16:07 GMT+02:00 Aideen McConville <aideen at amcc.myzen.co.uk>:

Hi Bo,

 

I too am interested in collecting data from OpenTRV, OpenEnergyMonitor (oem) and other sensors and wrangling it as required (e.g. sending to emonCMS and other possible stores/dashboards).

 

Rather than modify (and complexify!) the code in individual sensor nodes, I am planning to use a central node to receive, store and forward data (e.g. using MQTT and Node-Red). It's fairly easy to send data from any sensor to emonCMS using oem's input API and the same techniques can be useful for the oem sensors themselves (emonTx and emonTH). I can provide a simple Perl example on request (sends Currentcost energy meter serial data to emonCMS).

 

One OpenTRV unit could act as an interim (RFMxx) gateway - listening for data from other "busier" units and forwarding it to the main gateway (e.g. via a FTDI - USB link to a mini wireless router or Raspberry Pi).

 

I currently have one OpenTRV Rev2 board (r4111) talking to a Conrad valve drive. It is connected to, and powered by, the USB port of a micro TP-Link router via FTDI (same USB BUB as used to talk to Jeenodes and oem units). The TP-Link router is running OpenWRT (embedded Linux) and has some USB tools and the Mosquitto client software installed (further details on request). A Raspberry Pi would work just as well.

 

To "see" the serial data from the OpenTRV board, I just need to logon to the router and type:

 

# stty -F /dev/ttyUSB0 4800 raw -echo

 

# cat < /dev/ttyUSB0

 

A further step: to remove the "> <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> " lines from the output and pass the rest on to a Mosquitto broker (running elsewhere on the network):

 <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{>  

# awk 'NF  <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab'

 <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{>  

I can then see the data on a beefier linux box (one with a hard drive!) running the broker: <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> 

 <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{>  

$ mosquitto_sub -t 'house/#' <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> 

: <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> 

FHT8V TX <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> 

=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{ <mailto:%22%20lines%20from%20the%20output%20and%20pass%20the%20rest%20on%20to%20a%20Mosquitto%20broker%20(running%20elsewhere%20on%20the%20network):%0d %0d# awk 'NF > 1' /dev/ttyUSB0 | mosquitto_pub -l -h 192.168.1.112 -t 'house/opentrv/lab' I can then see the data on a beefier linux box (one with a hard drive!) running the broker: $ mosquitto_sub -t 'house/#':FHT8V TX=F0%@20C4;T6 1 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{> "@":"120b","L":235,"B|mV":3332,"occ|%":0,"vC|%":0}

FHT8V TX

FHT8V TX

=F0%@20C5;T6 5 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{"@":"120b","L":234,"B|mV":3332,"occ|%":0,"vC|%":0}

FHT8V TX

=F0%@20C5;T6 9 W255 0 F255 0 W255 0 F255 0;S12 12 21;HC18 11;{"@":"120b","L":234,"B|mV":3332,"occ|%":0,"vC|%":0}

FHT8V TX

FHT8V TX

:

 

Not sure if this helps with your quest, but if any particlar details are of interest, let me know.

 

Aideen

 

From: opentrv-dev-bounces at lists.opentrv.org.uk [mailto:opentrv-dev-bounces at lists.opentrv.org.uk] On Behalf Of Bo Herrmannsen
Sent: 05 May 2015 12:11
To: Closed list for developer discussions
Subject: [OpenTRV-dev] opentrv to emoncms

 

hi again

 

i'm going to fiddle with my bed-roller server box and i wanted to add data from the OpenTRV units

 

 

2 ways i can think of it

 

 

1) Each Opentrv board sends the data to emoncms... they at least work on the same freq, but they dont use the same module,... latest rfm lib that emontx boards use are updated to be able to use rfm69 but i think their boards are still shipped with rfm12 or was it  22.... 

 

anyways my idea was to send commands to the valve, then to emoncms... then sleep for the 2 mins or so

 

 

2) have one emontx board grap the data it needs from one Opentrv board that again wireless gets data from the others.... i have 2 emontx boards and one opentrv at my hot water cylinder...

 

one of the emontx boards allready gets data from the heatmeter via an IR optical serial port

 

the other one only monitors my water meter so most of the time it will just sit there idle and just report 0 water usage to the emoncms system... i think this one will be mostly suited 

 

right now that board only sends over 2 numbers

 

1) liters an hour

2) clicks since last reading (liters)

 

it reports to emoncms every 4 sec

 

so for each opentrv i just need to collect and add:

 

1)battery voltage

2)temp

3)light level

4)valve open %

 

i have attached 2 files... one for each of the emontx boards

 

the small file is the one for the water meter and the other is for the heatmeater, electricity pulse, and hotwater temp...

 

my idea is to add something to the watermeter skecth that can grab serial data and pick what is needed... i just dont have any clue how.. also the serial data from the opentrv must be in the same order or the emontx will start to report false data.... maybe have the opentrv buffer the data and just update the output when new values are there?

 

anyone have idea or could help out?

 

the zip file is the sketch for my opentrv that controls the hot water

 


_______________________________________________
OpenTRV-dev mailing list
OpenTRV-dev at lists.opentrv.org.uk
http://lists.opentrv.org.uk/listinfo/opentrv-dev

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opentrv.org.uk/pipermail/opentrv-dev/attachments/20150507/d2669db6/attachment-0001.html>


More information about the OpenTRV-dev mailing list