我在 Flask Web 应用程序上显示数据时遇到问题。 我将 RPi 连接到三个传感器:称重传感器、超声波和 PIR。每次检测到运动时,读数都会发送到 Flask Web 应用程序以显示实时读数。 此外,数据还存储到 Firebase 实时数据库中。
我有一个功能来获取每天的最新读数,除了项目之外的所有内容都正常显示,这基本上是一个整数计数器。
我收到错误:
据我了解,项目在某种程度上是字典,但我无法找出解决方案。
获取每日功能的最新条目:
def fetch_latest_data_each_day():
ref = db.reference('Smart Bin')
all_data = ref.get()
latest_entries = {}
if all_data:
for key, value in all_data.items():
date_part = key.split('_')[0]
if date_part not in latest_entries or key > latest_entries[date_part]['timestamp']:
# Parse and format the timestamp before storing it
timestamp = datetime.strptime(key, '%Y-%m-%d_%H-%M-%S')
formatted_timestamp = timestamp.strftime('%Y-%m-%d at %H:%M:%S')
latest_entries[date_part] = {
'timestamp': formatted_timestamp, # Store the formatted timestamp
'data': value
}
return latest_entries
index.html
<div class="historical-data">
<h1>Historical Data</h1>
{% for date, info in latest_entries.items() %}
<div class="historical-entry">
<h2>Date: {{ date }}</h2>
<div class="data">
<strong>Time of latest record:</strong> <span>{{ info.timestamp }}</span>
</div>
<div class="data">
<strong>Distance:</strong> <span>{{ info.data.distance }} cm</span>
</div>
<div class="data">
<strong>Weight:</strong> <span>{{ info.data.weight }} grams</span>
</div>
<div class="data">
<strong>Items:</strong> <span>{{ info.data.items }}</span>
</div>
</div>
{% endfor %}
</div>
最新条目数据示例: 最新条目数据结构:{'2024-06-22': {'timestamp': '2024-06-22 at 21:04:57', 'data': {'distance': 120, 'items': 2, '权重': 0}}, '2024-06-23': {'时间戳': '2024-06-23 21:27:32', '数据': {'距离': 170.8, '项目': 2, '权重': 0}}, '2024-06-24': {'时间戳': '2024-06-24 at 01:43:02', '数据': {'距离': 170.47, '项目': 2, '权重': 0}}, '2024-06-28': {'时间戳': '2024-06-28 11:50:32', '数据': {'距离': 171.52, “物品”:2,“重量”:15587}}}
附上Firebase结构和显示错误的图片。
有什么想法吗? 先谢谢大家了!
我尝试在第一个索引上索引项目 -> info.data.items[0] -> 我什么也没得到(网页上为空白)
因为您正在创建另一个字典,您很可能会意外地像这样构建(嵌套和多个
data
键值对):
{
"timestamp": "2024-06-24",
"data": {
"timestamp": "2024-06-24 at 01:43:02",
"data": {
"distance": 170.47,
"items": 2,
"weight": 0
}
}
}
所以第一个调整就是字典的访问路径和访问key的方式:
info['data']['data']['weight']