#include "hotwaterControl.h" // Bedeutungen: // smart (versorge bis aus - unabhängig von Solar), // versorge durchgäng, aber ggf. mit demand() =0 - unabhängig von Solar // auto (versorge wenn ausreichend Solar) /* * */ HotwaterControl::HotwaterControl(SHactuator *swtch, QObject *parent) : HeatControl(nullptr, swtch, 0.0, 0.0, startTimeDayDefault, startTimeNightDefault, parent) { if (m_switch->url() == "") throw std::invalid_argument("HotwaterControl::HotwaterControl: no url (must be Tasmota)"); m_consumer = new SHsensor(m_switch->nodeID(), SHsensor::powerSensor, m_switch->url()); } /* * */ int HotwaterControl::currentDemand() const { int ivalue; QString svalue= m_consumer->value(); bool ok; ivalue = svalue.toUInt(&ok); if (not ok) ivalue = 0; // diskuabel! return ivalue; } /* * */ int HotwaterControl::relevantDemand() const { if (suspended()) return 0; else return demand(); } /* * */ int HotwaterControl::demand() const { if (state() == SHactuator::State::ON) return currentDemand(); else return m_switch->powerDemand(); } /* * */ bool HotwaterControl::maxReached() const { return (relevantDemand() <= 0); // ggf. <= 10 o.Ä. } /* * */ bool HotwaterControl::minReached() const { return maxReached(); } /* * */ int HotwaterControl::suspensionTime() const { return 30; // min } /* * */ QString HotwaterControl::output() const { return " " + name() + "(" + QString::number(relevantDemand()) + "):"; }