NodeMCU 板上使用 GyverPortal 库显示后如何更新变量值?

问题描述 投票:0回答:1

如何在从 gyverportal 库将变量显示在网站上后更新变量的值?

arduino 1周经验

我需要使用 gyverportal 库在网站上显示传感器读数。我决定使用 NUMBER 函数输出读数,但读数是在创建输出框本身之后出现的

#define AP_SSID "KVANTORIUM"
#define AP_PASS "8112797079"

#include <GyverPortal.h>
GyverPortal ui;
#include <ESP8266WiFi.h>
#include <espnow.h>

int board1X = 0;
int board1Y = 0;
int board1Z = 0;

typedef struct struct_message {
    int id;
    int x;
    int y;
    int z;
} struct_message;
struct_message myData;
struct_message board1;
struct_message boardsStruct[1] = {board1};
void OnDataRecv(uint8_t * mac_addr, uint8_t *incomingData, uint8_t len) {
  char macStr[18];
  memcpy(&myData, incomingData, sizeof(myData));
    boardsStruct[myData.id-1].x = myData.x;
    boardsStruct[myData.id-1].y = myData.y;
    boardsStruct[myData.id-1].z = myData.z;
}
  
void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);

  GP.NUMBER("","",board1X);
  GP.NUMBER("","",board1Y);
  GP.NUMBER("","",board1Z);
  
  GP.BUILD_END();
}

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(AP_SSID, AP_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());

  if (esp_now_init() != 0) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
  esp_now_register_recv_cb(OnDataRecv);

  ui.attachBuild(build);
  ui.start();
}

void loop() {

  int board1X = random(1,100);
  int board1Y = random(1,100);
  int board1Z = random(1,100);  

  Serial.println(board1X);  
  Serial.println(board1Y); 
  Serial.println(board1Z); 
  
  delay(10000);

  ui.tick();
  ui.attachBuild(build);
}
web arduino sensors arduino-c++
1个回答
0
投票

例如,像这样:

  GP.SEND(F("<script>"
        "setTimeout(function(){"
        "location.reload();"
        "}, 5000);" // refresh the page automatically every 5 sec
        "</script>\n"));
© www.soinside.com 2019 - 2024. All rights reserved.