Post

StockTrackr Inventory Management using RFID Sensors and AWS

Abstract

This article presents an innovative Inventory Management System that leverages Radio-Frequency Identification (RFID) technology and Amazon Web Services (AWS) to optimize and automate inventory tracking and analysis. This system employs Raspberry Pi hardware integrated with AWS IoT to capture, process, and store real-time inventory data efficiently. The data flow encompasses AWS IoT, Lambda functions, and DynamoDB tables, ensuring data integrity and accessibility. The paper also outlines the creation of a web-based dashboard using React and API Gateway for seamless monitoring of live inventory. Furthermore, it discusses the implementation of AWS Quicksight for insightful analytics. The proposed system promises to enhance inventory management, enabling businesses to make data-driven decisions and streamline their operations effectively.

Introduction

Inventory management is a critical component of the operational efficiency and financial stability of businesses in various industries. Effective inventory management ensures that products are available when needed, reduces carrying costs, minimizes the risk of overstocking or understocking, and enables organizations to meet customer demands promptly. However, traditional inventory management practices often fall short of providing real-time visibility into stock levels, leading to inefficiencies in supply chain operations and hindering businesses’ ability to make data-driven decisions.

RFID Technology: Radio-Frequency Identification (RFID) technology represents a significant breakthrough in inventory tracking and management. RFID systems consist of tags or labels containing electronically stored information, and readers or scanners that communicate with these tags via radio waves. These tags can be attached to individual items, pallets, or containers, allowing for the precise identification and tracking of each item in real-time. Unlike traditional barcodes, RFID tags do not require a direct line of sight to be read, enabling rapid and automated data collection.

RFID technology has several advantages for inventory management. It provides real-time visibility into inventory levels, thereby reducing the risk of stockouts or overstocking. This real-time data also enables better demand forecasting and optimization of reorder points. Additionally, RFID systems offer improved accuracy in inventory counts, minimizing human errors and manual data entry. As items move through the supply chain or within a warehouse, RFID technology records their status and location automatically, ensuring that businesses have up-to-the-minute information about their inventory.

Amazon Web Services (AWS): Amazon Web Services (AWS) is a cloud computing platform that provides a wide range of services for data storage, processing, and analytics. AWS is known for its scalability, reliability, and cost-effectiveness, making it a popular choice for organizations of all sizes. AWS services include Amazon IoT, AWS Lambda, DynamoDB, S3, and Quicksight, among others.

AWS IoT enables the seamless integration of IoT devices, like RFID readers, into cloud-based applications. AWS Lambda allows for the creation of serverless functions that process data in real-time. DynamoDB is a highly scalable NoSQL database service that can handle the data generated by RFID technology efficiently. S3 provides secure and reliable storage for various types of data, including backups and exports, while AWS Quicksight offers powerful analytics and visualization tools for extracting valuable insights from data.

Combining RFID technology with AWS allows businesses to leverage the strengths of both. RFID provides real-time data capture and visibility, while AWS offers the infrastructure and services to process, store, and analyze this data at scale. This integration has the potential to revolutionize inventory management by enabling businesses to make timely, data-driven decisions and optimize their operations in ways that were previously challenging or cost-prohibitive with traditional inventory management systems. In this research paper, we will explore the synergies of RFID technology and AWS in the context of an Inventory Management System, detailing the components, data flow, and the benefits it offers to businesses.

System Architecture

The architecture of the Inventory Management System using IoT is thoughtfully structured to integrate various components, enabling efficient inventory control.

The crux of the system lies in the RFID technology, which captures item information through radio waves. In this project, RFID tags are affixed to each inventory item, similar to stickers on books. The process commences as RFID readers, situated within the inventory space, identify tags and transmit data to the core system.

Connecting to the Internet: A critical step is connecting the local-level hardware to the broader internet. This connection empowers the system to share data beyond the physical inventory confines. The Raspberry Pi plays a central role, utilizing its built-in Wi-Fi module to establish a connection with the AWS IoT Core. Within the AWS IoT Core environment, the Raspberry Pi assumes the role of a “Thing,” complete with necessary certificates for secure communication. AWS IoT Core subscribes to designated “Topics,” acting as pathways for data transmission from the hardware.

