Ejemplo n.º 1
0
 def cmd_alert_off(self, update, cam, cam_id):
     """Disable camera's Alert Mode."""
     self._log.info('Disabling camera\'s alert mode requested')
     try:
         cam.alarm.stop()
         update.message.reply_html(
             make_html_bold('Alarm alert mode successfully disabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 2
0
 def cmd_stream_yt_off(self, update, cam, cam_id):
     """Stop YouTube stream."""
     self._log.info('Stopping YouTube stream')
     self._log.debug(self._get_user_info(update))
     try:
         cam.stream_yt.stop()
         update.message.reply_html(
             make_html_bold('YouTube stream successfully disabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 3
0
 def cmd_alert_on(self, update, cam, cam_id):
     """Enable camera's Alert Mode."""
     self._log.info('Enabling camera\'s alert mode requested')
     self._log.debug(self._get_user_info(update))
     try:
         cam.alarm.start()
         self._start_thread(target_func=self._alert_pusher,
                            cam_id=cam_id,
                            cam=cam)
         update.message.reply_html(
             make_html_bold('Alarm alert mode successfully enabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 4
0
 def cmd_stream_yt_on(self, update, cam, cam_id):
     """Start YouTube stream."""
     self._log.info('Starting YouTube stream')
     self._log.debug(self._get_user_info(update))
     try:
         cam.stream_yt.start()
         self._start_thread(target_func=self._yt_streamer,
                            cam_id=cam_id,
                            cam=cam)
         update.message.reply_html(
             make_html_bold('YouTube stream successfully enabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 5
0
 def cmd_alert_on(self, update, cam, cam_id):
     """Enable camera's Alert Mode."""
     self._log.info('Enabling camera\'s alert mode requested')
     self._log.debug(self._get_user_info(update))
     try:
         cam.alarm.start()
         self._start_thread(thread=self._service_threads.get(AlarmMap.type),
                            cam_id=cam_id,
                            cam=cam,
                            service_name=AlarmMap.ALARM,
                            update=update)
         update.message.reply_html(
             make_html_bold('Alarm alert mode successfully enabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 6
0
    def cmd_getfullpic(self, update, cam, cam_id):
        """Get and send full snapshot from the camera."""
        self._log.info('Full cam snapshot requested')
        self._log.debug(self._get_user_info(update))

        try:
            photo, snapshot_timestamp = cam.take_snapshot(resize=False)
        except Exception as err:
            update.message.reply_text(
                '{0}\nTry later or /list other cameras'.format(str(err)))
            return

        fullpic_name = 'Full_snapshot_{:%a_%b_%-d_%H.%M.%S_%Y}.jpg'.format(
            datetime.fromtimestamp(snapshot_timestamp))
        caption = 'Full snapshot taken on {0:%a %b %-d %H:%M:%S %Y} ' \
                  '(snapshot #{1})'.format(
            datetime.fromtimestamp(snapshot_timestamp), cam.snapshots_taken)
        caption = '{0}\n/cmds_{1}, /list'.format(caption, cam_id)
        reply_html = 'Sending full snapshot from {0}'.format(cam.description)
        self._log.info('Sending full snapshot')
        self.reply_cam_photo(photo=photo,
                             update=update,
                             caption=caption,
                             reply_html=make_html_bold(reply_html),
                             fullpic_name=fullpic_name,
                             fullpic=True)
        self._log.info('Full cam snapshot {0} sent'.format(fullpic_name))
Ejemplo n.º 7
0
    def cmd_getpic(self, update, cam, cam_id):
        """Get and send resized snapshot from the camera."""
        self._log.info('Resized cam snapshot from {0} requested'.format(
            cam.description))
        self._log.debug(self._get_user_info(update))

        try:
            photo, snapshot_timestamp = cam.take_snapshot(resize=True)
        except Exception as err:
            update.message.reply_text(
                '{0}\nTry later or /list other cameras'.format(str(err)))
            return

        caption = 'Snapshot taken on {0:%a %b %-d %H:%M:%S %Y} ' \
                  '(snapshot #{1})'.format(
            datetime.fromtimestamp(snapshot_timestamp), cam.snapshots_taken)
        caption = '{0}\n/cmds_{1}, /list'.format(caption, cam_id)

        reply_html = 'Sending snapshot from {0}'.format(cam.description)
        self._log.info('Sending resized cam snapshot')
        self.reply_cam_photo(photo=photo,
                             update=update,
                             caption=caption,
                             reply_html=make_html_bold(reply_html))

        self._log.info('Resized snapshot sent')
Ejemplo n.º 8
0
 def cmd_stream_icecast_on(self, update, cam, cam_id):
     """Start Icecast stream."""
     self._log.info('Starting Icecast stream')
     self._log.debug(self._get_user_info(update))
     try:
         cam.stream_icecast.start()
         self._start_thread(thread=self._service_threads.get(
             StreamMap.type),
                            cam_id=cam_id,
                            cam=cam,
                            service_name=StreamMap.ICECAST,
                            update=update)
         update.message.reply_html(
             make_html_bold('Icecast stream successfully enabled'))
     except Exception as err:
         update.message.reply_html(make_html_bold(str(err)))
Ejemplo n.º 9
0
 def _trigger_switch(self, enable, _type, args):
     name = SWITCH_MAP[_type]['name']
     update, cam, cam_id = args
     self._log.info('{0} camera\'s {1} has been requested'.format(
         'Enabling' if enable else 'Disabling', name))
     self._log.debug(self._get_user_info(update))
     try:
         msg = cam.alarm.trigger_switch(enable=enable, _type=_type)
         msg = msg or '{0} successfully {1}'.format(
             name, 'enabled' if enable else 'disabled')
         update.message.reply_html(make_html_bold(msg))
         self._log.info(msg)
     except Exception as err:
         err_msg = 'Failed to {0} {1}: {2}'.format(
             'enable' if enable else 'disable', name, str(err))
         update.message.reply_text(err_msg)
Ejemplo n.º 10
0
    def cmd_list_cams(self, update):
        """List user's cameras."""
        self._log.info('Camera list has been requested')

        cam_count = self._pool.get_count()
        msg = [
            make_html_bold('You have {0} camera{1}'.format(
                cam_count, '' if cam_count == 1 else 's'))
        ]

        for cam_id, cam_data in self._pool.get_all().items():
            msg.append('<b>Camera:</b> {0}\n<b>Description:</b> '
                       '{1}\n<b>Commands</b>\n{2}'.format(
                           cam_id, cam_data['instance'].description,
                           '\n'.join('/{0}'.format(cmds)
                                     for cmds in cam_data['commands'])))

        update.message.reply_html('\n\n'.join(msg))

        self._log.info('Camera list has been sent')