Displays a value on an RS display board

Dependencies:   EthernetInterface PCA9635 dispBoB mbed-rtos mbed munin-client-lib

Displaying values retrieved from a munin node on an RS display board. Porting this code to work with an alternative display should be trivial, I have also used an mbed application board's LCD to display the values for example.

Hardware

Software

Most of the work is done by libraries that are freely available on mbed.org. The code uses the lwip based EthernetInterface library. The only code I had to write was submit a command to a munin node and parse it's response.

Testing

The software has currently been running for around 2 weeks without any problems. On a previous run it stopped updating after 4 days.

Committer:
stevep
Date:
Mon Apr 29 10:08:19 2013 +0000
Revision:
0:98c94cf86eb8
Child:
2:b4e81333dfef
Munin client showing values on a RS display board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stevep 0:98c94cf86eb8 1 #include "mbed.h"
stevep 0:98c94cf86eb8 2 #include "EthernetInterface.h"
stevep 0:98c94cf86eb8 3 #include "dispBoB.h"
stevep 0:98c94cf86eb8 4
stevep 0:98c94cf86eb8 5
stevep 0:98c94cf86eb8 6 const char* MUNIN_SERVER_ADDRESS = "172.28.22.45";
stevep 0:98c94cf86eb8 7 const int MUNIN_SERVER_PORT = 4949;
stevep 0:98c94cf86eb8 8 char cmd[] = "fetch users\n";
stevep 0:98c94cf86eb8 9
stevep 0:98c94cf86eb8 10 dispBoB db(p28, p27, p26);
stevep 0:98c94cf86eb8 11
stevep 0:98c94cf86eb8 12 int main() {
stevep 0:98c94cf86eb8 13 EthernetInterface eth;
stevep 0:98c94cf86eb8 14 TCPSocketConnection socket;
stevep 0:98c94cf86eb8 15
stevep 0:98c94cf86eb8 16 char buf[256];
stevep 0:98c94cf86eb8 17 char *value;
stevep 0:98c94cf86eb8 18 int n, count, wd=0, curval=0;
stevep 0:98c94cf86eb8 19
stevep 0:98c94cf86eb8 20 db.printf("DHCPing\n");
stevep 0:98c94cf86eb8 21
stevep 0:98c94cf86eb8 22 eth.init(); //Use DHCP
stevep 0:98c94cf86eb8 23 eth.connect();
stevep 0:98c94cf86eb8 24
stevep 0:98c94cf86eb8 25 db.scroll(eth.getIPAddress(), 0.5);
stevep 0:98c94cf86eb8 26
stevep 0:98c94cf86eb8 27 while(1) {
stevep 0:98c94cf86eb8 28 wd++;
stevep 0:98c94cf86eb8 29 while (socket.connect(MUNIN_SERVER_ADDRESS, MUNIN_SERVER_PORT) < 0) {
stevep 0:98c94cf86eb8 30 db.printf("Cnct");
stevep 0:98c94cf86eb8 31 wait(1);
stevep 0:98c94cf86eb8 32 db.cls();
stevep 0:98c94cf86eb8 33 }
stevep 0:98c94cf86eb8 34
stevep 0:98c94cf86eb8 35 n = socket.receive(buf, 256);
stevep 0:98c94cf86eb8 36 buf[n] = '\0';
stevep 0:98c94cf86eb8 37 n = socket.send(cmd, sizeof(cmd) - 1);
stevep 0:98c94cf86eb8 38
stevep 0:98c94cf86eb8 39 buf[0] = '\0';
stevep 0:98c94cf86eb8 40 n = socket.receive_all(buf, 256);
stevep 0:98c94cf86eb8 41 buf[n] = '\0';
stevep 0:98c94cf86eb8 42
stevep 0:98c94cf86eb8 43 count = 0;
stevep 0:98c94cf86eb8 44
stevep 0:98c94cf86eb8 45 for (int i=0; i < sizeof(buf); i++) {
stevep 0:98c94cf86eb8 46 if (buf[i] == '\n' && (i == 0 || buf[i-1] != '.')) {
stevep 0:98c94cf86eb8 47 count++;
stevep 0:98c94cf86eb8 48 }
stevep 0:98c94cf86eb8 49 }
stevep 0:98c94cf86eb8 50
stevep 0:98c94cf86eb8 51 char* ptr = buf;
stevep 0:98c94cf86eb8 52
stevep 0:98c94cf86eb8 53 printf("%s\n", buf);
stevep 0:98c94cf86eb8 54
stevep 0:98c94cf86eb8 55 for (int i=0; i < count; i++) {
stevep 0:98c94cf86eb8 56 char *space = strstr(ptr, " ");
stevep 0:98c94cf86eb8 57 value = space + 1;
stevep 0:98c94cf86eb8 58 char *name;
stevep 0:98c94cf86eb8 59
stevep 0:98c94cf86eb8 60 *space = 0;
stevep 0:98c94cf86eb8 61 name = ptr;
stevep 0:98c94cf86eb8 62
stevep 0:98c94cf86eb8 63 ptr = value;
stevep 0:98c94cf86eb8 64 ptr = strstr(ptr, "\n");
stevep 0:98c94cf86eb8 65 *ptr = 0;
stevep 0:98c94cf86eb8 66
stevep 0:98c94cf86eb8 67 if (strncmp(name, "usercount.value", 15) == 0) {
stevep 0:98c94cf86eb8 68 printf("%s\n", value);
stevep 0:98c94cf86eb8 69 if (curval < atoi(value)) {
stevep 0:98c94cf86eb8 70 curval = atoi(value);
stevep 0:98c94cf86eb8 71 db.cls();
stevep 0:98c94cf86eb8 72 db.printf(" %s\n", value);
stevep 0:98c94cf86eb8 73 }
stevep 0:98c94cf86eb8 74 break;
stevep 0:98c94cf86eb8 75 }
stevep 0:98c94cf86eb8 76
stevep 0:98c94cf86eb8 77 ptr++;
stevep 0:98c94cf86eb8 78 }
stevep 0:98c94cf86eb8 79
stevep 0:98c94cf86eb8 80 socket.close();
stevep 0:98c94cf86eb8 81 wait(10);
stevep 0:98c94cf86eb8 82 }
stevep 0:98c94cf86eb8 83 }