plotly interface based on ardunio sample code
Library for plotting a simple x/y scatter chart on the plot.ly website.
See plotly_HelloWorld for sample usage.
plotly.h@0:96532c59670f, 2014-07-02 (annotated)
- Committer:
- AndyA
- Date:
- Wed Jul 02 08:47:09 2014 +0000
- Revision:
- 0:96532c59670f
- Child:
- 1:d532e96fca12
First pass based on ardunio sample network code. Not currently working.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndyA | 0:96532c59670f | 1 | #ifndef plotly_streaming_ethernet_h |
AndyA | 0:96532c59670f | 2 | #define plotly_streaming_ethernet_h |
AndyA | 0:96532c59670f | 3 | |
AndyA | 0:96532c59670f | 4 | #include <EthernetInterface.h> |
AndyA | 0:96532c59670f | 5 | #include <TCPSocketConnection.h> |
AndyA | 0:96532c59670f | 6 | |
AndyA | 0:96532c59670f | 7 | EthernetInterface eth; |
AndyA | 0:96532c59670f | 8 | |
AndyA | 0:96532c59670f | 9 | /********************************* |
AndyA | 0:96532c59670f | 10 | in main.cpp |
AndyA | 0:96532c59670f | 11 | #define num_traces 1 |
AndyA | 0:96532c59670f | 12 | // Sign up to plotly here: https://plot.ly |
AndyA | 0:96532c59670f | 13 | // View your API key and stream tokens in your settings: https://plot.ly/settings |
AndyA | 0:96532c59670f | 14 | char *streaming_tokens[num_traces] = {"leofdu7cun"}; |
AndyA | 0:96532c59670f | 15 | plotly graph = plotly("AndyA", "acchq52p7j", streaming_tokens, "test1", num_traces); |
AndyA | 0:96532c59670f | 16 | |
AndyA | 0:96532c59670f | 17 | void plotSetup() { |
AndyA | 0:96532c59670f | 18 | |
AndyA | 0:96532c59670f | 19 | // eth.init(); |
AndyA | 0:96532c59670f | 20 | // eth.connect(); |
AndyA | 0:96532c59670f | 21 | |
AndyA | 0:96532c59670f | 22 | // Initialize a streaming graph in your plotly account |
AndyA | 0:96532c59670f | 23 | pc.printf("plot init..\n"); |
AndyA | 0:96532c59670f | 24 | graph.init(); |
AndyA | 0:96532c59670f | 25 | pc.printf("Open stream..\n"); |
AndyA | 0:96532c59670f | 26 | // Initialize plotly's streaming service |
AndyA | 0:96532c59670f | 27 | graph.openStream(); |
AndyA | 0:96532c59670f | 28 | } |
AndyA | 0:96532c59670f | 29 | |
AndyA | 0:96532c59670f | 30 | void plotGenerateData() { |
AndyA | 0:96532c59670f | 31 | static int counter = 0; |
AndyA | 0:96532c59670f | 32 | graph.plot(counter, counter*counter, streaming_tokens[0]); |
AndyA | 0:96532c59670f | 33 | counter++; |
AndyA | 0:96532c59670f | 34 | } |
AndyA | 0:96532c59670f | 35 | |
AndyA | 0:96532c59670f | 36 | |
AndyA | 0:96532c59670f | 37 | ********************************************/ |
AndyA | 0:96532c59670f | 38 | class plotly |
AndyA | 0:96532c59670f | 39 | { |
AndyA | 0:96532c59670f | 40 | public: |
AndyA | 0:96532c59670f | 41 | plotly(char *username, char *api_key, char* stream_tokens[], char *filename, int nTraces); |
AndyA | 0:96532c59670f | 42 | ~plotly(); |
AndyA | 0:96532c59670f | 43 | bool init(); |
AndyA | 0:96532c59670f | 44 | void openStream(); |
AndyA | 0:96532c59670f | 45 | void closeStream(); |
AndyA | 0:96532c59670f | 46 | void reconnectStream(); |
AndyA | 0:96532c59670f | 47 | void jsonStart(int i); |
AndyA | 0:96532c59670f | 48 | void jsonMiddle(); |
AndyA | 0:96532c59670f | 49 | void jsonEnd(char *token); |
AndyA | 0:96532c59670f | 50 | |
AndyA | 0:96532c59670f | 51 | void plot(unsigned long x, int y, char *token); |
AndyA | 0:96532c59670f | 52 | void plot(unsigned long x, float y, char *token); |
AndyA | 0:96532c59670f | 53 | |
AndyA | 0:96532c59670f | 54 | int log_level; |
AndyA | 0:96532c59670f | 55 | bool dry_run; |
AndyA | 0:96532c59670f | 56 | int maxpoints; |
AndyA | 0:96532c59670f | 57 | bool world_readable; |
AndyA | 0:96532c59670f | 58 | bool convertTimestamp; |
AndyA | 0:96532c59670f | 59 | char *timezone; |
AndyA | 0:96532c59670f | 60 | char *fileopt; |
AndyA | 0:96532c59670f | 61 | |
AndyA | 0:96532c59670f | 62 | private: |
AndyA | 0:96532c59670f | 63 | void print_(int d); |
AndyA | 0:96532c59670f | 64 | void print_(unsigned long d); |
AndyA | 0:96532c59670f | 65 | void print_(float d); |
AndyA | 0:96532c59670f | 66 | void print_(char *d); |
AndyA | 0:96532c59670f | 67 | void printHex_(uint16_t d); |
AndyA | 0:96532c59670f | 68 | |
AndyA | 0:96532c59670f | 69 | int len_(int i); |
AndyA | 0:96532c59670f | 70 | int len_(unsigned long i); |
AndyA | 0:96532c59670f | 71 | int len_(char *i); |
AndyA | 0:96532c59670f | 72 | |
AndyA | 0:96532c59670f | 73 | char txBuffer[128]; |
AndyA | 0:96532c59670f | 74 | char rxBuffer[128]; |
AndyA | 0:96532c59670f | 75 | TCPSocketConnection socket; |
AndyA | 0:96532c59670f | 76 | |
AndyA | 0:96532c59670f | 77 | unsigned long fibonacci_; |
AndyA | 0:96532c59670f | 78 | char *username_; |
AndyA | 0:96532c59670f | 79 | char *api_key_; |
AndyA | 0:96532c59670f | 80 | char** stream_tokens_; |
AndyA | 0:96532c59670f | 81 | char *filename_; |
AndyA | 0:96532c59670f | 82 | int nTraces_; |
AndyA | 0:96532c59670f | 83 | |
AndyA | 0:96532c59670f | 84 | }; |
AndyA | 0:96532c59670f | 85 | #endif |