Leest de waarde van een sensor binnen een maakt deze beschikbaar via internet

Dependencies:   NTPClient_NetServices mbed

main.cpp

Committer:
hendrikvincent
Date:
2013-12-02
Revision:
0:05ccbd4f84f1

File content as of revision 0:05ccbd4f84f1:

#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
#include "RPCFunction.h"
#include "NTPClient.h"

EthernetNetIf eth;
NTPClient ntp;
HTTPServer svr;

DigitalOut led1(LED1, "led1");
DigitalOut led2(LED2, "led2");
DigitalOut led3(LED3, "led3");
DigitalOut led4(LED4, "led4");

AnalogIn Sensor(p20);                              // Sensor in
DigitalOut pin15(p15);
DigitalOut pin16(p16);
DigitalOut pin17(p17);
DigitalOut pin18(p18);
DigitalOut pin19(p19);

FILE *file;

int main()
{

    /************** Ethernet Setup *****************/
    EthernetErr ethErr;
    int count = 0;
    do {
        printf("Setting up %d...\n\r", ++count);
        ethErr = eth.setup();
        if (ethErr) printf("Timeout\n\r", ethErr);
    } while (ethErr != ETH_OK);

    printf("Connected OK\n\r");
    const char* hwAddr = eth.getHwAddr();

    IpAddr ethIp = eth.getIp();
    printf("IP address : %d.%d.%d.%d\n\r", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);

    /***************** FilsSystem ******************/
    LocalFileSystem local("local");
    float waarden[3][800];

    /***************** Handlers *******************/
    svr.addHandler<SimpleHandler>("/hello");
    svr.addHandler<FSHandler>("");
    svr.addHandler<RPCHandler>("/rpc");

    FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
    Base::add_rpc_class<DigitalOut>();
    Base::add_rpc_class<AnalogIn>();

    svr.bind(80);
    printf("Server listening\n\r");

    /**************** Realtime clock ******************/
    time_t ctTime;
    ctTime = time(NULL);
    printf("Current time is (UTC): %s\r\n", ctime(&ctTime));

    Host server(IpAddr(), 123, "be.pool.ntp.org");
    //be server: be.pool.ntp.org
    ntp.setTime(server);

    ctTime = time(NULL);
    printf("\nTime is now (UTC): %s\r\n", ctime(&ctTime));

    /***************** Timer ***************/
    Timer tm;
    tm.start();

    float sensorWaarde;


    while (true) {
        Net::poll();
        if (tm.read() > 2) {
            file = fopen("/local/test.htm", "a");                       //openen bestand.
            sensorWaarde = ((Sensor * 3.3 -2.78)*100);                  //Ijking waarde
            ctTime = time(NULL);                                        //Tijd goedzetten
            fprintf(file, "%s %5.2f\r\n", ctime(&ctTime), sensorWaarde);
            printf("\nTime is now (UTC): %s\r\n", ctime(&ctTime));
            printf("Temperatuur: %5.2f\r\n", sensorWaarde);
            fclose(file);
            led1 = !led1;
            tm.start();
        }
    }
}