# Пример использования в основном цикле камеры
def camera_loop_with_light_control():
"""Пример интеграции управления светом в основной цикл камеры"""
global AUTO_LIGHT_ENABLED
esp32cam_url = "http://192.168.88.28/capture"
camera_active = True
# Включаем автосвет при старте
AUTO_LIGHT_ENABLED = True
try:
while camera_active:
# Получаем кадр с камеры ESP32
response = requests.get(esp32cam_url, timeout=2)
if response.status_code == 200:
img_array = np.array(bytearray(response.content), dtype=np.uint8)
frame = cv2.imdecode(img_array, cv2.IMREAD_COLOR)
if frame is not None:
# Проверяем уровень освещенности
brightness = check_light_level(frame)
# Автоматическое управление светом
control_light(brightness)
# Добавляем информацию о освещении на экран
light_status = "ВКЛ" if brightness < LIGHT_THRESHOLD else "ВЫКЛ"
cv2.putText(frame, f"Яркость: {brightness:.1f}", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
cv2.putText(frame, f"Свет: {light_status}", (10, 60),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
cv2.putText(frame, f"Авто: {'ВКЛ' if AUTO_LIGHT_ENABLED else 'ВЫКЛ'}", (10, 90),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2)
# Отображаем кадр
cv2.imshow('Камера с автосветом', frame)
# Обработка клавиш
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
elif key == ord('a'): # Клавиша A для переключения авторежима
toggle_auto_light()
elif key == ord('l'): # Клавиша L для ручного включения
turn_on_light()
elif key == ord('d'): # Клавиша D для ручного выключения
turn_off_light()
time.sleep(0.1)
except Exception as e:
print(f"❌ Ошибка в цикле камеры: {e}")
finally:
# Гасим свет при выходе
turn_off_light()
cv2.destroyAllWindows()
# Голосовые команды для интеграции с ассистентом
def handle_light_commands(user_text):
"""Обработка голосовых команд для света"""
user_lower = user_text.lower()
if "включи свет" in user_lower or "включи фонарик" in user_lower:
success = turn_on_light()
return "Свет включен" if success else "Не удалось включить свет"
elif "выключи свет" in user_lower or "выключи фонарик" in user_lower:
success = turn_off_light()
return "Свет выключен" if success else "Не удалось выключить свет"
elif "автоматический свет" in user_lower or "авто свет" in user_lower:
status = toggle_auto_light()
return "Автоматический свет включен" if status else "Автоматический свет выключен"
return None
# Тестирование функции
if name == "main":
print("🔦 Тестирование функции фонарика")
# Тест ручного управления
print("1. Включаем свет...")
turn_on_light()
time.sleep(2)
print("2. Выключаем свет...")
turn_off_light()
time.sleep(1)
print("3. Включаем авторежим...")
toggle_auto_light()
# Запуск тестового цикла камеры
print("4. Запуск теста камеры с автосветом...")
print(" Клавиши: A-авто, L-свет вкл, D-свет выкл, Q-выход")
camera_loop_with_light_control()
Post #43
41
- 💘 1