You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BoilerTankService.cpp 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "BoilerTankService.h"
  2. #include "DigitalOutput.h"
  3. #include "TempInput.h"
  4. BoilerTankService::BoilerTankService(BoilerTankState* mBoilerTank)
  5. : m_boilerTank(mBoilerTank)
  6. {
  7. }
  8. void BoilerTankService::loop()
  9. {
  10. if (m_boilerTank->mode == BoilerTankState::Auto)
  11. {
  12. if (!m_boilerTank->relay->isEnabled() &&
  13. m_boilerTank->input->getValue() != TEMP_T_INVALID &&
  14. m_boilerTank->setting != TEMP_T_INVALID &&
  15. m_boilerTank->input->getValue() <= m_boilerTank->setting - m_boilerTank->tempTrigger)
  16. {
  17. m_boilerTank->relay->setEnabled(true);
  18. }
  19. else if (m_boilerTank->relay->isEnabled() && (
  20. m_boilerTank->input->getValue() == TEMP_T_INVALID ||
  21. m_boilerTank->setting == TEMP_T_INVALID ||
  22. m_boilerTank->input->getValue() >= m_boilerTank->setting)
  23. )
  24. {
  25. m_boilerTank->relay->setEnabled(false);
  26. }
  27. }
  28. else if (m_boilerTank->mode == BoilerTankState::On)
  29. {
  30. if (!m_boilerTank->relay->isEnabled())
  31. {
  32. m_boilerTank->relay->setEnabled(true);
  33. }
  34. }
  35. else if (m_boilerTank->mode == BoilerTankState::Off)
  36. {
  37. if (m_boilerTank->relay->isEnabled())
  38. {
  39. m_boilerTank->relay->setEnabled(false);
  40. }
  41. }
  42. }