# ESP32 CAM webcam server RTSP

**URL:** <https://ai-speaker.discourse.group/t/esp32-cam-webcam-server-rtsp/1424>\
**Category:** Projekty\
**Created:** [25 Luty 2021 13:26 UTC](https://ai-speaker.discourse.group/t/esp32-cam-webcam-server-rtsp/1424 "2021-02-25T13:26:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Autor:** ![ziom](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/ziom/32/8996_2.png) [@ziom](https://ai-speaker.discourse.group/u/ziom)\
**Data wpisu:** [25 Luty 2021 13:26 UTC](https://ai-speaker.discourse.group/t/esp32-cam-webcam-server-rtsp/1424/1 "2021-02-25T13:26:13Z")

</div>

# Wprowadzenie

ESP32 to tani i energooszczędny mikrokontroler opracowany przez Espressif. ESP32 jest ceniony za swoją niewielkie rozmiary, solidną konstrukcje, wszechstronności zastosowań, wbudowane Wi-Fi, Bluetooth no i za bardzo przystępną cenę 💸

Jedna z płytek z ESP32 ma zintegrowany moduł kamery, zwany ESP32-cam, całość można kupić w Chinach za zaledwie kilka Amerykańskich dolarów.

Dzięki takim projektą jak Tamota/AIS-Tasmota można zbudować tanią alternatywę dla komercyjnych kamer bezprzewodowych przy użyciu oprogramowania typu open source, które można łatwo kontrolować za pośrednictwem protokołu HTTP lub MQTT i zintegrować z wielofunkcyjnym serwer automatyzacji działającym na bramce AIS dom.  
Dzięki Tasmota i AIS 👍

Jeżeli nie masz doświadczenia z ESP32 to warto zacząć od tego filmu:

[![](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/0/0bab5a781499749e0b32bef0198e09e3b9c24221.jpeg "Introduction to ESP32 - Getting Started") ](https://www.youtube.com/watch?v=xPlN_Tk3VLQ)

# Dlaczego wybrałem AIS-Tasmota?

AIS-Tasmota to 100% kodu Tasmota i kilka fajnych dodatków ułatwiających działanie urządzeń z bramką AIS dom.  
To oprogramowanie to jest wg mnie solidna alternatywa dla komercyjnego oprogramowania w różnych urządzeniach z ESP. AIS team dobrze to wykombinował, żeby nie pisać swojego softu a skorzystać z tego, co jest napisane i działa - cwaniaczki 😉

> Dodatkowa motywacja w przypadku kamery to fakt, że AIS-Tasmota jest skompilowane z flagą ENABLE\_RTSPSERVER bez tego nie działa serwer RTSP na kamerze.

# Jak ja to robie?

To nie będzie opis krok po kroku dla tych co nie potrafią programować ESP32. Takich opisów w sieci jest sporo. Na tym forum użytkownik @Tomasz zrobił bardzo dobre opisy, od których można zacząć. Kierujcie się takmi obrazkami jak poniżej 😉

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/d09492e1c7f04fee034c68f4a753b8593b1ca3de.jpeg)

Opiszę tu jak ja programuje ESP32 oprogramowaniem AIS-Tasmota.

## Instalacja

1. Kody pobieram z repozytorium AIS-Tasmota taką komendą:

```auto
wget -P AIS_ESP32_CAM/ https://github.com/sviete/AIS-Tasmota/raw/firmware/firmware/tasmota32/languages/tasmota32-ais-webcam.bin \ 
wget -P AIS_ESP32_CAM/ https://github.com/sviete/AIS-Tasmota/raw/release-firmware/firmware/tasmota32/ESP32_needed_files/boot_app0.bin \
wget -P AIS_ESP32_CAM/ https://github.com/sviete/AIS-Tasmota/raw/release-firmware/firmware/tasmota32/ESP32_needed_files/bootloader_dout_40m.bin \
wget -P AIS_ESP32_CAM/ https://github.com/sviete/AIS-Tasmota/raw/release-firmware/firmware/tasmota32/ESP32_needed_files/partitions.bin 

```

1. Usuwam bieżące oprogramowanie / czyszczę dane

wprowadzam kamerę w tryb programowania (zwieram na stałe GPIO 0 z GND) i podłączam do USB, u mnie kamera ESP32 jest na ttyUSB0 więc ją kasuje tym poleceniem

```auto
esptool.py --port /dev/ttyUSB0 erase_flash

```

1. Wgranie nowego oprogramowania  
jak esptool.py zakończy kasowanie to naciskam przycisk resetowania na płytce ESP32 i wgrywam oprogramowanie tą komendą

```auto
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 40m --flash_size detect 0x1000 bootloader_dout_40m.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 tasmota32-ais-webcam.bin

```

## Konfiguracja wstępna urządzenia

jak programowanie się zakończy to rozłączam zworkę GPIO 0 z GND i naciskam przycisk resetowania na płytce ESP32

Podłączam się terminalem do ESP32 (ja to robię programem CoolTerm - polecam)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/eb029c5429ac745bd599955add5dccf6b5a1ac08.png)

ustawienia mam takie

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/75081a9e6e7665a3aa290c0c399a64b6122bc931.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/b/b00467eba1a007f91fe4c337c7917922ceed1af9.png)

