 
   conectar_ethernet();
 
-//  conectar_mosquitto();
-
   // Setup da funcionalidade 01
   setup_ar();
+
+  // Setup da funcionalidade 02
+  setup_garagem();
+
+  // Setup da funcionalidade 03
+  setup_alarme();
 }
 
 void loop() {


// Configurações da funcionalidade 02 - Acionamento automático das luzes da garagem



// Configurações da funcionalidade 03 - Alarme com utilização de sensor de movimento


void setup() {

}


// Métodos da funcionalidade 02

void setup_garagem() {
  pinMode(PINO_LED_OCUPACAO, OUTPUT);
}

float medir_distancia() {
  long tempo = ultrasonic.timing();
  int distancia = ultrasonic.convert(tempo, Ultrasonic::CM);

  if (distancia <= DISTANCIA_OCUPADA) {
    informar_ocupacao(HIGH);
  } else {
    informar_ocupacao(LOW);
  }
}

void informar_ocupacao(int status) {
  if (status_garagem != status) {
    digitalWrite(PINO_LED_OCUPACAO, status);
    status_garagem = status;
    Serial.println("mudei um status");
    client.publish(TP_GARAGEM_STATUS, status == 0 ? "0" : "1");
  }
}


// Métodos da funcionalidade 03


void setup_alarme() {
  pinMode(PINO_SENSOR_MOV, INPUT);
  pinMode(PINO_LED_ALARME, OUTPUT);
  pinMode(PINO_BUZZER, OUTPUT);
}

void acionar_alarme() {
  if (!alarme_disparado) {
    client.publish(TP_ALARME_STATUS, "1");
    alarme_disparado = true;
    digitalWrite(PINO_LED_ALARME, HIGH);
  } else {
    digitalWrite(PINO_LED_ALARME, LOW);
  }
}

void verificar_movimento() {  
  Serial.println(digitalRead(PINO_SENSOR_MOV));
  if (digitalRead(PINO_SENSOR_MOV) == HIGH) {
    acionar_alarme();
  }
}


// Métodos auxiliares
 
void conectar_mosquitto() {
