День добрый, на балконе лежит raspbery которая работает в качестве моста между ethernet и wifi, решил нагрузить её полезным функционалом. Хочу чтобы по запросу бот в телеграмм присылал фото с веб камеры(камера смотрит на дорогу и видно пробки полезно когда едешь домой и планируешь маршрут). Нашел на гитхабе пример (https://github.com/ericho/robotina). Собственно сам я в Python 0. Поэтому прошу помощи.
Код работает фото отсылает НО, видимо настройки с которыми делается фото не оптимальные, вечером картинка приходит нормальная, видно дорогу. а днем когда света больше картинка полностью засвеченная. Вопросов два 1. Как сделать авторизацию бота (добавить список пользователей которым можно пользоваться ботом) желательно отдельным файлом в котором прописать id пользователей. 2. Основная задача это как получать нормальную не засвеченную картинку. как то передавать параметры может яркость контрастность. Еще раз повторюсь в питон 0, если не затруднит поподробнее и попроще. В дальнейшем конечно хотелось бы функционал расширить, например передавать температуру в помещении, или например не фото а видео присылать, ну это уже мечты.
Может у кого то есть готовые наработки и он поделится, могу заплатить немного если нужно? В общем приму любую помощь.
фото днем и вечером https://itmages.ru/image/view/5711697/59f55459 https://itmages.ru/image/view/5711696/406cf949
GNU nano 2.2.6 Файл: robotina.py
""" A simple Telegram bot to get photos from a camera """
import cv2
import telepot
import time
TOKEN = "*****:********"
PHOTO = 'test.png'
CAM_PORT = 0
bot = telepot.Bot(TOKEN)
#def help_cmd(bot, update):
# text = ('/start command activates a motion capture mode.\n'
# '/stop command does the opposite.\n'
# '/shot is used to get an actual snapshot.')
# bot.sendMessage(chat_id=update.message.chat_id, text=text)
#$config = {
# cv2.CV_CAP_PROP_BRIGHTNESS: 50,
# camera.CV_CAP_PROP_CONTRAST: 50,
# camera.CV_CAP_PROP_SATURATION: 50,
#}
#for param, value in config.iteritems():
# cv2.SetCaptureProperty(capture, param, value)
#
#
def take_photo():
camera = cv2.VideoCapture(CAM_PORT)
# camera.set(16,90)
# Wait some time to get ligth in the camera
time.sleep(1)
rc, image = camera.read()
if rc:
cv2.imwrite(PHOTO, image)
del(camera)
return rc
def send_photo(chat_id, photo_path, caption):
with open(photo_path, 'rb') as photo:
bot.sendPhoto(chat_id, photo, caption)
def handle_messages(msg):
""" The entry point to the message reception """
content_type, chat_type, chat_id = telepot.glance(msg)
print(content_type, chat_type, chat_id)
if content_type == 'text':
text = msg['text']
if text == '/getphoto':
if take_photo():
send_photo(chat_id, PHOTO, 'This is a test caption')
else:
bot.SendMessage(chat_id, 'A problem occurred taking the photo')
else:
#error_msg = "No se de que me hablas!"
error_msg = "I don't know what are you talking about!"
bot.sendMessage(chat_id, error_msg)
bot.message_loop(handle_messages)
print('Listen messages...')
while True:
time.sleep(5)