点灯科技历史数据保存查看(图表的使用)

点灯科技

前言

点灯科技官网又给了例程,还是一样的不能用,自己弄了半小时可以将温湿度数据上传了。
在这里插入图片描述

一、图表功能介绍

保存历史数据,便于查看,能生成数据图,有利于数据的分析处理。

在这里插入图片描述
有组件自己的名字,还有存储键名,存储键名就是你要保存的数据。

二、代码实现

#define BLINKER_WIFI
#define BLINKER_ALIGENIE_SENSOR
 
#include <Blinker.h>
#include <DHT.h>
 
char auth[] = "xxxxxxxxxxxx";
char ssid[] = "xxxxxx";
char pswd[] = "xxxxxx";
 
BlinkerNumber HUMI("humi"); //数据组件名
BlinkerNumber TEMP("temp");
 
#define DHTPIN D7
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);
 
float humi_read = 0, temp_read = 0;
 
void heartbeat()
{
    HUMI.print(humi_read);  //上传
    TEMP.print(temp_read);
}

void dataStorage()
{
    Blinker.dataStorage("temp", temp_read); //数据组件名,数据值
    Blinker.dataStorage("humi", humi_read);
}


 
void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
 
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachHeartbeat(heartbeat);
    Blinker.attachDataStorage(dataStorage);
    dht.begin();
}
void loop()
{
    Blinker.run();
    float h = dht.readHumidity();
    float t = dht.readTemperature();
 
    if (isnan(h) || isnan(t))
    {
        BLINKER_LOG("Failed to read from DHT sensor!");
    }
    else
    {
        BLINKER_LOG("Humidity: ", h, " %");
        BLINKER_LOG("Temperature: ", t, " *C");
        humi_read = h;
        temp_read = t;
    }
 
    Blinker.delay(2000);
}

可以看的与正常的数据上传并没有什么区别,甚至都没有用到自己的组件名

 Blinker.dataStorage("temp", temp_read); //数据组件名,数据值

用这个函数便可将数据上传到图表上

  Blinker.attachDataStorage(dataStorage);

这个函数作用是关联回调功能

总结

其实本意并不是上传数据,我想上传文本上去的,弄了好久也不可以,不过已经找到了可以替代的方法。

<think>好的,用户在使用Arduino和Blinker库的时候,遇到了图表不显示实时曲线的问题,虽然键名都正确。首先,我需要确定可能的原因,然后一步步排查。 首先,用户确认键名正确,这可能排除了键名拼写错误的问题。接下来,我需要考虑Blinker的数据格式是否正确。Blinker的图表组件可能需要特定格式的数据,比如数组或带有时间戳的数据点。如果用户只是发送单个数值,而没有按照要求的结构发送,图表可能无法正确解析和显示。 然后,检查数据更新频率。如果数据发送过于频繁,Blinker服务器可能限制请求频率,导致部分数据被丢弃。反之,发送间隔过长,图表可能看起来没有更新。建议用户调整发送间隔,比如每500毫秒发送一次,观察是否有改善。 接下来,图表配置问题。用户需要在Blinker App中正确配置图表组件,确保绑定的数据键名与代码中的一致,并且图表类型设置为实时曲线。有时候,即使键名正确,配置错误也可能导致显示问题。 网络连接稳定性也是一个因素。不稳定的网络可能导致数据包丢失,图表无法持续更新。建议用户检查Wi-Fi信号强度,或者尝试在网络状况更好的环境下测试。 代码逻辑方面,用户是否正确调用了Blinker的运行函数,比如Blinker.run(),以确保数据及时处理。此外,检查是否有其他代码部分阻塞了主循环,导致数据发送延迟或中断。 还有可能,Arduino的代码中可能存在语法错误,虽然编译通过,但逻辑错误导致数据未正确发送。例如,使用Blinker.vibrate()而不是专门的数据发送函数。需要确认用户使用的是正确的函数,如Blinker.print()或特定图表相关的函数。 另外,考虑Blinker库的版本是否过旧,可能存在已知的bug。建议用户更新到最新版本,查看官方文档或社区是否有类似问题及解决方案。 最后,如果以上步骤都检查无误,可以尝试简化代码,仅保留图表相关的功能,排除其他代码的干扰。如果简化后图表正常,再逐步添加其他功能,找出冲突点。 总结,可能的解决步骤包括:验证数据格式、调整发送频率、检查图表配置、确保网络稳定、更新库版本、简化代码测试等。通过这些步骤逐步排查,应该能定位问题所在并解决图表不显示的问题。</think>好的,让我们一步步排查Blinker图表不显示实时曲线的常见问题: 1. **数据格式验证** - 确保发送的是**带时间戳的JSON数组**格式: ```arduino Blinker.print("ChartKey", "[{x:1622534400, y:25}, {x:1622534410, y:28}]"); ``` - 或使用**简化格式**(需在App设置中开启时间轴): ```arduino Blinker.print("ChartKey", "25"); // 自动附加时间戳 ``` 2. **发送频率检查** - 添加延时控制(示例): ```arduino unsigned long lastSend = 0; void loop() { if(millis() - lastSend > 500) { // 每500ms发送一次 int sensorValue = analogRead(A0); Blinker.print("ChartKey", sensorValue); lastSend = millis(); } Blinker.run(); } ``` 3. **App端配置确认** - 检查图表组件设置: 1. 进入组件编辑模式 2. 确认数据键名与代码完全一致(区分大小写) 3. 图表类型选择"动态曲线" 4. Y轴范围设置是否合理(默认0-100可能超出实际数据范围) 4. **网络诊断** - 在代码中添加状态监测: ```arduino if(Blinker.connected()) { Blinker.print("ChartKey", value); } else { Serial.println("网络未连接!"); } ``` 5. **库版本问题** - 通过Arduino IDE检查更新: 1. 工具 -> 管理库 -> 搜索"Blinker" 2. 确保版本 ≥ 1.5.0(2023年后版本优化了图表组件) 6. **最小化测试代码** ```arduino #include <Blinker.h> void setup() { Serial.begin(115200); Blinker.begin(auth, ssid, pswd); } void loop() { static int counter = 0; Blinker.print("TestChart", counter++ % 100); // 发送0-99循环数据 delay(300); Blinker.run(); } ``` **典型错误案例:** - 错误写法:`Blinker.vibrate("ChartKey", value);`(应用了震动组件的API) - 正确写法:`Blinker.print("ChartKey", value);` 完成上述检查后,如果问题依旧存在,可尝试: 1. 重启Blinker App 2. 删除组件后重新添加 3. 检查Arduino串口输出是否有错误提示 4. 尝试更换其他图表类型(如柱状图)测试基础通信是否正常 通过系统排查,通常可以定位到数据格式、发送频率或组件配置中的问题根源。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我与nano

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值