lamp_controller.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef __LAMP_CONTROLLER_H__
  2. #define __LAMP_CONTROLLER_H__
  3. #include "mcp_server.h"
  4. class LampController {
  5. private:
  6. bool power_ = false;
  7. gpio_num_t gpio_num_;
  8. public:
  9. LampController(gpio_num_t gpio_num) : gpio_num_(gpio_num) {
  10. gpio_config_t config = {
  11. .pin_bit_mask = (1ULL << gpio_num_),
  12. .mode = GPIO_MODE_OUTPUT,
  13. .pull_up_en = GPIO_PULLUP_DISABLE,
  14. .pull_down_en = GPIO_PULLDOWN_DISABLE,
  15. .intr_type = GPIO_INTR_DISABLE,
  16. };
  17. ESP_ERROR_CHECK(gpio_config(&config));
  18. gpio_set_level(gpio_num_, 0);
  19. auto& mcp_server = McpServer::GetInstance();
  20. mcp_server.AddTool("self.lamp.get_state", "Get the power state of the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
  21. return power_ ? "{\"power\": true}" : "{\"power\": false}";
  22. });
  23. mcp_server.AddTool("self.lamp.turn_on", "Turn on the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
  24. power_ = true;
  25. gpio_set_level(gpio_num_, 1);
  26. return true;
  27. });
  28. mcp_server.AddTool("self.lamp.turn_off", "Turn off the lamp", PropertyList(), [this](const PropertyList& properties) -> ReturnValue {
  29. power_ = false;
  30. gpio_set_level(gpio_num_, 0);
  31. return true;
  32. });
  33. }
  34. };
  35. #endif // __LAMP_CONTROLLER_H__