Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //verander de volgende informatie naar de informatie voor jouw database
- #define dserver "oege.ie.hva.nl"
- #define duser "username"
- #define dpassword "password"
- #define ddatabase "database"
- const int homeid 1234
- //-----------------------------------------------------------------------------
- //
- // Main.cpp
- //
- // Copyright (c) 2010 Mal Lansell <[email protected]>
- //
- //
- // SOFTWARE NOTICE AND LICENSE
- //
- // This file is part of OpenZWave.
- //
- // OpenZWave is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published
- // by the Free Software Foundation, either version 3 of the License,
- // or (at your option) any later version.
- //
- // OpenZWave is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
- //
- //-----------------------------------------------------------------------------
- #include <phidget21.h> // voor phidgetfucties
- #include <unistd.h>
- #include <pthread.h>
- #include <inttypes.h>
- #include <string.h>
- #include <iostream>
- #include <stdio.h>
- #include <vector>
- #include <stdlib.h>
- #include <sstream>
- #include <iostream>
- #include <list>
- #include <stdio.h>
- #include <mysql/mysql.h>
- #include <unistd.h>
- using namespace std;
- static uint32_t g_homeId = homeid;
- // Een struct met node informatie.
- typedef struct {
- uint32_t m_homeId;
- uint8_t m_nodeId;
- bool m_polled;
- uint8_t m_event;
- } NodeInfo;
- //Een struct met activiteiten informatie.
- typedef struct {
- int id;
- string name;
- int sensorId;
- string valuename;
- int value;
- int nodeId;
- string sendvalue;
- int activated;
- int minvalue;
- string homeid;
- string sensorhomeid;
- } Activities;
- // Value-Defintions of the different String values
- static int maxAInputs = 7;
- static int maxDoutputs = 7;
- static list<NodeInfo*> g_nodes;
- static list<Activities*> activitylist;
- /*
- database connectie en methodes
- */
- MYSQL* createDatabaseCon() {
- MYSQL *conn;
- const char *server = "oege.ie.hva.nl";
- const char *user = "faouzi001";
- const char *password = "@Nicolaas12";
- const char *database = "zfaouzio001";
- conn = mysql_init(NULL);
- if (!mysql_real_connect(conn, server,
- user, password, database, 0, NULL, 0)) {
- fprintf(stderr, "%s\n", mysql_error(conn));
- exit(1);
- }
- return conn;
- }
- void perform_query(MYSQL *connection, string sql_query) {
- if (mysql_query(connection, sql_query.c_str())) {
- printf("MySQL query error : %s\n", mysql_error(connection));
- exit(1);
- }
- }
- MYSQL_RES* perform_read_query(MYSQL *connection, string sql_query) {
- MYSQL_RES *result;
- if (mysql_query(connection, sql_query.c_str())) {
- exit(1);
- } else {
- result = mysql_store_result(connection);
- return result;
- }
- }
- /*
- *Set value veranderd de waarde van elke electriciteits schakelaar of licht schakelaar naar de meegestuurde waarde.
- *
- *Deze functie word nog aangepast om de waarde van een bepaalde node te veranderen.
- *
- *
- */
- void checkHome() {
- MYSQL *conn;
- MYSQL_RES *result;
- MYSQL_ROW row;
- bool flag = false;
- conn = createDatabaseCon();
- result = perform_read_query(conn, "SELECT homeid FROM home");
- while ((row = mysql_fetch_row(result))) {
- string input(row[0]);
- stringstream SS(input);
- uint32_t n;
- SS >> n;
- if (n == g_homeId) {
- flag = true;
- break;
- }
- }
- if (flag == false) {
- string String = static_cast<ostringstream*> (&(ostringstream() << g_homeId))->str();
- perform_query(conn, "INSERT INTO home (homeid) VALUES('" + String + "')");
- for (int i = 0; i <= maxDoutputs; i++) {
- stringstream SS2;
- SS2 << "INSERT INTO sensor (nodeid,homeid,type,manname,manprodname,state) VALUES('" << i << "','" << String << "','Digital Output" << i << "','Phidget','Phidget','0')";
- perform_query(conn, SS2.str());
- }
- }
- mysql_close(conn);
- }
- void fillActivities() {
- MYSQL *conn;
- MYSQL_RES *result;
- MYSQL_ROW row;
- conn = createDatabaseCon();
- result = perform_read_query(conn, "SELECT * FROM activities");
- bool flag = false;
- while ((row = mysql_fetch_row(result))) {
- flag = false;
- if (atoi(row[10]) == 1) {
- stringstream SS;
- flag=true;
- for (list<Activities*>::iterator it = activitylist.begin(); it != activitylist.end(); ++it) {
- if (*it != 0) {
- Activities* activity = *it;
- if (activity->id == atoi(row[0])) {
- activitylist.erase(it);
- break;
- }
- }
- }
- } else {
- for (list<Activities*>::iterator it = activitylist.begin(); it != activitylist.end(); ++it) {
- Activities* activity = *it;
- if (activity->id == atoi(row[0])) {
- flag = true;
- if (strcmp(activity->name.c_str(), row[1]) != 0)activity->name = row[1];
- if (activity->sensorId != atoi(row[2]))activity->sensorId = atoi(row[2]);
- if (strcmp(activity->valuename.c_str(), row[3]) != 0)activity->valuename = row[3];
- if (activity->value != atoi(row[4]))activity->value = atoi(row[4]);
- if (activity->nodeId != atoi(row[5]))activity->nodeId = atoi(row[5]);
- if (strcmp(activity->sendvalue.c_str(), row[6]) != 0)activity->sendvalue = row[6];
- if (activity->activated != atoi(row[7]))activity->activated = atoi(row[7]);
- if (strcmp(activity->homeid.c_str(), row[8]) != 0)activity->homeid = row[8];
- if (activity->minvalue != atoi(row[9]))activity->minvalue = atoi(row[9]);
- if (strcmp(activity->sensorhomeid.c_str(), row[8]) != 0)activity->sensorhomeid = row[11];
- }
- }
- if (flag == false) {
- Activities *new_activity2 = new Activities();
- new_activity2->id = atoi(row[0]);
- new_activity2->name = row[1];
- new_activity2->sensorId = atoi(row[2]);
- new_activity2->valuename = row[3];
- new_activity2->value = atoi(row[4]);
- new_activity2->nodeId = atoi(row[5]);
- new_activity2->sendvalue = row[6];
- new_activity2->activated = atoi(row[7]);
- new_activity2->homeid = row[8];
- new_activity2->minvalue = atoi(row[9]);
- new_activity2->sensorhomeid = row[11];
- activitylist.push_back(new_activity2);
- }
- }
- }
- mysql_close(conn);
- }
- void checkSensorState(CPhidgetInterfaceKitHandle ifKit) {
- MYSQL *conn;
- MYSQL_RES *result;
- MYSQL_ROW row;
- conn = createDatabaseCon();
- stringstream SS;
- SS << "SELECT nodeid,homeid,type,state FROM sensor WHERE homeid = "<<g_homeId;
- result = perform_read_query(conn, SS.str());
- while ((row = mysql_fetch_row(result))) {
- if (strcmp(row[3], "1") == 0) {
- CPhidgetInterfaceKit_setOutputState(ifKit, atoi(row[0]), 1);
- } else if ((strcmp(row[3], "0") == 0)) {
- CPhidgetInterfaceKit_setOutputState(ifKit, atoi(row[0]), 0);
- }
- }
- mysql_close(conn);
- }
- void checkSensor(int sensorId) {
- MYSQL *conn;
- MYSQL_RES *result;
- MYSQL_ROW row;
- bool flag = false;
- conn = createDatabaseCon();
- result = perform_read_query(conn, "SELECT nodeid,homeid FROM sensor");
- while ((row = mysql_fetch_row(result))) {
- if (((unsigned)atoi(row[0]) == sensorId) && ((unsigned)atoi(row[1]) == g_homeId))flag = true;
- }
- if (flag == false) {
- stringstream SS;
- SS << "INSERT INTO sensor (nodeid, homeid, type, manname, manprodname) VALUES('" << sensorId << "','" << g_homeId << "','Analog Input " << sensorId << "','Phidget','Phidget')";
- perform_query(conn, SS.str());
- }
- mysql_close(conn);
- }
- void checkActivities(int node, int value, string label) {
- for (list<Activities*>::iterator it = activitylist.begin(); it != activitylist.end(); ++it) {
- Activities* activity = *it;
- if ((activity->sensorId == node)&&((unsigned)atoi(activity->homeid.c_str()) == g_homeId)&&(strcmp(label.c_str(), activity->valuename.c_str()) == 0)&&(activity->value >= value && activity->minvalue <= value)&&(activity->activated == 1)) {
- MYSQL *conn;
- conn = createDatabaseCon();
- stringstream SS;
- SS << "UPDATE sensor SET state='" << activity->sendvalue << "'WHERE nodeid='" << activity->nodeId << "' AND homeid= '"<<activity->sensorhomeid<<"'";
- perform_query(conn, SS.str());
- }
- }
- }
- //-----------------------------------------------------------------------------
- // <main>
- // Create the driver and then wait
- //-----------------------------------------------------------------------------
- int main(int argc, char* argv[]) {
- CPhidgetInterfaceKitHandle ifKit = 0;
- CPhidgetInterfaceKit_create(&ifKit);
- CPhidget_open((CPhidgetHandle) ifKit, -1);
- CPhidget_waitForAttachment((CPhidgetHandle) ifKit, 1000);
- //Wacht maximaal 1000 ms tot dat de phidgetkit is aangesloten.
- fillActivities();
- checkHome();
- int i = 0;
- while (true) {
- checkSensorState(ifKit);
- fillActivities();
- i++;
- if(i % 10)fillActivities();
- if (i >= 300) {
- i = 0;
- for (int y = 0; y <= maxAInputs; y++) {
- int val = 0;
- CPhidgetInterfaceKit_getSensorValue(ifKit, y, &val);
- if (val > 2) {
- checkSensor(y + 10);
- MYSQL *conn;
- conn = createDatabaseCon();
- stringstream SS;
- SS << "INSERT INTO waarden (value, sensorid, name, homeid) VALUES('"<<val<<"','"<<y + 10<<"','value','"<<g_homeId<<"')";
- perform_query(conn, SS.str());
- mysql_close(conn);
- }
- }
- }
- sleep(1);
- }
- CPhidget_close((CPhidgetHandle) ifKit);
- CPhidget_delete((CPhidgetHandle) ifKit);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement