#pragma once #include "../pipsolar.h" #include "esphome/components/output/float_output.h" #include "esphome/core/component.h" #include namespace esphome { namespace pipsolar { class Pipsolar; class PipsolarOutput : public output::FloatOutput { public: PipsolarOutput() {} void set_parent(Pipsolar *parent) { this->parent_ = parent; } void set_set_command(const std::string &command) { this->set_command_ = command; }; void set_possible_values(std::vector possible_values) { this->possible_values_ = std::move(possible_values); } void set_value(float value) { this->write_state(value); }; protected: void write_state(float state) override; std::string set_command_; Pipsolar *parent_; std::vector possible_values_; }; template class SetOutputAction : public Action { public: SetOutputAction(PipsolarOutput *output) : output_(output) {} TEMPLATABLE_VALUE(float, level) void play(Ts... x) override { this->output_->set_value(this->level_.value(x...)); } protected: PipsolarOutput *output_; }; } // namespace pipsolar } // namespace esphome