Desktop View{} Figure 1 : Raspberry Pi connected to RFID sensor

Preprocessing the Data: Raw and unrefined data from the hardware undergoes processing through AWS Lambda functions at Level 2. These Lambda functions decode and preprocess RFID tag data, enhancing its utility. Following processing, data progression is facilitated through AWS Event-Bridge. Storing Data in the Cloud: The data is now poised for cloud storage. The preferred storage solution is Amazon DynamoDB, a versatile NoSQL database service. DynamoDB excels in structured data handling and thrives in maintaining transactional records. The architecture incorporates two distinct tables: the Inventory Table and the Stock Table. The Inventory Table catalogs inventory movements, recording attributes like Reader ID, Book ID, Status (Available or Out of Stock), and timestamps for entry and exit. The Stock Table provides a snapshot of inventory composition, including essential information such as Book Name, Author Name, and current Stock count.

Desktop View{} Architecture Diagram

User Interaction: A user-centric webpage facilitates inventory management. Users can add new books to the inventory and, upon issuance, associate RFID tags with corresponding Book IDs. This action triggers an asynchronous process to update the Inventory Table’s status and timestamps.

Analytics with Amazon QuickSight: To enable data-driven insights, Amazon QuickSight comes into play. This powerful analytics service processes and visualizes the stored inventory data. QuickSight’s intuitive dashboards empower users to glean insights, identify trends, and make informed decisions based on real-time data.\linebreak

Data Backup with S3: Data resilience is ensured through a robust backup mechanism via Amazon S3. Regular database backups are generated and stored within an S3 bucket. In the event of data loss, these backups offer a reliable recovery option. In essence, the architecture marries RFID technology with AWS services, orchestrating a seamless flow of data from inventory spaces to the cloud. The Inventory Management System materializes, providing enhanced inventory control, real-time insights, robust data management, and data-driven decision-making with Amazon QuickSight.

RFID Technology:

Radio-Frequency Identification (RFID) technology stands as a transformative force in modern inventory management. This wireless technology enables the identification and tracking of objects through the use of radio waves. RFID has found applications across various industries, revolutionizing how items are monitored, traced, and managed. In the context of inventory management, RFID emerges as a game-changer by automating processes, enhancing accuracy, and providing real-time insights.

Desktop View Desktop View Figure 3 : RFID sensor and RFID Stickers

Basic Working Principle: At its core, RFID technology operates on a simple yet potent principle. It involves two key components: RFID tags and RFID readers. RFID tags are small, intelligent devices that are attached to or embedded within items to be tracked. Each tag holds a unique identifier and may store additional data about the item it’s affixed to. On the other hand, RFID readers are devices designed to communicate with these tags.

When an RFID reader emits radio waves, they act as a power source for nearby RFID tags. This energy is utilized by the tag to respond to the reader’s signal. In response, the RFID tag transmits its unique identifier and, if applicable, any supplementary information stored within it. The process involves the following steps:

  • Tag Activation: The RFID reader emits radio waves, creating an electromagnetic field. When an RFID tag enters this field, it becomes energized.
  • Data Transmission: Energized by the reader’s radio waves, the RFID tag responds by transmitting its unique identifier and any stored data.
  • Reader Reception: The RFID reader captures the transmitted data from the tag within its range.
  • Information Processing: The captured data is processed by the reader, which may involve decoding the unique identifier and deciphering any additional information stored in the tag.

The key advantage of RFID technology lies in its non-contact, non-line-of-sight nature. Unlike traditional barcode systems that require direct line-of-sight scanning, RFID tags can be read from a distance and even through obstacles like packaging materials. This attribute enhances operational efficiency, especially in scenarios where rapid, automated data capture is essential.

In the context of the Inventory Management System, RFID technology is harnessed to facilitate real-time tracking of inventory items. Each book or inventory item is equipped with an RFID tag containing unique identifying information. RFID readers stationed in the inventory space continuously emit radio waves, which power the RFID tags and retrieve data from them. This data, including book IDs and status, is then transmitted to the central system for processing and storage. This dynamic interplay between RFID tags and readers streamlines inventory management, ensuring accurate and timely tracking of inventory movements.

