(7997,20,'ESP8266物联遥控大门远程本地网页控制','/*测试项目\r\n  正常网络状态下\r\n  1.上升时达到限位自动断开 如果已经是上升限位了 再点击上升按钮是不会再进行上升操作防止多次按,多次少量上升位移弄坏限位开关\r\n  2.下降时达到限位自动断开 如果已经是下降限位了 再点击上升按钮是不会再进行下降操作防止多次按,多次少量下降位移弄坏限位开关\r\n  3.上升限位时可以按下降,下降限位可以按上升  不存在两个都限位(除非故障)\r\n  4.不管上升或者下降,按 停止键立即停止 如果上升或者下降 有一个达到限位了,按停止键 就会提示已经达到 上升或者下降限位\r\n  5.没有网络的时候 自动连接192.168.x.254\r\n  6.esp主动发送ping 服务器返回 pong, 虽然服务器有ping 有时运行中,突然无网,返回Disconnected 很慢,或有时直接卡住需要手动重启ESP  webSocket.enableHeartbeat(15000, 1500, 2);也要加上\r\n  7.服务器也主动发送ping esp也返回pong (服务器为了看看哪个ESP掉线了,好在服务器里删除对应用户登陆)\r\n  特殊情况\r\n  8.在按上升 或者 下降时 运行途中突然无网络 所以用到上面第 5项可以解决\r\n  9.设备休眠 时间 > 6  小于 18  Timing存入2(代表 断开WIFI 打开广告灯)  否则存入1 (代表 断开WIFI)  存入0 (代表 不进行设备休眠)\r\n  10.在上升下降是,突然有语言播报,会导致失控,所以只能在开门上限或关门上限时播报\r\n*/\r\n\r\n#include <ESP8266WiFi.h>\r\n#include <ESP8266WebServer.h>\r\n#include <ESP8266HTTPClient.h>\r\n#include <WebSocketsClient.h>\r\n#include <ArduinoJson.h>\r\n#include <OneWire.h>\r\n#include <DallasTemperature.h>\r\n#include <Adafruit_Sensor.h>\r\n#include <DHT.h>\r\n#include <DHT_U.h>\r\n#include <Ticker.h>\r\n#include <SoftwareSerial.h>\r\n#include <ESP8266httpUpdate.h>\r\n\r\n//OTA\r\nString upUrl = \"http://jyan.nobiggie.cn/tool/bin/nobiggiedoor1/file.bin\";\r\nString version = \"1.0\";\r\nTicker myTicker;\r\nWiFiClient wificlient;\r\n\r\n#define DHTPIN 13  // 数字引脚连接DHT传感器\r\n// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --\r\n#define DHTTYPE DHT11  // DHT 11\r\nDHT_Unified dht(DHTPIN, DHTTYPE);\r\nWebSocketsClient webSocket;\r\n// 温度输入脚接开发板数字引脚13\r\n#define d7 13\r\nOneWire oneWire(d7);\r\nDallasTemperature sensors(&oneWire);\r\nint open = 5;\r\nint close = 4;\r\n\r\nint d0 = 16;\r\nint d5 = 14;\r\nint d6 = 12;\r\n//广告牌定时开关输出电平脚 D4脚 2 不能使用 使为低电平时WIFI芯片灯会一直亮\r\nint d8 = 15;\r\n\r\n//开关状态 10为上升上限  0为下降上限 5为可以上升可降\r\nint state = 5;\r\n//此时执行中的状态  0关门  1开门  2停止 9什么也不代表\r\nint exec_status = 9;\r\nint humidity = 0;\r\nfloat temperature = 0;\r\nString hus;\r\nString tes;\r\n//最近操作物联用户相关信息\r\nString UserExec = \"\";\r\n\r\n//ggb为false代表没有开灯箱 true为已开启灯箱\r\nbool ggb = false;\r\n//几个全局变量\r\nDynamicJsonDocument jsonBuffer(100);\r\nJsonObject jsonStr;\r\n//被读取的文件位置和名称\r\nString flash_wifi = \"/wifi.txt\";\r\n\r\nESP8266WebServer ESP8266webServer;  // 创建网络服务器对象,HTTP服务的标准端口为：80\r\nString ssid = \"\";\r\nString passwd = \"\";\r\n\r\nString html;\r\n//当前连接是哪个服务器 true为远程 false为本地\r\nbool networkRemoteLocal = true;\r\n//连接外网失败计数器\r\nint internet_i = 0;\r\n\r\nString Timing = \"/timing.txt\";\r\nString remoteDateUrl = \"http://quan.suning.com/getSysTime.do\";\r\nString localDateUrl = \"http://server.nobiggie.cn/query/date\";\r\nString localServerIP = \"server.nobiggie.cn\";\r\n\r\n\r\nvoid setup(void) {\r\n  pinMode(open, OUTPUT);\r\n  pinMode(close, OUTPUT);\r\n  pinMode(d0, OUTPUT);\r\n  pinMode(d8, OUTPUT);\r\n  pinMode(d5, INPUT_PULLUP);\r\n  pinMode(d6, INPUT_PULLUP);\r\n\r\n  digitalWrite(open, LOW);\r\n  digitalWrite(close, LOW);\r\n  digitalWrite(d0, LOW);\r\n  digitalWrite(d8, LOW);\r\n\r\n  Serial.begin(115200);\r\n  SPIFFS.begin();\r\n  if (SPIFFS.exists(Timing) == false) {\r\n    SPIFFS.begin();\r\n    File dataFile = SPIFFS.open(Timing, \"w\");\r\n    dataFile.println(\"0\");\r\n    dataFile.close();\r\n  }\r\n  File dataFile = SPIFFS.open(Timing, \"r\");\r\n  String resultTiming = dataFile.readString();\r\n  resultTiming.trim();\r\n  //Serial.print(resultTiming);\r\n  if (resultTiming == \"1\") {\r\n    //休眠断开wifi\r\n    delay(200);\r\n    SPIFFS.begin();\r\n    File dataFile = SPIFFS.open(Timing, \"w\");\r\n    dataFile.println(\"0\");\r\n    dataFile.close();\r\n    delay(200);\r\n    Serial.print(\"定时两个半小时\");\r\n    myTicker.once(8460, espReboot);\r\n  } else if (resultTiming == \"2\") {\r\n    //休眠断开wifi,打开广告牌\r\n    digitalWrite(d8, HIGH);\r\n    delay(200);\r\n    SPIFFS.begin();\r\n    File dataFile = SPIFFS.open(Timing, \"w\");\r\n    dataFile.println(\"0\");\r\n    dataFile.close();\r\n    delay(200);\r\n    Serial.print(\"定时两个半小时\");\r\n    myTicker.once(8460, espReboot);\r\n  } else {\r\n\r\n    //pinMode(flash_rst, INPUT_PULLUP);\r\n    delay(200);\r\n    dht.begin();\r\n    sensor_t sensor;\r\n    dht.temperature().getSensor(&sensor);\r\n    dht.humidity().getSensor(&sensor);\r\n\r\n    delay(1000);\r\n    if (FlashConnetWifi() == false) {\r\n      HtmlSetWifi();\r\n    }\r\n    delay(300);\r\n    String dateTmp = myHttpGet(remoteDateUrl);\r\n    deserializeJson(jsonBuffer, dateTmp);\r\n    jsonStr = jsonBuffer.as<JsonObject>();\r\n    String temp = jsonStr[\"sysTime2\"];\r\n    if (temp.length() > 15) {\r\n      dateTmp = temp.substring(11, 13);\r\n      int dateI = temp.toInt();\r\n      if (dateI > 6 && dateI < 18) {\r\n        digitalWrite(d8, HIGH);\r\n      }\r\n\r\n      webSocket.beginSSL(\"www.nobiggie.cn\", 443, \"/service/wss\");\r\n    } else {\r\n      String dateTmp1 = myHttpGet(localDateUrl);\r\n      //如果本地服务器正常\r\n      if (dateTmp1.length() > 15) {\r\n        dateTmp1 = dateTmp1.substring(11, 13);\r\n        int dateI = dateTmp1.toInt();\r\n        if (dateI > 6 && dateI < 18) {\r\n          digitalWrite(d8, HIGH);\r\n        }\r\n        webSocket.begin(localServerIP, 80, \"/service/wss\");\r\n      } else {\r\n        //如果本地服务器异常 ->重启后 休眠2小时\r\n        SPIFFS.begin();\r\n        File dataFile = SPIFFS.open(Timing, \"w\");\r\n        dataFile.println(\"1\");\r\n        dataFile.close();\r\n        delay(200);\r\n        ESP.restart();\r\n      }\r\n    }\r\n\r\n    webSocket.onEvent(webSocketEvent);\r\n    webSocket.setAuthorization(\"user=mydoor1&passwd=efghijk&room=admin\");\r\n    // try ever 5000 again if connection has failed\r\n    webSocket.setReconnectInterval(500);\r\n\r\n    /*虽然服务器有ping 但是有时运行中,突然无网络,返回连接失败Disconnected 很慢,或有时直接卡住需要手动重启ESP\r\n    所以 webSocket.enableHeartbeat(15000, 1500, 2);也要加上  */\r\n    webSocket.enableHeartbeat(15000, 2000, 2);\r\n    //防止 电源重启,门达到上限了,没有把状态改正,在这进行验证一下\r\n    if (digitalRead(d5) == HIGH) {\r\n      state = 10;\r\n    }\r\n    if (digitalRead(d6) == HIGH) {\r\n      state = 0;\r\n    }\r\n  }\r\n}\r\nvoid loop(void) {\r\n  webSocket.loop();\r\n  //操作运行时 上升达到限位了,并且上次状态不是上升上限, 并且执行状态是上升 限位开关断开\r\n  if (digitalRead(d5) == HIGH && state != 10 && exec_status == 1) {\r\n    //关闭所有开关\r\n    digitalWrite(open, LOW);\r\n    digitalWrite(close, LOW);\r\n    delay(200);\r\n    //断开电源接通\r\n    digitalWrite(d0, LOW);\r\n    Serial.println(\"开门达到上限\");\r\n    state = 10;\r\n    webSocket.sendTXT(\"loop上升达到限制\");\r\n    //执行状态为空\r\n    exec_status = 9;\r\n\r\n    String tmpDate = myHttpGet(remoteDateUrl);\r\n    deserializeJson(jsonBuffer, tmpDate);\r\n    jsonStr = jsonBuffer.as<JsonObject>();\r\n    String temp = jsonStr[\"sysTime2\"];\r\n    if (temp.length() > 15) {\r\n      tmpDate = temp.substring(11, 13);\r\n      int dateL = temp.toInt();\r\n      if (dateL > 6 && dateL < 18) {\r\n        digitalWrite(d8, HIGH);\r\n        //这里长度记得除下2    使用前校验一下String的长度是否正确\r\n      }\r\n    }\r\n  }\r\n  //操作运行时 下降达到限位了,并且上次状态不是下降上限 并且执行状态是下降  限位开关开路\r\n  if (digitalRead(d6) == HIGH && state != 0 && exec_status == 0) {\r\n    digitalWrite(open, LOW);\r\n    digitalWrite(close, LOW);\r\n    delay(200);\r\n    //断开电源接通\r\n    digitalWrite(d0, LOW);\r\n    Serial.println(\"关门达到上限\");\r\n\r\n    state = 0;\r\n    webSocket.sendTXT(\"loop关门达到限制\");\r\n    //执行状态为空\r\n    exec_status = 9;\r\n\r\n    //关门就把广告灯箱关了\r\n    digitalWrite(d8, LOW);\r\n    //告诉服务器让其知道灯箱现在是关闭状态\r\n    webSocket.sendTXT(\"mydoor1灯箱关\");\r\n    delay(500);\r\n  }\r\n  //即没有上限也没有下限状态\r\n  if (digitalRead(d5) == LOW && digitalRead(d6) == LOW && state != 5) {\r\n    state = 5;\r\n  }\r\n\r\n}\r\n\r\n\r\nvoid webSocketEvent(WStype_t type, uint8_t* payload, size_t length) {\r\n  switch (type) {\r\n    case WStype_DISCONNECTED:\r\n      digitalWrite(open, LOW);\r\n      digitalWrite(close, LOW);\r\n      Serial.println(\"Disconnected 开关状态全部关闭一下\");\r\n\r\n      //防止开启突然没有网络,lop循环检测不到状态 这里再进行检测\r\n      if (digitalRead(d5) == HIGH && state != 10) {\r\n        state = 10;\r\n        //关闭所有开关\r\n        CloseAll();\r\n        Serial.println(\"Disconnected  上限关闭\");\r\n      }\r\n      //查询是否下降 限制,及时把状态改好\r\n      if (digitalRead(d6) == HIGH && state != 0) {\r\n        state = 0;\r\n        //关闭所有开关\r\n        CloseAll();\r\n        Serial.println(\"Disconnected  下限关闭\");\r\n      }\r\n      internet_i++;\r\n      //无法连接远程WSS服务器15次就自动 启动网页控制\r\n      if (internet_i > 15) {\r\n        CloseAll();\r\n        delay(500);\r\n        webSocket.disconnect();\r\n        delay(500);\r\n        //计数器归0\r\n        internet_i = 0;\r\n        if (networkRemoteLocal == true) {\r\n          //连接192.168.X.254\r\n          wsRaspberry();\r\n        } else {\r\n          wssRaspberry();\r\n        }\r\n      }\r\n      break;\r\n    case WStype_CONNECTED:\r\n      {\r\n        Serial.printf(\"[WSc] Connected to url: %s\\n\", payload);\r\n        // send message to server when Connected\r\n        //计数器归0\r\n        internet_i = 0;\r\n        delay(200);\r\n      }\r\n      break;\r\n    case WStype_TEXT:\r\n      Serial.printf(\"[WSc] get text: %s\\n\", payload);\r\n\r\n      deserializeJson(jsonBuffer, payload);\r\n      jsonStr = jsonBuffer.as<JsonObject>();\r\n      if (jsonStr[\"message\"] != \"\") {\r\n        String user = jsonStr[\"user\"];\r\n        String date = jsonStr[\"date\"];\r\n        String message = jsonStr[\"message\"];\r\n        if (message == \"mydoor1.↓\") {\r\n          //限位开关导通时为低电平表明还没有达到限位,并且没到达到下降最大限制  能正常下降,断开为高电平表明达到限位了\r\n          if (digitalRead(d6) == LOW && state != 0) {\r\n            //主电源接通\r\n            digitalWrite(d0, HIGH);\r\n            delay(200);\r\n            //关 下降\r\n            webSocket.sendTXT(\"正在关门 ...\");\r\n            digitalWrite(open, LOW);\r\n            delay(200);\r\n            digitalWrite(close, HIGH);\r\n            UserExec = user + \" mydoor1.↓ \" + date;\r\n            exec_status = 0;\r\n\r\n          } else {\r\n            webSocket.sendTXT(\"关门达到限制,关门指令失效\");\r\n          }\r\n          return;\r\n        }\r\n        if (message == \"mydoor1.↑\") {\r\n          //限位开关导通为低电平 表明还没有达到限位,并且没有达到上升最大限制 能正常上升,断开为高电平表明达到限位了\r\n          if (digitalRead(d5) == LOW && state != 10) {\r\n            //主电源接通\r\n            digitalWrite(d0, HIGH);\r\n\r\n            delay(200);\r\n            //开 上升\r\n            webSocket.sendTXT(\"正在开门 ...\");\r\n            digitalWrite(close, LOW);\r\n\r\n            delay(200);\r\n            digitalWrite(open, HIGH);\r\n            UserExec = user + \" mydoor1.↑ \" + date;\r\n            exec_status = 1;\r\n\r\n          } else {\r\n            webSocket.sendTXT(\"达到限制,上升指令失效\");\r\n\r\n          }\r\n          return;\r\n        }\r\n\r\n        if (message == \"mydoor1.■\") {\r\n          //如果已经在上限或下限时只更新响应时间\r\n          Serial.println(\"停止\");\r\n          CloseAll();\r\n          if (digitalRead(d5) == LOW && digitalRead(d6) == LOW) {\r\n            webSocket.sendTXT(\"停止\");\r\n            state = 5;\r\n            delay(200);\r\n            return;\r\n          }\r\n          //状态不为空说明 不是上升上限就是下降上限\r\n          if (digitalRead(d5) == HIGH || digitalRead(d6) == HIGH) {\r\n            //查询是否下降 限制,及时把状态改好\r\n            if (digitalRead(d5) == HIGH) {\r\n              state = 10;\r\n              String tempstr = ggb == true ? \"灯箱亮\" : \"灯箱关\";\r\n              UserExec = UserExec + tempstr;\r\n              String rez = \"开门达到限制 \" + UserExec;\r\n              webSocket.sendTXT(rez);\r\n            } else {\r\n              state = 0;\r\n              String tempstr = ggb == true ? \"灯箱亮\" : \"灯箱关\";\r\n              UserExec = UserExec + tempstr;\r\n              String rez = \"关门达到限制 \" + UserExec;\r\n              webSocket.sendTXT(rez);\r\n            }\r\n          }\r\n          return;\r\n        }\r\n        if (message == \"mydoor1.设备休眠\") {\r\n          CloseAll();\r\n          delay(500);\r\n          String timingStr = \"1\";\r\n          String date = myHttpGet(remoteDateUrl);\r\n          deserializeJson(jsonBuffer, date);\r\n          jsonStr = jsonBuffer.as<JsonObject>();\r\n          String temp = jsonStr[\"sysTime2\"];\r\n          if (temp.length() > 15) {\r\n            date = temp.substring(11, 13);\r\n            int dateInt = temp.toInt();\r\n            Serial.println(dateInt);\r\n            if (dateInt > 6 && dateInt < 18) {\r\n              timingStr = \"2\";\r\n            }\r\n          }\r\n          webSocket.sendTXT(\"mydoor1休眠两个半小时...\");\r\n          delay(200);\r\n          webSocket.disconnect();\r\n          delay(500);\r\n          WiFi.disconnect();\r\n          SPIFFS.begin();\r\n          File dataFile = SPIFFS.open(Timing, \"w\");\r\n          dataFile.println(timingStr);\r\n          dataFile.close();\r\n          espReboot();\r\n        }\r\n        if (message.indexOf(\"mydoor1.温馨提示\") != -1) {\r\n          //防止大门开启的时候,同时播报导致大门控制失灵 只有在上,下限的时候才播报\r\n          if (state == 0 || state == 10) {\r\n            digitalWrite(d0, HIGH);\r\n            delay(2000);\r\n            String data = message.substring(message.indexOf(\"mydoor1.温馨提示\"), message.length());\r\n            data = data.substring(20);\r\n            data.replace(\" \", \"\");\r\n            //String data = \"020104C0\";\r\n            //这里长度记得除下2    使用前校验一下String的长度是否正确\r\n            byte byteArray[data.length() / 2] = { 0 };\r\n            hexCharacterStringToBytes(byteArray, data.c_str());\r\n            //两个参数，第一个接收byte的数组,第二个要String.c_str()\r\n            Serial.write(byteArray, data.length() / 2);\r\n            delay(25000);\r\n            digitalWrite(d0, LOW);\r\n            return;\r\n          }\r\n        }\r\n        if (message.indexOf(\"mydoor1.铃声\") != -1) {\r\n          digitalWrite(d0, HIGH);\r\n          delay(2000);\r\n          String s = message.substring(message.length() - 1);\r\n          String data = \"FD 00 08 01 01 72 69 6E 67 5F 3\" + s;\r\n          data.replace(\" \", \"\");\r\n          //String data = \"020104C0\";\r\n          //这里长度记得除下2    使用前校验一下String的长度是否正确\r\n          byte byteArray[data.length() / 2] = { 0 };\r\n          hexCharacterStringToBytes(byteArray, data.c_str());\r\n          //两个参数，第一个接收byte的数组,第二个要String.c_str()\r\n          Serial.write(byteArray, data.length() / 2);\r\n          delay(7000);\r\n          digitalWrite(d0, LOW);\r\n          return;\r\n        }\r\n        if (message.indexOf(\"mydoor1.信息提示音\") != -1) {\r\n          digitalWrite(d0, HIGH);\r\n          delay(2000);\r\n          String s = message.substring(message.length() - 1);\r\n          String data = \"FD 00 0B 01 01 6D 65 73 73 61 67 65 5F 3\" + s;\r\n          data.replace(\" \", \"\");\r\n          //String data = \"020104C0\";\r\n          //这里长度记得除下2    使用前校验一下String的长度是否正确\r\n          byte byteArray[data.length() / 2] = { 0 };\r\n          hexCharacterStringToBytes(byteArray, data.c_str());\r\n          //两个参数，第一个接收byte的数组,第二个要String.c_str()\r\n          Serial.write(byteArray, data.length() / 2);\r\n          delay(7000);\r\n          digitalWrite(d0, LOW);\r\n          return;\r\n        }\r\n        if (message.indexOf(\"mydoor1.警示音\") != -1) {\r\n          digitalWrite(d0, HIGH);\r\n          delay(2000);\r\n          String s = message.substring(message.length() - 1);\r\n          String data = \"FD 00 09 01 01 61 6C 65 72 74 5F 3\" + s;\r\n          data.replace(\" \", \"\");\r\n          //String data = \"020104C0\";\r\n          //这里长度记得除下2    使用前校验一下String的长度是否正确\r\n          byte byteArray[data.length() / 2] = { 0 };\r\n          hexCharacterStringToBytes(byteArray, data.c_str());\r\n          //两个参数，第一个接收byte的数组,第二个要String.c_str()\r\n          Serial.write(byteArray, data.length() / 2);\r\n          delay(7000);\r\n          digitalWrite(d0, LOW);\r\n          return;\r\n        }\r\n        if (message == \"mydoor1.温湿度\") {\r\n          // 获取温度事件并打印其值.\r\n          sensors_event_t event;\r\n          dht.temperature().getEvent(&event);\r\n          if (isnan(event.temperature)) {\r\n            Serial.println(F(\"Error reading temperature!\"));\r\n          } else {\r\n            temperature = event.temperature;\r\n            if (temperature < -10) {\r\n              tes = \"防冻\";\r\n            }\r\n            if (temperature >= -10 && temperature < 18) {\r\n              tes = \"寒冷\";\r\n            }\r\n            if (temperature >= 18 && temperature <= 25) {\r\n              tes = \"舒适\";\r\n            }\r\n            if (temperature > 25 && temperature <= 36) {\r\n              tes = \"炎热\";\r\n            }\r\n            if (temperature > 36) {\r\n              tes = \"防暑\";\r\n            }\r\n          }\r\n          delay(500);\r\n          // Get humidity event and print its value.\r\n          dht.humidity().getEvent(&event);\r\n          if (isnan(event.relative_humidity)) {\r\n            Serial.println(F(\"Error reading humidity!\"));\r\n          } else {\r\n            humidity = event.relative_humidity;\r\n            if (humidity < 40) {\r\n              hus = \"干燥\";\r\n            }\r\n            if (humidity >= 40 && humidity <= 70) {\r\n              hus = \"舒适\";\r\n            }\r\n            if (humidity > 70) {\r\n              hus = \"潮湿\";\r\n            }\r\n          }\r\n          String th = String(temperature) + \"°C\" + tes + \"   \" + String(humidity) + \"%湿度\" + hus;\r\n          webSocket.sendTXT(th);\r\n          return;\r\n        }\r\n\r\n        if (message == \"mydoor1.灯箱开\") {\r\n          digitalWrite(d8, HIGH);\r\n          ggb = true;\r\n          if (user == \"系统任务\") {\r\n            String strtem = \"系统任务 广告牌灯箱已开\";\r\n            webSocket.sendTXT(strtem);\r\n          } else {\r\n            String strtem = user + \" 广告牌灯箱已开\";\r\n            webSocket.sendTXT(strtem);\r\n          }\r\n          return;\r\n        }\r\n        if (message == \"mydoor1.灯箱关\") {\r\n          digitalWrite(d8, LOW);\r\n          ggb = false;\r\n          if (user == \"系统任务\") {\r\n            String strtem = \"系统任务 广告牌灯箱已关\";\r\n            webSocket.sendTXT(strtem);\r\n          } else {\r\n            String strtem = user + \" 广告牌灯箱已关\";\r\n            webSocket.sendTXT(strtem);\r\n          }\r\n          return;\r\n        }\r\n        if (message == \"mydoor1.重启\") {\r\n          ESP.restart();\r\n        }\r\n        if (message == \"mydoor1.version\") {\r\n          webSocket.sendTXT(version);\r\n        }\r\n        if (message == \"mydoor1.updateBin\") {\r\n          while (1) {\r\n            // Add optional callback notifiers\r\n            ESPhttpUpdate.onStart(update_started);\r\n            ESPhttpUpdate.onEnd(update_finished);\r\n            ESPhttpUpdate.onProgress(update_progress);\r\n            ESPhttpUpdate.onError(update_error);\r\n            t_httpUpdate_return ret = ESPhttpUpdate.update(wificlient, upUrl);\r\n            switch (ret) {\r\n              case HTTP_UPDATE_FAILED: Serial.printf(\"HTTP_UPDATE_FAILD Error (%d): %s\\n\", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str()); break;\r\n\r\n              case HTTP_UPDATE_NO_UPDATES: Serial.println(\"HTTP_UPDATE_NO_UPDATES\"); break;\r\n\r\n              case HTTP_UPDATE_OK: Serial.println(\"HTTP_UPDATE_OK\"); break;\r\n            }\r\n          }\r\n          espReboot();\r\n        }\r\n      }\r\n      // send message to server\r\n      //       webSocket.sendTXT(\"message here\");\r\n      break;\r\n    case WStype_BIN:\r\n      Serial.printf(\"[WSc] get binary length: % u\\n\", length);\r\n      //hexdump(payload, length);\r\n      // webSocket.sendBIN(payload, length);\r\n      break;\r\n    case WStype_PING:\r\n      // pong will be send automatically\r\n      //Serial.printf(\"[WSc] get ping\\n\");\r\n\r\n      break;\r\n    case WStype_PONG:\r\n      // answer to a ping we send\r\n      Serial.printf(\"[WSc] get pong\\n\");\r\n      //防止开启突然没有网络,lop循环检测不到状态 这里再进行检测\r\n      if (digitalRead(d5) == HIGH && state != 10) {\r\n        state = 10;\r\n        //关闭所有开关\r\n        CloseAll();\r\n        //Serial.println(\"Disconnected  state = 10\");\r\n      }\r\n      //查询是否下降 限制,及时把状态改好\r\n      if (digitalRead(d6) == HIGH && state != 0) {\r\n        state = 0;\r\n        //关闭所有开关\r\n        CloseAll();\r\n      }\r\n      //如果websocket连接网络失败重启时又能连网就重置0\r\n      if (internet_i != 0) {\r\n        internet_i = 0;\r\n      }\r\n      break;\r\n  }\r\n}\r\nvoid SetWifi() {\r\n  ssid = ESP8266webServer.arg(0);\r\n  passwd = ESP8266webServer.arg(1);\r\n  String sp = ssid + \"&\" + passwd;\r\n  Serial.println(sp);\r\n  Serial.println(\"密码在前面\");\r\n  Serial.begin(115200);\r\n  delay(500);\r\n  const char* Ssid = ssid.c_str();\r\n  const char* WifiPw = passwd.c_str();\r\n  WiFi.begin(Ssid, WifiPw);\r\n  WiFi.mode(WIFI_STA);\r\n  delay(200);\r\n  Serial.println(\"wifi_connet\");\r\n  int ii = 0;\r\n  for (ii; ii < 20; ii++) {\r\n    delay(500);\r\n    Serial.print(\".\");\r\n    if (WiFi.status() == WL_CONNECTED) {\r\n      ESP8266webServer.send(200, \"text/plane\", \"Wifi密码正确,ESP准备重启\");\r\n      ESP8266webServer.close();\r\n      delay(500);\r\n      WiFi.disconnect();\r\n      delay(500);\r\n\r\n      //写入数据\r\n      SPIFFS.format();\r\n      delay(500);\r\n      SPIFFS.begin();\r\n      File dataFile = SPIFFS.open(flash_wifi, \"w\");\r\n      dataFile.println(sp);\r\n      dataFile.close();\r\n\r\n      Serial.println(\"HTML连接成功\");\r\n      delay(500);\r\n      ESP.restart();\r\n    }\r\n  }\r\n  ESP8266webServer.send(200, \"text/plane\", \"Wifi密码错误,请重新输入\");\r\n  //HtmlSetWifi();\r\n}\r\n//------- 展示页面-------\r\nvoid handlejsonStr() {\r\n  ESP8266webServer.send(500, \"text/html\", html);\r\n}\r\nvoid handleNotFound(void) {\r\n  ESP8266webServer.send(404, \"text/plain\", \"404-The page is not Found!\");\r\n}\r\n\r\n\r\nvoid ApStart() {\r\n  WiFi.disconnect();\r\n  delay(500);\r\n  Serial.begin(115200);\r\n  WiFi.mode(WIFI_AP);\r\n  IPAddress local_IP(192, 168, 168, 2);\r\n  IPAddress gateway(192, 168, 168, 1);\r\n  IPAddress subnet(255, 255, 255, 0);\r\n  WiFi.softAPConfig(local_IP, gateway, subnet);\r\n\r\n  //启动AP模式,并设置账号和密码\r\n  WiFi.softAP(\"192.168.168.2\", \"192.168.168.2\");\r\n}\r\nvoid WebserverStart() {\r\n  //-----------------启动webserver网络服务--------------------\r\n  ESP8266webServer.begin(80);               // 启用网络服务\r\n  ESP8266webServer.on(\"/\", handlejsonStr);  // / 在HTTP中,表示请求首页服务,\r\n  ESP8266webServer.on(\"/SetWifi\", SetWifi);\r\n  ESP8266webServer.onNotFound(handleNotFound);  // 当服务器没找到所需的服务,调用404函数\r\n  Serial.println(\"webserver started\");\r\n}\r\n\r\n\r\n\r\nvoid ForPing() {\r\n  //定时时间到了,先取消定时状态\r\n  myTicker.detach();\r\n  CloseAll();\r\n  delay(500);\r\n\r\n  ESP.restart();\r\n}\r\n\r\n\r\n//关闭上升,下降,变压器主电源\r\nvoid CloseAll() {\r\n  digitalWrite(open, LOW);\r\n  digitalWrite(close, LOW);\r\n  delay(200);\r\n  //断开电源接通\r\n  digitalWrite(d0, LOW);\r\n  //取消定时状态\r\n  myTicker.detach();\r\n  webSocket.sendTXT(\"变压器电源已断开\");\r\n}\r\n\r\n\r\n//扫描附件WIFI\r\nvoid WifiScan() {\r\n  Serial.begin(115200);\r\n  WiFi.disconnect();\r\n  WiFi.mode(WIFI_STA);\r\n  delay(100);\r\n  int n = WiFi.scanNetworks();\r\n  if (n > 0) {\r\n    Serial.println(n);\r\n    String a = \"附近WiFi <select id=\\\"ssid\\\">\";\r\n    for (int i = 0; i < n; i++) {\r\n      Serial.println(WiFi.SSID(i));\r\n      a = a + \"<option value=\\\"\" + WiFi.SSID(i) + \"\\\">\" + WiFi.SSID(i) + \"</option>\";\r\n      delay(50);\r\n    }\r\n    String HtmlStart = String(\"\") + \"<!DOCTYPE html>\" + \"<html>\" + \"<head>\" + \"<meta charset=\\\"utf-8\\\">\" + \"<meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\\\" />\" + \"<title>设置WiFi</title>\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\\\">\" + \"</head>\" + \"<script>\" + \"onload  = function() {\" + \"document.getElementById(\\\"up\\\").onclick = function(){\" + \"var ssida=document.getElementById(\\\"ssid\\\").value;\" + \"var ssid=ssida.replace(/\\\\s+/g, \\\" \\\");\" + \"var passwda=document.getElementsByTagName(\'input\')[0].value;\" + \"var passwd=passwda.replace(/\\\\s+/g, \\\" \\\");\" + \"xhr = new XMLHttpRequest();\" + \"xhr.open(\\\"POST\\\",\\\"./SetWifi\\\",true);\" + \"var posts = (\\\"ssid=\\\"+ssid+\\\"&passwd=\\\"+ passwd);\" + \"xhr.setRequestHeader(\\\"Content-Type\\\",\\\"application/x-www-form-urlencoded\\\");\" + \"xhr.send(posts);\" + \"xhr.onreadystatechange = function(){\" + \"if(this.readyState == 4 && this.status == 200){\" + \"alert(this.responseText);\" + \"}\" + \"}\" + \"}\" + \"}\" + \"</script>\" + \"<body>\";\r\n    String HtmlEnd = String(\"\") + \"<p>WiFi密码<input type=\\\"text\\\" id=\\\"passwd\\\"></p>\" + \"<input type=\\\"submit\\\" id=\\\"up\\\" value=\\\"设 置\\\">\" + \"<hr/>\" + \"<font color=\\\"red\\\">附近WiFi没有显示到自己的WIFI请重启或离信号源近点</font>\" + \"</body>\" + \"</html>\";\r\n    a = a + \"</select>\";\r\n    html = HtmlStart + a + HtmlEnd;\r\n  } else {\r\n    html = \"扫描不到网络\";\r\n    Serial.println(\"扫描不到网络\");\r\n  }\r\n}\r\nbool FlashConnetWifi() {\r\n  Serial.begin(115200);\r\n  delay(500);\r\n  //是否存在数据\r\n  SPIFFS.begin();\r\n  if (SPIFFS.exists(flash_wifi) == false) {\r\n    Serial.print(flash_wifi);\r\n    Serial.println(\" NOT FOUND\");\r\n    return false;\r\n  }\r\n\r\n  File dateFile = SPIFFS.open(flash_wifi, \"r\");\r\n  String result = dateFile.readString();\r\n  result.trim();\r\n  Serial.println(result);\r\n  int i = result.indexOf(\"&\");\r\n  String wifiname = result.substring(0, i);\r\n  String wifipw = result.substring(i + 1);\r\n  const char* Ssid = wifiname.c_str();\r\n  const char* WifiPw = wifipw.c_str();\r\n  Serial.println(Ssid);\r\n  Serial.println(WifiPw);\r\n  WiFi.begin(Ssid, WifiPw);\r\n  delay(500);\r\n  WiFi.mode(WIFI_STA);\r\n  Serial.println(\"FlashConnetWifi->connet\");\r\n  int ii = 0;\r\n  for (ii; ii < 25; ii++) {\r\n    delay(500);\r\n    Serial.print(\" . \");\r\n    if (WiFi.status() == WL_CONNECTED) {\r\n      Serial.println(\"FlashConnetWifi 闪存配置连接成功\");\r\n      return true;\r\n    }\r\n  }\r\n  Serial.println(\"FlashConnetWifi->false\");\r\n  return false;\r\n}\r\n\r\nvoid HtmlSetWifi() {\r\n  WifiScan();\r\n  ApStart();\r\n  delay(1000);\r\n  Serial.println(\"启动网页\");\r\n  myTicker.detach();\r\n  delay(200);\r\n  //5分后重启 防止停电后复电,路由器连接WIFI速度慢于ESP导致ESP连接不到路由器进入无限AP模式,所以这里只让AP 激活5分钟后就重启\r\n  myTicker.once(300, espReboot);\r\n  delay(200);\r\n  WebserverStart();\r\n  while (1) {\r\n    ESP8266webServer.handleClient();  // 检查网络服务请求并处理\r\n  }\r\n}\r\nvoid espReboot() {\r\n  ESP.restart();\r\n}\r\nvoid wssRaspberry() {\r\n  //WiFi.disconnect();\r\n  webSocket.disconnect();\r\n  Serial.begin(115200);\r\n  delay(500);\r\n  networkRemoteLocal = true;\r\n\r\n  webSocket.beginSSL(\"www.nobiggie.cn\", 443, \"/service/wss\");\r\n  webSocket.onEvent(webSocketEvent);\r\n  webSocket.setAuthorization(\"user=mydoor1&passwd=efghijk&room=admin\");\r\n  // try ever 5000 again if connection has failed\r\n  webSocket.setReconnectInterval(500);\r\n  /*虽然服务器有ping 但是有时运行中,突然无网络,返回连接失败Disconnected 很慢,或有时直接卡住需要手动重启ESP\r\n    所以 webSocket.enableHeartbeat(15000, 1500, 2);也要加上  */\r\n  webSocket.enableHeartbeat(15000, 2000, 2);\r\n  //防止 电源重启,门达到上限了,没有把状态改正,在这进行验证一下\r\n  if (digitalRead(d5) == HIGH) {\r\n    state = 10;\r\n  }\r\n  if (digitalRead(d6) == HIGH) {\r\n    state = 0;\r\n  }\r\n}\r\nvoid wsRaspberry() {\r\n  //WiFi.disconnect();\r\n  webSocket.disconnect();\r\n  Serial.begin(115200);\r\n  delay(500);\r\n  networkRemoteLocal = false;\r\n\r\n  Serial.println(\"webSocket->\" + localServerIP);\r\n  webSocket.begin(localServerIP, 80, \"/service/wss\");\r\n  webSocket.onEvent(webSocketEvent);\r\n  webSocket.setAuthorization(\"user=mydoor1&passwd=efghijk&room=admin\");\r\n  // try ever 5000 again if connection has failed\r\n  webSocket.setReconnectInterval(500);\r\n  webSocket.enableHeartbeat(15000, 2000, 2);\r\n  //防止 电源重启,门达到上限了,没有把状态改正,在这进行验证一下\r\n  if (digitalRead(d5) == HIGH) {\r\n    state = 10;\r\n  }\r\n  if (digitalRead(d6) == HIGH) {\r\n    state = 0;\r\n  }\r\n}\r\n//无网特殊状态下安全限位\r\nvoid html_whlie() {\r\n  //操作运行时 上升达到限位了,并且上次状态不是上升上限, 并且执行状态是上升 限位开关断开\r\n  if (digitalRead(d5) == HIGH || digitalRead(d6) == HIGH) {\r\n    //关闭所有开关\r\n    CloseAll();\r\n    Serial.println(\"达到上限\");\r\n    myTicker.detach();\r\n    delay(200);\r\n    ESP.restart();\r\n  }\r\n}\r\n\r\n\r\nString myHttpGet(String string) {\r\n  HTTPClient http;\r\n  String response;\r\n  http.begin(wificlient, string);\r\n  http.setTimeout(3000);\r\n  int httpCode = http.GET();\r\n  if (httpCode == 200) {\r\n    response = http.getString();\r\n    return response;\r\n  } else {\r\n    return \"\";\r\n  }\r\n  http.end();\r\n}\r\nString myHttpPost(String url, String postStr) {\r\n  HTTPClient http;\r\n  String response;\r\n  http.begin(wificlient, url);\r\n  http.setTimeout(3000);\r\n  //需要传输的数据\r\n  char dataBuff[postStr.length()];\r\n  strcpy(dataBuff, postStr.c_str());\r\n  //头信息,需要的反注释就可以\r\n  //http.addHeader(\"Content-Type\", \"application/json;charset=utf-8\");\r\n  http.addHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n  int httpCode = http.POST(dataBuff);\r\n  if (httpCode == 200) {\r\n    response = http.getString();\r\n    return response;\r\n  } else {\r\n    return \"\";\r\n  }\r\n  http.end();\r\n}\r\nvoid hexCharacterStringToBytes(byte* byteArray, const char* hexString) {\r\n  bool oddLength = strlen(hexString) & 1;\r\n\r\n  byte currentByte = 0;\r\n  byte byteIndex = 0;\r\n\r\n  for (byte charIndex = 0; charIndex < strlen(hexString); charIndex++) {\r\n    bool oddCharIndex = charIndex & 1;\r\n\r\n    if (oddLength) {\r\n      // If the length is odd\r\n      if (oddCharIndex) {\r\n        // odd characters go in high nibble\r\n        currentByte = nibble(hexString[charIndex]) << 4;\r\n      } else {\r\n        // Even characters go into low nibble\r\n        currentByte |= nibble(hexString[charIndex]);\r\n        byteArray[byteIndex++] = currentByte;\r\n        currentByte = 0;\r\n      }\r\n    } else {\r\n      // If the length is even\r\n      if (!oddCharIndex) {\r\n        // Odd characters go into the high nibble\r\n        currentByte = nibble(hexString[charIndex]) << 4;\r\n      } else {\r\n        // Odd characters go into low nibble\r\n        currentByte |= nibble(hexString[charIndex]);\r\n        byteArray[byteIndex++] = currentByte;\r\n        currentByte = 0;\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nbyte nibble(char c) {\r\n  if (c >= \'0\' && c <= \'9\')\r\n    return c - \'0\';\r\n\r\n  if (c >= \'a\' && c <= \'f\')\r\n    return c - \'a\' + 10;\r\n\r\n  if (c >= \'A\' && c <= \'F\')\r\n    return c - \'A\' + 10;\r\n\r\n  return 0;  // Not a valid hexadecimal character\r\n}\r\nvoid update_started() {\r\n  Serial.println(\"CALLBACK:  HTTP update process started\");\r\n}\r\n\r\nvoid update_finished() {\r\n  Serial.println(\"CALLBACK:  HTTP update process finished\");\r\n}\r\n\r\nvoid update_progress(int cur, int total) {\r\n  Serial.printf(\"CALLBACK:  HTTP update process at %d of %d bytes...\\n\", cur, total);\r\n  webSocket.sendTXT(Serial.printf(\"CALLBACK:  HTTP update process at %d of %d bytes...\\n\", cur, total));\r\n}\r\n\r\nvoid update_error(int err) {\r\n  Serial.printf(\"CALLBACK:  HTTP update fatal error code %d\\n\", err);\r\n}','','webserver'),(7998,20,'ESP8266 http Post与Get请求','#include <ESP8266WiFi.h>\r\n#include <ESP8266HTTPClient.h>\r\nWiFiClient wificlient;\r\nvoid setup() {\r\n  // put your setup code here, to run once:\r\n  Serial.begin(115200);\r\n  WiFi.begin(\"webserver\", \"www.360xyz.cn\");\r\n  delay(500);\r\n  WiFi.mode(WIFI_STA);\r\n  Serial.println(\"FlashConnetWifi->connet\");\r\n  while (1) {\r\n    delay(500);\r\n    Serial.print(\" . \");\r\n    if (WiFi.status() == WL_CONNECTED) {\r\n      Serial.println(\"FlashConnetWifi 闪存配置连接成功\");\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nvoid loop() {\r\n\r\n  String a = esp8266Get(\"http://server.nobiggie.cn/query/date\");\r\n  Serial.println(a);\r\n  delay(5000);\r\n}\r\nString esp8266Get(String string) {\r\n  HTTPClient http;\r\n  String response;\r\n  http.begin(wificlient, string);\r\n  http.setTimeout(3000);\r\n  int httpCode = http.GET();\r\n  // httpCode will be negative on error\r\n  if (httpCode == 200) {\r\n    response = http.getString();\r\n    return response;\r\n  } else {\r\n    return \"\";\r\n  }\r\n  http.end();\r\n}\r\nString esp8266Post(String url, String postStr) {\r\n  HTTPClient http;\r\n  String response;\r\n  http.begin(wificlient, url);\r\n  http.setTimeout(3000);\r\n  //需要传输的数据\r\n  char dataBuff[postStr.length()];\r\n  strcpy(dataBuff, postStr.c_str());\r\n  //头信息，需要的反注释就可以\r\n  //http.addHeader(\"Content-Type\", \"application/json;charset=utf-8\");\r\n  http.addHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n  int httpCode = http.POST(dataBuff);\r\n  if (httpCode == 200) {\r\n    response = http.getString();\r\n    return response;\r\n  } else {\r\n    return \"\";\r\n  }\r\n  http.end();\r\n}','','webserver'),(7999,20,'智能照明','#define BLINKER_WIFI\r\n#include <Arduino.h>\r\n#include <Blinker.h>\r\nchar auth[] = \"1fac905d4e32\";\r\nchar ssid[] = \"webserver\";      //你的wifi\r\nchar pswd[] = \"www.360xyz.cn\";  //你的WIFI密码\r\n\r\n#define D5 14                      //人体感应\r\n#define D6 12                      //光敏感应\r\n#define D8 15                       //灯\r\nBlinkerButton Button1(\"btn-64g\");  //遥控灯开关\r\nbool lightStatu = false;           //默认灯是关的状态\r\nbool onOff = false;                //开关状态 默认关\r\nvoid setup() {\r\n  pinMode(D5, INPUT);\r\n  pinMode(D6, INPUT);\r\n  pinMode(D8, OUTPUT);\r\n  digitalWrite(D8, LOW);\r\n  // put your setup code here, to run once:\r\n  Serial.begin(115200);\r\n  Blinker.begin(auth, ssid, pswd);\r\n  Button1.attach(button1_callback);\r\n  delay(500);\r\n}\r\n\r\nvoid loop() {\r\n  // put your main code here, to run repeatedly:\r\n  Blinker.run();\r\n  //晚上光敏导通  全亮\r\n  if (digitalRead(D6) == HIGH) {\r\n    if (lightStatu == false) {\r\n      lightStatu = true;\r\n      digitalWrite(D8, HIGH);  //点亮灯\r\n      Button1.color(\"#00FF00\");\r\n      Button1.text(\"开\");\r\n      Button1.print();\r\n      Serial.println(\"晚上光敏导通  全亮\");\r\n    }\r\n  } else {\r\n    //白天\r\n    //并且是开灯状态 并且 人体感应 没有人    关灯\r\n    if (lightStatu == true && digitalRead(D5) == LOW && onOff == false) {\r\n      lightStatu = false;\r\n      digitalWrite(D8, LOW);  //关灯\r\n      Button1.color(\"#000000\");\r\n      Button1.text(\"关\");\r\n      Button1.print();\r\n      Serial.println(\"并且是开灯状态 并且 人体感应 没有人    ->关灯\");\r\n    } else {\r\n      //人体感应 有人 并且灯没有点亮\r\n      if (digitalRead(D5) == HIGH && lightStatu == false) {\r\n        lightStatu = true;       //点亮\r\n        digitalWrite(D8, HIGH);  //点亮灯\r\n        Button1.color(\"#00FF00\");\r\n        Button1.text(\"开\");\r\n        Button1.print();\r\n        Serial.println(\"人体感应 有人 并且灯没有点亮\");\r\n      }\r\n      //如果人体感应 没有人 并且 灯的状态是开的 并且没有手动开灯\r\n      if (digitalRead(D5) == LOW && lightStatu == true && onOff == false) {\r\n        lightStatu = false;\r\n        digitalWrite(D8, LOW);  //关灯\r\n        Button1.color(\"#000000\");\r\n        Button1.text(\"关\");\r\n        Button1.print();\r\n        Serial.println(\"如果人体感应 没有人 并且 灯的状态是开的 并且没有手动开灯\");\r\n      }\r\n    }\r\n  }\r\n}\r\nvoid button1_callback(const String& state) {\r\n  //BLINKER_LOG(\"get button state: \", state);\r\n  if (lightStatu == false) {\r\n    Button1.color(\"#00FF00\");\r\n    Button1.text(\"开\");\r\n    Button1.print();\r\n    lightStatu = true;\r\n    digitalWrite(D8, HIGH);\r\n    onOff = true;\r\n  } else {\r\n    Button1.color(\"#000000\");\r\n    Button1.text(\"关\");\r\n    Button1.print();\r\n    lightStatu = false;\r\n    digitalWrite(D8, LOW);\r\n    onOff = false;\r\n  }\r\n}\r\n','','webserver'),(8000,20,'点灯科技6个震动器','#define BLINKER_WIFI\r\n#include <Blinker.h>\r\n#include <ESP8266WiFi.h>\r\nchar ssid[] = \"webserver\";      //你的WIFI名\r\nchar pswd[] = \"www.360xyz.cn\";  //你的WIFI密码\r\nchar auth[] = \"0371ea173c72\";\r\n#define D1 5\r\n#define D2 4\r\n#define D5 14\r\n#define D6 12\r\n#define D7 13\r\n#define D8 15\r\nint vibrationTime = 3;  //震动时间\r\n\r\nBlinkerButton Button1(\"btn-hog\");\r\nBlinkerButton Button2(\"btn-1vs\");\r\nBlinkerButton Button3(\"btn-ed9\");\r\nBlinkerButton Button4(\"btn-cjh\");\r\nBlinkerButton Button5(\"btn-94j\");\r\nBlinkerButton Button6(\"btn-u0a\");\r\nvoid setup() {\r\n  pinMode(D1, OUTPUT);\r\n  pinMode(D2, OUTPUT);\r\n  pinMode(D5, OUTPUT);\r\n  pinMode(D6, OUTPUT);\r\n  pinMode(D7, OUTPUT);\r\n  pinMode(D8, OUTPUT);\r\n  digitalWrite(D1, LOW);\r\n  digitalWrite(D2, LOW);\r\n  digitalWrite(D5, LOW);\r\n  digitalWrite(D6, LOW);\r\n  digitalWrite(D7, LOW);\r\n  digitalWrite(D8, LOW);\r\n  Serial.begin(115200);\r\n  Blinker.begin(auth, ssid, pswd);\r\n  Button1.attach(button1_callback);\r\n  Button2.attach(button2_callback);\r\n  Button3.attach(button3_callback);\r\n  Button4.attach(button4_callback);\r\n  Button5.attach(button5_callback);\r\n  Button6.attach(button6_callback);\r\n  Blinker.attachData(dataRead);\r\n}\r\n\r\nvoid loop() {\r\n  Blinker.run();\r\n}\r\nvoid button1_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D1, HIGH);\r\n  Button1.color(\"#00FF00\");\r\n  Button1.text(\"1#正在震动\");\r\n  Button1.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D1, LOW);\r\n  Button1.color(\"#000000\");\r\n  Button1.text(\"1#已停止\");\r\n  Button1.print();\r\n}\r\n\r\n//停止\r\nvoid button2_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D2, HIGH);\r\n  Button2.color(\"#00FF00\");\r\n  Button2.text(\"2#正在震动\");\r\n  Button2.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D2, LOW);\r\n  Button2.color(\"#000000\");\r\n  Button2.text(\"2#已停止\");\r\n  Button2.print();\r\n}\r\n//下降\r\nvoid button3_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D5, HIGH);\r\n  Button3.color(\"#00FF00\");\r\n  Button3.text(\"3#正在震动\");\r\n  Button3.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D5, LOW);\r\n  Button3.color(\"#000000\");\r\n  Button3.text(\"3#已停止\");\r\n  Button3.print();\r\n}\r\nvoid button4_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D6, HIGH);\r\n  Button4.color(\"#00FF00\");\r\n  Button4.text(\"4#正在震动\");\r\n  Button4.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D6, LOW);\r\n  Button4.color(\"#000000\");\r\n  Button4.text(\"4#已停止\");\r\n  Button4.print();\r\n}\r\n\r\nvoid button5_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D7, HIGH);\r\n  Button5.color(\"#00FF00\");\r\n  Button5.text(\"5#正在震动\");\r\n  Button5.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D7, LOW);\r\n  Button5.color(\"#000000\");\r\n  Button5.text(\"5#已停止\");\r\n  Button5.print();\r\n}\r\nvoid button6_callback(const String& state) {\r\n  BLINKER_LOG(\"get button state: \", state);\r\n  digitalWrite(D8, HIGH);\r\n  Button6.color(\"#00FF00\");\r\n  Button6.text(\"6#正在震动\");\r\n  Button6.print();\r\n  delay(vibrationTime * 1000);\r\n  digitalWrite(D8, LOW);\r\n  Button6.color(\"#000000\");\r\n  Button6.text(\"6#已停止\");\r\n  Button6.print();\r\n}\r\nvoid dataRead(const String& data) {\r\n  BLINKER_LOG(\"Blinker readString: \", data);\r\n  int tmp = data.toInt();\r\n  vibrationTime=tmp;\r\n}','','webserver'),(8002,20,'摄像头4组开关温湿度1','/* *****************************************************************\r\n *\r\n * Download latest Blinker library here:\r\n * https://github.com/blinker-iot/blinker-library/archive/master.zip\r\n * \r\n * \r\n * Blinker is a cross-hardware, cross-platform solution for the IoT. \r\n * It provides APP, device and server support, \r\n * and uses public cloud services for data transmission and storage.\r\n * It can be used in smart home, data monitoring and other fields \r\n * to help users build Internet of Things projects better and faster.\r\n * \r\n * Make sure installed 2.7.4 or later ESP8266/Arduino package,\r\n * if use ESP8266 with Blinker.\r\n * https://github.com/esp8266/Arduino/releases\r\n * \r\n * Make sure installed 1.0.5 or later ESP32/Arduino package,\r\n * if use ESP32 with Blinker.\r\n * https://github.com/espressif/arduino-esp32/releases\r\n * \r\n * Docs: https://diandeng.tech/doc\r\n *       \r\n * \r\n * *****************************************************************\r\n * \r\n * Blinker 库下载地址:\r\n * https://github.com/blinker-iot/blinker-library/archive/master.zip\r\n * \r\n * Blinker 是一套跨硬件、跨平台的物联网解决方案，提供APP端、设备端、\r\n * 服务器端支持，使用公有云服务进行数据传输存储。可用于智能家居、\r\n * 数据监测等领域，可以帮助用户更好更快地搭建物联网项目。\r\n * \r\n * 如果使用 ESP8266 接入 Blinker,\r\n * 请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。\r\n * https://github.com/esp8266/Arduino/releases\r\n * \r\n * 如果使用 ESP32 接入 Blinker,\r\n * 请确保安装了 1.0.5 或更新的 ESP32/Arduino 支持包。\r\n * https://github.com/espressif/arduino-esp32/releases\r\n * \r\n * 文档: https://diandeng.tech/doc\r\n *       \r\n * \r\n * *****************************************************************/\r\n\r\n#define BLINKER_WIFI\r\n\r\n#include <Blinker.h>\r\n#include \"ESP32_CAM_SERVER.h\"\r\n\r\nchar ssid[] = \"webserver\";\r\nchar wifipwd[] = \"www.360xyz.cn\";\r\nchar auth[] = \"7eb873d19e73\";\r\nint D12 = 12;\r\nint D13 = 13;\r\nint D15 = 15;\r\nint D14 = 14;\r\nBlinkerButton Button1(\"btn-xyb\");  //\r\nBlinkerButton Button2(\"btn-902\");  //\r\nBlinkerButton Button3(\"btn-fmc\");  //\r\nBlinkerButton Button4(\"btn-126\");  //\r\n\r\nbool d1 = false;\r\nbool d2 = false;\r\nbool d5 = false;\r\nbool d6 = false;\r\nbool setup_camera = false;\r\n\r\nvoid dataRead(const String& data) {\r\n  BLINKER_LOG(\"Blinker readString: \", data);\r\n\r\n  Blinker.vibrate();\r\n\r\n  uint32_t BlinkerTime = millis();\r\n\r\n  Blinker.print(\"millis\", BlinkerTime);\r\n}\r\n\r\nvoid setup() {\r\n  pinMode(D12, OUTPUT);\r\n  pinMode(D13, OUTPUT);\r\n  pinMode(D15, OUTPUT);\r\n  pinMode(D14, OUTPUT);\r\n  digitalWrite(D12, LOW);\r\n  digitalWrite(D13, LOW);\r\n  digitalWrite(D15, LOW);\r\n  digitalWrite(D14, LOW);\r\n  Serial.begin(115200);\r\n  BLINKER_DEBUG.stream(Serial);\r\n\r\n  pinMode(LED_BUILTIN, OUTPUT);\r\n  digitalWrite(LED_BUILTIN, LOW);\r\n\r\n  Blinker.begin(auth, ssid, wifipwd);\r\n  Blinker.attachData(dataRead);\r\n  Button1.attach(button1_callback);\r\n  Button2.attach(button2_callback);\r\n  Button3.attach(button3_callback);\r\n  Button4.attach(button4_callback);\r\n}\r\n\r\nvoid loop() {\r\n  Blinker.run();\r\n\r\n  if (Blinker.connected() && !setup_camera) {\r\n    setupCamera();\r\n    setup_camera = true;\r\n\r\n    Blinker.printObject(\"video\", \"{\\\"str\\\":\\\"mjpg\\\",\\\"url\\\":\\\"http://\" + WiFi.localIP().toString() + \"\\\"}\");\r\n  }\r\n}\r\nvoid button1_callback(const String& state) {\r\n  if (d1 == true) {\r\n    d1 = false;\r\n    digitalWrite(D12, LOW);\r\n    Button1.color(\"#000000\");\r\n    Button1.text(\"关\");\r\n  } else {\r\n    d1 = true;\r\n    digitalWrite(D12, HIGH);\r\n    Button1.color(\"#00FF00\");\r\n    Button1.text(\"开\");\r\n  }\r\n  Button1.print();\r\n}\r\nvoid button2_callback(const String& state) {\r\n  if (d2 == true) {\r\n    d2 = false;\r\n    digitalWrite(D13, LOW);\r\n    Button2.color(\"#000000\");\r\n    Button2.text(\"关\");\r\n  } else {\r\n    d2 = true;\r\n    digitalWrite(D13, HIGH);\r\n    Button2.color(\"#00FF00\");\r\n    Button2.text(\"开\");\r\n  }\r\n  Button2.print();\r\n}\r\nvoid button3_callback(const String& state) {\r\n  if (d5 == true) {\r\n    d5 = false;\r\n    digitalWrite(D15, LOW);\r\n    Button3.color(\"#000000\");\r\n    Button3.text(\"关\");\r\n  } else {\r\n    d5 = true;\r\n    digitalWrite(D15, HIGH);\r\n    Button3.color(\"#00FF00\");\r\n    Button3.text(\"开\");\r\n  }\r\n  Button3.print();\r\n}\r\nvoid button4_callback(const String& state) {\r\n  if (d6 == true) {\r\n    d6 = false;\r\n    digitalWrite(D14, LOW);\r\n    Button4.color(\"#000000\");\r\n    Button4.text(\"关\");\r\n  } else {\r\n    d6 = true;\r\n    digitalWrite(D14, HIGH);\r\n    Button4.color(\"#00FF00\");\r\n    Button4.text(\"开\");\r\n  }\r\n  Button4.print();\r\n}\r\n','','webserver'),(8003,20,'TFT_eSPI.h esp32s 配置使用','libraries/TFT_eSPI\r\n\r\n85行 #define TFT_WIDTH\r\n88 行找出 尺寸高度  #define TFT_HEIGHT\r\n\r\n\r\n\r\n223行\r\n#define TFT_MOSI 15 // SDA In some display driver board, it might be written as \"SDA\" and so on.\r\n#define TFT_SCLK 14  //SCL\r\n#define TFT_CS   5  // Chip select control pin\r\n#define TFT_DC   27  // Data Command control pin\r\n#define TFT_RST  33  // Reset pin (could connect to Arduino RESET pin)\r\n#define TFT_BL   22  // LED back-light\r\n\r\n\r\n代码段\r\n#include <SPI.h> //导入库\r\n#include <TFT_eSPI.h> \r\n  \r\nTFT_eSPI tft = TFT_eSPI(); \r\nvoid setup() {\r\n  // put your setup code here, to run once:\r\n  Serial.begin(115200);\r\n  tft.init();                               //初始化\r\n  tft.fillScreen(TFT_BLACK);                //屏幕颜色\r\n  tft.setCursor(10, 10, 1);                 //设置起始坐标(10, 10)，1 号字体\r\n  tft.setTextColor(TFT_YELLOW);             //设置文本颜色为黄色\r\n  tft.setTextSize(2);                       //设置文字的大小 (1~7)\r\n  tft.println(\"TFT_Text\");                  //显示文字\r\n  \r\n  tft.fillCircle(30,30,10,TFT_BLUE);        //画圆\r\n  tft.drawLine(10,50, 118, 50, TFT_WHITE);  //画线\r\n  tft.drawPixel(70,70,TFT_RED);             //画点\r\n  \r\n  tft.setTextColor(TFT_WHITE,TFT_BLUE);     //设置文字颜色和背景颜色\r\n  tft.setCursor(10, 80, 1);                 //设置起始坐标(10, 10)，1 号字体\r\n  tft.println(\"GEJC\");                  //显示文字\r\n}','','webserver'),(8004,321,'linux mysql备份指定几个表','mysqldump -uroot -pqq282246101 xyz  WarehouseGoods WarehousePreorder WisdomCategory WisdomPreview WisdomToolsType WisdomToolsName WisdomBartitle WisdomBarrtitle > /home/php.sql','','webserver'),(8005,20,'点灯科技esp8266 4路遥控+温湿度','#define BLINKER_WIFI\r\n#include <OneWire.h>\r\n#include <DallasTemperature.h>\r\n#include <Blinker.h>\r\n#include <DHT.h>\r\n#include <DHT_U.h>\r\nchar ssid[] = \"webserver\";\r\nchar wifipwd[] = \"www.360xyz.cn\";\r\nchar auth[] = \"7eb873d19e73\";\r\n\r\nint DD1 = 5;\r\nint DD2 = 4;\r\nint DD5 = 14;\r\nint DD6 = 12;\r\nbool bl1 = false;\r\nbool bl2 = false;\r\nbool bl3 = false;\r\nbool bl4 = false;\r\nBlinkerButton Button1(\"btn-xyb\");  //\r\nBlinkerButton Button2(\"btn-902\");  //\r\nBlinkerButton Button3(\"btn-fmc\");  //\r\nBlinkerButton Button4(\"btn-126\");  //\r\nBlinkerButton Button5(\"btn-7se\");  //\r\nfloat temperature = 0;\r\nint humidity = 0;\r\nBlinkerNumber Number1(\"num-1e7\");  //温\r\nBlinkerNumber Number2(\"num-wlj\");  //湿度\r\n\r\n#define DHTPIN 13\r\n#define DHTTYPE DHT11  // DHT 11\r\nDHT_Unified dht(DHTPIN, DHTTYPE);\r\n#define d7 13\r\nOneWire oneWire(d7);\r\nvoid setup() {\r\n  pinMode(DD1, OUTPUT);\r\n  pinMode(DD2, OUTPUT);\r\n  pinMode(DD5, OUTPUT);\r\n  pinMode(DD6, OUTPUT);\r\n  digitalWrite(DD1, LOW);\r\n  digitalWrite(DD2, LOW);\r\n  digitalWrite(DD5, LOW);\r\n  digitalWrite(DD6, LOW);\r\n  Serial.begin(115200);\r\n  BLINKER_DEBUG.stream(Serial);\r\n\r\n  pinMode(LED_BUILTIN, OUTPUT);\r\n  digitalWrite(LED_BUILTIN, LOW);\r\n\r\n  Blinker.begin(auth, ssid, wifipwd);\r\n  Blinker.attachData(dataRead);\r\n  Button1.attach(button1_callback);\r\n  Button2.attach(button2_callback);\r\n  Button3.attach(button3_callback);\r\n  Button4.attach(button4_callback);\r\n  Button5.attach(button5_callback);\r\n}\r\n\r\nvoid loop() {\r\n  Blinker.run();\r\n}\r\nvoid button1_callback(const String& state) {\r\n  if (bl1 == true) {\r\n    bl1 = false;\r\n    digitalWrite(DD1, LOW);\r\n    Button1.color(\"#000000\");\r\n    Button1.text(\"关\");\r\n  } else {\r\n    bl1 = true;\r\n    digitalWrite(DD1, HIGH);\r\n    Button1.color(\"#00FF00\");\r\n    Button1.text(\"开\");\r\n  }\r\n  Button1.print();\r\n}\r\nvoid button2_callback(const String& state) {\r\n  if (bl2 == true) {\r\n    bl2 = false;\r\n    digitalWrite(DD2, LOW);\r\n    Button2.color(\"#000000\");\r\n    Button2.text(\"关\");\r\n  } else {\r\n    bl2 = true;\r\n    digitalWrite(DD2, HIGH);\r\n    Button2.color(\"#00FF00\");\r\n    Button2.text(\"开\");\r\n  }\r\n  Button2.print();\r\n}\r\nvoid button3_callback(const String& state) {\r\n  if (bl3 == true) {\r\n    bl3 = false;\r\n    digitalWrite(DD5, LOW);\r\n    Button3.color(\"#000000\");\r\n    Button3.text(\"关\");\r\n  } else {\r\n    bl3 = true;\r\n    digitalWrite(DD5, HIGH);\r\n    Button3.color(\"#00FF00\");\r\n    Button3.text(\"开\");\r\n  }\r\n  Button3.print();\r\n}\r\nvoid button4_callback(const String& state) {\r\n  if (bl4 == true) {\r\n    bl4 = false;\r\n    digitalWrite(DD6, LOW);\r\n    Button4.color(\"#000000\");\r\n    Button4.text(\"关\");\r\n  } else {\r\n    bl4 = true;\r\n    digitalWrite(DD6, HIGH);\r\n    Button4.color(\"#00FF00\");\r\n    Button4.text(\"开\");\r\n  }\r\n  Button4.print();\r\n}\r\nvoid button5_callback(const String& state) {\r\n  sensors_event_t event;\r\n  dht.temperature().getEvent(&event);\r\n  if (isnan(event.temperature)) {\r\n    Serial.println(F(\"Error reading temperature!\"));\r\n  } else {\r\n    temperature = event.temperature;\r\n  }\r\n  delay(500);\r\n  dht.humidity().getEvent(&event);\r\n  if (isnan(event.relative_humidity)) {\r\n    Serial.println(F(\"Error reading humidity!\"));\r\n  } else {\r\n    humidity = event.relative_humidity;\r\n  }\r\n  Number1.print(temperature);\r\n  Number2.print(humidity);\r\n}\r\nvoid dataRead(const String& data) {\r\n  BLINKER_LOG(\"Blinker readString: \", data);\r\n}','','webserver'),(8006,20,'nodeMCUesp8266发货通用OTA','#include <ESP8266WiFi.h>\r\n#include <ESP8266HTTPClient.h>\r\n#include <ESP8266httpUpdate.h>\r\nWiFiClient wificlient;\r\nString ssid=\"TP-LINK_C97D\"; //你的wifif名\r\nString wifipwd=\"19805282968\"; //你的wifi密码\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  delay(500);\r\n  WiFi.begin(ssid.c_str(), wifipwd.c_str());\r\n  delay(500);\r\n  WiFi.mode(WIFI_STA);\r\n  Serial.println(\"Wifi->connet\");\r\n  int ii = 0;\r\n  for (ii; ii < 20; ii++) {\r\n    delay(500);\r\n    Serial.print(\" . \");\r\n    if (WiFi.status() == WL_CONNECTED) {\r\n      Serial.println(\"Wifi 连接成功\");\r\n      break;\r\n    }\r\n  }\r\n  String upUrl = esp8266post();\r\n  if (upUrl.length() > 10) {\r\n    upUrl.trim(); \r\n    while (1) {\r\n      ESPhttpUpdate.onStart(update_started);\r\n      ESPhttpUpdate.onEnd(update_finished);\r\n      ESPhttpUpdate.onProgress(update_progress);\r\n      ESPhttpUpdate.onError(update_error);\r\n      ESPhttpUpdate.update(wificlient, upUrl);\r\n\r\n    }\r\n    ESP.restart();\r\n  }\r\n}\r\n\r\nvoid loop() {\r\n  // put your main code here, to run repeatedly:\r\n}\r\nvoid update_started() {\r\n  Serial.println(\"CALLBACK:  HTTP update process started\");\r\n}\r\n\r\nvoid update_finished() {\r\n  Serial.println(\"CALLBACK:  HTTP update process finished\");\r\n}\r\nString esp8266post() {\r\n  HTTPClient http;\r\n  String url = \"http://jyan.nobiggie.cn/query/vs\";\r\n  http.begin(wificlient, url);\r\n  http.setTimeout(3000);\r\n  http.addHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n  String postData = \"vs=abc1124267212\";\r\n  int httpResponseCode = http.POST(postData);\r\n  if (httpResponseCode > 0) {\r\n    String response = http.getString();\r\n    if (response != \"false\") {\r\n      return response;\r\n    }\r\n  }\r\n  return \"\";\r\n}\r\nvoid update_progress(int cur, int total) {\r\n  Serial.printf(\"CALLBACK:  HTTP update process at %d of %d bytes...\\n\", cur, total);\r\n}\r\n\r\nvoid update_error(int err) {\r\n  Serial.printf(\"CALLBACK:  HTTP update fatal error code %d\\n\", err);\r\n}','','webserver');

