发明内容
本发明旨在克服上述现有技术的至少一种缺陷(不足),提供一种智慧室分区块链存储方法、系统、节点设备和定位方法,有利于管理和存储海量的智慧室分数据。
本发明采取的技术方案是:
一种智慧室分区块链数据存储方法,应用于区块链节点,包括:
根据地图数据和设备数据构建数据区块并进行存储,所述设备数据用于计算定位,所述地图数据用于显示所计算出的所述定位;
将所述数据区块向其它所述区块链节点广播,以使各个所述区块链节点对所述数据区块进行上链存储。
区块链节点根据用于计算定位的设备数据和用于显示所述计算出的所述定位的地图数据构建数据区块,再将数据区块广播给周边区块链节点,实现了区块链节点之间的数据同步和数据冗余备份,有利于对大量的智慧室分信息进行管理和存取,可以使终端用户更方便地从区块链节点获取相关的设备数据和地图数据,并根据所获取的设备数据和地图数据进行更快、更准的定位。
进一步地,根据地图数据和设备数据构建数据区块,包括:
根据室内的地图数据和所述室内各个区域的设备数据构建数据区块并进行存储,一个所述数据区块对应所述室内的一个区域。
通过构建数据区块将室内的地图数据和室内的各个区域的设备数据按区域进行分类存储,室内地图数据和室内同一个区域的设备数据存放在一个数据区块内,由此可以将室内的设备数据和地图数据按不同区域进行管理和存取,终端用户可以根据自身所在区域从区块链节点获取对应区域的数据区块,快速地获取计算定位的设备数据和显示定位的地图数据。
进一步地,所述数据区块包括区块头和区块体,将基本参数存储在所述区块头,将所述地图数据、所述设备数据存储在所述区块体,所述基本参数包括区域编号和区块版本信息。
通过将区域编号和区块版本信息等基本参数存储在数据区块的区块头,将地图数据和设备数据存储在数据区块的区块体中,终端用户可以根据区块头中所存储的区域编号从不同数据区块中获取对应区域的数据区块,还可以根据区块头中的区块版本信息获取到最新更新的数据区块,从数据区块中获取地图数据和设备数据,进而能够快速地、准确地计算出终端所处的位置。
进一步地,所述基本参数还包括所述地图数据的地图基本参数,所述地图基本参数包括地图名称和/或地图显示范围和/或地图尺寸和/或地图创建时间和/或地图所在行政区域。
通过存储地图基本参数,可以方便地管理存储在每个数据区块的地图数据。当数据区块中的地图数据发生数据错误或者需要数据更新时,可以根据这些地图基本参数对地图数据进行维护和更新。
进一步地,所述设备数据包括设备信息和操作信息,所述设备信息包括设备识别信息、设备位置信息和无线发射功率,所述操作信息包括无线链路损耗值。
将设备识别信息、设备位置信息、无线发射功率和无线链路损耗值存入数据区块进行管理,数据区块存储了终端进行室内定位所需的完整信息,终端可以从区块链节点中获取设备识别信息、设备位置、无线发射功率和无线链路损耗值,从而根据获取的设备识别信息、设备位置信息、无线发射功率和无线链路损耗值计算出终端的定位。
进一步地,所述操作信息还包括无线设备物联信息,所述无线设备物联信息记录所述无线设备与其它通信设备的历史通信连接。
将无线设备物联信息存入数据区块进行管理,运维人员可以根据无线设备物联信息了解该无线设备具体与那些通信设备有通信连接和相关通信情况,从而对该无线设备进行维护。
进一步地,所述数据区块还包括区块标识和前区块记录,将前一个所述数据区块的所述区块标识存储在所述前区块记录。
数据区块包括区块标识和前区块记录,每个数据区块对应有一个区块标识,前一个数据区块的区块标识会存储在后一个数据区块的前区块记录中,由此将多个数据区块存储形成区块链。
进一步地,所述操作信息还包括对所述数据区块进行写入或修改的操作者的公钥和签名,所述签名根据对所述数据区块进行写入或修改的操作者的私钥、所述前区块记录和所述设备识别信息进行加密运算后生成。
对数据区块进行写入或修改的操作者具有一对公钥和私钥,根据私钥、前区块记录和设备识别信息进行加密运算后生成签名并与公钥一起存储在数据区块中的操作信息,可以防止数据被恶意篡改,提高了智慧室分数据存储的安全性。
一种智慧室分区块链数据存储系统,应用于区块链节点,包括:
区块构建模块,用于根据地图数据和设备数据构建数据区块并进行存储,所述设备数据用于计算定位,所述地图数据用于显示所计算出的所述定位;
区块广播模块,用于将所述数据区块向其它所述区块链节点广播,以使各个所述区块链节点对所述数据区块进行上链存储。
区块构建模块根据用于计算定位的设备数据和用于显示所述计算出的所述定位的地图数据构建为数据区块,区块广播模块再将数据区块广播给周边区块链节点,实现了区块链节点之间的数据同步和数据冗余备份,有利于对大量的智慧室分信息进行管理和存取,可以使终端用户更方便地从区块链节点获取相关的设备数据和地图数据,并根据所获取的设备数据和地图数据进行更快、更准的定位。
一种智慧室分区块链节点设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述智慧室分区块链存储方法。
一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述智慧室分区块链存储方法。
一种智慧室分区块链定位方法,应用于终端,包括:
获取初始位置;
根据所述初始位置从附近的区块链节点获取智慧室分区块链存储方法中所述的数据区块;
接收至少三个无线设备的无线信号;
从所述数据区块中获取地图数据和所述无线设备对应的设备数据;
根据所述无线信号和所述设备数据,计算出定位;
根据所述地图数据,显示所计算出的所述定位。
终端从区块链节点中获取设备数据和地图数据,在终端本身对获得的设备数据和地图数据进行定位运算,解决了终端定位计算在服务器执行消耗大量资源的问题,从而节省了服务器的资源,而且可以实现快速、准确的定位。
与现有技术相比,本发明的有益效果为:
(1)本发明将智慧室分产生的庞大信息存储在对应的数据区块,减少了服务器负荷,将定位计算放在终端本地,节省了服务器的资源,建设成本低,实用性高,而且对单个的数据区块进行分析就可实现告警分析、数据变化动态曲线。
(2)通过不同区块链节点之间对智慧室分信息的数据同步和数据冗余备份,更有效地保证数据的可靠性。
(3)数据区块采用数字加密签名和分布式存储,数据难以被篡改,更有效地提高数据的安全性。
(4)数据区块存储了终端进行室内定位所需的完整信息,便于终端可以从区块链节点中获取这些信息进行快速、准确的定位。
具体实施方式
本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
实施例1
在本发明一个实施例中,提供一种智慧室分区块链存储方法,应用于区块链节点,如图1和图2所示,方法具体步骤包括:
S101.根据地图数据和设备数据构建数据区块并进行存储,设备数据用于计算定位,地图数据用于显示所计算出的定位;
S102.将数据区块向其它区块链节点广播,以使各个区块链节点对数据区块进行上链存储。
将地图数据和设备数据构建成数据区块存储在本地的区块链节点里,由此可以使区块链节点对海量的地图数据和设备数据进行管理;数据区块构建完成后区块链节点将数据区块广播给其它的区块链节点,其它的区块链节点接收到该区块链节点广播的数据区块后将数据区块进行上链存储。
区块链节点根据用于计算定位的设备数据和用于显示所述计算出的所述定位的地图数据构建数据区块,再将数据区块广播给周边区块链节点,实现了区块链节点之间的数据同步和数据冗余备份,有利于对大量的智慧室分信息进行管理和存取,可以使终端用户更方便地从区块链节点获取相关的设备数据和地图数据,并根据所获取的设备数据和地图数据进行更快、更准的定位。
将本发明实施例应用于具体的智慧室分系统时,可以采用低成本的服务器作为区块链节点实现本发明实施例的方法,将区块链节点和智慧室分系统的设备相结合,可以使得智慧室分系统所产生的海量数据都可以由中心化的存储方式转变为区块链的数据存储方式,这种方式可以使得智慧室分系统在项目的初期建设及最终建设成本都得到有效降低,而且是通过低成本投入实现大数据的高可用及负载均衡等应用。
在一个可选的实施例中,S101中根据地图数据和设备数据构建数据区块并进行存储,具体包括:
根据室内的地图数据和室内各个区域的设备数据构建数据区块并进行存储,一个数据区块对应室内的一个区域。
区块链节点根据室内的地图数据和室内的各个区域的设备数据构建数据区块,室内地图数据和室内的同一个区域的设备数据存放在同一个数据区块,以使地图数据和设备数据按区域存储在区块链节点中,方便管理数据。
通过构建数据区块将室内的地图数据和室内的各个区域的设备数据按区域进行分类存储,室内同一个区域的设备数据和地图数据存放在一个数据区块内,由此可以将室内的设备数据和地图数据按不同区域进行管理。室内的各个区域划分可以根据实际的情况进行布置,可以以建筑为单位,也可以以建筑内的每一层为单位,还可以是范围更细或者范围更大的区域作为一个单位进行划分,例如:可以是构建数据区块时将一栋建筑楼的同一个楼层作为一个区域,将该区域内的地图数据和所有设备数据存放在同一个数据区块里。
在一个可选的实施例中,数据区块包括区块头和区块体,将基本参数存储在区块头,将地图数据、设备数据存储在区块体,基本参数包括区域编号和区块版本信息。
通过将区域编号和区块版本信息等基本参数存储在数据区块的区块头,将地图数据和设备数据存储在数据区块的区块体中,终端用户可以根据区块头中所存储的区域编号从不同数据区块中获取对应区域的数据区块,还可以根据区块头中的区块版本信息获取到最新更新的数据区块,从数据区块中获取到准确的地图数据和设备数据,进而能够快速地、准确地计算出终端所处的位置。
示例性地,区块头可以采用321字节的数据结构体,行政区域编号可以为国家或省或区县的编号,根据行政区域编号能够得知区块所在的国家或省或区县;区块版本信息为区块版本号,可以采用4个字节的自增型的无符号整型,区块发生任意变化都会导致区块版本号的增加,区块版本号随根据区块的变化而自动增加,运维人员可以根据区块版本号的增加得知区块发生了变化。
在一个可选的实施方式中,基本参数还包括地图数据的地图基本参数,地图基本参数包括地图名称和/或地图显示范围和/或地图尺寸和/或地图创建时间和/或地图所在行政区域。
示例性地,如表1所示,地图显示范围具体可以包括地图的经度、纬度和海拔高度,地图尺寸可以包括地图的宽度和高度,地图创建时间为距离1900-1-1 00:00:00(GMT)的秒数,为8个字节的无符号整型,通过存储地图基本参数,可以方便地管理存储在每个数据区块的地图数据。当数据区块中的地图数据发生数据错误或者需要数据更新时,可以根据这些地图基本参数对地图数据进行维护和更新。
表1
数据项 |
描述 |
长度 |
区块版本号 |
每次区块发生变化版本号会增1 |
4字节 |
行政区域编号 |
地图的唯一编号,通过UTF-8编码 |
128字节 |
地图名称 |
地图的唯一编号,通过UTF-8编码 |
128字节 |
地图经度 |
|
8字节 |
地图纬度 |
|
8字节 |
地图海拔高度 |
|
8字节 |
地图宽度 |
|
8字节 |
地图高度 |
|
8字节 |
地图创建时间 |
距离1900-1-1 00:00:00(GMT)的秒数 |
8字节 |
地图所在行政区域 |
国家区域编码 |
8字节 |
在一个可选的实施例中,设备数据包括设备信息和操作信息,设备信息包括设备识别信息、设备位置信息和无线发射功率,操作信息包括无线链路损耗值。
将设备识别信息、设备位置信息、无线发射功率和无线链路损耗值按区域存入数据区块进行管理,数据区块存储了终端进行室内定位所需的完整信息,终端可以从区块链节点中获取设备识别信息、设备位置、无线发射功率和无线链路损耗值,从而根据获取的设备识别信息、设备位置信息、无线发射功率和无线链路损耗值计算出终端的定位。
示例性地,如表2所示为设备数据的具体信息,设备识别信息具体可以包括设备名称、设备序号和设备状态,其中设备名称为UTF-8编码的字符串,为64字节,设备序号为2个字节的无符号整型,设备状态由1个字节表示(0:表示正常;1:表示损坏),根据设备的设备名称、设备序号对设备数据进行存储,方便数据管理人员对设备数据进行管理;将设备状态用0表示设备正常,1表示设备损坏,由此运维人员可以清晰地了解到当前设备的具体状态,并根据设备状态对设备进行维护;设备位置信息具体包括设备的X坐标、设备的Y坐标,设备X坐标为4字节的有符号整型;设备Y坐标为4字节的有符号整型,终端通过从数据区块获取设备的具体坐标信息从而能更准确的计算出设备与终端的距离;设备信息还包括设备广播包频率、设备蓝牙MAC地址、设备广播包UUID、设备广播包MINOR和设备广播包MAJOR,对设备广播包的频率、硬件地址和软件地址进行统一存储,便于终端和/或运维人员获取设备的通信地址。
表2
数据项 |
描述 |
长度 |
设备名称 |
UTF-8编码 |
64字节 |
设备序号 |
设备的编号 |
2字节 |
设备状态 |
0:表示正常;1:表示损坏 |
1字节 |
设备类型 |
|
1字节 |
设备X坐标 |
|
4字节 |
设备Y坐标 |
|
4字节 |
设备发射功率 |
|
2字节 |
设备广播包频率 |
|
2字节 |
设备蓝牙MAC地址 |
|
6字节 |
设备广播包UUID |
|
16字节 |
设备广播包MAJOR |
|
2字节 |
设备广播包MINOR |
|
2字节 |
在一个可选的实施方式中,操作信息还包括无线设备物联信息,无线设备物联信息记录无线设备与其它通信设备的历史通信连接。
数据区块存储了无线设备物联信息,从数据区块获取无线设备物联信息即可知道该无线设备与其它通信设备的历史通信连接情况。
通过获取存储设备的无线设备物联信息,运维人员可以根据设备的无线设备物联信息了解该无线设备具体与那些通信设备有通信连接和相关通信情况,从而对该无线设备进行维护。
在一个可选的实施方式中,数据区块还包括区块标识和前区块记录,将前一个数据区块的区块标识存储在前区块记录。
数据区块包括区块标识和前区块记录,每个数据区块对应有一个区块标识,前一个数据区块的区块标识会存储在后一个数据区块的前区块记录中,由此将多个数据区块存储形成区块链。
通过根据区块标识将变化前后的数据区块形成关联存储,方便管理。
在一个可选的实施例中,操作信息还包括对数据区块进行写入或修改的操作者的公钥和签名,签名根据对数据区块进行写入或修改的操作者的私钥、前区块记录和设备识别信息进行加密运算后生成。
对数据区块进行写入或修改的操作者具有一对公钥和私钥,当操作者对数据区块进行操作时,根据私钥、前区块记录和设备识别信息进行加密运算后生成签名并与公钥一起存储在数据区块中的操作信息,可以防止数据被恶意篡改,提高了智慧室分数据存储的安全性。示例性地,如表3所示为操作信息数据结构体,公钥是通过secp256k1非对称加密算法加密而成,签名的原文为字符串,是由前区块记录+设备序号字符串+操作时间字符串(格式为yyyyMMddHHmmss)组成并通过SHA256计算后得出的。
表3
基于上述方案,本发明的方法可以通过区块链节点对智慧室分系统产生的海量数据进行管理和存储,能够更好地从区块链节点获取室内定位所需的的完整信息,可以实现低成本投入达到大数据的高可用及负载均衡的效果。而且智慧室分系统产生信息是分布在各个区块上的,在有效减少负荷的同时由于采用了数字签名及分布式部署,数据难以篡改,系统信息也更加安全。
在一个实施例中,还提供一种智慧室分区块链节点设备,包括存储器和处理器,存储器中存储有计算机程序,处理器执行计算机程序时实现上述智慧室分区块链存储方法。
在一个实施例中,还提供一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述智慧室分区块链存储方法。
实施例2
基于与实施例1同一个发明构思,在本实施例中,具体如图3所示为智慧室分区块链数据存储系统的系统架构图,还提供一种智慧室分区块链数据存储系统,应用于区块链节点,包括:
区块构建模块,用于根据地图数据和设备数据构建数据区块,设备数据用于计算定位,地图数据用于显示所计算出的定位;
区块广播模块,用于将数据区块向其它区块链节点广播,以使各个区块链节点对数据区块进行上链存储。
区块构建模块根据用于计算定位的设备数据和用于显示所述计算出的所述定位的地图数据构建为数据区块,区块链节点再将数据区块广播给周边区块链节点,实现了区块链节点之间的数据同步和数据冗余备份,有利于对大量的智慧室分信息进行管理和存取,可以使终端用户更方便地从区块链节点获取相关的设备数据和地图数据,并根据所获取的设备数据和地图数据进行更快、更准的定位。
在一个可选的实施例中,区块构建模块具体用于根据室内的地图数据和所述室内各个区域的设备数据构建数据区块并进行存储,一个所述数据区块对应所述室内的一个区域。
通过区块构建模块构建数据区块将室内的地图数据和室内的各个区域的设备数据按区域进行分类存储,室内地图数据和室内同一个区域的设备数据存放在一个数据区块内,由此可以将室内的设备数据和地图数据按不同区域进行管理和存取,终端用户可以根据自身所在区域从区块链节点获取对应区域的数据区块,快速地获取计算定位的设备数据和显示定位的地图数据。
在一个可选的实施例中,所述数据区块包括区块头和区块体,将基本参数存储在所述区块头,将所述地图数据、所述设备数据存储在所述区块体,所述基本参数包括区域编号和区块版本信息。
通过将区域编号和区块版本信息等基本参数存储在数据区块的区块头,将地图数据和设备数据存储在数据区块的区块体中,终端用户可以根据区块头中所存储的区域编号从不同数据区块中获取对应区域的数据区块,还可以根据区块头中的区块版本信息获取到最新更新的数据区块,从数据区块中获取地图数据和设备数据,进而能够快速地、准确地计算出终端所处的位置。
在一个可选的实施例中,所述基本参数还包括所述地图数据的地图基本参数,所述地图基本参数包括地图名称和/或地图显示范围和/或地图尺寸和/或地图创建时间和/或地图所在行政区域。
通过存储地图基本参数,可以方便地管理存储在每个数据区块的地图数据。当数据区块中的地图数据发生数据错误或者需要数据更新时,可以根据这些地图基本参数对地图数据进行维护和更新。
所述设备数据包括设备信息和操作信息,所述设备信息包括设备识别信息、设备位置信息和无线发射功率,所述操作信息包括无线链路损耗值。
将设备识别信息、设备位置信息、无线发射功率和无线链路损耗值存入数据区块进行管理,数据区块存储了终端进行室内定位所需的完整信息,终端可以从区块链节点中获取设备识别信息、设备位置、无线发射功率和无线链路损耗值,从而根据获取的设备识别信息、设备位置信息、无线发射功率和无线链路损耗值计算出终端的定位。
在一个可选的实施例中,所述操作信息还包括无线设备物联信息,所述无线设备物联信息记录所述无线设备与其它通信设备的历史通信连接。
将无线设备物联信息存入数据区块进行管理,运维人员可以根据无线设备物联信息了解该无线设备具体与那些通信设备有通信连接和相关通信情况,从而对该无线设备进行维护。
在一个可选的实施例中,所述数据区块还包括区块标识和前区块记录,将前一个所述数据区块的所述区块标识存储在所述前区块记录。
数据区块包括区块标识和前区块记录,每个数据区块对应有一个区块标识,前一个数据区块的区块标识会存储在后一个数据区块的前区块记录中,由此将多个数据区块存储形成区块链。
在一个可选的实施例中,所述操作信息还包括对所述数据区块进行写入或修改的操作者的公钥和签名,所述签名根据对所述数据区块进行写入或修改的操作者的私钥、所述前区块记录和所述设备识别信息进行加密运算后生成。
对数据区块进行写入或修改的操作者具有一对公钥和私钥,根据私钥、前区块记录和设备识别信息进行加密运算后生成签名并与公钥一起存储在数据区块中的操作信息,可以防止数据被恶意篡改,提高了智慧室分数据存储的安全性。
实施例3
基于与实施例1同一个发明构思,在一个实施例中,还提供一种智慧室分区块链定位方法,应用于终端,包括:
获取初始位置;
根据初始位置从附近的区块链节点获取如实施例1中所述的数据区块;
接收至少三个无线设备的无线信号;
从数据区块中获取地图数据和无线设备对应的设备数据;
根据无线信号和设备数据,计算出定位;
根据地图数据,显示所计算出的定位。
当终端需要进行自身定位时,终端首先获取自身的初始位置,再根据初始位置从附近的区块链节点获取对应的数据区块,终端通过扫描接收附近至少三个无线设备的无线信号,根据接收到的无线信号得到对应无线设备的接收功率,并从对应的数据区块中获取存储在数据区块的地图数据和对应无线设备的设备数据,根据至少三个无线设备的无线信号得到的接收功率和获取的对应的设备数据进行计算得出终端当前的定位,并将所计算出的定位根据地图数据显示在地图上。
终端通过从区块链节点中获取对应无线设备的设备数据和地图数据,在终端本身对获得的设备数据和地图数据进行定位运算,解决了终端定位计算在服务器执行消耗大量资源的问题,从而节省了服务器的资源。
在具体实施过程中,终端可以是手机,当终端在移动过程中需要对自身进行定位时,首先获取自身的初始位置信息,随后移动终端根据初始位置从附近网速最快的区块链节点获取对应的数据区块,通过扫描接收到附近至少三个无线设备的无线信号,无线设备可以是蓝牙天线,根据接收到的至少三个蓝牙天线的无线信号得到对应蓝牙天线的接收功率及天线ID,再从网络最快的区块链节点获取对应的数据区块存储的对应设备的设备数据和地图数据,具体为获取对应设备的设备位置信息、无线发射功率和无线链路损耗值,根据获取的三个设备的设备位置信息、无线发射功率、无线链路损耗值和得到的接收功率在移动终端进行定位计算,得到当前移动终端所处的位置信息,最后将计算出的位置信息根据地图数据在地图上显示出来,将计算出的位置信息在地图上显示具体可以是在地图上显示终端图标和所处位置的经纬度和高度。
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。