数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 4187|回复: 47

[家电] 8.5元的WIIFI智能插座使用心得

[复制链接]
发表于 2021-9-3 19:11:02 | 显示全部楼层 |阅读模式

认识众多玩家高手/拆客/DIY爱好者,查阅更多资源,一起学习技术知识

您需要 登录 才可以下载或查看,没有帐号?立即注册 微信登录

x
本帖最后由 zongher 于 2021-9-3 21:32 编辑


简单写点分享给大家,避免大家少走一些弯路。

QQ图片20210903211135.jpg








QQ图片20210903211125.jpg

QQ图片20210903211130.jpg

我买了5个,想无损拆卸基本不可能,我试过各种办法,可能技不如人!

卖家提供接线图不一定正确;
//IO4=红灯,16=绿灯,14继电器,13按键(实测为5)
#define PIN_KEY 5
#define PIN_Relay 14
#define PIN_LedRed 4
#define PIN_LedGreen 16

例如按键就不对,我实测按键引脚为GPIO5,其他都是正确的。

ESP8266或ESP32的IO0口接地(GND)时上电,会进入下载固件模式,不接地(悬空)进入正常模式。

TX接下载器RX。RX接下载器TX。(下载器一般是TTL转USB,例如常见的CH340系列,淘宝五块钱,没有不能下载程序)

先放出代码,支持天猫精灵,长按进入智能配网。

