我正在开展一个项目,我会快速概述一下这个问题。
沟通链是这样的:
Zigbee sensors <-> Raspberry pi with zigbee radio <-> API <-> (sever,db)
数据库包含有关每个传感器的数据(id,它们所属的树莓派,如果树莓派可以找到它们) 所以传感器对象看起来像这样:
{"id": "2",
"panId": "1234",
"communicationDeviceId": "null",
"recognized": "false"}
系统的目的是树莓派将告诉服务器它找到了哪些传感器。因此,如果树莓派应该找到3个传感器,例如。 1,2和3它只找到第一个,它将发送一个API调用,用“true”更新两个传感器识别字段。
到目前为止,我已经设置好了,所以Raspberry pi可以通过调用来找出它需要搜索哪些传感器:“api / v1 / communicationdevice / id / sensors”其中id是覆盆子pi的id。注意:communicationdevice是raspberry pi
为了更新传感器,我做了一个像这样的PUT方法:
public HttpResponseMessage Put([FromBody] ICollection<Sensor> changedSensors )
{
if (_repo.ChangeSensors(changedSensors) && _repo.Save())
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest, changedSensors);
}
其中_repo.changeSensors(changedSensors)如下所示:
public bool ChangeSensors(ICollection<Sensor> sensors)
{
try
{
foreach (var sensor in sensors)
{
_ctx.Entry(sensor).State = EntityState.Modified;
}
return true;
}
catch (Exception ex)
{
return false;
throw;
}
}
我已经测试了这个功能,它按预期工作。
我正在Microsoft Azure上部署并使用SQL Server数据库。
我的问题是: 如果与Rasberry pi关联的所有传感器的“已识别”字段设置为true,如何让我的系统对更新做出反应并测试?