--
-- Table structure for table `WisdomToolsType`
--

CREATE TABLE `WisdomToolsType` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(32) NOT NULL DEFAULT '',
  `user` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `WisdomToolsType`
--

INSERT INTO `WisdomToolsType` VALUES (1,'家电维修','webserver'),(3,'制冷维修','webserver'),(4,'汽车维修','webserver'),(5,'智能家居','webserver'),(6,'车上必备','webserver'),(7,'外出必备','webserver'),(8,'水果工具','webserver'),(19,'家电维修','admin'),(20,'制冷维修','admin'),(21,'汽车维修','admin'),(22,'智能家居','admin'),(23,'车上必备','admin'),(24,'外出必备','admin'),(25,'水果工具','admin'),(26,'餐饮小吃','webserver'),(27,'餐饮小吃','admin'),(28,'遥控工具车','webserver');

--
-- Table structure for table `WisdomToolsName`
--

CREATE TABLE `WisdomToolsName` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(32) NOT NULL DEFAULT '',
  `name` varchar(32) NOT NULL DEFAULT '',
  `number` int(10) DEFAULT '0',
  `buy` float DEFAULT '0',
  `freight` float NOT NULL DEFAULT '0',
  `date` date NOT NULL,
  `user` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=971 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `WisdomToolsName`
