void loop() { if (!client.connected()) { // Connect to mqtt broker reconnect(); } uint16_t lux = lightMeter.readLightLevel(); switch (senseMode) { //reakce na MQTT prikazy case MODE_OFF: //zhasne vypnoutSvetlo(); break; case MODE_ON: //rozsvítí zapnoutSvetlo(); break; case MODE_OPEN: //otevere dvirka while (true){ //provadej dokud nenastane koncak horni spustitPohybNahoru(); if (digitalRead(koncakHorni)){ //dokud nenastane koncak horni zastavitMotor(); break; } } break; case MODE_CLOSE: //zavre dvirka while (true){ //provadej dokud nenastane koncak dolni spustitPohybDolu(); if (digitalRead(koncakDolni)){ //dokud nenastane koncak dolni zastavitMotor(); break; } } break; case MODE_SENSE: //automatika na zaklade intenzity svetla if (lux > 5) { while (true){ //provadej dokud nenastane koncak horni spustitPohybNahoru(); if (digitalRead(koncakHorni)){ //dokud nenastane koncak horni zastavitMotor(); break; } } } else { while (true){ //provadej dokud nenastane koncak dolni spustitPohybDolu(); if (digitalRead(koncakDolni)){ //dokud nenastane koncak dolni zastavitMotor(); break; } } } break; }//end SWITCH // publish info reading every 1 minute if (millis() > (time + 60000)) { time = millis(); message = String((int)digitalRead(koncakHorni)); //hornikoncak client.publish(topicHorniKoncak.c_str(), message.c_str()); message = String((int)digitalRead(koncakDolni)); //dolnikoncak client.publish(topicDolniKoncak.c_str(), message.c_str()); message = String((int)digitalRead(releSvetlo)); //svetlo client.publish(topicSvetlo.c_str(), message.c_str()); } client.loop(); }