Simple demo for plotly library
Dependencies: EthernetInterface mbed-rtos mbed plotly
A basic example of streaming data to a chart on plot.ly
Assumes a wired ethernet connection with direct internet access and a DHCP server.
Chart URL and status is output via the usb serial port at 115200.
You will need to modify the plot.ly account information at the start of main.cpp to match your account on http://plot.ly
main.cpp@0:c7329ea5d8d5, 2014-07-11 (annotated)
- Committer:
- AndyA
- Date:
- Fri Jul 11 10:11:00 2014 +0000
- Revision:
- 0:c7329ea5d8d5
- Child:
- 1:5e7145bb2184
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndyA | 0:c7329ea5d8d5 | 1 | |
AndyA | 0:c7329ea5d8d5 | 2 | #include "mbed.h" |
AndyA | 0:c7329ea5d8d5 | 3 | #include "EthernetInterface.h" |
AndyA | 0:c7329ea5d8d5 | 4 | #include "plotly.h" |
AndyA | 0:c7329ea5d8d5 | 5 | |
AndyA | 0:c7329ea5d8d5 | 6 | Serial pc(USBTX,USBRX); |
AndyA | 0:c7329ea5d8d5 | 7 | |
AndyA | 0:c7329ea5d8d5 | 8 | EthernetInterface eth; |
AndyA | 0:c7329ea5d8d5 | 9 | |
AndyA | 0:c7329ea5d8d5 | 10 | // plotly account details |
AndyA | 0:c7329ea5d8d5 | 11 | char PlotlyUsername[] = "YoutUsername"; |
AndyA | 0:c7329ea5d8d5 | 12 | char PlotlyAPIToken[] = "YourAPIKey"; |
AndyA | 0:c7329ea5d8d5 | 13 | char streaming_token[] = "YourStreamToken"; |
AndyA | 0:c7329ea5d8d5 | 14 | char fileName[] = "Mbed Test Chart"; |
AndyA | 0:c7329ea5d8d5 | 15 | |
AndyA | 0:c7329ea5d8d5 | 16 | plotly graph = plotly(PlotlyUsername, PlotlyAPIToken, streaming_token, fileName); |
AndyA | 0:c7329ea5d8d5 | 17 | |
AndyA | 0:c7329ea5d8d5 | 18 | void plotSetup() |
AndyA | 0:c7329ea5d8d5 | 19 | { |
AndyA | 0:c7329ea5d8d5 | 20 | graph.log_level = 2; // turn on status output |
AndyA | 0:c7329ea5d8d5 | 21 | graph.maxpoints = 72; |
AndyA | 0:c7329ea5d8d5 | 22 | if (graph.init()) { |
AndyA | 0:c7329ea5d8d5 | 23 | graph.openStream(); |
AndyA | 0:c7329ea5d8d5 | 24 | } |
AndyA | 0:c7329ea5d8d5 | 25 | |
AndyA | 0:c7329ea5d8d5 | 26 | } |
AndyA | 0:c7329ea5d8d5 | 27 | |
AndyA | 0:c7329ea5d8d5 | 28 | // Generate a sample chart |
AndyA | 0:c7329ea5d8d5 | 29 | void plotGenerateDataPoint() |
AndyA | 0:c7329ea5d8d5 | 30 | { |
AndyA | 0:c7329ea5d8d5 | 31 | static int counter = 0; |
AndyA | 0:c7329ea5d8d5 | 32 | float yValue = sin(counter*3.14159/180); |
AndyA | 0:c7329ea5d8d5 | 33 | graph.plot(counter, yValue); |
AndyA | 0:c7329ea5d8d5 | 34 | counter+=5; |
AndyA | 0:c7329ea5d8d5 | 35 | } |
AndyA | 0:c7329ea5d8d5 | 36 | |
AndyA | 0:c7329ea5d8d5 | 37 | |
AndyA | 0:c7329ea5d8d5 | 38 | int main() |
AndyA | 0:c7329ea5d8d5 | 39 | { |
AndyA | 0:c7329ea5d8d5 | 40 | pc.baud(115200); |
AndyA | 0:c7329ea5d8d5 | 41 | |
AndyA | 0:c7329ea5d8d5 | 42 | pc.printf("Connecting network...\n"); |
AndyA | 0:c7329ea5d8d5 | 43 | |
AndyA | 0:c7329ea5d8d5 | 44 | eth.init(); |
AndyA | 0:c7329ea5d8d5 | 45 | eth.connect(); |
AndyA | 0:c7329ea5d8d5 | 46 | |
AndyA | 0:c7329ea5d8d5 | 47 | char *ipAddress = eth.getIPAddress(); |
AndyA | 0:c7329ea5d8d5 | 48 | if (ipAddress && (strlen(ipAddress) > 4)) { |
AndyA | 0:c7329ea5d8d5 | 49 | |
AndyA | 0:c7329ea5d8d5 | 50 | pc.printf("IP Address is %s\n",eth.getIPAddress()); |
AndyA | 0:c7329ea5d8d5 | 51 | pc.printf("Initalise plot..\n"); |
AndyA | 0:c7329ea5d8d5 | 52 | |
AndyA | 0:c7329ea5d8d5 | 53 | plotSetup(); |
AndyA | 0:c7329ea5d8d5 | 54 | |
AndyA | 0:c7329ea5d8d5 | 55 | pc.printf("Generating data, press any key to abort.\n"); |
AndyA | 0:c7329ea5d8d5 | 56 | while (!pc.readable()) { |
AndyA | 0:c7329ea5d8d5 | 57 | plotGenerateDataPoint(); |
AndyA | 0:c7329ea5d8d5 | 58 | wait(0.5); |
AndyA | 0:c7329ea5d8d5 | 59 | } |
AndyA | 0:c7329ea5d8d5 | 60 | graph.closeStream(); |
AndyA | 0:c7329ea5d8d5 | 61 | |
AndyA | 0:c7329ea5d8d5 | 62 | } else |
AndyA | 0:c7329ea5d8d5 | 63 | pc.printf("No IP Address\n"); |
AndyA | 0:c7329ea5d8d5 | 64 | |
AndyA | 0:c7329ea5d8d5 | 65 | eth.disconnect(); |
AndyA | 0:c7329ea5d8d5 | 66 | |
AndyA | 0:c7329ea5d8d5 | 67 | pc.printf("Done\n"); |
AndyA | 0:c7329ea5d8d5 | 68 | |
AndyA | 0:c7329ea5d8d5 | 69 | while (1) { |
AndyA | 0:c7329ea5d8d5 | 70 | wait(10); |
AndyA | 0:c7329ea5d8d5 | 71 | } |
AndyA | 0:c7329ea5d8d5 | 72 | } |