Files
HumidityPi/RaspberryPi/main.c
2017-08-28 22:23:22 +02:00

80 lines
2.2 KiB
C

#include <stdio.h>
#include <wiringPi.h>
#include "dht22.h"
#include <stdlib.h>
#include <unistd.h>
#include "sendmysql.h"
#include "configreader.h"
#include "restcurl.h"
#include <string.h>
//Temporary include
#include "calculate.h"
void freeNodeLinkedList(sensornode *node) {
void *victim;
if (node != NULL) {
while (node) {
victim = node;
node = node->next;
free(victim);
}
}
}
int main(void) {
if (wiringPiSetup () == -1)
exit(EXIT_FAILURE) ;
if (setuid(getuid()) < 0)
{
perror("Dropping privileges failed\n");
exit(EXIT_FAILURE);
}
cfginit();
sensor data; //data of the raspberrypi
data.node_id = 0; //Node ID 0 --> RaspberryPi
int i;
for (i = 0; i < cfgreadpinamount(); i++) {
data.pin = cfgreadpinnumber(i);
//getData(&data);
//printf("Pin: %i, %.2f, %.2f\n", data.pin, data.temperature, data.humidity);
//insertData(&data);
}
sensornode nodes; //Settings of ESP8266 sensor nodes
int nodecount = 0;
printf("Reading Sensornodes\n");
cfgreadsensornodes(&nodes, nodecount); //read settings
printf("Reading Sensornodes done Nodecount: %i\n", nodecount);
sensor nodedata; //Should be a linked list for further data usage
sensornode *currentNode = &nodes;
nodedata.pin = 0; //This data isn't relevant for a sensornode
printf("First IP: %s\n", nodes.ip);
for (i = 0; i <= nodecount; i++) {
//start rest requests
strcpy(nodedata.ip, currentNode->ip);
getRestSensor(&nodedata);
nodedata.isoutside = currentNode->isoutside; //copy the boolean value
printf("Acquiring rest response\n");
printf("Temperature: %f, Humidity: %f, NodeID: %i, Outside: %s, AbsoluteHumidity: %f\n", nodedata.temperature, nodedata.humidity, nodedata.node_id, nodedata.isoutside ? "Yes" : "No", absoluteHumidity(nodedata));
//Insert data into database
printf("Insert data into stats table\n");
insertData(&nodedata);
currentNode = currentNode->next;
}
//free
//freeNodeLinkedList(nodes.next);
cfgdestroy();
return 0;
}