{"id":17573120,"url":"https://github.com/ryanbritodev/fiware-fiap","last_synced_at":"2026-04-12T17:04:08.089Z","repository":{"id":258850598,"uuid":"875796531","full_name":"ryanbritodev/fiware-fiap","owner":"ryanbritodev","description":"Monitoramento de Temperatura, Umidade, Luminosidade e Controle de LED via Broker MQTT, utilizando um servidor em uma máquina virtual Ubuntu na AWS com o Fiware.","archived":false,"fork":false,"pushed_at":"2024-10-22T23:27:46.000Z","size":3065,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T15:32:25.374Z","etag":null,"topics":["aws","cpp","esp32","fiware","iot","mqtt","ubuntu","wokwi"],"latest_commit_sha":null,"homepage":"","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/ryanbritodev.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":"2024-10-20T21:04:21.000Z","updated_at":"2024-11-04T12:21:25.000Z","dependencies_parsed_at":"2025-03-29T15:38:51.707Z","dependency_job_id":null,"html_url":"https://github.com/ryanbritodev/fiware-fiap","commit_stats":null,"previous_names":["ryanbritodev/fiware-fiap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ryanbritodev/fiware-fiap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanbritodev%2Ffiware-fiap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanbritodev%2Ffiware-fiap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanbritodev%2Ffiware-fiap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanbritodev%2Ffiware-fiap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryanbritodev","download_url":"https://codeload.github.com/ryanbritodev/fiware-fiap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanbritodev%2Ffiware-fiap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007317,"owners_count":26084280,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aws","cpp","esp32","fiware","iot","mqtt","ubuntu","wokwi"],"created_at":"2024-10-21T21:00:19.629Z","updated_at":"2025-10-11T13:19:26.300Z","avatar_url":"https://github.com/ryanbritodev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Monitoramento de Temperatura, Umidade, Luminosidade e Controle de LED via MQTT e Fiware\n### Participantes:\n- Prof. Paulo Marcotti PF2150\n- Arthur Cotrick Pagani RM554510\n- Diogo Leles Franciulli RM558487\n- Felipe Sousa de Oliveira RM559085\n- Ryan Brito Pereira Ramos RM554497\n\n### Visão geral \nEste projeto utiliza um ESP32 para monitorar e publicar dados de temperatura, umidade e luminosidade em um broker MQTT \n(via Ubuntu, em uma máquina virtual em uma instância EC2 na AWS). Além disso, o sistema permite controlar o estado de \num LED remotamente através de um tópico MQTT. Os componentes utilizados são o sensor de temperatura e umidade DHT22, um \nsensor de luminosidade LDR e um LED. A comunicação é realizada via protocolo MQTT, através do Fiware.\n\n### Componentes do Sistema:\n1. **ESP32** - Microcontrolador que gerencia a leitura dos sensores e a comunicação MQTT.\n2. **DHT22** - Sensor de temperatura e umidade que envia os valores lidos para tópicos MQTT.\n3. **LDR (Sensor de Luminosidade)** - Mede a intensidade de luz e envia o valor para um tópico MQTT.\n4. **LED** - Controlado remotamente via MQTT. Pode ser ligado ou desligado ao receber comandos.\n\n### Tópicos MQTT Utilizados:\n1. **/iot/temperature** - Publica a temperatura lida pelo sensor DHT22.\n2. **/iot/humidity** - Publica a umidade relativa lida pelo sensor DHT22.\n3. **/iot/luminosity** - Publica o valor de luminosidade lido pelo sensor LDR.\n4. **/iot/led** - Tópico utilizado para controlar o LED. \n   - Publicar \"on\" para ligar o LED.\n   - Publicar \"off\" para desligar o LED.\n\n### Funcionamento:\n1. O ESP32 conecta-se a uma rede Wi-Fi e ao broker MQTT, uma máquina virtual com Ubuntu, rodando o Fiware.\n2. Ele realiza leituras a cada segundo da temperatura, umidade e luminosidade, publicando os valores nos respectivos tópicos MQTT.\n3. Através do tópico /iot/led, é possível enviar comandos para ligar ou desligar o LED remotamente.\n4. O sistema pode ser monitorado e controlado através de qualquer aplicativo cliente MQTT, como o MyMQTT.\n\n# Circuito no Simulador Wokwi:\n\u003cimg src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/CIRCUITO-WOKWI.png?raw=true\"/\u003e\n\n# Circuito em Sala de Aula:\n\u003cimg src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/CIRCUITO.png?raw=true\"/\u003e\n\n### Link para o Projeto no Wokwi: https://wokwi.com/projects/412207800870787073\n\n# Código do Projeto:\n```cpp\n#include \u003cWiFi.h\u003e\n#include \u003cPubSubClient.h\u003e\n#include \u003cDHT.h\u003e\n\n#define DHTPIN 21      // Pino do sensor DHT\n#define DHTTYPE DHT22  // Tipo de sensor DHT **OBS: TROCAR PELO DHT11 NO DIA DO CHECKPOINT!!!**\n#define LED_PIN 2      // Pino do LED\n#define LDR_PIN 34     // Pino do LDR (sensor de luminosidade)\n\n// Informações da rede Wi-Fi\nconst char* SSID = \"\";    // Nome da rede Wi-Fi\nconst char* PASSWORD = \"\";           // Senha da rede Wi-Fi\n\n// Informações do Broker MQTT\nconst char* BROKER_MQTT = \"\"; // IP do Broker MQTT **OBS: PODE MUDAR AO INICIAR A INSTÂNCIA NOVAMENTE!!!**\nconst int BROKER_PORT = 1883;             // Porta do Broker MQTT\nconst char* TOPICO_SUBSCRIBE_LED = \"/iot/led\"; // Tópico para controle do LED\nconst char* TOPICO_PUBLISH_TEMP = \"/iot/temperature\"; // Tópico para enviar temperatura\nconst char* TOPICO_PUBLISH_HUMI = \"/iot/humidity\";    // Tópico para enviar umidade\nconst char* TOPICO_PUBLISH_LUX = \"/iot/luminosity\";   // Tópico para enviar luminosidade\nconst char* ID_MQTT = \"fiware_001\"; // ID MQTT\n\nWiFiClient espClient;\nPubSubClient MQTT(espClient);\nDHT dht(DHTPIN, DHTTYPE);\n\n// Função de verificação da conexão Wi-Fi\nvoid initWiFi() {\n  Serial.print(\"Conectando ao WiFi\");\n  WiFi.begin(SSID, PASSWORD);\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(1000);\n    Serial.print(\".\");\n  }\n  Serial.println(\" Conectado!\");\n}\n\n// Função de verificação da conexão ao Broker MQTT\nvoid initMQTT() {\n  MQTT.setServer(BROKER_MQTT, BROKER_PORT);\n  MQTT.setCallback(mqtt_callback);\n}\n\n// Função chamada quando uma mensagem é recebida no MyMQTT\nvoid mqtt_callback(char* topic, byte* payload, unsigned int length) {\n  String msg;\n  for (int i = 0; i \u003c length; i++) {\n    msg += (char)payload[i];\n  }\n  \n  Serial.print(\"Mensagem recebida no tópico \");\n  Serial.print(topic);\n  Serial.print(\": \");\n  Serial.println(msg);\n\n  // Controle do LED via MyMQTT\n  if (msg == \"on\") {\n    digitalWrite(LED_PIN, HIGH);\n  } else if (msg == \"off\") {\n    digitalWrite(LED_PIN, LOW);\n  }\n}\n\n// Função para verificar a conexão ao Wi-Fi e MQTT\nvoid VerificaConexoesWiFIEMQTT() {\n  if (WiFi.status() != WL_CONNECTED) {\n    initWiFi();\n  }\n\n  if (!MQTT.connected()) {\n    while (!MQTT.connected()) {\n      Serial.print(\"Conectando ao broker MQTT...\");\n      if (MQTT.connect(ID_MQTT)) {\n        Serial.println(\" Conectado ao broker MQTT!\");\n        MQTT.subscribe(TOPICO_SUBSCRIBE_LED);\n      } else {\n        Serial.print(\"Falha ao conectar. Erro: \");\n        Serial.println(MQTT.state());\n        delay(2000);\n      }\n    }\n  }\n}\n\n// Publicar dados dos sensores no MyMQTT\nvoid publishSensorData() {\n  float temperature = dht.readTemperature();\n  float humidity = dht.readHumidity();\n  int ldrValue = analogRead(LDR_PIN);\n  int luminosity = map(ldrValue, 0, 4095, 0, 100);  // Mapeia o valor do LDR para 0-100%\n\n  // Publicar temperatura, umidade e luminosidade\n  MQTT.publish(TOPICO_PUBLISH_TEMP, String(temperature).c_str());\n  MQTT.publish(TOPICO_PUBLISH_HUMI, String(humidity).c_str());\n  MQTT.publish(TOPICO_PUBLISH_LUX, String(luminosity).c_str());\n\n  // Log no Monitor Serial\n  Serial.print(\"Temperatura: \");\n  Serial.println(temperature);\n  Serial.print(\"Umidade: \");\n  Serial.println(humidity);\n  Serial.print(\"Luminosidade: \");\n  Serial.println(luminosity);\n}\n\nvoid setup() {\n  Serial.begin(115200); // **OBS: CONFIGURAR VELOCIDADE DE BAUDRATE PARA 115200!!!**\n  pinMode(LED_PIN, OUTPUT);\n  pinMode(LDR_PIN, INPUT);\n  dht.begin();\n\n  initWiFi();\n  initMQTT();\n}\n\nvoid loop() {\n  VerificaConexoesWiFIEMQTT();\n  publishSensorData();\n  MQTT.loop();\n  delay(1000);  // Aguarda 1 segundos entre cada envio de dados\n}\n```\n\n# Dashboard com o app MyMQTT:\n\u003cdiv display=\"flex\"\u003e\n   \u003cimg width=\"200px\" src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/DASH%20MYMQTT.jpg?raw=true\"/\u003e\n   \u003cimg width=\"200px\" src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/T%C3%93PICOS%20PUBLISH.jpg?raw=true\"/\u003e\n   \u003cimg width=\"200px\" src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/T%C3%93PICOS%20SUBSCRIBE.jpg?raw=true\"/\u003e\n\u003c/div\u003e\n\n# Servidor (Fiware + Ubuntu + AWS):\n\u003cimg src=\"https://github.com/ryanbritodev/fiware-fiap/blob/main/assets/SERVIDOR%20FIWARE.png?raw=true\"/\u003e\n\n### Objetivos:\n- Monitorar remotamente a temperatura, umidade e luminosidade de um ambiente.\n- Controlar o LED remotamente através de uma interface MQTT.\n\n### Referências:\n- **Fiware Descomplicado:** https://github.com/fabiocabrini/fiware\n- **Como criar uma VM com o Ubuntu 20.04:** https://youtu.be/X7xwvKdaWqk?si=sMg1QUG8rcGMZNJ3\n- **Como rodar o Fiware:** https://youtu.be/q6b1f2CAmno?si=h6AGmgleTCZd_HY-\n\n### Agradecimentos\n- Gostaríamos de agradecer à **FIAP** e aos professores **Paulo Marcotti e Fábio Cabrini** pela oportunidade incrível de realizar esse projeto.\n\n## Licença\n\nEste projeto está licenciado sob a **Licença MIT** - veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n\n## Todos os direitos reservados à FIAP ©️\n\u003cdiv style=\"display: flex; justify-content: space-between;\"\u003e\n  \u003cimg src=\"https://www.fiap.com.br/empresas/svg/home/fiap-plus-alura/fiap.svg\" width=\"49%\" style=\"margin-left: auto;\" alt=\"Logo FIAP\"\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanbritodev%2Ffiware-fiap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryanbritodev%2Ffiware-fiap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanbritodev%2Ffiware-fiap/lists"}