Exemple #1
0
void DeleteTemp(void) {
  STRING *list = NULL, *ptr;
  struct dirent *de;
  DIR *mydir;

  mydir = opendir(".");
  if (mydir) {
    while ((de = readdir(mydir))) {
      if (strncmp(de->d_name, "ezin", 4) == 0 && strlen(de->d_name) == 10 && CheckTemp(de->d_name))
        appendstring(&list, de->d_name);
    }
  }
  for (ptr = list; ptr; ptr = ptr->next) unlink(ptr->string);
  freestringlist(list);
}
int main(int argc, char *argv[]) {
	if ((cwd = getcwd(NULL, 64)) == NULL) {
		perror("pwd");
		exit(2);
	}
	strcat(config_cond_path, cwd);
	strcat(config_cond_path, config_condition);
	
	strcat(config_state_path, cwd);
	strcat(config_state_path, config_state);
	
	strcat(relay_exec_path, cwd);
	strcat(relay_exec_path, relay_exec);
	
	if (argc < 2) {
		printf("Missing input argument!\n");
		printf("Usage: r to read and w to write\n");
		printf("mycodo r\n");
		printf("mycodo w cond minTemp maxTemp minHum maxHum webOR\n");
        printf("mycodo w state tempState humState\n");
		return 1;
	}

	// write input to config file - for web php control interface
	if (strcmp(argv[1], "w") == 0 && strcmp(argv[2], "cond") == 0) {
		readCfgCond();
		minTemp = atoi(argv[3]);
		maxTemp = atoi(argv[4]);
		minHum = atoi(argv[5]);
		maxHum = atoi(argv[6]);
		webOR = atoi(argv[7]);
		writeCfgCond();
	}
	
	// write input to config file - for web php control interface
	else if (strcmp(argv[1], "w") == 0 && strcmp(argv[2], "state") == 0) {
		readCfgState();
		tempState = atoi(argv[3]);
		humState = atoi(argv[4]);
		writeCfgState();
	}
	
	// read config file and print only variable values to screen
	else if (strcmp(argv[1], "r") == 0) {
		readCfgCond();
		readCfgState();
		printf("%i %i %i %i %i %i %i %i %i %i %i %i %i %i %i\n", minTemp, maxTemp, minHum, maxHum, webOR, tempState, humState, relay1o, relay2o, relay3o, relay4o, relay5o, relay6o, relay7o, relay8o);
	}

	else {
		// convert string input to int
		year = atoi(argv[1]);
		month  = atoi(argv[2]);
		day  = atoi(argv[3]);
		hour  = atoi(argv[4]);
		min  = atoi(argv[5]);
		sec  = atoi(argv[6]);
		timestampL = atoi(argv[7]);
		hum = atof(argv[8]);
		temp = atof(argv[9]);

		// read config file and set variables
		printf("\n%s:%s:%s %i Read config file %s",  argv[4], argv[5], argv[6], timestampL, config_cond_path);
		readCfgCond();
		printf("\n%s:%s:%s %i Read config file %s",  argv[4], argv[5], argv[6], timestampL, config_state_path);
		readCfgState();
		printf("\nminTemp: %i, maxTemp: %i, minHum: %i, maxHum: %i, webOR: %i, tempState: %i, humState: %i", minTemp, maxTemp, minHum, maxHum, webOR, tempState, humState);
		if ( tempState == 2 ) printf("\nTemp: %.1f C Range: (%i - %i) %.1f C from minTemp. ", temp, minTemp, maxTemp, temp - minTemp);
		else printf("\nTemp: %.1f C Range: (%i - %i) %.1f C from minTemp. ", temp, minTemp, maxTemp, minTemp - temp);
		// read temperature sensor
		CheckTemp();

		if ( humState == 2 ) printf("\nHumi: %.1f %% Range: (%i - %i) %.1f %% from minHumi. ", hum, minHum, maxHum, hum - minHum);
		else printf("\nHumi: %.1f %% Range: (%i - %i) %.1f %% from minHumi. ", hum, minHum, maxHum, minHum - hum);
		CheckHum();

		if (!webOR) { ChangeRelays ( maxTemp - temp, maxHum - hum ); }
		else { 
			printf("\nWebOverride activated - No relay change!");
			printf("\nWaiting 60 seconds.\n");
			sleep ( 60 );
		}
	}
	return 0;
}