Пример #1
0
    def __init__(self, config: ConfigHelper) -> None:

        self.config = config
        name_parts = config.get_name().split(maxsplit=1)
        if len(name_parts) != 2:
            raise config.error(f"Invalid Section Name: {config.get_name()}")
        self.server = config.get_server()
        self.name = name_parts[1]
        self.apprise = apprise.Apprise()
        self.warned = False

        self.attach_requires_file_system_check = True
        self.attach = config.get("attach", None)
        if self.attach is None or \
            (self.attach.startswith("http://") or
             self.attach.startswith("https://")):
            self.attach_requires_file_system_check = False

        url_template = config.gettemplate('url')
        self.url = url_template.render()

        if len(self.url) < 2:
            raise config.error(f"Invalid url for: {config.get_name()}")

        self.title = config.gettemplate('title', None)
        self.body = config.gettemplate("body", None)

        self.events: List[str] = config.getlist("events", separator=",")

        self.apprise.add(self.url)
Пример #2
0
 def __init__(self, config: ConfigHelper) -> None:
     name_parts = config.get_name().split(maxsplit=1)
     if len(name_parts) != 2:
         raise config.error(f"Invalid Section Name: {config.get_name()}")
     self.server = config.get_server()
     self.name = name_parts[1]
     self.type: str = config.get('type')
     self.state: str = "init"
     self.locked_while_printing = config.getboolean('locked_while_printing',
                                                    False)
     self.off_when_shutdown = config.getboolean('off_when_shutdown', False)
     self.off_when_shutdown_delay = 0.
     if self.off_when_shutdown:
         self.off_when_shutdown_delay = config.getfloat(
             'off_when_shutdown_delay', 0., minval=0.)
     self.shutdown_timer_handle: Optional[asyncio.TimerHandle] = None
     self.restart_delay = 1.
     self.klipper_restart = config.getboolean(
         'restart_klipper_when_powered', False)
     if self.klipper_restart:
         self.restart_delay = config.getfloat('restart_delay', 1.)
         if self.restart_delay < .000001:
             raise config.error("Option 'restart_delay' must be above 0.0")
     self.bound_service: Optional[str] = config.get('bound_service', None)
     self.need_scheduled_restart = False
     self.on_when_queued = config.getboolean('on_when_upload_queued', False)
Пример #3
0
 def __init__(self,
              config: ConfigHelper,
              cmd_helper: CommandHelper
              ) -> None:
     name_parts = config.get_name().split()
     self.name = name_parts[-1]
     self.server = config.get_server()
     self.cmd_helper = cmd_helper
     if name_parts == 1:
         self.prefix: str = ""
     if config.get('type', "") == "web":
         self.prefix = f"Web Client {self.name}: "
     else:
         self.prefix = f"Application {self.name}: "
Пример #4
0
 def from_config(cls, config: ConfigHelper) -> WebCam:
     webcam: Dict[str, Any] = {}
     webcam["name"] = config.get_name().split(maxsplit=1)[-1]
     webcam["location"] = config.get("location", "printer")
     webcam["service"] = config.get("service", "mjpegstreamer")
     webcam["target_fps"] = config.getint("target_fps", 15)
     webcam["stream_url"] = config.get("stream_url")
     webcam["snapshot_url"] = config.get("snapshot_url")
     webcam["flip_horizontal"] = config.getboolean("flip_horizontal", False)
     webcam["flip_vertical"] = config.getboolean("flip_vertical", False)
     webcam["rotation"] = config.getint("rotation", 0)
     if webcam["rotation"] not in [0, 90, 180, 270]:
         raise config.error("Invalid value for option 'rotation'")
     webcam["source"] = "config"
     return cls(config.get_server(), **webcam)
Пример #5
0
 def __init__(self, config: ConfigHelper) -> None:
     name_parts = config.get_name().split(maxsplit=1)
     if len(name_parts) != 2:
         raise config.error(f"Invalid Section Name: {config.get_name()}")
     self.server = config.get_server()
     self.name = name_parts[1]
     self.type: str = config.get('type')
     self.state: str = "init"
     self.locked_while_printing = config.getboolean('locked_while_printing',
                                                    False)
     self.off_when_shutdown = config.getboolean('off_when_shutdown', False)
     self.restart_delay = 1.
     self.klipper_restart = config.getboolean(
         'restart_klipper_when_powered', False)
     if self.klipper_restart:
         self.restart_delay = config.getfloat('restart_delay', 1.)
         if self.restart_delay < .000001:
             raise config.error("Option 'restart_delay' must be above 0.0")
Пример #6
0
 def __init__(self,
              config: ConfigHelper,
              cmd_helper: CommandHelper,
              name: Optional[str] = None,
              prefix: str = "",
              cfg_hash: Optional[str] = None) -> None:
     if name is None:
         name = config.get_name().split()[-1]
     self.name = name
     if prefix:
         prefix = f"{prefix} {self.name}: "
     self.prefix = prefix
     self.server = config.get_server()
     self.cmd_helper = cmd_helper
     self.refresh_interval = cmd_helper.get_refresh_interval()
     refresh_interval = config.getint('refresh_interval', None)
     if refresh_interval is not None:
         self.refresh_interval = refresh_interval * 60 * 60
     if cfg_hash is None:
         cfg_hash = config.get_hash().hexdigest()
     self.cfg_hash = cfg_hash
Пример #7
0
 def __init__(self, config: ConfigHelper) -> None:
     self.server = config.get_server()
     self.eventloop = self.server.get_event_loop()
     self.name = config.get_name().split()[-1]
     self.itransport: ITransport = self.server.lookup_component(
         'internal_transport')
     self.mutex = asyncio.Lock()
     gpio: GpioFactory = self.server.load_component(config, 'gpio')
     self.gpio_event = gpio.register_gpio_event(config.get('pin'),
                                                self._on_gpio_event)
     min_event_time = config.getfloat('minimum_event_time',
                                      .05,
                                      minval=.010)
     self.gpio_event.setup_debounce(min_event_time, self._on_gpio_error)
     self.press_template = config.gettemplate("on_press",
                                              None,
                                              is_async=True)
     self.release_template = config.gettemplate("on_release",
                                                None,
                                                is_async=True)
     if (self.press_template is None and self.release_template is None):
         raise config.error(
             f"[{config.get_name()}]: No template option configured")
     self.notification_sent: bool = False
     self.user_data: Dict[str, Any] = {}
     self.context: Dict[str, Any] = {
         'call_method': self.itransport.call_method,
         'send_notification': self._send_notification,
         'event': {
             'elapsed_time': 0.,
             'received_time': 0.,
             'render_time': 0.,
             'pressed': False,
         },
         'user_data': self.user_data
     }
Пример #8
0
 def test_get_name(self, config: ConfigHelper):
     assert config.get_name() == "server"