Skip to content
Snippets Groups Projects
hotwaterControl.cpp 1.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • #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
    
        QString svalue= m_consumer->value();
    
        bool ok;
        ivalue = svalue.toUInt(&ok);
    
        if (not ok)
            ivalue = 0; // diskuabel!
    
    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
    
    
    /*
     *
     */
    QString HotwaterControl::output() const
    {
        return " " + name() + "(" + QString::number(relevantDemand()) + "):";
    }