System Workflow

Desktop View Figure 4: Flow diagram for IMS

  • RFID Tag Scanning:
    • An RFID reader is placed in the library, and each book is equipped with an RFID tag.
    • When a library user borrows or returns a book, they place it near the RFID reader for scanning.
    • The RFID reader detects the interaction and sends the scanned data to the backend system.
  • Event Trigger:
    • The interaction event is sent to AWS IoT Core, which acts as the communication hub for IoT devices like the RFID reader.
    • AWS IoT Core publishes the event to an Amazon EventBridge event bus.
  • Event Processing with Lambda:-
    • An AWS Lambda function is triggered by the event from EventBridge.
    • The Lambda function processes the event and extracts relevant information like the Book ID and interaction status (borrowed/returned).
  • Inventory Stock Update:
    • The Lambda function uses the extracted Book ID to query the ‘Inventory\textunderscore Stock’ table in DynamoDB.
    • If the interaction status is ‘borrowed,’ the Lambda function decrements the book’s stock count by 1. If ‘returned,’ it increments the stock count by 1.
    • The updated stock count is stored back in DynamoDB.
  • Data Aggregation and CSV Sheet Update:
    • Another Lambda function is scheduled to run daily at a specific time (e.g., 9:00 PM).
    • This function scans the ‘Inventory\textunderscore Stock’ table in DynamoDB to retrieve the current stock of each book.
    • The stock data is aggregated and organized into a CSV file.
  • CSV Sheet Upload to S3:
    • The CSV sheet containing the aggregated stock data is uploaded to an S3 bucket.
    • This CSV sheet serves as a historical record of the book inventory, with a new sheet generated each day.
  • S3 Data Visualization:
    • Amazon QuickSight is used for data visualization and analytics.
    • QuickSight is connected to the S3 bucket containing the Excel sheets.
    • QuickSight interprets the Excel data and provides various visualization options.
  • Visualization Creation:
    • Within QuickSight, various visualization types (line charts, heat maps, tables, etc.) are created based on the data in the Excel sheets.
    • Users define the appropriate fields for the x-axis, y-axis, color, and other dimensions to generate meaningful visualizations.
  • Frontend Presentation:
    • The visualizations created in QuickSight can be embedded into the frontend of the web application or accessed via QuickSight’s web interface.
    • Users can interact with the visualizations, apply filters, and gain insights into the inventory trends and patterns.

By following this workflow, the system captures RFID interactions, updates book inventory in DynamoDB, aggregates and stores stock data in Excel sheets on S3, and finally, visualizes this data using Amazon QuickSight. This comprehensive approach allows for efficient inventory management, historical analysis, and informed decision-making.

Implementation

In this section, we delve into the technical intricacies of our RFID-based Inventory Management System leveraging Amazon Web Services (AWS). This comprehensive walkthrough encompasses the seamless integration of multiple AWS services, each contributing to the functionality and efficiency of the system. We will explore each step of the implementation, from setting up the RFID reader on a Raspberry Pi to orchestrating Lambda functions for data processing, storage, and aggregation. Detailed code snippets, configurations, and architectural diagrams accompany each phase, illuminating the underlying mechanics of our system. By breaking down the implementation into digestible segments, we provide a clear roadmap for readers to comprehend the orchestration of services and components, resulting in a cohesive and resilient inventory management solution.

