微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 OctoPrint 的 Python Kasa试图用一个变量来改变和控制两个对象

如何解决带有 OctoPrint 的 Python Kasa试图用一个变量来改变和控制两个对象

发布我的 Tpautoshutdown 插件后,我被要求开发对智能条的支持,我正在尝试这样做,但为了保持我的代码简单,我想使用一个变量 self.conn 来保存我的对象打电话。但是我有两个类,一个导入为 wallPlug,另一个wallStrip。启动时,我使用 type 内的 .yaml 根据预先保存的设置建立连接。

if self._settings.get(["type"]) == "smartPlug":
        try:
            self.conn = wallPlug(self._settings.get(["url"]))
            self.conn.update()
            self._logger.info(self.conn.get_plug_information())
        except:
            self._logger.info("+++++++++++ Can't connect to plug +++++++++++++")
    elif self._settings.get(["type"]) == "smartStrip":
        try:
            self.conn = wallStrip(self._settings.get(["url"]))
            self.conn.update()
            self._logger.info(self.conn.get_plug_information())
        except:
            self._logger.info("+++++++++++ Can't connect to strip +++++++++++++")
    else:
        self._logger("+++++++++++ Aborted on Startup connection +++++++++++")

这随后会初始设置变量 self.conn。但是,稍后如果用户将设置更改为 smartStrip,我希望能够明显地调用 self.conn 成为 wallStrip()。通常在这种情况下,我只会覆盖它可以调用 self.conn = wallStrip() 但是,这似乎不起作用,服务器需要重新启动。

 def on_settings_save(self,data):
    try:
        self._logger.info(data)
        if data["type"] == "smartPlug":
            self.conn = wallPlug(data["url"])
            self.conn.update_two()
        elif data["type"] == "smartStrip":
            self.conn = wallStrip(data["url"])
            self.conn.update_two()
        # if data["url"] != self._settings.get(["url"]):
        #     self.conn.__init__(data["url"])
        #     self.conn.update_two()
    except:
        self._logger.warning("Error updating connection with the smart sockets within on_settings_save")
    octoprint.plugin.SettingsPlugin.on_settings_save(self,data)

这就是我想要做的,但它不起作用。

我使用 update_two() 而不是 update() 因为一个aync.run 而另一个async.create_task()

def update(self):
        asyncio.run(self.device.update())

    def update_two(self):
        asyncio.create_task(self.device.update())

希望这能解释我的问题 如果方便查看我的项目,这是分支的链接

Link to Github Repo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。