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)))
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)))
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)))
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)))
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)))
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))
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')
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)))
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)
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')