RFID Reader Setup on Raspberry Pi: In this phase, the Raspberry Pi takes charge of interacting with the RFID reader. The reader reads RFID tags, and the data is then published to AWS IoT for further processing.

  • Import Libraries: Essential libraries are imported to facilitate RFID communication and AWS IoT interaction. These libraries help manage RFID readings and MQTT communication.

    1
    2
    3
    4
    5
    6
    
      import time
      import AWSIoTPythonSDK.MQTTLib as aws
      import json
      from mfrc522 import SimpleMFRC522
      import RPi.GPIO as GPIO
      from datetime import datetime
    
  • Configure AWS IoT Client: The AWS IoT client configuration is set up to establish a secure connection between the Raspberry Pi and AWS IoT. This ensures data transmission is secure and reliable.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
      ClientId = "IOTIMS"
      endpoint = "your_endpoint_to_iot"
      port = 8883
        
      rootca = 'base/root-ca.pem'
      private = 'base/private.pem.key'
      certificate = 'base/certificate.pem.crt'
        
      mc = aws.AWSIoTMQTTClient(ClientId)
      mc.configureEndpoint(endpoint, port)
      mc.configureCredentials(rootca, private, certificate)
        
      mc.connect()
    
  • Read and Publish RFID Data: This segment involves reading RFID data from the RFID reader attached to the Raspberry Pi. When a tag is read, the data is packaged into a JSON format and published to an AWS IoT topic for further processing.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
      id, text = reader.read()
      timestamp = str(datetime.now())
        
      rfid_data = {
          "id": id,
          "text": text,
          "timestamp": timestamp
      }
      json_data = json.dumps(rfid_data)
        
      mc.publish(
          topic='home/rfiddata',
          QoS=1,
          payload=json_data
      )
    

Lambda Function: FormatRFIDData: This Lambda function is responsible for formatting the RFID data received from AWS IoT. After formatting, it triggers another Lambda function to store the formatted data in DynamoDB.

  • Import Libraries: Required libraries are imported to aid in handling JSON data and invoking other Lambda functions.
  • Main Function: The core Lambda function handler processes the incoming event containing RFID data. It formats this data into a more structured format, including Reader ID, Book ID, and a timestamp. Following this, another Lambda function (StoreRFIDDataToDynamoDB) is invoked to store the formatted data in DynamoDB.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
      def lambda_handler(event, context):
          rfid_data = event
          formatted_data = {
              "Reader_id": rfid_data['id'],
              "Book_id": rfid_data['text'],
              "timestamp": rfid_data['timestamp'],
          }
    
          client = boto3.client('lambda')
          response = client.invoke(
          FunctionName='StoreRFIDDataToDynamoDB',
          InvocationType='Event',
          Payload=json.dumps(formatted_data)
          )
          return formatted_data
    

Lambda Function: StoreRFIDDataToDynamoDB: In this phase, the formatted RFID data is processed and updated within DynamoDB. This function manages data related to the RFID interactions.

  • Import Libraries: Essential libraries are imported to handle JSON data and interact with DynamoDB.
  • Main Function: This handler processes the incoming formatted RFID data. It checks if the RFID data already exists in the DynamoDB table. If found, it updates the status and timestamps based on the current data. If not found, a new entry is created in the table. This function also maintains the associated stock information in another DynamoDB table (Inventory\textunderscore Stock).

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
      dynamodb = boto3.resource('dynamodb')
      table = dynamodb.Table('Inventory_Test_RFID')
      stock_table = dynamodb.Table('Inventory_Stock')
    
      def lambda_handler(event, context):
          # Process event data
          reader_id = str(event['Reader_id'])
          book_id = str(event['Book_id'])
          timestamp = event['timestamp']
    
          # Check if the RFID data exists in the table
          response = table.get_item(Key={'Reader_id': reader_id, 'Book_id': book_id})
          item = response.get('Item', None)
    
          # Update status and timestamps
          if item is not None:
              # Update status based on current value
              # ...
          else:
              # Add new entry to the table
              # ...
    
          return {
              'statusCode': 200,
              'body': 'Data inserted to DynamoDB successfully'
          }    
    

Lambda Function: InventoryData_Analytics: This Lambda function collects daily stock data and aggregates it, which is then stored in the Inventory_Analytics DynamoDB table. This function serves as the backbone for data analysis.

  • Import Libraries: Necessary libraries are imported to handle JSON data and work with DynamoDB.
  • Main Function: The handler for this function initiates by retrieving the current date. It scans the Inventory_Stock DynamoDB table to gather stock data. This data is aggregated based on book names, and the aggregated data is saved to the Inventory_Analytics table.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
      dynamodb = boto3.resource('dynamodb')
      inventory_stock_table = dynamodb.Table('Inventory_Stock')
      inventory_analysis_table = dynamodb.Table('Inventory_Analytics')
    
      def lambda_handler(event, context):
          current_date = get_current_date()
          response = inventory_stock_table.scan()
          items = response.get('Items', [])
            
          stock_data = {}
    
          for item in items:
              # Aggregate stock data
              # ...
    
          save_data_to_dynamodb(stock_data, current_date)
    
          return {
              'statusCode': 200,
              'body': json.dumps('Hello from Lambda!')
          }    
    