i wydaje komendę która przełącza urządzenie w tryb AP

```auto
WifiConfig 2

```

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/f/f13a687241a5967952d68824be78b4d7f4d5307b.png)

## Dodatkowe opcje konfiguracji serwera kamery

Po podłączeniu kamery do WiFi pytam o jej ustawienia komendą

```auto
status 0

```

tu widać jej IP

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/9/92e814fe79dfe2fabe961ca56873781fb8c85481.png)

Resztę konfiguracji robie już z przeglądarki ale zostawiam sobie połączenie szeregowe żeby podczas konfiguracji widzieć logi.

## Konfiguracja wideo

Tu ważna jest komenda `WcRtsp` tym włączamy serwer RTSP

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/758d7a1e2fdee42e98f689223771f713e3d75838.png)

następnie możemy sprwadzić np w VLC czy serwer działa pod takim linkiem:

```auto
rtsp://[ip-kamery]:8554/mjpeg/1

```

## Ustawienia kamer w Tasmota

Wszyskie parametry dotyczące ustawień kamery które udało mi się ustalić:

| Komenda | Definicja | Wartości |
| --- | --- | --- |
| WcBrightness | Image brightness | -2, -1, 0, 1, 2 |
| WcContrast | Image contrast | -2, -1, 0, 1, 2 |
| WCFlip | Flips the image vertically | 1, 0 |
| WcInit | Initializes the webcam server | |
| WCMirror | Flips the image horizontally | 1, 0 |
| WcResolution | Image resolution | 0: FRAMESIZE 96x96 |
| | | 1: FRAMESIZE 160x120 |
| | | 2: FRAMESIZE 176x144 |
| | | 3: FRAMESIZE 240x176 |
| | | 4: FRAMESIZE 240x240 |
| | | 5: FRAMESIZE 320x240 |
| | | 6: FRAMESIZE 400x256 |
| | | 7: FRAMESIZE 480x320 |
| | | 8: FRAMESIZE 640x480 |
| | | 9: FRAMESIZE 800x600 |
| | | 10: FRAMESIZE 1024x768 |
| WcSaturation | Image saturation | -2, -1, 0, 1, 2 |
| WcStream | Controls the video streaming | 0: stop, 1: start |
| WcRtsp | Control RTSP Server | 0=disable, 1=enable (forces restart) (if defined ENABLE\_RTSPSERVER) |

u mnie działa (czego i Wam żeyczę 😉 )

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/1/194355466ebf0e5d5da63275b739d7656f7bbb76.jpeg)

PS  
Przepraszam, ale nie będę mógł za bardzo aktywnie uczestniczyć w dyskusji “u mnie nie działa”, “napisz mi co mam zrobić krok po kroku”, “kupiłem inną kamerę i też nie działa”, itd..  
Wybaczcie, ale mam teraz jak by to powiedzieć sianokosy i są inne priorytety 🙂

Jeżeli komuś ten opis pomoże to będzie mi miło. Jeżeli nie, to może trzeba poświecić więcej czasu na czytanie ze zrozumieniem 😉 Lub zainwestować w jakiś bardziej komercyjny produkt.  
Podsumowując wińcie za niedziałanie kogo chcecie: Espressif, Tasmotę, AIS i Jolkę… ale proszę nie mieszjcie w to moją osobę za mocno … bo mi to działa ☮

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [25 Luty 2021 13:43 UTC](https://ai-speaker.discourse.group/t/esp32-cam-webcam-server-rtsp/1424/2 "2021-02-25T13:43:50Z")

</div>

Wielkie dzięki za ten opis, osobiście gubi mnie rutyna, a diabeł tkwi w szczegółach.