以下使用的是arduino IDE代码,参考的是B站:Esp8266接入阿里云_天猫精灵_云智能APP_控制LED_插座_哔哩哔哩_bilibili

  1. #include <ESP8266WiFi.h>   //安装esp8266arduino开发环境
  2. static WiFiClient espClient;
  3. #include <ArduinoJson.h>
  4. #include <WiFiUdp.h>
  5. #include <ArduinoOTA.h>
  6. #include <EEPROM.h> //导入Flash库文件
  7. #include <AliyunIoTSDK.h>  //引入阿里云 IoT SDK,需要安装crypto库、PubSubClient库
  8. AliyunIoTSDK iot;
  9. //设置产品和设备的信息,从阿里云设备信息里查看
  10. <font color="#ff0000">#define PRODUCT_KEY ""  //替换自己的PRODUCT_KEY
  11. #define DEVICE_NAME ""  //替换自己的DEVICE_NAME
  12. #define DEVICE_SECRET ""  //替换自己的DEVICE_SECRET</font>
  13. #define REGION_ID "cn-shanghai"  //默认cn-shanghai
  14. //IO4=红灯,16=绿灯,14继电器,13按键(实测为5)
  15. #define PIN_KEY 5
  16. #define PIN_Relay 14
  17. #define PIN_LedRed 4
  18. #define PIN_LedGreen 16

  19. #include <OneButton.h>
  20. OneButton button(PIN_KEY,true);// true:按下为低电平; false : 按下为高电平;不设置时默认值为:true

  21. bool WIFI_Status = false;//是否联网标识
  22. unsigned long lastMsMain = 0;
  23. String ssid;
  24. String psw;
  25. struct config_type{
  26.   char stassid[32];//定义配网得到的WIFI名长度(最大32字节)
  27.   char stapsw[64];//定义配网得到的WIFI密码长度(最大64字节)
  28. };
  29. config_type config;//声明定义内容
  30. void saveConfig(){//保存函数
  31. EEPROM.begin(1024);//向系统申请1024 ROM
  32. //开始写入
  33. uint8_t *p = (uint8_t*)(&config);
  34.   for (int i = 0; i < sizeof(config); i++){
  35.     EEPROM.write(i, *(p + i)); //在闪存内模拟写入
  36.   }
  37.   EEPROM.commit();//执行写入ROM
  38. }
  39. void loadConfig(){//读取函数
  40.   EEPROM.begin(1024);
  41.   uint8_t *p = (uint8_t*)(&config);
  42.   for (int i = 0; i < sizeof(config); i++) {
  43.     *(p + i) = EEPROM.read(i);
  44.   }
  45.   EEPROM.commit();
  46.   ssid = config.stassid;
  47.   psw = config.stapsw;
  48. }
  49. /* 智能配网 */
  50. void smartConfig(){
  51.   WiFi.mode(WIFI_STA);//设置STA模式
  52.   Serial.println("\r\nWait for Smartconfig...");//打印log信息
  53.   WiFi.beginSmartConfig();//开始SmartConfig,等待手机端发出用户名和密码
  54.   while(1){
  55.     Serial.println(".");
  56.     digitalWrite(PIN_LedGreen,LOW);//指示灯闪烁
  57.     delay(600);
  58.     digitalWrite(PIN_LedGreen,HIGH);//指示灯闪烁
  59.     delay(600);
  60.     if(WiFi.smartConfigDone()){//配网成功,接收到SSID和密码
  61.       WIFI_Status = true;
  62.       Serial.println("SmartConfig Success");
  63.       Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  64.       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  65.       strcpy(config.stassid,WiFi.SSID().c_str());//名称复制
  66.       strcpy(config.stapsw,WiFi.psk().c_str());//密码复制
  67.       saveConfig();//调用保存函数
  68.       WiFi.setAutoConnect(true);  // 设置自动连接
  69.       break;
  70.     }
  71.   }
  72. }
  73. /*连接网络*/
  74. void wifiConnect(){
  75.   Serial.println("\r\n正在连接WIFI...");
  76.   loadConfig();//读取ROM是否包含密码
  77.   if(ssid!=0&&psw!=0){//判断ROM是否有密码
  78.     WiFi.begin(ssid,psw);//如果有密码则自动连接
  79.     while(WiFi.status()!= WL_CONNECTED){
  80.       Serial.print(".");
  81.       digitalWrite(PIN_LedGreen, LOW);
  82.       delay(100);
  83.       digitalWrite(PIN_LedGreen, HIGH);
  84.       delay(100);
  85.       button.tick();//加入按钮检测
  86.     }
  87.   }else{
  88.       smartConfig();//如果ROM没有密码则自动进入配网模式
  89.   }
  90.     WIFI_Status = true;
  91.     Serial.println("连接成功");
  92.     Serial.print("IP:");
  93.     Serial.println(WiFi.localIP());
  94. }


  95. void btnclick(){
  96.   digitalWrite(PIN_Relay, !digitalRead(PIN_Relay));
  97. }
  98. void doubleclick(){
  99.   digitalWrite(PIN_LedGreen, !digitalRead(PIN_LedGreen));
  100. }
  101. void longclick(){
  102.   if(WIFI_Status){
  103.    
  104.   }else{
  105.     Serial.println("smartConfig...");
  106.     smartConfig();
  107.   }
  108. }



  109. void setup() {
  110.   Serial.begin(115200);
  111.   pinMode(PIN_LedRed,OUTPUT);
  112.   pinMode(PIN_LedGreen,OUTPUT);
  113.   pinMode(PIN_Relay, OUTPUT);
  114.   pinMode(PIN_Relay, OUTPUT);
  115.   digitalWrite(PIN_Relay, LOW);
  116.   digitalWrite(PIN_LedRed,HIGH);
  117.   digitalWrite(PIN_LedGreen,HIGH);
  118.   button.reset();
  119.   button.setDebounceTicks(80);//设置消抖时长为80毫秒,默认值为:50毫秒
  120.   button.setClickTicks(500);//设置单击时长为500毫秒,默认值为:400毫秒
  121.   button.setPressTicks(1000);//设置长按时长为1000毫秒,默认值为:800毫秒
  122.   button.attachClick(btnclick);
  123.   button.attachDoubleClick(doubleclick);
  124.   button.attachLongPressStart(longclick);

  125.   //开始连接WiFi
  126.   wifiConnect();
  127.   
  128.   //初始化 iot,需传入 wifi 的 client,和设备产品信息
  129.   AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
  130.   //绑定一个设备属性回调,当远程修改此属性,会触发powerstate函数;天猫精灵控制的就是powerstate的高低电平(高 = 1,低 = 0)
  131.   AliyunIoTSDK::bindData("powerstate", powerstate);
  132.   //绑定一个设备属性回调,当远程修改此属性,会触发allPowerstate函数
  133.   AliyunIoTSDK::bindData("allPowerstate", allPowerstate);

  134.   ArduinoOTA.onStart([]() {
  135.     String type;
  136.     if (ArduinoOTA.getCommand() == U_FLASH) {
  137.       type = "sketch";
  138.     } else { // U_FS
  139.       type = "filesystem";
  140.     }

  141.     // NOTE: if updating FS this would be the place to unmount FS using FS.end()
  142.     Serial.println("Start updating " + type);
  143.   });
  144.   ArduinoOTA.onEnd([]() {
  145.     Serial.println("\nEnd");
  146.   });
  147.   ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
  148.     Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  149.   });
  150.   ArduinoOTA.onError([](ota_error_t error) {
  151.     Serial.printf("Error[%u]: ", error);
  152.     if (error == OTA_AUTH_ERROR) {
  153.       Serial.println("Auth Failed");
  154.     } else if (error == OTA_BEGIN_ERROR) {
  155.       Serial.println("Begin Failed");
  156.     } else if (error == OTA_CONNECT_ERROR) {
  157.       Serial.println("Connect Failed");
  158.     } else if (error == OTA_RECEIVE_ERROR) {
  159.       Serial.println("Receive Failed");
  160.     } else if (error == OTA_END_ERROR) {
  161.       Serial.println("End Failed");
  162.     }
  163.   });
  164.   ArduinoOTA.begin();
  165.   Serial.println("Ready");
  166.   Serial.print("IP address: ");
  167.   Serial.println(WiFi.localIP());
  168. }


  169. void loop() {
  170.   button.tick();
  171.   
  172.   if(WIFI_Status){//已经联网
  173.     AliyunIoTSDK::loop(); //必要函数
  174.     if (millis() - lastMsMain >= 2000){//发送数据的间隔,2秒发送一次,“云智能APP”上电源按钮的UI实时显示会有2秒延时。
  175.         ArduinoOTA.handle();
  176.         lastMsMain = millis();
  177.         //发送电源状态到云平台(高电平:1;低电平:0)
  178.         AliyunIoTSDK::send("powerstate", digitalRead(PIN_Relay));
  179.         AliyunIoTSDK::send("allPowerstate", digitalRead(PIN_Relay));
  180.     }
  181.     delay(100);
  182.   }else{//未联网
  183.     wifiConnect();//一直请求联网,绿灯快闪
  184.   }
  185.   if(digitalRead(PIN_LedRed) == digitalRead(PIN_Relay)){//同步灯的状态,灯低电平点亮
  186.     digitalWrite(PIN_LedRed,!digitalRead(PIN_Relay));
  187.   }
  188.   delay(100);
  189. }

  190. //电源的属性修改的回调函数1
  191. void powerstate(JsonVariant L)//固定格式,修改参数l
  192. {
  193.   int powerstate = L["powerstate"];//参数l
  194.   if (powerstate == 0){
  195.     digitalWrite(PIN_Relay, LOW);
  196.   }else{
  197.     digitalWrite(PIN_Relay, HIGH);
  198.   }
  199.   Serial.printf("收到的powerstate是:"); Serial.println(powerstate);
  200. }
  201. //电源的属性修改的回调函数2
  202. void allPowerstate(JsonVariant L)//固定格式,修改参数2
  203. {
  204.   int allPowerstate = L["allPowerstate"];//参数2
  205.   if (allPowerstate == 0){
  206.     digitalWrite(PIN_Relay, LOW);
  207.   }else{
  208.     digitalWrite(PIN_Relay, HIGH);
  209.   }
  210.   Serial.printf("收到的allPowerstate是:"); Serial.println(allPowerstate);
  211. }
