| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -9,6 +9,8 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																#include <QtWidgets>
 | 
																 | 
																 | 
																#include <QtWidgets>
 | 
															
														
														
													
														
															
																 | 
																 | 
																#include <QPushButton>
 | 
																 | 
																 | 
																#include <QPushButton>
 | 
															
														
														
													
														
															
																 | 
																 | 
																#include <QTime>
 | 
																 | 
																 | 
																#include <QTime>
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#include <QDate>
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#include <QtMath>
 | 
															
														
														
													
														
															
																 | 
																 | 
																#include <QLocale>
 | 
																 | 
																 | 
																#include <QLocale>
 | 
															
														
														
													
														
															
																 | 
																 | 
																#include <QVector>
 | 
																 | 
																 | 
																#include <QVector>
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -26,6 +28,7 @@ MainWindow::MainWindow(QWidget *parent) : | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	for (int i = 0; i < s->nbZones(); i++) { | 
																 | 
																 | 
																	for (int i = 0; i < s->nbZones(); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																		zone = new ZoneItem(s->m_rooms.at(i).name, this); | 
																 | 
																 | 
																		zone = new ZoneItem(s->m_rooms.at(i).name, this); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		zone->m_target_temperature = get_target_temperature(i); | 
															
														
														
													
														
															
																 | 
																 | 
																		m_zones << zone; | 
																 | 
																 | 
																		m_zones << zone; | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -36,7 +39,7 @@ MainWindow::MainWindow(QWidget *parent) : | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	m_state_btn.setText(tr("Auto")); | 
																 | 
																 | 
																	m_state_btn.setText(tr("Auto")); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if (s->nbZones() < 4) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if (s->nbZones() < MAX_NB_ZONES) { | 
															
														
														
													
														
															
																 | 
																 | 
																		// TODO
 | 
																 | 
																 | 
																		// TODO
 | 
															
														
														
													
														
															
																 | 
																 | 
																		qDebug() << "bad configuration" ; | 
																 | 
																 | 
																		qDebug() << "bad configuration" ; | 
															
														
														
													
														
															
																 | 
																 | 
																	} else { | 
																 | 
																 | 
																	} else { | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -47,8 +50,7 @@ MainWindow::MainWindow(QWidget *parent) : | 
															
														
														
													
														
															
																 | 
																 | 
																		mainLayout->addWidget(m_zones.at(3), 1, 1); | 
																 | 
																 | 
																		mainLayout->addWidget(m_zones.at(3), 1, 1); | 
															
														
														
													
														
															
																 | 
																 | 
																		mainLayout->addWidget(&m_state_btn, 1, 2); | 
																 | 
																 | 
																		mainLayout->addWidget(&m_state_btn, 1, 2); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																	m_pwr_state = OFF; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	update_state_btn(m_pwr_state); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	update_state_btn(s->m_state); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	QWidget *mainWidget = new QWidget; | 
																 | 
																 | 
																	QWidget *mainWidget = new QWidget; | 
															
														
														
													
														
															
																 | 
																 | 
																	mainWidget->setLayout(mainLayout); | 
																 | 
																 | 
																	mainWidget->setLayout(mainLayout); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -75,6 +77,7 @@ MainWindow::MainWindow(QWidget *parent) : | 
															
														
														
													
														
															
																 | 
																 | 
																		this, SLOT(availability_slot(int, bool))); | 
																 | 
																 | 
																		this, SLOT(availability_slot(int, bool))); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	connect(this, SIGNAL(setAllHeatersOn(bool)), m_mqtt, SLOT(allHeatersOn(bool))); | 
																 | 
																 | 
																	connect(this, SIGNAL(setAllHeatersOn(bool)), m_mqtt, SLOT(allHeatersOn(bool))); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	connect(m_mqtt, SIGNAL(connected(void)), this, SLOT(apply_order_to_heaters(void))); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	connect(&m_state_btn, SIGNAL(clicked()), this, SLOT(change_state())); | 
																 | 
																 | 
																	connect(&m_state_btn, SIGNAL(clicked()), this, SLOT(change_state())); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -83,7 +86,7 @@ MainWindow::MainWindow(QWidget *parent) : | 
															
														
														
													
														
															
																 | 
																 | 
																	 */ | 
																 | 
																 | 
																	 */ | 
															
														
														
													
														
															
																 | 
																 | 
																	m_timer = new QTimer(this); | 
																 | 
																 | 
																	m_timer = new QTimer(this); | 
															
														
														
													
														
															
																 | 
																 | 
																	connect(m_timer, SIGNAL(timeout()), this, SLOT(apply_order_to_heaters())); | 
																 | 
																 | 
																	connect(m_timer, SIGNAL(timeout()), this, SLOT(apply_order_to_heaters())); | 
															
														
														
													
														
															
																 | 
																 | 
																	m_timer->start(600000); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	m_timer->start(60000); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																MainWindow::~MainWindow() | 
																 | 
																 | 
																MainWindow::~MainWindow() | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -108,39 +111,150 @@ void MainWindow::update_state_btn(enum power_states st) | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																double MainWindow::get_target_temperature(int room_idx) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	const struct Room *r = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	const struct Program *p = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	double target = FORCE_OFF; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	QTime now = QTime::currentTime(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	uint8_t dow = QDate::currentDate().dayOfWeek(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if ((room_idx < 0) || (room_idx >= MAX_NB_ZONES)) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		goto out; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	r = &(s->m_rooms.at(room_idx)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	target = r->default_temperature; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if (!dow) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		goto out; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	dow <<= 1; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for (int i = 0; i < r->progs.count(); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		p = &(r->progs.at(i)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (dow & p->DoW) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			if (p->start_time == p->end_time) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				continue; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			/*
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			 * Ex: from 10h to 18h | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			if (p->start_time < p->end_time) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				if ((now >= p->start_time) && (now < p->end_time)) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					target = p->temperature; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			} else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				/*
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				 * Ex: from 22h to 6h | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				if (now >= p->start_time) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					target = p->temperature; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				} else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					if (now < p->end_time) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					target = p->temperature; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																out: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	return target; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																bool MainWindow::get_heater_order(int room_idx) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	bool should_heat = false; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if ((room_idx < 0) || (room_idx >= MAX_NB_ZONES)) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		goto out; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if (m_zones.at(room_idx)->m_temperature_value == FORCE_OFF) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		goto out; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	/* TODO: make it smarter */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if (qFabs(get_target_temperature(room_idx) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		  - m_zones.at(room_idx)->m_temperature_value) < 0.3) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		/*
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		 * Stay like before | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		should_heat = m_zones.at(room_idx)->m_heating_on; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (get_target_temperature(room_idx) > | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		    m_zones.at(room_idx)->m_temperature_value) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			should_heat = true; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																out: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	return should_heat; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																void MainWindow::apply_automatic_state(void) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	qDebug() << "apply auto state"; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for (i = 0; i < s->m_rooms.count(); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		const struct Room *r = &(s->m_rooms.at(i)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		bool should_heat = get_heater_order(i); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		qDebug() << "room " << r->name; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		for (int j = 0; j < r->heaters.count(); j++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			const struct Heater *h = &(r->heaters.at(j)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		qDebug() << "heater " << h->ctrl_topic; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			/* TODO: check if connected */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			m_mqtt->publish_msg(h->ctrl_topic, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					    should_heat ? "on" : "off"); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void MainWindow::change_state(void) | 
																 | 
																 | 
																void MainWindow::change_state(void) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																	switch (m_pwr_state) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	switch (s->m_state) { | 
															
														
														
													
														
															
																 | 
																 | 
																	case OFF: | 
																 | 
																 | 
																	case OFF: | 
															
														
														
													
														
															
																 | 
																 | 
																		m_pwr_state = ON; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		s->m_state = ON; | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case ON: | 
																 | 
																 | 
																	case ON: | 
															
														
														
													
														
															
																 | 
																 | 
																		m_pwr_state = AUTO; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		s->m_state = AUTO; | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case AUTO: | 
																 | 
																 | 
																	case AUTO: | 
															
														
														
													
														
															
																 | 
																 | 
																		/* fall through */ | 
																 | 
																 | 
																		/* fall through */ | 
															
														
														
													
														
															
																 | 
																 | 
																	default: | 
																 | 
																 | 
																	default: | 
															
														
														
													
														
															
																 | 
																 | 
																		m_pwr_state = OFF; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		s->m_state = OFF; | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	update_state_btn(m_pwr_state); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	update_state_btn(s->m_state); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	apply_order_to_heaters(); | 
																 | 
																 | 
																	apply_order_to_heaters(); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void MainWindow::apply_order_to_heaters(void) | 
																 | 
																 | 
																void MainWindow::apply_order_to_heaters(void) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																	switch (m_pwr_state) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	switch (s->m_state) { | 
															
														
														
													
														
															
																 | 
																 | 
																	case ON: | 
																 | 
																 | 
																	case ON: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		qDebug() << "emit ALL_ON order"; | 
															
														
														
													
														
															
																 | 
																 | 
																		emit setAllHeatersOn(true); | 
																 | 
																 | 
																		emit setAllHeatersOn(true); | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case AUTO: | 
																 | 
																 | 
																	case AUTO: | 
															
														
														
													
														
															
																 | 
																 | 
																		/* TODO */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		qDebug() << "apply AUTO state"; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		apply_automatic_state(); | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case OFF: | 
																 | 
																 | 
																	case OFF: | 
															
														
														
													
														
															
																 | 
																 | 
																		/* fall */ | 
																 | 
																 | 
																		/* fall */ | 
															
														
														
													
														
															
																 | 
																 | 
																	default: | 
																 | 
																 | 
																	default: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		qDebug() << "emit ALL_OFF order"; | 
															
														
														
													
														
															
																 | 
																 | 
																		emit setAllHeatersOn(false); | 
																 | 
																 | 
																		emit setAllHeatersOn(false); | 
															
														
														
													
														
															
																 | 
																 | 
																		break; | 
																 | 
																 | 
																		break; | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -152,7 +266,8 @@ void MainWindow::temperature_slot(int idx, double val) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	qDebug() << "temperature idx:" << idx << " val: " << val << endl; | 
																 | 
																 | 
																	qDebug() << "temperature idx:" << idx << " val: " << val << endl; | 
															
														
														
													
														
															
																 | 
																 | 
																	if (idx < s->nbZones()) { | 
																 | 
																 | 
																	if (idx < s->nbZones()) { | 
															
														
														
													
														
															
																 | 
																 | 
																		m_zones.at(idx)->set_temperature_value(val); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->m_temperature_value = val; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->refresh(); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -162,16 +277,19 @@ void MainWindow::hygro_slot(int idx, double val) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	qDebug() << "hygro idx:" << idx << " val: " << val << endl; | 
																 | 
																 | 
																	qDebug() << "hygro idx:" << idx << " val: " << val << endl; | 
															
														
														
													
														
															
																 | 
																 | 
																	if (idx < s->nbZones()) { | 
																 | 
																 | 
																	if (idx < s->nbZones()) { | 
															
														
														
													
														
															
																 | 
																 | 
																		m_zones.at(idx)->set_hygro_value(val); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)-> m_hygro_value = val; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->refresh(); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void MainWindow::availability_slot(int idx, bool ok) | 
																 | 
																 | 
																void MainWindow::availability_slot(int idx, bool ok) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
																 | 
																 | 
																	Settings *s = Settings::getInstance(); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if ((idx < s->nbZones()) && !ok) { | 
																 | 
																 | 
																	if ((idx < s->nbZones()) && !ok) { | 
															
														
														
													
														
															
																 | 
																 | 
																		m_zones.at(idx)->set_hygro_value(0); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		m_zones.at(idx)->set_temperature_value(0); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->m_hygro_value = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->m_temperature_value = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m_zones.at(idx)->refresh(); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																 | 
																
  |