--

INSERT INTO `WisdomToolsName` VALUES (1,'汽车维修','40件套(内六角十二梅花)',1,46,0,'2019-09-07','webserver'),(3,'家电维修','电烙铁芯内热式',1,10,1,'2019-09-07','webserver'),(961,'家电维修','英爵伦电吹风',1,27,0,'2023-08-16','webserver'),(5,'家电维修','936焊台烙铁芯',3,12,1,'2019-09-07','webserver'),(6,'家电维修','6寸老虎钳',1,7,1,'2019-09-07','webserver'),(7,'家电维修','八角锤2.2斤',1,13,1,'2019-09-07','webserver'),(780,'家电维修','3斤松香',1,24,0,'2020-10-18','webserver'),(9,'家电维修','烙铁头936电焊台',1,5.5,1,'2019-09-07','webserver'),(10,'家电维修','汉邦936恒温电烙铁',1,59,0,'2019-09-07','webserver'),(838,'家电维修','802电动镙丝刀批头 ',34,3,0.5,'2022-04-19','webserver'),(12,'汽车维修','8寸一字镙丝刀',1,8.5,1,'2019-09-07','webserver'),(13,'家电维修','8寸十字镙丝刀',1,8.5,1,'2019-09-07','webserver'),(14,'家电维修','220v电钻',1,89,0,'2019-09-07','webserver'),(874,'家电维修','17寸双层工具箱',1,15,0,'2022-08-18','webserver'),(839,'家电维修','936烙铁头5个一套',1,13.5,0.5,'2022-04-19','webserver'),(17,'家电维修','十字镙丝刀200m',1,3.8,1,'2019-09-07','webserver'),(18,'家电维修','9v电子称充电电源',1,10,0,'2019-09-07','webserver'),(19,'家电维修','107吸锡器',2,9.6,1,'2019-09-07','webserver'),(20,'家电维修','10寸活动板手',1,12.8,1,'2019-09-07','webserver'),(21,'家电维修','铁皮剪8寸',1,11.8,0,'2019-09-07','webserver'),(22,'家电维修','热熔胶枪',1,14,0,'2019-09-07','webserver'),(23,'家电维修','电热熔枪胶棒',10,0.8,1,'2019-09-07','webserver'),(960,'智能家居','康夫电吹风',1,68,0,'2023-08-16','webserver'),(810,'智能家居',' 手机遥控电动卷闸门 ',1,180,0,'2021-06-18','webserver'),(26,'家电维修','12v2000瓦逆变器',1,350,0,'2019-09-07','webserver'),(836,'家电维修','焊锡丝500克',1,39,0,'2022-03-23','webserver'),(28,'家电维修','936焊台烙铁头',2,6,1,'2019-09-07','webserver'),(29,'汽车维修','保险丝30A',3,0.5,0,'2019-09-07','webserver'),(30,'汽车维修','保险丝20A ',3,0.5,0,'2019-09-07','webserver'),(31,'汽车维修','保险丝15A',5,0.5,0,'2019-09-07','webserver'),(32,'汽车维修','72齿弯柄棘轮61件套',1,210,0,'2019-09-07','webserver'),(33,'汽车维修','12/24脉冲充电器',1,92,0,'2019-09-07','webserver'),(34,'汽车维修','千斤顶(气压)',1,50,0,'2019-09-07','webserver'),(35,'制冷维修','飞越真空泵',1,265,0,'2019-09-07','webserver'),(36,'制冷维修','封口钳',1,17,0,'2019-09-07','webserver'),(37,'制冷维修','弯管器6/8/10m',1,28,0,'2019-09-07','webserver'),(38,'制冷维修','扩管器割管刀',1,32,1,'2019-09-07','webserver'),(39,'制冷维修','雪种万能开瓶',2,9,1,'2019-09-07','webserver'),(40,'制冷维修','钳形电流表(交流)',1,27,1,'2019-09-07','webserver'),(41,'制冷维修','2升焊炬双用氧气瓶',1,225,0,'2019-09-07','webserver'),(42,'制冷维修','500克硼砂',2,8,0,'2019-09-07','webserver'),(43,'制冷维修','发泡枪',1,10,0,'2019-09-07','webserver'),(44,'制冷维修','2升液化瓶减压阀',1,16,0,'2019-09-07','webserver'),(45,'制冷维修','小型割管器',2,12,0,'2019-09-07','webserver'),(46,'制冷维修','2.5Mpa压力表头',2,7,0,'2019-09-07','webserver'),(868,'制冷维修','R134A汽车空调高压接头',1,8,0,'2022-08-13','webserver'),(48,'汽车维修','12寸活动板手',1,15.3,0,'2019-09-07','webserver'),(49,'家电维修','6寸尖嘴钳',1,9,0,'2019-09-07','webserver'),(50,'家电维修','6寸细尖嘴钳',1,12,0,'2019-09-07','webserver'),(51,'家电维修','尖嘴镊子',2,5,1,'2019-09-07','webserver'),(52,'家电维修','卷尺',1,3,0,'2019-09-08','webserver'),(53,'家电维修','802电动镙比刀',1,120,0,'2019-09-08','webserver'),(54,'家电维修','3米人字梯',1,330,0,'2019-09-08','webserver'),(55,'家电维修','三路单独开关插座',1,30,0,'2019-09-08','webserver'),(58,'智能家居','手机遥控定时充电插座',1,20,0,'2019-09-08','webserver'),(939,'智能家居','7800+4+120g技术电脑',1,800,0,'2023-05-20','webserver'),(61,'智能家居','wifi路由器',1,98,0,'2019-09-08','webserver'),(62,'智能家居','夜视摄像头',1,168,0,'2019-09-08','webserver'),(63,'智能家居','8升电压力锅',1,330,0,'2019-09-08','webserver'),(64,'智能家居','空调',1,3200,0,'2019-09-08','webserver'),(65,'智能家居','冰箱',1,1680,0,'2019-09-08','webserver'),(66,'智能家居','滚筒洗衣机',1,3500,0,'2019-09-08','webserver'),(67,'智能家居','电脑桌',1,168,0,'2019-09-08','webserver'),(68,'智能家居','厨房液化燃气',1,200,0,'2019-09-08','webserver'),(69,'智能家居','电磁炉',2,200,0,'2019-09-08','webserver'),(970,'智能家居','浴霸',1,70,0,'2023-12-06','webserver'),(71,'智能家居','沐浴露',1,30,0,'2019-09-08','webserver'),(73,'智能家居','洗发水',1,30,0,'2019-09-08','webserver'),(74,'智能家居','洗衣粉',1,20,0,'2019-09-08','webserver'),(75,'智能家居','.剃须刀',1,20,0,'2019-09-08','webserver'),(76,'智能家居','飞科理发器',1,100,0,'2019-09-08','webserver'),(814,'车上必备','三头剃须刀 ',1,19,0,'2021-06-18','webserver'),(78,'车上必备','纯净水',1,2,0,'2019-09-08','webserver'),(789,'车上必备','灭火器',1,15,0.5,'2020-12-28','admin'),(788,'车上必备','灭火器',1,15,0.5,'2020-12-28','webserver'),(81,'车上必备','雨伞',1,10,0,'2019-09-08','webserver'),(887,'车上必备','360行车记录仪',1,300,0.5,'2023-04-29','webserver'),(83,'车上必备','千斤顶',1,50,0,'2019-09-08','webserver'),(84,'车上必备','几个大号塑料袋',1,1,0,'2019-09-08','webserver'),(85,'车上必备','三角板',1,0,0,'2019-09-08','webserver'),(86,'车上必备','车贴黑膜',1,100,0,'2019-09-08','webserver'),(89,'智能家居','拖鞋',1,20,0,'2019-09-08','webserver'),(88,'家电维修','网线钳-测试仪',1,25,0,'2019-09-08','webserver'),(90,'外出必备','纸巾',1,2,0,'2019-09-08','webserver'),(91,'外出必备','镜子',1,10,0,'2019-09-08','webserver'),(92,'外出必备','理发器',1,100,0,'2019-09-08','webserver'),(93,'外出必备','剃须刀',1,20,0,'2019-09-08','webserver'),(937,'外出必备','手机',1,3000,0,'2023-05-19','webserver'),(95,'外出必备','驾驶证',1,0,0,'2019-09-08','webserver'),(96,'外出必备','手机充电器',1,0,0,'2019-09-08','webserver'),(97,'外出必备','沐浴露',1,30,0,'2019-09-08','webserver'),(98,'外出必备','两套换洗',1,0,0,'2019-09-08','webserver'),(99,'外出必备','拖鞋',1,20,0,'2019-09-08','webserver'),(100,'汽车维修','拾取器(买工具箱附送)',1,0,0,'2019-09-08','webserver'),(758,'家电维修','晶思达数字万用表',1,80,0,'2020-05-27','webserver'),(857,'家电维修','洗衣机捶打扳手',1,50,0,'2022-07-28','webserver'),(942,'家电维修','4-12mm九层含古钻头',1,14.3,0,'2023-05-26','webserver'),(808,'智能家居','电动牙刷 充电能用一年',1,40,0,'2021-06-18','webserver'),(107,'水果工具','4冲程割草机',1,420,0,'2019-09-09','webserver'),(784,'智能家居','三星256G内存卡-树莓派',1,194,0,'2020-10-30','webserver'),(109,'水果工具','糖度仪0~32%',1,105,0,'2019-09-09','webserver'),(867,'餐饮小吃','双层保温桶',1,168,0,'2022-08-12','webserver'),(964,'家电维修','波轮洗衣机拉钩一对',1,4,0,'2023-08-22','webserver'),(116,'水果工具','打药管收纳轮(80)',2,110,0,'2019-09-09','webserver'),(114,'水果工具','打药喷杆',2,20,0,'2019-09-09','webserver'),(936,'遥控工具车','24VDC继电器6脚 C型',8,3,0,'2023-05-19','webserver'),(732,'水果工具','1寸18米水带',5,33,0,'2019-10-05','admin'),(746,'餐饮小吃','测温仪-32到380度',1,38,0,'2019-11-23','admin'),(745,'餐饮小吃','封口机',1,200,0,'2019-11-23','webserver'),(744,'餐饮小吃','测温仪-32到380度',1,38,0,'2019-11-23','webserver'),(743,'餐饮小吃','豆浆奶茶封口机',1,200,0,'2019-11-22','admin'),(741,'餐饮小吃','不锈钢油炸盆60x40x15',1,78,0,'2019-11-21','admin'),(742,'餐饮小吃','30L豆浆保温桶',1,105,0,'2019-11-22','admin'),(739,'餐饮小吃','擀面杖直径3.2cm长度30cm',1,13.5,0,'2019-11-21','admin'),(738,'餐饮小吃','擀面杖直径3.2cm长度30cm',1,13.5,0,'2019-11-21','webserver'),(737,'餐饮小吃','不锈钢油炸盆60x40x15',1,78,0,'2019-11-21','webserver'),(735,'车上必备','灭火器',1,70,0,'2019-11-19','admin'),(736,'水果工具','汽油抽水泵',1,180,0,'2019-11-19','admin'),(733,'汽车维修','黑旋封586汽车耐油温密封胶',1,10,0,'2019-10-18','webserver'),(730,'汽车维修','气门拆装油封钳',1,18,0,'2019-09-30','webserver'),(727,'汽车维修','气门拆装油封钳',1,18,0,'2019-09-30','admin'),(728,'汽车维修','棕刚玉150*25*32(粒度80)',1,16,0,'2019-09-30','admin'),(729,'汽车维修','棕刚玉150*25*32(粒度80)',1,16,0,'2019-09-30','webserver'),(724,'汽车维修','机油壳扳手',1,15,0,'2019-09-29','webserver'),(723,'汽车维修','机油壳扳手',1,15,0,'2019-09-29','admin'),(722,'汽车维修','塞尺',1,6,0,'2019-09-28','webserver'),(721,'汽车维修','气门工具',1,43,0,'2019-09-28','webserver'),(720,'汽车维修','塞尺',1,6,0,'2019-09-27','admin'),(719,'汽车维修','气门工具',1,43,0,'2019-09-27','admin'),(717,'汽车维修','3吨卧式千斤顶(汽修专用)',1,334,0,'2019-09-12','admin'),(716,'汽车维修','3吨卧式千斤顶(汽修专用)',1,334,0,'2019-09-12','webserver'),(714,'水果工具','30升酒壶(装柴油)',1,32,0,'2019-09-09','admin'),(713,'水果工具','水箱2000斤',1,330,0,'2019-09-09','admin'),(840,'水果工具','PVC软管1寸牛筋50米',2,169,0,'2022-04-28','webserver'),(711,'水果工具','50米抽刚电缆',1,45,0,'2019-09-09','admin'),(710,'水果工具','至尊电子秤计价30kg',1,88,0,'2019-09-09','admin'),(709,'水果工具','抽水管50米',1,120,0,'2019-09-09','admin'),(708,'水果工具','风冷柴油机',1,800,0,'2019-09-09','admin'),(707,'水果工具','打药管收纳轮(80)',2,110,0,'2019-09-09','admin'),(706,'水果工具','打药喷杆',2,20,0,'2019-09-09','admin'),(705,'水果工具','45cm大果剪',1,35,0,'2019-09-09','admin'),(704,'水果工具','糖度仪0~32%',1,105,0,'2019-09-09','admin'),(703,'水果工具','60v抽水泵300W',1,130,0,'2019-09-09','admin'),(702,'水果工具','4冲程割草机',1,420,0,'2019-09-09','admin'),(701,'水果工具','水箱540斤',1,150,0,'2019-09-09','admin'),(700,'水果工具',' 水箱660斤',1,176,0,'2019-09-09','admin'),(699,'水果工具','220v抽水机370w',1,188,0,'2019-09-09','admin'),(698,'水果工具','200米打药管(65)',1,260,0,'2019-09-09','admin'),(696,'外出必备','拖鞋',1,20,0,'2019-09-08','admin'),(697,'水果工具','打药泵',1,400,0,'2019-09-09','admin'),(695,'外出必备','两套换洗',1,0,0,'2019-09-08','admin'),(694,'外出必备','沐浴露',1,30,0,'2019-09-08','admin'),(693,'外出必备','手机充电器',1,0,0,'2019-09-08','admin'),(692,'外出必备','驾驶证',1,0,0,'2019-09-08','admin'),(691,'外出必备','手机',1,1500,0,'2019-09-08','admin'),(690,'外出必备','剃须刀',1,20,0,'2019-09-08','admin'),(689,'外出必备','理发器',1,100,0,'2019-09-08','admin'),(688,'外出必备','镜子',1,10,0,'2019-09-08','admin'),(687,'外出必备','纸巾',1,2,0,'2019-09-08','admin'),(686,'车上必备','车贴黑膜',1,100,0,'2019-09-08','admin'),(685,'车上必备','三角板',1,0,0,'2019-09-08','admin'),(684,'车上必备','几个大号塑料袋',1,1,0,'2019-09-08','admin'),(683,'车上必备','千斤顶',1,50,0,'2019-09-08','admin'),(682,'车上必备','行车记录仪',1,368,0,'2019-09-08','admin'),(681,'车上必备','雨伞',1,10,0,'2019-09-08','admin'),(680,'车上必备','大功率手机充电器',1,40,0,'2019-09-08','admin'),(679,'车上必备','.安全套',1,30,0,'2019-09-08','admin'),(678,'车上必备','纯净水',1,2,0,'2019-09-08','admin'),(677,'车上必备','.剃须刀',1,20,0,'2019-09-08','admin'),(676,'智能家居','拖鞋',1,20,0,'2019-09-08','admin'),(675,'智能家居','飞科理发器',1,100,0,'2019-09-08','admin'),(674,'智能家居','.剃须刀',1,20,0,'2019-09-08','admin'),(673,'智能家居','洗衣粉',1,20,0,'2019-09-08','admin'),(672,'智能家居','洗发水',1,30,0,'2019-09-08','admin'),(671,'智能家居','沐浴露',1,30,0,'2019-09-08','admin'),(670,'智能家居','48寸液晶电视机',1,4300,0,'2019-09-08','admin'),(669,'智能家居','电磁炉',2,200,0,'2019-09-08','admin'),(668,'智能家居','厨房液化燃气',1,200,0,'2019-09-08','admin'),(667,'智能家居','电脑桌',1,168,0,'2019-09-08','admin'),(666,'智能家居','滚筒洗衣机',1,3500,0,'2019-09-08','admin'),(665,'智能家居','冰箱',1,1680,0,'2019-09-08','admin'),(664,'智能家居','空调',1,3200,0,'2019-09-08','admin'),(663,'智能家居','8升电压力锅',1,330,0,'2019-09-08','admin'),(662,'智能家居','夜视摄像头',1,168,0,'2019-09-08','admin'),(661,'智能家居','wifi路由器',1,98,0,'2019-09-08','admin'),(660,'智能家居','电脑',1,1700,0,'2019-09-08','admin'),(659,'智能家居','台式电脑下载共享备份机',1,400,0,'2019-09-08','admin'),(658,'智能家居','手机遥控定时充电插座',1,20,0,'2019-09-08','admin'),(657,'智能家居','手机遥控电动卷闸门',1,50,0,'2019-09-08','admin'),(656,'汽车维修','拾取器(买工具箱附送)',1,0,0,'2019-09-08','admin'),(655,'汽车维修','12寸活动板手',1,15.3,0,'2019-09-07','admin'),(654,'汽车维修','千斤顶(气压)',1,50,0,'2019-09-07','admin'),(653,'汽车维修','12/24脉冲充电器',1,92,0,'2019-09-07','admin'),(652,'汽车维修','72齿弯柄棘轮61件套',1,210,0,'2019-09-07','admin'),(651,'汽车维修','保险丝15A',5,0.5,0,'2019-09-07','admin'),(650,'汽车维修','保险丝20A ',3,0.5,0,'2019-09-07','admin'),(649,'汽车维修','保险丝30A',3,0.5,0,'2019-09-07','admin'),(718,'汽车维修','40件铁盒套(内6角12梅花)',1,46,0,'2019-09-12','admin'),(648,'汽车维修','8寸一字镙丝刀',1,8.5,1,'2019-09-07','admin'),(646,'制冷维修','加长点火棒',2,5,0,'2019-09-07','admin'),(645,'制冷维修','2.5Mpa压力表头',2,7,0,'2019-09-07','admin'),(643,'制冷维修','2升液化瓶减压阀',1,16,0,'2019-09-07','admin'),(644,'制冷维修','小型割管器',2,12,0,'2019-09-07','admin'),(642,'制冷维修','发泡枪',1,10,0,'2019-09-07','admin'),(641,'制冷维修','500克硼砂',2,8,0,'2019-09-07','admin'),(640,'制冷维修','2升焊炬双用氧气瓶',1,225,0,'2019-09-07','admin'),(639,'制冷维修','钳形电流表(交流)',1,27,1,'2019-09-07','admin'),(638,'制冷维修','雪种万能开瓶',2,9,1,'2019-09-07','admin'),(637,'制冷维修','扩管器割管刀',1,32,1,'2019-09-07','admin'),(636,'制冷维修','弯管器6/8/10m',1,28,0,'2019-09-07','admin'),(635,'制冷维修','封口钳',1,17,0,'2019-09-07','admin'),(633,'家电维修','数字万用表',1,40,0,'2019-09-08','admin'),(634,'制冷维修','飞越真空泵',1,265,0,'2019-09-07','admin'),(632,'家电维修','网线钳-测试仪',1,25,0,'2019-09-08','admin'),(631,'家电维修','工作台(自焊接DIY)',1,50,0,'2019-09-08','admin'),(630,'家电维修','三路单独开关插座',1,30,0,'2019-09-08','admin'),(629,'家电维修','3米人字梯',1,330,0,'2019-09-08','admin'),(628,'家电维修','802电动镙比刀',1,120,0,'2019-09-08','admin'),(627,'家电维修','卷尺',1,3,0,'2019-09-08','admin'),(626,'家电维修','尖嘴镊子',2,5,1,'2019-09-07','admin'),(625,'家电维修','6寸细尖嘴钳',1,12,0,'2019-09-07','admin'),(624,'家电维修','6寸尖嘴钳',1,9,0,'2019-09-07','admin'),(623,'家电维修','936焊台烙铁头',2,6,1,'2019-09-07','admin'),(622,'家电维修','焊锡丝350克',1,25,1,'2019-09-07','admin'),(621,'家电维修','12v2000瓦逆变器',1,350,0,'2019-09-07','admin'),(620,'家电维修','康夫电吹风',1,68,0,'2019-09-07','admin'),(619,'家电维修','电热熔枪胶棒',10,0.8,1,'2019-09-07','admin'),(618,'家电维修','热熔胶枪',1,14,0,'2019-09-07','admin'),(617,'家电维修','铁皮剪8寸',1,11.8,0,'2019-09-07','admin'),(616,'家电维修','10寸活动板手',1,12.8,1,'2019-09-07','admin'),(615,'家电维修','107吸锡器',2,9.6,1,'2019-09-07','admin'),(614,'家电维修','9v电子称充电电源',1,10,0,'2019-09-07','admin'),(613,'家电维修','十字镙丝刀200m',1,3.8,1,'2019-09-07','admin'),(612,'家电维修','电子元件盒',24,1.9,1,'2019-09-07','admin'),(611,'家电维修','电钻炭刷一对',1,1,1,'2019-09-07','admin'),(610,'家电维修','220v电钻',1,89,0,'2019-09-07','admin'),(609,'家电维修','8寸十字镙丝刀',1,8.5,1,'2019-09-07','admin'),(608,'家电维修','802电动镙丝刀批头',26,3,1,'2019-09-07','admin'),(607,'家电维修','汉邦936恒温电烙铁',1,59,0,'2019-09-07','admin'),(605,'家电维修','松香',11,0.6,1,'2019-09-07','admin'),(604,'家电维修','八角锤2.2斤',1,13,1,'2019-09-07','admin'),(603,'家电维修','6寸老虎钳',1,7,1,'2019-09-07','admin'),(602,'家电维修','936焊台烙铁芯',3,12,1,'2019-09-07','admin'),(601,'家电维修','直柄麻花钻 3MM',7,0.5,1,'2019-09-07','admin'),(600,'家电维修','电烙铁芯内热式',1,10,1,'2019-09-07','admin'),(747,'制冷维修','双公透明加液管',1,3.5,0.5,'2019-12-19','webserver'),(748,'制冷维修','公英透明加液管',1,0.5,0.5,'2019-12-19','webserver'),(750,'制冷维修','双公透明加液管',1,3.5,0.5,'2019-12-19','admin'),(751,'制冷维修','公英透明加液管',1,3.5,0.5,'2019-12-19','admin'),(752,'制冷维修','自制空压机',1,150,0.5,'2019-12-21','admin'),(753,'汽车维修','黑色防锈漆1L',1,32,0,'2020-01-04','admin'),(757,'水果工具','139割草机打药机头',1,215,0,'2020-05-25','webserver'),(755,'水果工具','139汽油机泵头',1,170,0,'2020-05-11','admin'),(756,'水果工具','斯尔特割草机发动机',1,240,0,'2020-05-25','webserver'),(764,'家电维修','液晶屏 背光灯测试仪',1,55,0,'2020-06-07','webserver'),(763,'家电维修','液晶屏 背光灯测试仪',1,55,0,'2020-06-07','admin'),(766,'车上必备','30L汽油铁桶',1,55,0,'2020-06-16','webserver'),(767,'车上必备','30L汽油铁桶',1,55,0,'2020-06-16','admin'),(768,'水果工具','6.8KW油锯',1,279,0,'2020-07-13','webserver'),(769,'水果工具','6.8KW油锯',1,279,0,'2020-07-13','admin'),(770,'水果工具','大功率二冲程油锯',1,335,0,'2020-07-19','webserver'),(771,'水果工具','大功率二冲程油锯',1,335,0,'2020-07-19','admin'),(773,'智能家居','卫星接收机(71台)',1,188,0,'2020-07-31','admin'),(774,'智能家居','树莓派4b(4g内存)',1,430,0,'2020-09-23','webserver'),(775,'智能家居','树莓派4b(4g内存)',1,430,0,'2020-09-23','admin'),(776,'餐饮小吃','气温 湿度表',1,21,0,'2020-10-11','webserver'),(777,'餐饮小吃','气温 湿度表',1,21,0,'2020-10-11','admin'),(781,'家电维修','3斤松香',1,24,0,'2020-10-18','admin'),(779,'餐饮小吃','温度湿度表',1,21,0,'2020-10-15','admin'),(782,'家电维修','20卷电工胶布',1,14,0,'2020-10-18','webserver'),(783,'家电维修','20卷电工胶布',1,14,0,'2020-10-18','admin'),(785,'智能家居','三星256G内存卡-树莓派',1,194,0,'2020-10-30','admin'),(786,'车上必备','安全套 ',1,22,0.5,'2020-12-28','webserver'),(787,'车上必备','安全套 ',1,22,0.5,'2020-12-28','admin'),(791,'车上必备','剃须刀',1,10,0.5,'2020-12-28','admin'),(792,'车上必备','30A汽车保险丝',2,0.5,0.5,'2020-12-28','webserver'),(793,'车上必备','30A汽车保险丝',2,0.5,0.5,'2020-12-28','admin'),(794,'车上必备','墨镜或眼镜',1,10,0.5,'2020-12-28','webserver'),(795,'车上必备','墨镜或眼镜',1,10,0.5,'2020-12-28','admin'),(855,'家电维修','40倍高清放大镜带LED灯',1,9,0.5,'2022-05-12','webserver'),(797,'水果工具','电动剪刀40cm',1,410,0,'2021-02-23','admin'),(799,'水果工具','电动剪刀30cm(两电)',1,310,0,'2021-03-04','admin'),(801,'水果工具','4冲程割草机(用于抽水)',1,324,0,'2021-03-06','admin'),(830,'家电维修','元件盒子17.3x9.8x2.2',32,2,0.5,'2021-10-11','webserver'),(803,'家电维修','元件盒子17.3x9.8x2.2',30,2,0.5,'2021-04-18','admin'),(804,'车上必备','洗车水管水枪',1,17,0,'2021-04-19','webserver'),(805,'车上必备','洗车水管水枪',1,17,0,'2021-04-19','admin'),(807,'智能家居','7800+8+120g技术电脑',2,1200,0,'2021-05-21','admin'),(809,'智能家居','电动牙刷 充电能用一年',1,40,0,'2021-06-18','admin'),(811,'智能家居',' 手机遥控电动卷闸门 ',1,180,0,'2021-06-18','admin'),(938,'智能家居','7860+12+240g+机械键盘',1,1000,0,'2023-05-20','webserver'),(813,'智能家居','7800+8+240g技术电脑 ',1,1400,0,'2021-06-18','admin'),(815,'车上必备','三头剃须刀 ',1,19,0,'2021-06-18','admin'),(816,'车上必备','汽车座椅套',1,209,0,'2021-06-18','webserver'),(817,'车上必备','汽车座椅套',1,209,0,'2021-06-18','admin'),(818,'家电维修','外热笔式电烙铁',1,20,0,'2021-08-10','webserver'),(819,'家电维修','外热笔式电烙铁',1,20,0,'2021-08-10','admin'),(820,'车上必备','鼻毛剪刀',1,3,0,'2021-08-12','webserver'),(821,'车上必备','鼻毛剪刀',1,3,0,'2021-08-12','admin'),(822,'车上必备','指甲剪',1,2,0,'2021-08-12','webserver'),(823,'车上必备','指甲剪',1,2,0,'2021-08-12','admin'),(825,'车上必备','行车记录仪',1,120,0,'2021-08-12','admin'),(827,'家电维修','元件盒子17.3x9.8x2.2',1,32,0.5,'2021-10-11','admin'),(829,'家电维修','元件盒子17.3x9.8x2.2',32,2,0.5,'2021-10-11','admin'),(831,'家电维修','元件盒子17.3x9.8x2.2',32,2,0.5,'2021-10-11','admin'),(833,'家电维修','姚工热风枪850无数显',1,143,0.5,'2022-02-24','webserver'),(834,'家电维修','热风枪焬膏(安立信)30g',1,13.8,2,'2022-03-11','webserver'),(875,'家电维修','液晶电视维修吸盘',1,33,0,'2022-08-22','webserver'),(842,'家电维修','鹿仙子维修卡具',1,15,2,'2022-04-29','webserver'),(859,'家电维修','12号订书(摇头)',1,12,0.5,'2022-07-30','webserver'),(846,'智能家居','19寸液晶电脑显示器',1,200,0.5,'2022-05-05','webserver'),(940,'智能家居','7800+8+240g技术电脑-2',1,900,0,'2023-05-20','webserver'),(847,'智能家居','19寸液晶电脑显示器2',1,200,0.5,'2022-05-05','webserver'),(848,'智能家居','22寸液晶电脑显示器',1,100,0.5,'2022-05-05','webserver'),(854,'家电维修','过塑机 齐心F131B',1,68,2,'2022-05-10','webserver'),(853,'家电维修','惠普2330复印打印机 ',1,388,2,'2022-05-10','webserver'),(856,'家电维修','卷尺3m',1,3,0,'2022-07-14','webserver'),(858,'制冷维修','R134A汽车空调低压接头',1,8,2,'2022-07-29','webserver'),(863,'家电维修','20寸工具箱',1,16,0,'2022-08-08','webserver'),(864,'家电维修','8寸一字螺丝刀',1,3,1,'2022-08-12','webserver'),(865,'家电维修','8寸十字螺丝刀',1,3,1,'2022-08-12','webserver'),(866,'家电维修','6寸薄爪拉马',1,42,0,'2022-08-12','webserver'),(870,'制冷维修','R410接头高',1,13,0,'2022-08-13','webserver'),(871,'制冷维修','R410接头低',1,13,0,'2022-08-13','webserver'),(872,'制冷维修','R22接头低',1,14,0,'2022-08-13','webserver'),(873,'制冷维修','R22接头高',1,14,0,'2022-08-13','webserver'),(876,'家电维修','液晶屏维修支架6个',1,37,0,'2022-09-09','webserver'),(877,'智能家居','消毒碗柜',1,207,0,'2022-09-24','webserver'),(878,'家电维修','A4切纸机',1,31,1,'2022-11-06','webserver'),(879,'','冷天暖手袋',1,31,0.5,'2022-12-10','webserver'),(880,'','冷天暖手袋',1,31,0.5,'2022-12-10','webserver'),(882,'智能家居','1.6米直径旋转圆桌',1,310,0,'2023-02-01','webserver'),(953,'智能家居','1.6米餐桌12个凳子',1,152,0,'2023-06-19','webserver'),(884,'智能家居','200斤电子秤',1,138,0.5,'2023-02-19','webserver'),(886,'智能家居','搬运车60x40cm',1,65.5,0.5,'2023-03-01','webserver'),(919,'遥控工具车','禧玛诺18齿内变速齿轮',2,10,0,'2023-05-12','webserver'),(889,'遥控工具车','38节链条',2,9,5,'2023-05-05','webserver'),(890,'遥控工具车','36V350W短轴带脚带齿轮',2,120,10,'2023-05-05','webserver'),(891,'遥控工具车','36VDC继电器6脚 C型',4,3.6,0,'2023-05-05','webserver'),(892,'遥控工具车','前轴28cm带隔套',2,9.5,0,'2023-05-05','webserver'),(915,'遥控工具车','沙滩车法兰',2,17,0,'2023-05-12','webserver'),(894,'遥控工具车','进口6202轴承',10,1,0,'2023-05-05','webserver'),(944,'遥控工具车','5-6-7-8寸重型万向轮底座',4,5.5,0,'2023-05-30','webserver'),(897,'遥控工具车','265*185*80mm单片机盒子',1,14,0,'2023-05-05','webserver'),(898,'遥控工具车','螺丝套8x40mm',20,0.7,0,'2023-05-05','webserver'),(899,'遥控工具车','中号焊接定位器',2,8,0,'2023-05-05','webserver'),(900,'遥控工具车','方钢30*30*2mm--6米',1,97,0,'2023-05-05','webserver'),(901,'遥控工具车','万向轮',2,13,0,'2023-05-05','webserver'),(902,'遥控工具车','esp32底座',1,9,0,'2023-05-05','webserver'),(904,'遥控工具车','13X6.5-6轮胎带轮毂',2,75,0,'2023-05-05','webserver'),(905,'遥控工具车','两个电机底座（帮打孔）',2,13,0,'2023-05-05','webserver'),(967,'智能家居','360P1WIFI路由器',1,19,0,'2023-09-18','webserver'),(917,'遥控工具车','36v800W有刷控制器',1,41,6,'2023-05-12','webserver'),(911,'遥控工具车','油漆',1,20,0,'2023-05-12','webserver'),(912,'遥控工具车',' 焊条焊料',1,30,0,'2023-05-12','webserver'),(913,'遥控工具车','PCB板腐浊料',1,5,0,'2023-05-12','webserver'),(914,'遥控工具车','5-38v可调降压模块',1,2.5,1,'2023-05-12','webserver'),(918,'遥控工具车','PCB板钻头',1,2.5,0,'2023-05-12','webserver'),(921,'遥控工具车','6002轴承',4,1.82,0,'2023-05-13','webserver'),(927,'遥控工具车','30*56*3mm铁片',6,1,0,'2023-05-14','webserver'),(923,'遥控工具车','2芯纯铜2.5*1000mm',1,29,0,'2023-05-13','webserver'),(924,'遥控工具车','大型船型开关',1,4,0,'2023-05-14','webserver'),(930,'遥控工具车','36v12a充电器',1,18,0,'2023-05-18','webserver'),(926,'遥控工具车','20A紫铜卡扣10个',1,5,0,'2023-05-14','webserver'),(929,'遥控工具车','嘉立创打样5片PCB',1,54,0,'2023-05-18','webserver'),(943,'遥控工具车','34*60*3mm圆形铁片10个',1,6,0,'2023-05-30','webserver'),(932,'遥控工具车','法兰改装转动管',2,42,0,'2023-05-18','webserver'),(933,'遥控工具车','柳螺母头+10个M5',1,10,0,'2023-05-19','webserver'),(934,'遥控工具车','拿快递交通费',1,100,0,'2023-05-19','webserver'),(935,'家电维修','至尊电子秤计价30kg',1,88,0,'2023-05-19','webserver'),(941,'遥控工具车','请帮电焊50',1,50,0,'2023-05-21','webserver'),(946,'遥控工具车','405mm一字白钢刀片',1,17,0,'2023-05-30','webserver'),(947,'遥控工具车','30cm直径26mm+双9齿轮轴',1,28,0,'2023-05-30','webserver'),(948,'遥控工具车','割草机工作头',1,20,0,'2023-05-30','webserver'),(949,'遥控工具车','割草机侧挂连接盘26mm9齿',1,18,0,'2023-05-30','webserver'),(952,'遥控工具车','8路模块配8键遥控器433',1,33,0,'2023-06-14','webserver'),(951,'遥控工具车','U型卡扣M20',1,6,1,'2023-06-12','webserver'),(968,'家电维修','电子元件15格盒子',40,2,0,'2023-11-27','webserver'),(957,'家电维修','上门维修山地车26寸',1,130,0,'2023-08-05','webserver'),(959,'制冷维修','空调加氟安全带',1,35,0,'2023-08-08','webserver'),(962,'家电维修','鹿仙子出锡辅助器',1,30,0,'2023-08-16','webserver'),(963,'车上必备','手机导航支架',1,3,0,'2023-08-20','webserver'),(965,'家电维修','晨洲岛12s语音数字万用表',1,44.1,0,'2023-08-24','webserver'),(966,'家电维修','金属锡线架',1,5,0,'2023-09-07','webserver'),(969,'智能家居','鑫悦电猫',1,58,0,'2023-12-02','webserver');

