Subversion Repositories heating

Rev

Rev 48 | Rev 50 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 48 Rev 49
Line 94... Line 94...
94
	trun();
94
	trun();
95
}
95
}
96
 
96
 
97
void heating::pthrHtml()
97
void heating::pthrHtml()
98
{
98
{
99
HCONF *akt = HeatConf;
-
 
100
html::HTCONF ht;
-
 
101
 
-
 
102
	if (HtmlServer != nullptr)
99
	if (HtmlServer != nullptr)
103
		return;
100
		return;
104
 
101
 
105
	HtmlServer = new html();
102
	HtmlServer = new html();
106
	HtmlServer->setGlobals(glb_night, glb_minimal, onoff);
103
	HtmlServer->setGlobals(glb_night, glb_minimal, onoff);
-
 
104
	applyConfig();
-
 
105
 
-
 
106
	HtmlServer->run();
-
 
107
	delete HtmlServer;
-
 
108
	HtmlServer = nullptr;
107
	
109
}
-
 
110
 
-
 
111
void heating::applyConfig()
-
 
112
{
-
 
113
HCONF *akt = HeatConf;
-
 
114
html::HTCONF ht;
-
 
115
 
108
	while (akt)
116
	while (akt)
109
	{
117
	{
110
		strcpy (ht.rname, akt->rname);
118
		strcpy (ht.rname, akt->rname);
111
		ht.rnum = akt->rnum;
119
		ht.rnum = akt->rnum;
112
		ht.soll = akt->soll;
120
		ht.soll = akt->soll;
Line 114... Line 122...
114
		ht.minimal = akt->minimal;
122
		ht.minimal = akt->minimal;
115
		ht.start1 = akt->start;
123
		ht.start1 = akt->start;
116
		ht.end1 = akt->end;
124
		ht.end1 = akt->end;
117
		ht.start2 = akt->wstart;
125
		ht.start2 = akt->wstart;
118
		ht.end2 = akt->wend;
126
		ht.end2 = akt->wend;
119
		
127
 
120
		HtmlServer->addConfig(&ht);
128
		HtmlServer->addConfig(&ht);
121
		akt = akt->next;
129
		akt = akt->next;
122
	}
130
	}
123
 
-
 
124
	HtmlServer->run();
-
 
125
	delete HtmlServer;
-
 
126
	HtmlServer = nullptr;
-
 
127
}
131
}
128
 
132
 
129
void heating::run()
133
void heating::run()
130
{
134
{
131
int i;
135
int i;
Line 305... Line 309...
305
			sqlite3_close(db);
309
			sqlite3_close(db);
306
			return akt->soll;
310
			return akt->soll;
307
		}
311
		}
308
 
312
 
309
		akt->soll += 0.5;
313
		akt->soll += 0.5;
-
 
314
		applyConfig();
310
		query = "update heating set soll = " + doubleToString(akt->soll, 1) + " where id = " + itostring(room);
315
		query = "update heating set soll = " + doubleToString(akt->soll, 1) + " where id = " + itostring(room);
311
 
316
 
312
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
317
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
313
		{
318
		{
314
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
319
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 318... Line 323...
318
			return akt->soll;
323
			return akt->soll;
319
		}
324
		}
320
 
325
 
321
		sqlite3_close(db);
326
		sqlite3_close(db);
322
		stringstream stream;
327
		stringstream stream;
323
		stream << "SOLL:" << setprecision(2) << akt->soll << ";";
328
		stream << "SOLL:" << fixed << setprecision(1) << akt->soll << ";";
324
		answer(stream.str());
329
		answer(stream.str());
325
		return akt->soll;
330
		return akt->soll;
326
	}
331
	}
327
 
332
 
328
	return 0.0;
333
	return 0.0;
Line 352... Line 357...
352
			sqlite3_close(db);
357
			sqlite3_close(db);
353
			return akt->soll;
358
			return akt->soll;
354
		}
359
		}
355
 
360
 
356
		akt->soll -= 0.5;
361
		akt->soll -= 0.5;
-
 
362
		applyConfig();
357
		query = "update heating set soll = " + doubleToString(akt->soll, 1) + " where id = " + itostring(room);
