Introduction
In case you are utilizing or planning to make use of AWS IoT Core to handle your fleet of Web of Issues (IoT) units and questioning find out how to seek for and uncover a selected machine or a set of units based mostly on their identities and capabilities, then utilizing attributes for AWS IoT factor sorts is likely one of the advisable methods to make machine discovery simpler.
A ‘factor’ is the logical identify for entities just like the IoT-enabled units in AWS IoT Core. Whereas provisioning a factor, you’ll be able to connect searchable attributes to allow simpler identification and looking out inside the AWS IoT registry.
Why would somebody wish to search issues from the AWS IoT registry? To reply that query, let’s take the use case of related lights the place a Lighting-as-a-Service supplier (LaaS) or their clients (by way of self-service portals) want to find out from their lighting put in base, what number of are of a selected product-type, model-number, wattage, luminosity, coloration, and manufacturing batch.
AWS IoT Core restricts attaching solely 3 searchable attributes to a factor, and this is probably not sufficient if you might want to uncover units based mostly on further attributes. On this weblog publish, we are going to present find out how to mitigate this problem utilizing a mix of AWS IoT Core factor sorts and AWS IoT Gadget Administration fleet indexing.
With fleet indexing, fleet directors can arrange, examine, and troubleshoot fleet of units. They’ll question a bunch of units, and mixture statistics on machine information which are based mostly on completely different combos of machine attributes, together with state, connectivity, and machine violations. For instance, you’ll be able to question data, equivalent to what number of gentle bulbs of a sure mannequin put in at a sure location are presently disconnected and are operating the older model of firmware.
Stipulations
This weblog publish requires a fundamental understanding of the machine provisioning characteristic of AWS IoT Core and the fleet indexing characteristic of AWS IoT Gadget Administration.
Walkthrough
Let’s now see find out how to add a non-searchable attribute to a factor and find out how to use fleet indexing for search even whereas utilizing non-searchable attributes.
Let’s provision a factor ‘MyFirstThing’ and fasten searchable attributes to it. As you’ll be able to see within the following snapshot, you’ll be able to solely connect 3 searchable attributes.
So as to add extra attributes to this factor, you’ll be able to connect a ‘factor kind’ to the factor.
‘Factor kind’ permits you to retailer description and configuration data that’s frequent to all issues related to the identical factor kind. This simplifies the administration of issues within the registry. For instance, as a substitute of assigning attributes to every gentle bulb individually, you’ll be able to create a factor kind referred to as ‘LightBulb’ and affiliate attributes of a lightweight bulb like serial quantity, luminosity, wattage, and extra. Furthermore, for those who change the factor kind of the present factor to ‘LightBulb,’ it will inherit the attributes of the factor kind and you can specify values for every of the attributes outlined within the ‘factor kind.’
Although assigning a factor kind to a factor is an non-obligatory exercise, its utilization unlocks a brand new part of 47 further ‘non-searchable factor attributes.’ With this affiliation, you now have entry to a complete of fifty attributes as highlighted within the following snapshot.
For this publish, we have now already created a factor kind ‘LightBulb’ with searchable attributes, equivalent to producer, serial quantity, and wattage, and assigned it to ‘MyFirstThing.’ Now we have additionally connected 3 non-searchable attributes (coloration, firmware kind, luminosity) as you’ll be able to see within the following snapshot.
Now, let’s attempt to search issues utilizing the ‘listing issues’ command from the AWS CLI. We are able to see that looking out with ‘searchable’ attributes, the command returns the matching factor ‘LightBulb_1’.
aws iot list-things --attribute-name "wattage" --attribute-value '40'
{
"issues": [
{
"thingName": "LightBulb_1",
"thingTypeName": "LightBulb",
"thingArn": "arn:aws:iot:ap-south-1:************:thing/LightBulb_1",
"attributes": {
"Color": "White",
"Firmware_Type_Version": "Smart_LED.1.0",
"Luminosity": "100",
"manufacturer": "xyz_corp",
"serialnumber": "123",
"wattage": "40"
},
"version": 5
}
]
}
Nonetheless, looking out with ‘non-searchable’ attributes, the command returns nothing because the attributes added by way of factor kind are labeled as non-searchable.
aws iot list-things --attribute-name "Colour" --attribute-value 'White'
{
"issues": []
}
That is the place the AWS IoT Gadget Administration fleet indexing characteristic helps, enabling you to run search queries even on ‘non-searchable’ factor attributes.
With AWS IoT Gadget Administration fleet indexing, you’ll be able to index, search, and mixture your machine information from the next sources: AWS IoT registry, AWS IoT Gadget Shadow, AWS IoT connectivity, and AWS IoT Gadget Defender violations.
Whereas the fleet Indexing characteristic has the aforementioned as its major capabilities, for this weblog publish we are going to focus solely on indexing and looking out based mostly on factor kind attributes.
Now, let’s allow fleet indexing (skip this step if already enabled) utilizing AWS IoT console, nevertheless it will also be enabled from the CLI. Choose Settings from the left panel and scroll all the way down to Fleet indexing and choose Handle indexing as proven following:
On the Handle fleet indexing display, toggle the change to activate fleet indexing as proven following and choose Replace on the backside of display to avoid wasting settings.
Different verify bins proven on the earlier display permit indexing and search queries based mostly on machine shadows, connectivity standing, and Gadget Defender violations that are out of the scope of this publish and therefore will not be chosen right here.
After fleet indexing is enabled, choose Superior search from the AWS IoT Handle Issues console as proven within the following snapshot.
Utilizing the search field, seek for non-searchable attributes, for instance, ‘coloration’ having worth ‘white’ and you will note that the issues with the matching attribute worth will seem because the search end result on the backside of the display as proven following.
You may also use AWS CLI to run the same fleet index question for units with non-searchable attribute ‘coloration’ having worth ‘white,’ whereby factor(s) with matching attribute values are returned, as indicated following.
aws iot search-index –query-string ‘attributes.coloration=White’
{
"issues": [
{
"thingName": "LightBulb_1",
"thingId": "******************************",
"thingTypeName": "LightBulb",
"attributes": {
"Color": "White",
"Firmware_Type_Version": "Smart_LED.1.0",
"Luminosity": "100",
"manufacturer": "xyz_corp",
"serialnumber": "123",
"wattage": "40"
}
}
]
}
Nonetheless, it’s also vital to notice that AWS IoT Gadget Administration fleet indexing is meant for administrative functions, permitting directors to arrange, examine, and troubleshoot fleets of units and needs to be used for such actions solely.
Fleet indexing and search options are metered by the variety of index updates and search queries executed. Check with the pricing web page for additional particulars and likewise refer its limits and quotas right here.
Conclusion
On this publish, I’ve proven you find out how to improve machine discoverability utilizing AWS IoT factor sorts and AWS IoT Gadget Administration fleet indexing. Factor sorts allow you to connect further attributes (non-searchable) to issues, and regardless of these attributes being non-searchable, you need to use the fleet indexing characteristic to go looking based mostly on non-searchable attributes, enabling you to conveniently filter and discover these units out of your massive fleet of IoT units.
For extra AWS IoT Core studying assets, please go to the web site.