--
-- Table structure for table `WisdomBartitle`
--

CREATE TABLE `WisdomBartitle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(60) NOT NULL,
  `content` text NOT NULL,
  `date` datetime NOT NULL,
  `user` varchar(32) NOT NULL,
  UNIQUE KEY `id_2` (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `WisdomBartitle`
--

INSERT INTO `WisdomBartitle` VALUES (6,'手动代码创建数据表','create table abc(\r\n\'id\' int(11) not null auto_increment,\r\nprimary key(\'id\')\r\n)engine-innodb default charset=utf8;','2017-12-05 09:53:00','站长'),(9,'邮件知识 IMAP是“双向”的而POP3是单向的','邮件知识 IMAP是“双向”的而POP3是单向的**作不会反馈到服务器上,IMAP正好相反','2017-12-05 09:54:00','站长'),(13,'IMAP和POP有什么区别','POP 移动邮件标记已读等，这是不会反馈到服务器上的。IMAP就不同了。还有一点不同，IMAP可以只下载邮件的主题，只有当您真正需要的时候，才会下载邮件的所有内容','2017-12-14 16:36:00','站长'),(14,'固态硬盘4K对齐','分区时使用4096','2018-01-01 14:46:00','webserver'),(15,'android 获取去电号码','String outgoingNumber = getResultData();\r\n            Toast.makeText(context, \"去电号码是：\" + outgoingNumber, Toast.LENGTH_LONG).show();','2018-01-03 18:46:00','webserver'),(16,'去电',' Uri  uri= Uri.parse(\"content://call_log/calls\");\r\n        //监听通话记录内容改变\r\n        getContentResolver().registerContentObserver(uri, true,\r\n                new ContentObserver(new Handler()) {\r\n            //监视的数据库发生了改变,就会触发的方法\r\n            @Override\r\n            public void onChange(boolean selfChange) {\r\n                super.onChange(selfChange);\r\n              tv.setText(\"状态改变了\");\r\n            }\r\n        });','2018-01-18 21:02:00','webserver'),(19,'手机隐藏的一个监听指令','*#*#4636#*#*','2018-03-02 07:53:00','webserver'),(144,'冰点还原秘钥','JZ1YM06A-3QT4X32Q-0DQEJ25S-M0ZWDWKQ-PJP93K3F','2020-07-29 20:59:00','webserver'),(25,'TP5使用','使用步骤','2018-03-27 21:28:00','站长'),(30,'手机刷机三合一','1.ROM\r\n2.手机连接驱动\r\n3.平台','2018-04-13 18:37:00','webserver'),(104,'液化气罐','空罐33斤左右,满罐60斤左右','2019-12-19 21:48:00','webserver'),(33,'沃柑保花','普滋硼+泰森猛锌+细胞分裂素+杀红杀螨药 不能用溃疡病药','2018-04-21 13:53:00','站长'),(34,'沃柑保果','普滋硼+毒死蜱+花果之素+戊唑 醚菌酯+芸苔素内酯(芸多乐)+赤霉酸+杀红杀螨药+磷酸二氢甲(叶面肥) 不能用溃疡病药','2018-04-21 13:53:00','站长'),(35,'CSS的position属性','absolute绝对定位 在整个网页面中某个位置.fixed固定定位,固定在整个显示屏的某个位置.relative相对于其它位置进行定位','2018-04-23 08:30:00','站长'),(36,'CSS的z-index属性','z-index使用前提必须要有position属性才有效果,z-index即在两个元素重叠的时为负数被遮挡,为正数值大的最前面显示','2018-04-23 08:36:00','站长'),(40,'割草机机油更换量','一次80毫升,更换时间为10个小时更换一次','2018-06-04 18:19:00','webserver'),(45,'至尊30公斤电子称改斤显示方法','操作之前请注意，先准备一个准5公斤的物品。每个步骤中的去皮，零和小数点都不能掉，请依次操作：\r\n\r\n1.按3658（或者9868）去皮 出现CAL （半个零）\r\n\r\n2.输入:1去皮   单价窗口显示2\r\n\r\n3.放上5千克物品 再去皮  单价窗口显示3\r\n\r\n4.输入：10.000去皮   单价窗口显示4\r\n\r\n5.输入：60.000去皮  单价窗口显示5\r\n\r\n6.输入：3去皮   单价窗口显示6\r\n\r\n7.输入：10去皮   重量窗口显示10.000，其他窗口归零，操作完成，请先关机再拿下物品。开机即可使用','2018-09-06 22:17:00','站长'),(46,'防止网站视频 或iframe被别的网站引用',' header(\'X-Frame-Options: deny\');','2018-09-10 08:33:00','webserver'),(56,'500斤水配1斤进口磷酸二氢钾','500斤水配1斤进口磷酸二氢钾','2018-10-30 14:53:00','webserver'),(58,'win10 开机启动方法','C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp  快捷方式存放地址','2019-02-06 20:26:00','webserver'),(70,'王者荣耀攻速阀','露娜12 李白1 老夫子5','2019-05-13 00:29:00','webserver'),(67,'4斤草甘膦可配500斤水3两洗衣粉','4斤草甘膦可配500斤水3两洗衣粉','2019-04-18 07:57:00','webserver'),(80,'程序开机自启方法','右键 我的电脑 ->管理 ->服务与应用程序->服务 \r\n\r\n找到你的程序选择 自启 确认后重启','2019-07-14 06:36:00','webserver'),(76,'宽带DNS大全','电信的 202.103.224.68 \r\n202.103.225.68\r\n移动的 211.138.240.100','2019-06-09 21:29:00','webserver'),(82,'树霉派可代替虚拟机','如虚拟主机涨价后可以考虑,\r\n花生壳+树霉派(lamp)做服务器一年电耗80度左右','2019-07-30 09:30:00','webserver'),(94,'奇迹私服法师攻速','不超过405是最快的','2019-12-12 19:36:00','webserver'),(91,'单机游戏','https://www.3dmgame.com','2019-11-03 21:35:00','webserver'),(93,'汽车5座6座7座区别','5-6座车6年免检\r\n7座车每2年车检1次\r\n567座车6年以后每年都车检1次\r\n567座车15年以后每年都车检2次\r\n强险770元每年\r\n车船税按排量计算1.0-1.6是每年360元\r\n强险+车船税=1130元每年\r\n','2019-11-10 08:47:00','webserver'),(90,'割草机汽油机启动巧门','用根小指大小木棍沾点汽油在进气口放,然后启动,这样容易启动','2019-10-21 11:52:00','webserver'),(95,'穿42码鞋子1.73米穿XL衣服','穿42码鞋子1.73米穿XL衣服','2019-12-18 15:36:00','webserver'),(99,'称动帐号amdin Cmcc10086#','称动帐号amdin Cmcc10086#','2019-12-18 15:38:00','webserver'),(101,'街上支付宝电费帐号查询040500420012782','街上支付宝电费帐号查询040500420012782','2019-12-18 15:40:00','webserver'),(107,'卖果套路说明','问:淘市上有卖价格很低的沃柑?\r\n\r\n答:不可能!果园田头批发价都在3到4元一斤,加上打包装,快递费,怎么可能比我更低呢?\r\n\r\n你买到的只有两种可能,\r\n\r\n1.次果,花皮,太阳果,小个青果(哪有那么多次果,最可能的是下面第二个原因)\r\n\r\n2.反问一下您自己是否会分辨真正的沃柑,某些商家都是挂羊头卖狗肉,发给你就是那种田头1块左右(非沃柑)果,坑你还帮人家数钱点赞!\r\n\r\n3.比你贵点人家买5斤送5斤(套路啊大哥).一共10斤你感觉赚到了是吧!\r\n\r\n套路=>给你发5斤沃柑,送的5斤却是市场上几毛钱一斤的迷橘类的东西,你还觉你赚到了吗?\r\n\r\n \r\n\r\n4.您可以去当地超市看一下沃柑的价格一斤多少再来对比一下!','2020-01-02 10:55:00','webserver'),(106,'沃柑广告语','广西沃柑 果园直销\r\n没有中间商赚差价,一件代发,全国包邮!\r\n净重9斤=50元,净重10斤=54元,量大可议!\r\n特别甜,发的都是大果65规格以上精品果\r\n支持淘宝下单交易,安心放心交易\r\n诚招微商或客商合作一起发展!\r\n网站www.360xyz.cn 有相关水果照片展示\r\n本人手机号15677817648 微信同号','2019-12-31 09:35:00','webserver'),(108,'东三省西六省','东三省 ->黑龙江省、吉林省、辽宁省\r\n西六省 ->宁夏、新疆、青海、陕西、甘肃、内蒙古自治区','2020-01-05 20:52:00','webserver'),(109,'沃柑商品广告标题','广西沃柑 果园直销基地发货 大果净重9斤10斤包邮 假一赔十 特甜\r\n\r\n沃柑 假一赔十量大从优,\r\n\r\n问:淘市上有卖价格很低的沃柑?\r\n\r\n答:不可能!果园田头批发价都在3到4元一斤,加上打包装,快递费,怎么可能比我更低呢?\r\n\r\n你买到的只有两种可能,\r\n\r\n1.次果,花皮,太阳果,小个青果(哪有那么多次果,最可能的是下面第二个原因)\r\n\r\n2.反问一下您自己是否会分辨真正的沃柑,某些商家都是挂羊头卖狗肉,发给你就是那种田头1块左右(非沃柑)果,坑你还帮人家数钱点赞!\r\n\r\n3.比你贵点人家买5斤送5斤(套路啊大哥).一共10斤你感觉赚到了是吧!\r\n\r\n套路=>给你发5斤沃柑,送的5斤却是市场上几毛钱一斤的迷橘类的东西,你还觉你赚到了吗?\r\n\r\n \r\n\r\n4.您可以去当地超市看一下沃柑的价格一斤多少再来对比一下!\r\n\r\n \r\n\r\n \r\n\r\n欢迎广大朋友合作 15677817648\r\n\r\n广西少数民族沃柑山青水秀育好果来自壮族的沃柑\r\n\r\n全国包邮\r\n\r\n特别声明: 本店的果树都是用割草机除草的,物理除草,没有污染!\r\n\r\n请客户放心!有时旺旺不在线可以电话 15677817648真正的沃柑,\r\n\r\n假一赔十','2020-01-26 12:12:00','admin'),(116,'柑橘肥料口决','无氮不生长、无磷难成花、无硼难坐果、无钾不上色、缺钙裂果多、无水不长树、无光不长果。','2020-02-26 09:31:00','webserver'),(117,'沃柑价格表','礼盒装净果9斤68元\r\n<普通装>净果10斤大果55元(70以上)\r\n<普通装>净果10斤中大果45元(65-70)\r\n<普通装>净果10斤中果40元(60-65)\r\n<普通装>净果10斤中果35元(55-60)\r\n','2020-03-04 20:06:00','webserver'),(118,'老款小喷雾机正负电识别','直立好喷雾器，最靠近底部的是正极','2020-03-11 15:54:00','webserver'),(119,'沃柑冷库保存温度','沃柑冷库贮藏最适宜的温度是0℃～1.2℃，湿度最好保持在85%—90%。沃柑放在这样的冷库环境中贮藏，保质期可达2个月左右\r\n','2020-03-12 11:38:00','webserver'),(120,'木瓜奇迹1万点法师加点','力300 敏捷 1380 智力5400 剩下的体力','2020-03-19 14:44:00','webserver'),(218,'抖音号： 77406979860','\r\n达哥悦读\r\n抖音号： 77406979860','2022-07-24 08:44:00','webserver'),(217,'外出工作职业选择 非常重要','有粉尘污染，或刺激味的工作，多少钱都不能做\r\n','2022-07-23 09:11:00','webserver'),(253,'真理1','读万卷书不如行万里路\r\n行万里路不如阅人无数\r\n阅人无数不如名师指路\r\n名师指路不如贵人相助','2023-12-31 09:06:00','webserver'),(212,'帖瓷砖方法','1.先用电子水平仪整体标记水平点\r\n2.用粘有墨水的细线，两点一线，回弹让墙壁有一条水平线\r\n3.水泥+河沙+水 1比3比1 比例混合成半湿状态\r\n4.沙子铺平整，把瓷砖预先放好在要贴的位置，该切割的切，切割瓷砖，搅拌水泥 要做好防尘工作，最好是用电风扇 吹向自己\r\n5.找一水桶 放上3分之1的水跟水泥混合用于直接粘在瓷砖背面  水跟水泥比例大概1比1\r\n6.水平尺，瓷砖振动器，水平细线准备好，现在就要使用\r\n7.瓷砖之间间隔2毫米左右可以用两个绑瓷砖的带子折叠，在一线上下两头放上去，用于隔开\r\n\r\n','2022-07-12 08:50:00','webserver'),(125,'手机型号首个字母的意思','M -> 正规零售机\r\nN -> 官方换亲机\r\nF -> 官方翻新机\r\n3A-> 店铺展示机 ','2020-03-31 20:53:00','webserver'),(127,'王者荣耀甄姬心得','王者荣耀甄姬。可以边移动边放技能。\r\n连招方式。\r\n3 2 1 普通攻击直到二技能冷却 2技能\r\n开局主点 2技能。','2020-05-15 04:13:00','webserver'),(128,'电压力锅煮白粥设置','调到01','2020-05-22 09:32:00','webserver'),(133,'mysql source 就断开连接','问题主要是编码问题，把编码设置成utf8\r\n打开my.cnf后，在文件内的[mysqld]下增加如下几行代码:\r\n[client]\r\ndefault-character-set=utf8\r\n[mysqld]\r\ncharacter-set-server=utf8\r\n[mysql]\r\ndefault-character-set=utf8\r\n\r\n\r\n重启','2020-05-28 09:35:00','webserver'),(136,'火狐浏览器帐号密码','282246101@qq.com    www.360xyz.cn','2020-07-09 12:19:00','webserver'),(235,'天火奇迹革新区','golang\r\nQQ28224610','2023-07-18 08:15:00','webserver'),(139,'二冲程汽油机油锯','加的燃油 汽油和二冲程专用机油比例25比1.2\r\n油锯链条 切记加汽油机普通发动机油 \r\n等机油从油锯链条上溅出来的时候，才能锯木头\r\n装油锯链条时装完后记得手动转一下链条\r\n检查是否卡住，顺畅为正确\r\n','2020-07-18 20:20:00','webserver'),(143,'更改mysql密码','use mysql\r\nupdate user set password=password(\'新密码\') where user=\'root\' and host=\'localhost\';\r\nflush privilege','2020-07-29 20:58:00','webserver'),(167,'物联网公安备案帐号密码','qq282246101  qq@282246101','2020-09-20 17:54:00','webserver'),(161,'ubuntu18.04与centos8 文件大小，性能对比','ubuntu18.04与centos8 文件大小，性能对比','2020-08-18 20:05:00','webserver'),(173,'suv前后轮胎气压','前两轮胎218kpa  后两轮胎气压215kpa','2020-12-17 13:51:00','webserver'),(174,'买suv时陈吉佳奶奶打了666.6元红包','买suv时陈吉佳奶奶打了666.6元红包','2020-12-17 13:53:00','webserver'),(175,'买SUV时覃慧春发了66.66元微信红包','买SUV时覃慧春发了66.66元微信红包','2020-12-23 22:26:00','admin'),(190,'电商包装物资 尺寸','泡沫箱尺寸 26x35x20\r\n礼盒装28x34x12.5 这个不完美 \r\n28x34x13.8 这个完美 ','2021-04-29 14:14:00','webserver'),(179,'一件代发计算','网套0.5元每单\r\n纸箱胶带0.3元每单\r\n纸箱2元每单\r\n快递费4.5元每单\r\n10000斤按损耗5%就是500斤\r\n剩余9500斤 以9斤净果为例 就是1055单\r\n小果15%x1055=158单\r\n中果35%x1055=369单\r\n大果55%x1055=580单\r\n以2000单请8个人工为例1000单请4个人\r\n每人每天180元x4=720元人工费 / 1055=0.68算0.7元每件打包费用\r\n网套0.5+胶带0.3+纸箱2+快递4.5=7.3元每件打包运费+0.7元打包费用=8元\r\n每单完成任务送到客户手上成本是8元 x 1055=8440元\r\n以价格2元一斤收10000斤成本就是20000元\r\n20000+8440=28440元\r\n每单应挣1？x1055=1055\r\n28440+1055=总合费用\r\n29495\r\n然后用总合费用算出 小中大果应该卖多少钱每件\r\n','2021-04-02 23:11:00','webserver'),(187,'寄件重量说明','同一地址收件人一天不能超过200斤(100公斤)\r\n不包括同一省不同地址不同收件人','2021-04-12 11:21:00','webserver'),(191,'机油防伪查询网站','先上网站手动输入查询\r\n再微信描码看看','2021-06-06 13:18:00','webserver'),(189,'附近WIFI密码','HUAWEI-EY6V WIFI密码13481836880 \r\nCMCC-nCYi 6rmj242f \r\nMERCURY_3E7E  a13768488886','2021-04-17 08:50:00','webserver'),(192,'cloud.vivo.com','密码qq282246101','2021-07-12 22:00:00','webserver'),(234,'php PDO类','<?php\r\nnamespace myclass;\r\n\r\nclass PdoXyz{\r\n	//private $host=\"192.168.100.254\";\r\n	private $host=\"2280lan.dnstoo.com\";\r\n	//private $sqlUser=\"root\";\r\n	private $sqlUser=\"xyz_f\";\r\n	private $sqlPasswd=\"qq282246101\";\r\n	private $sqlDb=\"xyz\";\r\n	private $PDO=null;\r\n	public function __construct(string $dbName=\"\"){\r\n		if ($dbName!=\"\") {\r\n			$this->sqlDb=$dbName;\r\n		}\r\n		$this->PDO = new \\pdo(\"mysql:host={$this->host};port=3306;dbname={$this->sqlDb}\", $this->sqlUser,$this->sqlPasswd);\r\n		//转义交由MySQL Server转义\r\n		$this->PDO->setAttribute(\\PDO::ATTR_EMULATE_PREPARES, false);\r\n		$this->PDO->exec(\'set names utf8\');\r\n	}\r\n	public function Fetch(string $sql, array $arr){\r\n		$execute = $this->PDO->prepare($sql);\r\n		if ($execute) {\r\n			if($execute->execute($arr)){\r\n				$execute->setFetchMode(\\PDO::FETCH_ASSOC);\r\n				$result = $execute->fetch();\r\n				return $result;\r\n			}\r\n		}\r\n		return null;\r\n	}\r\n	public function FetchAll(string $sql, array $arr) :array{\r\n		$execute = $this->PDO->prepare($sql);\r\n		if ($execute) {\r\n			if($execute->execute($arr)){\r\n				$execute->setFetchMode(\\PDO::FETCH_ASSOC);\r\n				$result = $execute->fetchAll();\r\n				return $result;\r\n			}\r\n		}\r\n		return array();\r\n	}\r\n	public function Exec(string $sql, array $arr):int{\r\n		$execute = $this->PDO->prepare($sql);\r\n		$execute->execute($arr);\r\n		return $execute->rowCount();\r\n	}\r\n	public function LastInsertId(string $sql): int{\r\n		$execute = $this->PDO->prepare($sql);\r\n		$execute->execute();\r\n		return $execute->lastInsertId;\r\n	}\r\n	public function DeleteAll(String $table): bool{\r\n		$execute = $this->PDO->prepare(\"SELECT id FROM {$table}\");\r\n		if ($execute) {\r\n			if($execute->execute(array())){\r\n				$execute->setFetchMode(\\PDO::FETCH_ASSOC);\r\n				$a = $execute->fetchAll();\r\n				foreach ($a as $k => $v) {\r\n					$sql = \"DELETE FROM {$table} WHERE id=?\";\r\n					$execute1 = $this->PDO->prepare($sql);\r\n					$execute1->execute(array($v[\'id\']));\r\n				}\r\n				return true;\r\n			}\r\n			return false;\r\n		}\r\n		return false;\r\n	}\r\n	public function __destruct(){\r\n		$this->PDO=null;\r\n	}\r\n}\r\n','2023-06-30 08:06:00','webserver'),(227,'早晚一大杯豆浆可以调理胃','豆浆什么都不要放,豆浆是碱性可以中和胃酸,补钙,\r\n胃酸太多可以吐出来缓解.','2022-12-25 09:34:00','webserver'),(222,'wx','wx0732ee13b305beba\r\n3ca043a8038d6b73cc2cf0651ffc9130','2022-09-10 10:55:00','webserver'),(194,'怎么判断感冒是病毒性还是细菌性','1.病毒性感冒的时候，往往全身症状是比较严重的，会有浑身的肌肉酸疼、乏力的症状出现，会有流清鼻涕的症状\r\n\r\n四季抗病毒合剂、利巴韦林颗粒或者蒲地蓝消炎口服液\r\n2.细菌性感冒，往往会有扁桃体咽喉部的化脓，检查血常规的时候会有白细胞的升高，会有流黄鼻涕或者咳黄痰的症状出现\r\n抗生素进行消炎治疗的。可以使用头孢类抗生素，如果平时没有过敏的情况，可以使用头孢克肟、头孢羟氨苄或者头孢克洛进行消炎的治疗','2021-08-10 05:28:00','webserver'),(195,'细菌感冒治疗特效药','1.阿莫西林\r\n2.复方甘草口服溶液','2021-08-11 20:34:00','webserver'),(196,'高压电线是有辐射的，要远离300米以上最安全','高压电线是有辐射的，要远离300米以上最安全','2021-08-22 18:33:00','webserver'),(198,'望远镜 分为 伽利略 和 开普勒','伽利略 物镜是 凹透镜 + 目镜 凸透镜\r\n开普勒 物镜是 凸透镜 + 目镜 凸透镜 放大倍数完胜伽利略 伽利略望远镜一般都是玩具','2021-09-22 14:18:00','webserver'),(200,'vscode golang 安装插件','vscode golang 插件安装\r\nhttps://goproxy.io/zh/ 一个全球代理为 Go 模块而生\r\n\r\n按说明配置 go 1.13 及以上\r\n\r\ngo env -w GO111MODULE=on\r\ngo env -w GOPROXY=https://goproxy.io,direct\r\n安装完记得关一下\r\ngo env -w GO111MODULE=off','2021-10-28 20:21:00','webserver'),(201,'java vs go性能\r\nstprintboot   iris','单纯返回字符串   go是java 3倍速度\r\n返回json        go是java 3倍多一点速度\r\n数据库全量查询  go是java 的4倍速度','2021-11-12 16:58:00','webserver'),(204,'go 性能是java的2.5倍','go 性能是java的2.5倍','2021-12-11 22:27:00','webserver'),(205,'移动宽带路由登录','192.168.100.254\r\nadmin\r\nCmcc10086#','2021-12-12 08:21:00','webserver'),(206,'TCS-180 电子台称 公斤市斤互换','开机 12763  去皮 63 去皮    （公斤转市斤）\r\n开机 12763  去皮 33 去皮    （市斤转公斤）','2021-12-12 11:47:00','webserver'),(207,'宝骏530更换机油','1.拆开发动机防尘罩，四个角，每一个角用点力往上提渐个提起就能拆开\r\n2.找个盆装废机油，找个六角螺丝板手用于扭开机油底壳放机油。机油格板手\r\n3.先扭螺母机油底壳放机油。同时拆机油格，面向车头往左手边扭，拆下后及时把新的机油格装上。\r\n装上新机油格之前要注意在机油格塑料垫那里放新机油。\r\n4.把机油底螺母扭紧。倒入新机油，使之剩余机油瓶一起称重在1.7斤左右就好了\r\n5.启动车子怠速3分钟','2022-01-30 09:43:00','webserver'),(209,'https://www.oracle.com下载java帐号密码','282246101@qq.com\r\nwww.360xyz.CN','2022-03-12 07:21:00','webserver'),(232,'火狐浏览器缓存','C:\\Users\\Administrator\\AppData\\Local\\Mozilla\\Firefox\\Profiles\\k8lrn5xn.default-release\\cache2\\entries','2023-06-20 01:03:00','webserver'),(233,'2023年6月20号傍晚种的木瓜苗','2023年6月20号傍晚种的木瓜，看看多久结果','2023-06-28 04:38:00','webserver'),(214,'惠普打印机墨盒型号 67','惠普打印机墨盒型号 67','2022-07-12 09:29:00','webserver'),(215,'CMCC-YUKY','88888888','2022-07-16 07:36:00','webserver'),(230,'网络MAC地址','6a:e4:07:75:d2:ee  #我的手机\r\n5a:ab:53:13:82:98  #小罗手机\r\nd0:fa:1d:11:a1:8f  #360摄像头\r\nb0:59:47:4c:68:76  #360夜视摄像头\r\n98:cd:ac:29:44:99  #大门\r\n3a:5e:d4:6e:f9:0f  #老豆手机\r\n2c:73:60:19:db:00  #邮政打印机\r\na4:56:02:36:c9:53  #360路由器','2023-04-24 08:51:00','webserver'),(220,'FAST_6C5A 林','FAST_6C5A 林','2022-08-30 06:46:00','webserver'),(225,'https://www.raspberrypi.org/downloads/raspberry-pi-os/','https://www.raspberrypi.org/downloads/raspberry-pi-os/','2022-11-15 11:56:00','webserver'),(228,'超能世界','刀妹 13224武士+2罪恶 竞技场强袭+罪恶\r\n屠龙 飞刃 1322 2+2+2 狂热者罪恶审判强袭+罪恶龙女3443 女妖+进化\r\n大树 4445救赎+进化\r\n诗人/鹦鹉3422 武士+进化\r\n电龙1322 破绽+罪恶\r\n药剂/小猫 3422 武士+进化\r\n皇后 3445 女妖+进化\r\n万花 1321 破绽+罪恶/主宰+罪恶\r\n树女 3422 主宰+进化','2023-01-27 09:55:00','webserver'),(229,'喷墨打印机日常维护','70张左右加墨(常加墨可以让墨盒寿命更长,主要是防止墨盒没有墨水后墨盒喷头过热)\r\n墨盒喷头堵了,可以用80-90度的开水泡墨头30秒左右\r\n\r\n\r\n','2023-02-03 10:18:00','webserver'),(236,'php mysqli预处理','/**\r\n * $a=new MysqliXyz;\r\n * $stmt=$a->sql($sql,\"类型\",?对应值);\r\n * $stmt->bind_result(...$list); //接收返回变量\r\n * $stmt->execute();\r\n * $stmt->fetch();  //单条数据查询\r\n * //多条数据\r\n $result=array();\r\n $temp=array();\r\n while($stmt->fetch()){\r\n		$temp[\"passwd\"]= $passwd;\r\n		$result[]=$temp;\r\n }\r\n */\r\nclass MysqliXyz\r\n{\r\n	private $host=\"192.168.100.254\";\r\n	//private $sqlUser=\"root\";\r\n	private $sqlUser=\"root\";\r\n	private $sqlPasswd=\"qq282246101\";\r\n	private $sqlDb=\"xyz\";\r\n	public $stmt=\"\";\r\n	private $db=null;\r\n	function __construct(){\r\n\r\n		$this->db=new \\mysqli($this->host,$this->sqlUser,$this->sqlPasswd,$this->sqlDb,3306);\r\n		if ($this->db->connect_error) {\r\n			die(\"连接 Mysaql 失败 \".$this->db->connect_error);\r\n		}\r\n		$this->db->set_charset(\"utf8\");\r\n	}\r\n	//参数1 sql语句  参数2 ?对应类型  参数3 ?对应值 \r\n	public function GetStmt($sql,$types,...$list){\r\n		$this->stmt=$this->db->prepare($sql);\r\n		$this->stmt->bind_param($types,...$list);\r\n		return $this->stmt;\r\n	}\r\n	public function __destruct(){\r\n		$this->stmt->close();\r\n		$this->db->close();\r\n	}\r\n}\r\n','2023-07-20 09:11:00','webserver'),(237,'15677817648缴费记录','	//2022-06-28 新转网 现金交了50\r\n	date2022_6_28 := 50\r\n	date2022_10_01 := 30\r\n	date2023_01_03 := 20\r\n	a := date2022_6_28 + date2022_10_01 + date2023_01_03\r\n	date2023_03_01 := 30\r\n	date2023_04_04 := 30\r\n	date2023_05_04 := 30\r\n	date2023_07_04 := 30\r\n	date2023_08_04 := 46\r\n	b := date2023_03_01 + date2023_04_04 + date2023_05_04 + date2023_07_04 + date2023_08_04\r\n	c := a + b\r\n	fmt.Println(c)\r\n	d := float32(c) / 19\r\n	fmt.Println(d) //14个月 刚好 2022-06-28  到 2023-08-28 的所有费用','2023-08-04 06:05:00','webserver'),(244,'NodeMCU ESP32 MAX98357','NodeMCU ESP32 MAX98357','2023-09-28 08:34:00','webserver'),(239,'win10 删除运行记录','HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU，删除右边除“(默认)”之外的所有值，也可以选择性删除，可参照“数据”中命令内容来决定是否删除','2023-08-13 09:27:00','webserver'),(240,'pc mac','	\"pc001\": \"74:d4:35:a0:69:73\",\r\n	\"pc002\": \"1c:b7:2c:af:ee:9c\",\r\n	\"pc003\": \"1c:1b:0d:8e:8b:fe\",','2023-08-14 04:53:00','webserver'),(242,'电脑MQTT限时上网','// 客户机\r\n1. 电脑主机 MQTT 订阅  \"home/system/pc\"\r\n2. 客户电脑主机 MQTT 断线自动重连\r\n3. 电脑每5分钟定时向服务器 home/system/pctosystem 发布 本机名, \r\n判断有返回 来确定是否已经掉线\r\n//服务器\r\n1. 服务器 MQTT服务器\r\n2. 服务器 建立一个协程 MQTT Client 监听 home/system/pctosystem  电脑主机 发送来的  消息\r\n消息信息是  客户机的主机名  然后 进行计算时间,当时间超过时\r\n向 home/system/pctosystem 发送 json  pcname:主机名 msg:关机\r\n3. 客户机 通过 web 192.168.100.254 主页查询上网剩余时间','2023-08-16 01:08:00','webserver'),(243,'获取网络时间网址','http://quan.suning.com/getSysTime.do','2023-09-12 11:24:00','webserver'),(245,'https://github.com/topics/inmp441','https://github.com/topics/inmp441','2023-10-09 08:55:00','webserver'),(252,'esp订单任务','esp订单任务','2023-12-29 07:10:00','webserver'),(247,'ssh root@111.229.99.208 ','ssh root@111.229.99.208 \r\nqq@1234567','2023-10-24 06:07:00','webserver'),(248,'识别记账','200开工定金\r\n1000元买 扫描机器\r\n500元 -109元域名费-60元快递费=330元\r\n\r\n请人美化页面 350元未给 ','2023-10-30 06:08:00','webserver'),(249,'sub 汽车加机油量 净重 5.5 斤','sub 汽车加机油量 净重 5.5 斤','2023-11-10 01:52:00','webserver'),(250,'景安虚拟主机账号密码','golangjacob\r\nqq@282246101','2023-12-04 08:18:00','webserver'),(251,'换煤气时间','2023 年 12 月 9 日 115','2023-12-09 10:44:00','webserver'),(254,'arduino WIFI网页配网说明','查看附近WIFI  有 192, 168, 168, 2     密码 nobiggie.cn\r\n连接后 手机打开IE浏览器  输入 192.168.168.2\r\n进入页面 会扫描出附近的WIFI,选择你自己的 \r\n下面打上你们家的wifi 密码 确定  等待20秒后就联网成功','2024-01-04 04:32:00','webserver'),(255,'2024年1月5号开始收果','3箱','2024-01-05 07:41:00','webserver');

--
-- Table structure for table `WisdomBarrtitle`
--

CREATE TABLE `WisdomBarrtitle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rid` int(11) NOT NULL,
  `content` text NOT NULL,
  `imgtext` varchar(80) NOT NULL DEFAULT '',
  `date` datetime NOT NULL,
  `user` varchar(32) NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=178 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `WisdomBarrtitle`
--

INSERT INTO `WisdomBarrtitle` VALUES (36,25,'application/config.php 找到\'view_replace_str\'=>[ \'__PUBLIC__\'=>\'/public/static\', \'__ROOT__\'=>\'/\', ]','','2019-05-22 09:48:00',''),(37,25,'路由配置文件application/route.php中定义         \'__alias__\' =>  [\r\n        \'index\'  =>  \'index/index\',\r\n        \'admin\'  =>  \'admin/index\',\r\n        \'users\'  =>  \'warehouse/index\',\r\n    ],\r\n 缩短访问路由地址','','2019-05-22 09:48:00',''),(40,25,'根目录下的 extend 新建任何目录可小写 类名.php (首字母必须大写 类名跟php文件一样) new \\目录名\\类名','','2019-05-22 09:50:00',''),(39,25,'把js,css,image文件放到public/static/下面','','2019-05-22 09:49:00',''),(38,25,'index/view 下新建 public目录 存放 网站布局 上 下部模板 {include file=\"index@./public/head\" /} 引用网站布局 上 下部模板\\','','2019-05-22 09:49:00',''),(41,25,'引用类 根目录下的 extend 新建任何目录可小写 类名.php (首字母必须大写 类名跟php文件一样) new \\目录名\\类名','','2019-05-22 09:50:00',''),(14,25,'把public/. htaccess复制到根目录下','','2018-03-28 09:08:00','webserver'),(15,40,'每次使用完，剩下的汽油要倒到瓶子里，不能放留在机器中，会挥发完的','','2018-08-03 22:08:00','webserver'),(31,34,'赤霉酸 又称920 用药量过多会引起 皮粗','','2019-04-24 15:38:00',''),(33,25,'把 public/index.php复制到根目录下,改 /./application/ /./thinkphp/start.php','','2019-05-22 09:45:00',''),(35,25,'根目录index.php  \\think\\Build::module(\'index\'); \r\n\\think\\Build::module(\'users\'); \r\n\\think\\Build::module(\'admin\'); 生成框架目录','','2019-05-22 09:47:00',''),(42,67,'草长得高于1分米的话,基本没有效果,用割草机除草效果更好','','2019-06-03 22:04:00','admin'),(55,40,'标准的汽油是没有冒黑烟的','','2019-06-29 12:45:00','webserver'),(59,93,'5座强险费用少100多','','2019-12-01 17:12:00','webserver'),(60,93,'5座年检费好像少100元','','2019-12-12 19:37:00','webserver'),(65,94,'超过450攻速就放不出黑龙波','','2020-02-21 19:36:00','webserver'),(66,94,'攻速过480又能放出黑龙波','','2020-02-21 21:30:00','webserver'),(67,119,'1、使用小苏打水浸泡。将食用小苏打和水按1：100的比例溶解，然后将剩下的沃柑放入水中浸泡清洗，然后取出自然风干即可。小苏打水能有效杀除沃柑表面的主要细菌，从而有利于延长沃柑的保存时间。\r\n\r\n2、使用松树枝铺底存放。如果剩余的沃柑量大的话，建议寻找一些新鲜的松树枝或有类似杀菌功能的树枝铺在保存箱的底部，然后将沃柑放入后，再在上面再铺一层松树枝，上面再放沃柑，也就是每放一层沃柑就铺一层松树枝。松树枝能够分泌杀菌物质，以延长沃柑的保存时间。\r\n\r\n','','2020-03-12 11:40:00','webserver'),(68,119,'咪鲜胺+24滴','','2020-03-20 18:16:00','webserver'),(69,34,'保果农药不能是乳油剂','','2020-04-01 18:03:00','webserver'),(72,133,'显示编码\r\nSHOW VARIABLES LIKE \'char%\';','','2020-05-28 09:43:00','webserver'),(80,161,'centos8已用2.47 GB，5.03%, 共 49.15 GB \r\nutuntu18.04 已用2.75 GB，5.60%, 共 49.15 GB ','','2020-08-18 20:06:00','webserver'),(81,161,'utuntu18.04 性能测试\r\n首页0.001101s 0.001079s 0.000991s\r\n快递查询 0.079329s  0.077336s 0.069506s\r\n商品 0.005285s 0.005192s 0.005211s\r\n客户 0.002999s 0.002678s  0.002196s\r\n','','2020-08-18 20:06:00','webserver'),(82,161,'centos\r\n首页 0.008927s 0.009819s 0.009249s\r\n快递查询 0.100604s  0.059532s 0.096578s\r\n商品  0.019471s  0.018690s 0.018613s\r\n客户 0.014628s  0.012539s 0.012587s','','2020-08-18 20:34:00','webserver'),(85,167,'网址是http://www.beian.gov.cn/portal/index.do','','2020-09-20 17:57:00','webserver'),(90,161,'sdfsd','','2021-02-12 21:11:00','webserver'),(93,189,' ChinaNet-XzXJ 18777899139','','2021-04-17 08:51:00','webserver'),(165,90,'化油器坏了','','2022-07-22 08:17:00','webserver'),(156,189,'CMCC-8886 a13768488886','','2021-09-09 12:00:00','站长'),(166,212,'贴瓷砖记得防护毁害时粉尘危害','','2022-07-23 09:12:00','webserver'),(167,212,'贴瓷砖记得防护瓷砖切割时粉尘危害','','2022-07-23 09:13:00','webserver'),(104,191,'壳牌假油太多，直接买马石油\r\npetronas马石油旗舰店','','2021-08-19 15:56:00','admin'),(107,16,'previouspage','','2021-08-31 20:39:00','webserver'),(114,189,'CMCC-hEuc      88888888','','2021-09-09 09:25:00','webserver'),(154,189,'CMCC-YUKY;88888888','','2021-09-09 11:59:00','站长'),(155,189,'CMCC-3575  15977853575','','2021-09-09 12:00:00','站长'),(157,189,'大才摩修_5G at090411','','2021-09-09 12:00:00','站长'),(158,189,'CMCC-大才快递 12345678','','2021-09-09 12:00:00','站长'),(159,189,'qq qt123456','','2021-09-09 12:00:00','站长'),(163,201,'go是php7.4.29的14.2倍\r\npackage main\r\n\r\nfunc fib(n int64) int64 {\r\n	if n <= 2 {\r\n		return 1\r\n	}\r\n	return fib(n-1) + fib(n-2)\r\n}\r\n\r\nfunc main() {\r\n	println(fib(45))\r\n}\r\n\r\n\r\n<?php\r\n\r\n\r\nfunction fib($int64){\r\n	if($int64<=2){\r\n		return 1;\r\n	}\r\n	return fib($int64-1)+fib($int64-2);\r\n}\r\n$begin=time();\r\n\r\necho fib(45);\r\n\r\n$end=time();\r\n$re=$end-$begin;\r\necho \"<br/>\";\r\necho $re;','','2022-04-17 01:47:00','webserver'),(164,201,'Java版本:\r\n\r\npackage bench;\r\n\r\npublic class Bench1 {\r\n	static long fib(long n) {\r\n		return n <= 2 ? 1 : fib(n - 1) + fib(n - 2);\r\n	}\r\n\r\n	public static void main(String[] args) {\r\n		System.out.println(fib(45));\r\n	}\r\n}','','2022-04-21 09:00:00','webserver'),(168,220,'HiTV_E8CCB8','','2022-08-30 10:53:00','webserver'),(169,220,'区  -C3962','','2022-08-30 11:17:00','webserver'),(170,229,'无法识别墨盒,千万不要普通纸去擦,要粘点酒精来擦,就可以修复好','','2023-08-27 04:57:00','webserver'),(171,229,'打印复印扫描还是喷墨打印机好,省电(是激光打印机10分之1功耗),便宜,耐用\r\n没有激光打印粉尘危害','','2023-09-15 08:11:00','webserver'),(172,237,'10月3号缴费30','','2023-12-06 06:42:00','webserver'),(173,237,'12月6号缴费30元 费用到11月28日  60-(19*3)=3 剩余3元','','2023-12-06 07:14:00','webserver'),(174,252,'esp8266\r\n点灯科技平台 手机遥控灯\r\n自动感应人体并且在光线黑暗的环境下自动点亮,\r\n开关状态反馈给点灯科技平台(手机)','','2023-12-29 07:12:00','webserver'),(175,252,'esp32 cam \r\n有摄像头\r\n能够显示温度\r\n控制4组水泵开关  \r\n(最好能定时) \r\n130-28-12=90','','2023-12-29 07:16:00','webserver'),(176,252,'esp8266\r\n需要做6个震动装置，通过点灯科技的按钮实现：\r\n1、按动按钮后，每个振动器3秒的震动时间（我可以调整时长）\r\n2、震动的同时，按钮的文字显示：正在震动\r\n3、震动完成后，按钮的文字显示：完成震动\r\n\r\n100元','','2023-12-29 07:17:00','webserver'),(177,254,'arduino WIFI网页配网说明\r\n查看附近WIFI  有 192, 168, 168, 2     密码 nobiggie.cn\r\n连接后 手机打开IE浏览器  输入 192.168.168.2\r\n进入页面 会扫描出附近的WIFI,选择你自己的 \r\n下面打上你们家的wifi 密码 设置  等待15秒后就联网成功 ','','2024-01-05 08:06:00','webserver');