复制代码

以上是完整代码,需要自己按照B站教程提供一些API接口。

上传需要按以下设置。此MCU型号为ESP8266 16MBIT字节(需要除以8才是我们一般认为的空间,约2M空间),有足够的空间塞下OTA代码。

2.jpg

OTA:空中升级,就是只需要WIFI就能给固件升级,无需下载器,但前提是用下载器先刷入OTA类固件。

以后刷写固件就不需要链接电脑,只需要插上插座就可以更新固件了。

如果你的flash size设置和我不一样,你需要修改

“C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.1\boards.txt”

这个文件,查找:

NodeMCU 1.0

往下找几行。以下地方

nodemcuv2.build.flash_mode=dio
nodemcuv2.build.flash_flags=-DFLASHMODE_DIO
nodemcuv2.build.flash_freq=40
###############从这里开始粘贴########################

nodemcuv2.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB)
nodemcuv2.menu.eesz.1M64.build.flash_size=1M
nodemcuv2.menu.eesz.1M64.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld
nodemcuv2.menu.eesz.1M64.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M64.upload.maximum_size=958448
nodemcuv2.menu.eesz.1M64.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M64.build.spiffs_start=0xEB000
nodemcuv2.menu.eesz.1M64.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M64.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB)
nodemcuv2.menu.eesz.1M128.build.flash_size=1M
nodemcuv2.menu.eesz.1M128.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld
nodemcuv2.menu.eesz.1M128.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M128.upload.maximum_size=892912
nodemcuv2.menu.eesz.1M128.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M128.build.spiffs_start=0xDB000
nodemcuv2.menu.eesz.1M128.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M128.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB)
nodemcuv2.menu.eesz.1M144.build.flash_size=1M
nodemcuv2.menu.eesz.1M144.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld
nodemcuv2.menu.eesz.1M144.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M144.upload.maximum_size=876528
nodemcuv2.menu.eesz.1M144.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M144.build.spiffs_start=0xD7000
nodemcuv2.menu.eesz.1M144.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M144.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB)
nodemcuv2.menu.eesz.1M160.build.flash_size=1M
nodemcuv2.menu.eesz.1M160.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld
nodemcuv2.menu.eesz.1M160.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M160.upload.maximum_size=860144
nodemcuv2.menu.eesz.1M160.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M160.build.spiffs_start=0xD3000
nodemcuv2.menu.eesz.1M160.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M160.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB)
nodemcuv2.menu.eesz.1M192.build.flash_size=1M
nodemcuv2.menu.eesz.1M192.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld
nodemcuv2.menu.eesz.1M192.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M192.upload.maximum_size=827376
nodemcuv2.menu.eesz.1M192.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M192.build.spiffs_start=0xCB000
nodemcuv2.menu.eesz.1M192.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M192.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB)
nodemcuv2.menu.eesz.1M256.build.flash_size=1M
nodemcuv2.menu.eesz.1M256.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld
nodemcuv2.menu.eesz.1M256.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M256.upload.maximum_size=761840
nodemcuv2.menu.eesz.1M256.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M256.build.spiffs_start=0xBB000
nodemcuv2.menu.eesz.1M256.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M256.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB)
nodemcuv2.menu.eesz.1M512.build.flash_size=1M
nodemcuv2.menu.eesz.1M512.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld
nodemcuv2.menu.eesz.1M512.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M512.upload.maximum_size=499696
nodemcuv2.menu.eesz.1M512.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.1M512.build.spiffs_start=0x7B000
nodemcuv2.menu.eesz.1M512.build.spiffs_end=0xFB000
nodemcuv2.menu.eesz.1M512.build.spiffs_blocksize=8192
nodemcuv2.menu.eesz.1M=1MB (FS:none OTA:~502KB)
nodemcuv2.menu.eesz.1M.build.flash_size=1M
nodemcuv2.menu.eesz.1M.build.flash_size_bytes=0x100000
nodemcuv2.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld
nodemcuv2.menu.eesz.1M.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.1M.upload.maximum_size=1023984
nodemcuv2.menu.eesz.1M.build.rfcal_addr=0xFC000
nodemcuv2.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB)
nodemcuv2.menu.eesz.2M64.build.flash_size=2M
nodemcuv2.menu.eesz.2M64.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld
nodemcuv2.menu.eesz.2M64.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M64.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M64.build.rfcal_addr=0x1FC000
nodemcuv2.menu.eesz.2M64.build.spiffs_start=0x1F0000
nodemcuv2.menu.eesz.2M64.build.spiffs_end=0x1FB000
nodemcuv2.menu.eesz.2M64.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB)
nodemcuv2.menu.eesz.2M128.build.flash_size=2M
nodemcuv2.menu.eesz.2M128.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld
nodemcuv2.menu.eesz.2M128.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M128.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M128.build.rfcal_addr=0x1FC000
nodemcuv2.menu.eesz.2M128.build.spiffs_start=0x1E0000
nodemcuv2.menu.eesz.2M128.build.spiffs_end=0x1FB000
nodemcuv2.menu.eesz.2M128.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB)
nodemcuv2.menu.eesz.2M256.build.flash_size=2M
nodemcuv2.menu.eesz.2M256.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld
nodemcuv2.menu.eesz.2M256.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M256.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M256.build.rfcal_addr=0x1FC000
nodemcuv2.menu.eesz.2M256.build.spiffs_start=0x1C0000
nodemcuv2.menu.eesz.2M256.build.spiffs_end=0x1FB000
nodemcuv2.menu.eesz.2M256.build.spiffs_blocksize=4096
nodemcuv2.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB)
nodemcuv2.menu.eesz.2M512.build.flash_size=2M
nodemcuv2.menu.eesz.2M512.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld
nodemcuv2.menu.eesz.2M512.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M512.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M512.build.rfcal_addr=0x1FC000
nodemcuv2.menu.eesz.2M512.build.spiffs_start=0x180000
nodemcuv2.menu.eesz.2M512.build.spiffs_end=0x1FA000
nodemcuv2.menu.eesz.2M512.build.spiffs_blocksize=8192
nodemcuv2.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB)
nodemcuv2.menu.eesz.2M1M.build.flash_size=2M
nodemcuv2.menu.eesz.2M1M.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld
nodemcuv2.menu.eesz.2M1M.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M1M.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M1M.build.rfcal_addr=0x1FC000
nodemcuv2.menu.eesz.2M1M.build.spiffs_start=0x100000
nodemcuv2.menu.eesz.2M1M.build.spiffs_end=0x1FA000
nodemcuv2.menu.eesz.2M1M.build.spiffs_blocksize=8192
nodemcuv2.menu.eesz.2M=2MB (FS:none OTA:~1019KB)
nodemcuv2.menu.eesz.2M.build.flash_size=2M
nodemcuv2.menu.eesz.2M.build.flash_size_bytes=0x200000
nodemcuv2.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld
nodemcuv2.menu.eesz.2M.build.spiffs_pagesize=256
nodemcuv2.menu.eesz.2M.upload.maximum_size=1044464
nodemcuv2.menu.eesz.2M.build.rfcal_addr=0x1FC000
###############到这里结束########################
nodemcuv2.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB)
nodemcuv2.menu.eesz.4M2M.build.flash_size=4M
nodemcuv2.menu.eesz.4M2M.build.flash_size_bytes=0x400000
nodemcuv2.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld

这是为这个型号的芯片提供1M或2M FLASH固件方法。然后重新打开ARDUINO IDE即可。

如有不懂,可在线留言。





打赏

参与人数 3M币 +63 收起 理由
kkdkj + 20 謝謝分享
moontree + 10 謝謝分享
阿睦 + 33

查看全部打赏

本帖被以下淘专辑推荐:

发表于 2021-9-3 21:02:04 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-3 21:25:49 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-3 21:32:54 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-4 04:28:07 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-4 07:47:27 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-4 21:10:28 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 21:28:41 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:11:24 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:32:39 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:35:33 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:56:41 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:59:17 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 01:00:50 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 11:42:34 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 14:26:00 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 14:45:31 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 14:54:49 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-9-8 16:15:42 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-9 09:29:02 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

轻APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2021-9-29 05:18 , Processed in 0.265201 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2021, MyDigit.cn

快速回复 返回顶部 返回列表