363
		query = "update heating set soll = " + doubleToString(akt->soll, 1) + " where id = " + itostring(room);
358
 
364
 
359
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
365
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
360
		{
366
		{
361
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
367
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 365... Line 371...
365
			return akt->soll;
371
			return akt->soll;
366
		}
372
		}
367
 
373
 
368
		sqlite3_close(db);
374
		sqlite3_close(db);
369
		stringstream stream;
375
		stringstream stream;
370
		stream << "SOLL:" << setprecision(2) << akt->soll << ";";
376
		stream << "SOLL:" << fixed << setprecision(1) << akt->soll << ";";
371
		answer(stream.str());
377
		answer(stream.str());
372
		return akt->soll;
378
		return akt->soll;
373
	}
379
	}
374
 
380
 
375
	return 0.0;
381
	return 0.0;
Line 399... Line 405...
399
	}
405
	}
400
 
406
 
401
	if (room > 0 && (akt = findRoom(room)) != nullptr)
407
	if (room > 0 && (akt = findRoom(room)) != nullptr)
402
	{
408
	{
403
		akt->soll = val;
409
		akt->soll = val;
-
 
410
		applyConfig();
404
		query = "update heating set soll = " + doubleToString(val, 1) + " where id = " + itostring(room);
411
		query = "update heating set soll = " + doubleToString(val, 1) + " where id = " + itostring(room);
405
 
412
 
406
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
413
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
407
		{
414
		{
408
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
415
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 442... Line 449...
442
	}
449
	}
443
 
450
 
444
	if (room > 0 && (akt = findRoom(room)) != nullptr)
451
	if (room > 0 && (akt = findRoom(room)) != nullptr)
445
	{
452
	{
446
		akt->night = val;
453
		akt->night = val;
-
 
454
		applyConfig();
447
		query = "update heating set night = " + doubleToString(val, 1) + " where id = " + itostring(room);
455
		query = "update heating set night = " + doubleToString(val, 1) + " where id = " + itostring(room);
448
 
456
 
449
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
457
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
450
		{
458
		{
451
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
459
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 458... Line 466...
458
		answer(query);
466
		answer(query);
459
	}
467
	}
460
	else if (room == 0)
468
	else if (room == 0)
461
	{
469
	{
462
		glb_night = val;
470
		glb_night = val;
-
 
471
 
-
 
472
		if (HtmlServer != nullptr)
-
 
473
			HtmlServer->setGlobals(glb_night, glb_minimal, onoff);
-
 
474
 
463
		query = "update glbheat set night = " + doubleToString(val, 1);
475
		query = "update glbheat set night = " + doubleToString(val, 1);
464
 
476
 
465
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
477
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
466
		{
478
		{
467
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
479
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 501... Line 513...
501
	}
513
	}
502
 
514
 
503
	if (room > 0 && (akt = findRoom(room)) != nullptr)
515
	if (room > 0 && (akt = findRoom(room)) != nullptr)
504
	{
516
	{
505
		akt->minimal = val;
517
		akt->minimal = val;
-
 
518
		applyConfig();
506
		query = "update heating set minimal = " + doubleToString(val, 1) + " where id = " + itostring(room);
519
		query = "update heating set minimal = " + doubleToString(val, 1) + " where id = " + itostring(room);
507
 
520
 
508
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
521
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
509
		{
522
		{
510
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
523
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 517... Line 530...
517
		answer(query);
530
		answer(query);
518
	}
531
	}
519
	else if (room == 0)
532
	else if (room == 0)
520
	{
533
	{
521
		glb_minimal = val;
534
		glb_minimal = val;
-
 
535
 
-
 
536
		if (HtmlServer != nullptr)
-
 
537
			HtmlServer->setGlobals(glb_night, glb_minimal, onoff);
-
 
538
 
522
		query = "update glbheat set minimal = " + doubleToString(val, 1);
539
		query = "update glbheat set minimal = " + doubleToString(val, 1);
523
 
540
 
524
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
541
		if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
525
		{
542
		{
526
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
543
			syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 552... Line 569...
552
		syslog(LOG_DAEMON, "Error opening database %s: %s", Configure.home, sqlite3_errmsg(db));
569
		syslog(LOG_DAEMON, "Error opening database %s: %s", Configure.home, sqlite3_errmsg(db));
553
		return onoff;
570
		return onoff;
554
	}
571
	}
555
 
572
 
556
	onoff = what;
573
	onoff = what;
-
 
574
 
-
 
575
	if (HtmlServer != nullptr)
-
 
576
		HtmlServer->setGlobals(glb_night, glb_minimal, onoff);
-
 
577
 
557
	query = "update glbheat set onoff = " + (what)?"1":"0";
578
	query = "update glbheat set onoff = " + (what)?"1":"0";
558
 
579
 
559
	if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
580
	if ((rc = sqlite3_exec(db, query.c_str(), NULL, NULL, &zErrMsg)) != SQLITE_OK)
560
	{
581
	{
561
		syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
582
		syslog(LOG_WARNING, "SQL error [%s]: %s", query.c_str(), zErrMsg);
Line 563... Line 584...
563
		sqlite3_close(db);
584
		sqlite3_close(db);
564
		return onoff;
585
		return onoff;
565
	}
586
	}
566
 
587
 
567
	sqlite3_close(db);
588
	sqlite3_close(db);
-
 
589
	query = "POWER:";
568
	query = "POWER:" + (onoff) ? "ON;" : "OFF;";
590
	query.append((onoff) ? "ON;" : "OFF;");
569
	answer(query);
591
	answer(query);
570
	return onoff;
592
	return onoff;
571
}
593
}
572
 
594
 
573
double heating::getNight (int room)
595
double heating::getNight (int room)
Line 610... Line 632...
610
{
632
{
611
HCONF *akt = HeatConf;
633
HCONF *akt = HeatConf;
612
stringstream stream;
634
stringstream stream;
613
 
635
 
614
	stream << "CONFIG:GLOBAL NIGHT:" << setprecision(2) << glb_night << ";";
636
	stream << "CONFIG:GLOBAL NIGHT:" << setprecision(2) << glb_night << ";";
615
	write(s1, stream.str().c_str(), stream.str().length());
-
 
616
	stream << "CONFIG:GLOBAL MINIMAL:" << setprecision(2) << glb_minimal << ";";
637
	stream << "CONFIG:GLOBAL MINIMAL:" << setprecision(2) << glb_minimal << ";";
617
	write(s1, stream.str().c_str(), stream.str().length());
-
 
618
	stream << "CONFIG:ONOFF:" << (onoff) ? "1;" : "0;";
638
	stream << "CONFIG:ONOFF:" << ((onoff) ? "ON;" : "OFF;");
619
	write(s1, stream.str().c_str(), stream.str().length());
-
 
620
 
639
 
621
	while (akt)
640
	while (akt)
622
	{
641
	{
623
		stream << "CONFIG:ROOM:" << akt->rnum << ":" << string(akt->rname) << ":" <<
642
		stream << "CONFIG:ROOM:" << akt->rnum << ":" << string(akt->rname) << ":" <<
624
			setprecision(1) << akt->soll << ":" << akt->night << ":" <<
643
			setprecision(1) << akt->soll << ":" << akt->night << ":" <<
625
			akt->minimal << ":" << timeToStr(akt->start) << ":" << timeToStr(akt->end) << ":" <<
644
			akt->minimal << ":" << timeToStr(akt->start) << ":" << timeToStr(akt->end) << ":" <<
626
			timeToStr(akt->wstart) << ":" << timeToStr(akt->wend) << ";";
645
			timeToStr(akt->wstart) << ":" << timeToStr(akt->wend) << ";";
627
		write(s1, stream.str().c_str(), stream.str().length());
-
 
628
 
646
 
629
		akt = akt->next;
647
		akt = akt->next;
630
	}
648
	}
-
 
649
 
-
 
650
	write(s1, stream.str().c_str(), stream.str().length());
631
}
651
}
632
 
652
 
633
heating::HCONF* heating::findRoom (int room)
653
heating::HCONF* heating::findRoom (int room)
634
{
654
{
635
HCONF *akt = HeatConf;
655
HCONF *akt = HeatConf;