Как обновить статус книги в базе данных при использовании ультразвукового датчика - PullRequest
0 голосов
/ 18 марта 2019

У меня есть эта полная система, которая считывает транспортное средство или объект, используя ультразвуковой датчик и модуль ESP8266 NodeMCU.Программа полностью работает, я не хочу отображать статус book при статусе базы данных, если book.Но каждый раз, когда код в моем коде Arduino не обнаруживает какой-либо автомобиль, он говорит, что он доступен.Похоже, он не переходит к условию if else в коде arduino, который представляет собой status1, равен book.

Здесь условие состояния, каждый раз, когда датчик обнаруживает объект, он обновляетсостояние базы данных до occu и avail, если нет автомобиля.Я пробовал этот код в другом случае, если else if(status1=="Book") this should update the status1 to book already. But why is it ending in the else condition where status` равно в наличии?

if ((sensor < 10) && (sensor2 < 10)) 
 { 
    sensor = 1; 
    status1 = "Occu";
    digitalWrite(LEDRED,LOW);
    digitalWrite(LEDGREEN,HIGH);
 }
 else if (status1 == "Book") {
   sensor = 0;
    status1 ="Book";
 }
 else  
 { 
    sensor = 0;
    status1 ="Avail";
    digitalWrite(LEDGREEN,LOW);
    digitalWrite(LEDRED,HIGH);
 }

Я не знаю почему, состояние базы данных всегдаобновление до avail, хотя у меня это условие выше:

else if (status1 == "Book") {
       sensor = 0;
        status1 ="Book";
     }

// Я подключаю NodeMCU, используя этот доступ Wi-Fi, и он полностью работает, моя единственная проблема - status1 не обновляет базу данныхbook.

Полный код ARDUINO

#include<ESP8266WiFi.h> 
#define TRIGGER 5
#define ECHO  4
#define TRIGGER2 13
#define ECHO2 15
#define LEDRED 14 
#define LEDGREEN 12 

const char* ssid = "sample";
const char* password ="sample"; 

const char* host ="192.168.254.77";

String status1;
//String parking_lot;
 long sensor;
 long sensor2;
void setup(){ 
 pinMode(LEDRED,OUTPUT);
 pinMode(LEDGREEN,OUTPUT);
 pinMode(sensor, INPUT);
 pinMode(sensor2, INPUT);
 delay(1000);
 pinMode(TRIGGER, OUTPUT);
 pinMode(ECHO, INPUT); 
  delay(1000);
  Serial.begin(115200);
  delay(10); 
  pinMode(TRIGGER2, OUTPUT);
 pinMode(ECHO2, INPUT); 
  delay(1000);
  Serial.begin(115200);
  delay(10);

  Serial.println();
  Serial.println();
  Serial.print("connecting to ");
  Serial.println(ssid); 

  WiFi.begin(ssid,password); 

  while(WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  } 
  Serial.println("");
  Serial.println("wifi connected");
  Serial.println("ip address: ");
  Serial.println(WiFi.localIP());
}


void loop() {

  long duration;
  long duration2;
  delay(5000);
  digitalWrite(TRIGGER, LOW);  
  delayMicroseconds(10); 
   digitalWrite(TRIGGER2, LOW);  
  delayMicroseconds(10); 
  digitalWrite(TRIGGER, HIGH);
  delayMicroseconds(10); 
   digitalWrite(TRIGGER2, HIGH);
  delayMicroseconds(10); 

  digitalWrite(TRIGGER, LOW);
  duration = pulseIn(ECHO, HIGH);
  digitalWrite(TRIGGER2, LOW);
  duration2 = pulseIn(ECHO2, HIGH);
  sensor = ((duration/2) / (29.1));
  sensor2 = ((duration2/2) / (29.1));

 if ((sensor < 10) && (sensor2 < 10)) 
 { 
    sensor = 1; 
    status1 = "Occu";
    digitalWrite(LEDRED,LOW);
    digitalWrite(LEDGREEN,HIGH);
 }
 else if (status1 == "Book") {
   sensor = 0;
    status1 ="Book";
 }
 else  
 { 
    sensor = 0;
    status1 ="Avail";
    digitalWrite(LEDGREEN,LOW);
    digitalWrite(LEDRED,HIGH);
 }

  Serial.println("connecting to");
  Serial.println(host); 

  WiFiClient client; 
  const int httpPort = 80;
  if(!client.connect(host,httpPort)){
    Serial.println("connection failed");
    return;
  }

  String url = "/sampleparking/sampleparking.php?parking_lot=S1&";
         url += "status=";
         url += status1; 

   Serial.println("Requesting URL");
   Serial.println(url);

  //-------------request send to server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" +  "connection: close\r\n\r\n");

  unsigned long timeout = millis(); 
  while (client.available()== 0){
    if(millis() - timeout > 5000){
      Serial.println("CLIENT TIMEOUT");
      client.stop();
      return;
    }
  } 
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  Serial.println();


  delay(10000);
  }

Пример php парковки - это то, с чего начинается запрос на обновление и отображение всех парковочных мест в области.

Здесь я получаю статус парковки:

$status = (isset($_GET['status']) ? strip_tags($_GET['status']) : '');

sampleparking.php

<?php
session_start();
include "includes/connection.php";

// get the data from arduino uno and pass it to server
$status = (isset($_GET['status']) ? strip_tags($_GET['status']) : '');
$parking_lot = (isset($_GET['parking_lot']) ? strip_tags($_GET['parking_lot']) : '');

  // update status once there is vehicle detected
  $sql = $connection->prepare("UPDATE samplepark SET status = '$status' WHERE parkname ='$parking_lot'");
  $sql-> execute();

  $sql = $connection->prepare('SELECT parkid, parkname, status FROM samplepark');
  $sql->execute(); // execute query
  $result = $sql->get_result(); // fetch result

  if ($result->num_rows > 0) {
    echo "<tr><th>Parking Slots</th><th>Status</th><th>Action</th></tr>";
    while($row = $result->fetch_assoc()) {
      $bookparking = $row["status"] == 'Avail' ? "<a class='bookparking' href='bookparkingslot.php?did=".$row['parkid']."'>Book</a>" : "";

      echo "<tr><td>" .$row["parkname"]. "</td><td>" .$row["status"]. "</td><td>" .$bookparking. "</td></tr>";
    }
  }

?>

Load sampleparking.phpв id displayparking с использованием ajax

<div class="container">
  <div class="usercontainer">
    <div class="floors">
      <div class="contentparkingslots">
        <table class="viewparkingslots" id="displayparking">
        </table>
      </div>
    </div>
  </div>
</div>

AJAX LOader

ajax.js

// View Users
    setInterval(function () {
        $.ajax({
            method: "post",
            url: "sampleparking.php",
            data: $('#displayparking').serialize(),
            dataType: "html",
            success: function (response) {
                $("#displayparking").html(response);
            }
        });
    }, 1000);

1 Ответ

0 голосов
/ 18 марта 2019
if (status1 == "Book") {
    sensor = 0;
    status1 ="Book";
}

С точки зрения логики ваш код не имеет смысла.

Вы присваиваете "Book" status1, только если оно уже равно "Book".

...