Проект IoT по PHP, SQL и RaspPi (проблема планирования времени) - PullRequest
0 голосов
/ 22 февраля 2019

Я делаю контрольный проект с функцией планирования.Я использую rasp-pi 3 (устройство) и использую php и sql для отключения электрических нагрузок.Я создал php-страницу с именем script.php, которая всегда обновляется каждые 10 секунд.

внутри этой php-страницы имеет функцию:

function weekdaychek($startingTime, $endingTime, $pinNumber, $idOfroom){

        $date_now = new DateTime();
        $date1 = new DateTime($startingTime);
        $date2 = new DateTime($endingTime);

        //SET GPIO INTO OUTPUT
        system("gpio -g mode ".$pinNumber." out");

         if ($date_now > $date1){
            $dat1 = true;

         } else{
            $dat1 = false;
         }

         if ($date_now < $date1) {
            $dat2 = true;

         } else{
            $dat2 = false;
         }


         if ($dat1 == true && $dat2 == true) {
            //SET GPIO INTO HIGH STATE OR ON
            system("gpio -g write ".$pinNumber." 1");
            life($idOfroom);

         } else {
            //SET GPIO INTO LOW STATE OR OFF
            system("gpio -g write ".$pinNumber." 0");
            dead($idOfroom);
         }
    }

Проблема в том, что каждый обновляет лампочку(Пример электрической нагрузки) будет мигать, это потому, что php-скрипты загрузили все данные из базы данных.Мигание работает только тогда, когда в одном выводе есть 2 или более графиков.Это работает нормально, если есть один график для конкретного пина rasp-pi.

например, LIGHT

Номер контакта: 2

Время по расписанию:

2 расписания в выводе2

Первый:

Время начала: 2: 30

Время окончания: 3:00

Секунда:

Время начала: 1: 00;

Время окончания: 1: 30;

Предположим, что время 2:40, так как мой запрос DESCENDING, первыми данными, которые будут проверяться в операторе if else, является First schedule.Поскольку сейчас 2:40, мы ожидаем, что расписание First теперь выполняется (ON).

При обновлении страницы данные из базы данных будут загружены.Включенное расписание First будет первым, затем расписание Second последним.Поскольку расписание First появляется первым, оно включает свет и, наконец, выключает свет, возникающий в результате эффекта мерцания при каждом обновлении.

Может кто-нибудь найти способ решить эту проблему ??Я с трудом решаю эту проблему уже 3 недели.Это съедает мое время и есть много других вещей для изучения.

Кстати, это мой запрос:

$queryscripts = mysqli_query($link,
         "SELECT * FROM schedule 
         JOIN rooms 
         ON schedule.Rooms_idRooms = rooms.idRooms 
         ORDER BY schedule.startSched DESC") 
         or die("Please Try again later!");
...