我正在尝试重新格式化我在这里以更有意义的方式提出的先前问题。如果我没有提出正确的问题,或者没有提供足够的信息,请告诉我。
我有来自以下格式的 Pi 的数据,我想要一种有意义的方式来表示数据存储区 (ndb) 中的数据,以在数据到达时限制我的写入,并限制我需要进行的查询数量找到放置数据的正确位置(又名区域):
数据是这样的:
{'rssi': '*', 'source_addr': '87 :ea:66:be:19:d9 ', 'id':'rx_io_data', 'samples': [{'adc-0': 253, ' adc-1': 2}, {' adc-0': 252,'adc-1': 2 }, {'adc-0': 252, 'adc-1': 2}, {'adc-0' : 253, 'adc-1': 1}, {'adc-0': 252, 'adc-1': 2}], '选项': '\x00'}
我已经强调了重要的信息(我不需要将数据放入的代码。更适合我的模型的结构)..
所以我将使用 MAC 地址找到读数应该关联的“区域”,然后我需要使用区域查找关联的传感器(看起来很复杂),然后将传感器(adc-0,adc-1)映射到它是人类可读的映射(温度或心脏监测器)。我想保留总读数和单个传感器读数,以便稍后我可以查询所有区域或每个区域中的所有心脏监测传感器......
到目前为止,我有这个看起来很复杂,需要大量查询和输入:
class Sensors(ndb.Model): # parent Zone
sensorname = ndb.StringProperty(required=True) # Heart, Temp
sensorpin = ndb.StringProperty(required=True) # adc-0, or adc-1 ...
class Zone(ndb.Model):
zname = ndb.StringProperty(required=True) # Name of zone like "Room# or Patient#"
zonemac = ndb.StringProperty(required=True) # MAC of network adapter
homekey = ndb.KeyProperty(kind=Home, required=True)
datecreated = ndb.DateTimeProperty(auto_now_add=True)
class Readings(ndb.Model): # parent Zone
datecreated = ndb.DateTimeProperty(auto_now_add=True)
alldata = ndb.JsonProperty(required=True) # store all the readings in json for later debug
class Reading(ndb.Model): # parent is Sensor or zone ? individual sensor readings ?
readingskey = ndb.KeyProperty(kind=Readings, required=True) # full reading
value = ndb.IntegerProperty(required= True ) # or 0
name = ndb.StringProperty(required = True) # Heart sensor, temp sensor,... )
潜在选择:
class Sensors(ndb.Model):
sensorname = ndb.StringProperty(required=True) # Heart, Temp
sensorpin = ndb.StringProperty(required=True) # adc-0, or adc-1 ...
class Zone(ndb.Model):
zname = ndb.StringProperty(required=True) # Name of zone like "Room# or Patient#"
zonemac = ndb.StringProperty(required=True) # MAC of network adapter
homekey = ndb.KeyProperty(kind=Home, required=True)
sensors = ndb.StructuredProperty(Sensors, repeated = True) #sensors you can get sensor name but how do you map to adc-0 or whatever
datecreated = ndb.DateTimeProperty(auto_now_add=True)
class Readings(ndb.Model): # parent Zone
datecreated = ndb.DateTimeProperty(auto_now_add=True)
alldata = ndb.JsonProperty(required=True) # store all the readings in json for later debug
individualreading = ndb.StructuredProperty(Reading, repeat=True)
class Reading(ndb.Model): # parent is Sensor or zone ? individual sensor readings ?
readingskey = ndb.KeyProperty(kind=Readings, required=True) # full reading
value = ndb.IntegerProperty(required= True ) # or 0
name = ndb.StringProperty(required = True) # Heart sensor, temp sensor,... )
诀窍是我从设备中得到的只是 MAC 和传感器映射(ADC-0、ADC-1 和值)
所以我需要寻找它们所属的区域,以及它们映射到的传感器,以便以后搜索它们。
我做了很少的数据库建模,所以我不知道如何为此建模。我可以创建新模型并使用关键属性引用它们,或者创建结构化属性并查询这些属性(消除传感器模型),但在查找后仍然需要进行读数和读数。
任何帮助深表感谢。
是的,我已经阅读了ndb 属性和按结构化属性过滤查询以及一些类似的 SO 帖子,例如这篇文章。