{"id":19144961,"url":"https://github.com/ldab/esp32-cam-mqtt","last_synced_at":"2025-05-07T01:13:04.327Z","repository":{"id":109150280,"uuid":"198420454","full_name":"ldab/ESP32-CAM-MQTT","owner":"ldab","description":"ESP32-CAM publishing camera pictures to Node-RED via MQTT","archived":false,"fork":false,"pushed_at":"2022-10-11T01:07:40.000Z","size":1861,"stargazers_count":63,"open_issues_count":0,"forks_count":20,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-02T08:55:46.686Z","etag":null,"topics":["esp32","esp32-cam","iot","mqtt","mqtt-client","node-red"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ldab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-23T11:53:17.000Z","updated_at":"2025-04-16T13:01:03.000Z","dependencies_parsed_at":"2023-03-11T23:16:02.530Z","dependency_job_id":null,"html_url":"https://github.com/ldab/ESP32-CAM-MQTT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"ldab/ESP32-CAM-Picture-Sharing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldab%2FESP32-CAM-MQTT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldab%2FESP32-CAM-MQTT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldab%2FESP32-CAM-MQTT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldab%2FESP32-CAM-MQTT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ldab","download_url":"https://codeload.github.com/ldab/ESP32-CAM-MQTT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252793656,"owners_count":21805058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","esp32-cam","iot","mqtt","mqtt-client","node-red"],"created_at":"2024-11-09T07:37:10.728Z","updated_at":"2025-05-07T01:13:04.318Z","avatar_url":"https://github.com/ldab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32-CAM-MQTT\nESP32-CAM remote image access via HTTP. Take pictures with ESP32 and upload it via MQTT making it accessible for the outisde network on Node_RED\n\n[![GitHub version](https://img.shields.io/github/release/ldab/ESP32-CAM-MQTT.svg)](https://github.com/ldab/ESP32-CAM-MQTT/releases/latest)\n[![Build Status](https://travis-ci.org/ldab/ESP32-CAM-MQTT.svg?branch=master)](https://travis-ci.org/ldab/ESP32-CAM-MQTT)\n[![CodeFactor](https://www.codefactor.io/repository/github/ldab/esp32-cam-mqtt/badge/master)](https://www.codefactor.io/repository/github/ldab/esp32-cam-mqtt/overview/master)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/ldab/ESP32-CAM-MQTT/blob/master/LICENSE)\n\n[![GitHub last commit](https://img.shields.io/github/last-commit/ldab/ESP32-CAM-MQTT.svg?style=social)](https://github.com/ldab/ESP32-CAM-MQTT)\n\n[![ESP32-CAM](./pics/esp32cam.jpg)](https://www.aliexpress.com/item/32963016501.html?spm=a2g0s.9042311.0.0.4acb4c4dqzOcdx)\n\n## Limitations\n\n* The MQTT buffer size is limited by the library, thus the max picture size `_client.space() == 5744` -\u003e Play around with the resolution and find the suitable one `FRAMESIZE_QVGA`\n  * https://github.com/marvinroger/async-mqtt-client/issues/74\n\n## Sumary\n\n1. [PlatformIO](/README.md#PlatformIO)\n2. [Flashing](/README.md#Flashing)\n3. [Hardware](/README.md#Hardware)\n4. [MQTT Broker](/README.md#MQTT-Broker)\n5. [IBM Node-RED Hosting](/README.md#IBM-Node-RED-Hosting)\n6. [Node-RED Flow](/README.md#Node-RED-Flow)\n7. [Credits](/README.md#Credits)\n\n## PlatformIO\n\n* More information can be found on their comprehensive [Docs](https://docs.platformio.org/en/latest/ide/vscode.html). But Basically:\n\n  0. Download and install official Microsoft Visual Studio Code. PlatformIO IDE is built on top of it\n  1. **Open** VSCode Package Manager\n  2. **Search** for official `platformio-ide` [extension](https://marketplace.visualstudio.com/items?itemName=platformio.platformio-ide)\n  3. **Install** PlatformIO IDE.\n\n![PlatformIO installation](https://docs.platformio.org/en/latest/_images/platformio-ide-vscode-pkg-installer.png)\n\n## Flashing\n\n* ESP32-CAM does not have a built-in UART/USB converter, therefore you will need one.\n\n  1. TX goes to RX;\n  2. RX goes to TX;\n  3. Power the board while keeping `GIPO0` low;\n  4. You can now release it and upload your code;\n\n[![ESP32-CAM](https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/03/ESP32-CAM-wiring-FTDI1.png?w=750\u0026ssl=1)](https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/)\n * image from [https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/](https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/)\n\n## Hardware\n\n### Board Pinout\n\n![ESP32-CAM Pinout](./pics/esp32cam_pinout.png)\n\n### LDO\n\n* This board has an [AMS1117](./extras/ds1117.pdf) voltage regulator which \"sleep\" current is around `6mA`, this is quite a lot if you plan to have your board running on batteries.\n* **TODO!** find an alternative with the same package.\n\n## MQTT Broker\n\nThe MQTT Broker used is [CloudMQTT](https://www.cloudmqtt.com/) they offer Free accounts 😉 that works just fine.\n\n## IBM Node-RED Hosting\n\nThe process was a bit tedious and took a while to get it properly running as of today (2019/07/23) the information provided on the tutorial had few broken links.\n\n[https://nodered.org/docs/platforms/bluemix](https://nodered.org/docs/platforms/bluemix)\n\n1. Sign-up/Log in to [https://cloud.ibm.com/](https://cloud.ibm.com/);\n2. Using the top search bar, search for `Node-RED Starter`;\n3. Fill the required fields, `App name`, `Host name`, etc...\n4. Select `Lite` for `SDK for Node.js` and `Cloudant`, those are free, you can upgrade later if required;\n5. Click `Create` at the bottom right, the circle will spin, take few seconds;\n6. You will be redirected to the next page and should see `running` when everything is ready for use:\n\n![IBM Cloud Start](./pics/ibmcloud.png)\n\n7. Go to your App URL, something like [http://AppName.eu-gb.mybluemix.net](http://AppName.eu-gb.mybluemix.net) and complete the initial set-up;\n8. The Node-Red GUI Flow Editor is available at [http://AppName.eu-gb.mybluemix.net/red](http://AppName.eu-gb.mybluemix.net/red)\n\n* After installing the Node desbribed below, Your Node-red Dashboard is available at [http://AppName.eu-gb.mybluemix.net/ui](http://AppName.eu-gb.mybluemix.net/ui)\n\n## Node-RED Flow\n\n### Install required nodes\n\n* Menu -\u003e Manage Palette -\u003e Install tab. You will need `node-red-dashboard`\n\n### Import Node example\n\n* Copy the flow below and import to your Nore-RED available at `yournode.eu-gb.mybluemix.net/red` Import -\u003e Clipboard, paste it.\n\nYou will find the flow.json [here](./Node-RED%20flow/flows.json).\n\n![Node-RED Flow](./pics/screenshot.png)\n\n### Cloudant Credentials for cleaning database\n\n* Generally Cloudant autheticate via IBM cloud therefore we need to create new Credentials and use the username and password for authentication on the `delete inputs on database` node.\n\n![IBM Cloudant Credentials](./pics/credentials.png)\n\n## Node-RED Notification\n\n* Via the `catch` node, you can enable notification, for your phone for example. Below I have quickly show few options:\n\n1. Email\n\n  * Use the `email` output, configured with your email provider info;\n\n2. PushSafer\n\n  * Offers several customizations, sound, vibration, icons, etc:\n  * GET request url: `https://www.pushsafer.com/api?k=YOURKEY\u0026c=%23ff0000\u0026v=1\u0026a=1\u0026m={{payload}}`\n\n5. Twilio SMS\n\n  * SMS API, built-in to the Node-RED and IBM example;\n\n6. IFTT\n\n  * If this than that, with android and iOS apps can be accesible via webhooks;\n  * GET `https://maker.ifttt.com/trigger/YOUR_EVENT/with/key/YOUR_KEY?value1=MESSAGE`\n\n## Credits\n\nGitHub Shields and Badges created with [Shields.io](https://github.com/badges/shields/)\n\nGitHub ESP32 camera [example](https://github.com/espressif/arduino-esp32/tree/master/libraries/ESP32/examples/Camera/CameraWebServer)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldab%2Fesp32-cam-mqtt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fldab%2Fesp32-cam-mqtt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldab%2Fesp32-cam-mqtt/lists"}