Lambda Function: InventoryDataToS3: This Lambda function is involved in uploading aggregated data from the Inventory_Analytics DynamoDB table to an S3 bucket. The data is stored in a CSV format, making it accessible for data analytics.

  • Import Libraries and Setup Layers: We’ll import essential libraries for managing JSON data and interfacing with DynamoDB. Additionally, we’ll leverage the Pandas library. To incorporate external libraries into the Lambda function, we’ll establish a layer. To facilitate the utilization of the Pandas library within the Lambda function, we’ll construct a layer. This layer will contain the necessary Pandas files and dependencies. By implementing this approach, we ensure that the Lambda function remains streamlined while still having access to the Pandas functionality.
  • Main Function: This handler scans the Inventory_Analytics DynamoDB table to retrieve aggregated data. The data is then converted into a pandas DataFrame. Afterward, the DataFrame is temporarily stored in a CSV format. This CSV file is then uploaded to an S3 bucket to enable further data analytics using tools like Amazon QuickSight.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
      dynamodb = boto3.resource('dynamodb')
      s3 = boto3.client('s3')
      inventory_analysis_table = dynamodb.Table('Inventory_Analytics')
      bucket_name = 'inventoryanalyticsdata'
      object_key = 'inventory_analytics.csv'
    
      def lambda_handler(event, context):
          response = inventory_analysis_table.scan()
          items = response.get('Items', [])
    
          df = pd.DataFrame(items)
    
          temp_csv_path = '/tmp/temp.csv'
          df.to_csv(temp_csv_path, index=False)
    
          try:
              s3.upload_file(temp_csv_path, bucket_name, object_key)
              return {
                  'statusCode': 200,
                  'body': json.dumps('Data saved to S3 successfully!')
              }
          except Exception as e:
              return {
                  'statusCode': 500,
                  'body': json.dumps(f'Error: {str(e)}')
              }
    

Benefits

The implementation of our RFID based inventory management system using AWS Services has had a significant impact on our business operations. The integration of AWS IoT core with our RFID readers has streamlined our inventory management process, enabling real-time data capture and processing for accurate monitoring stock levels. This has led to better resource allocation and time savings.

By leveraging AWS Lambda functions, we have achieved on-demand compute power, which means resources are allocated precisely when needed, reducing idle time and saving costs. The automatic scaling provided by Lambda ensures our system can handle fluctuations in RFID data influx seamlessly.

The data visualization capabilities of Amazon QuickSight have been transformative. Our team can now generate insightful graphs and charts in near real-time, enabling quicker and informed decision-making. This has led to improved inventory planning, reducing instances of stockouts or overstocking.

Adopting AWS services has led to substantial reduction in infrastructure costs. We no longer require dedicated servers for data processing or storage. AWS’s pay as you go model allows us to pay only for the resources we use, resulting in efficient cost management. AWS’s cloud infrastructure has provided us with unparalleled scalability. The system can effortlessly accommodate increased data volume. This adaptability ensures our inventory management solution remains robust and efficient even as our operations expand.

Overall, the integration of AWS services into our RFID-based inventory management system has yielded a myriad of benefits, significantly impacting the way we operate. Our innovation showcases the substantial advantages of harnessing cutting-edge cloud solutions to address real-world business challenges.

Desktop View Desktop View QuickSight Analytics

Desktop View Output of the project

Conclusion

Our RFID-based Inventory management system has ushered in an era of efficiency and accuracy. Through AWS services and IoT technology, we transformed traditional inventory management into a dynamic process. By automating data collection with AWS IoT Core and RFID, we gained real-time visibility into inventory movements. Amazon DynamoDB provided scalable database for storing and retrieving data, enhancing inventory control.Amazon QuickSight’s data visualization capabilities empowered us with actionable insights. Our success stems from collaborative efforts and innovative solutions.

This post is licensed under CC BY 4.0 by the author.