Skip to content

This is a GraphQL API Microservice that exposes data collected from gauges and sensors in a Automated Oil Plant. Data stream goes to a MongoDB database through a separated subsystem. Data exposed to the client request come from another subsystem. This approuch decouple data stream acquisition from data stream delivering to clients.

Notifications You must be signed in to change notification settings

miguelamello/nestjs-graphql-iot-monitor

Repository files navigation

GraphQL API for IoT Applications

An oil plant has multiple pressure and temperature gauges installed throughout its facilities to monitor various processes and equipment. The plant management wants to develop an IoT-based system to monitor and track the readings from these gauges in real-time. The goal is to ensure that the pressure and temperature levels are within the desired ranges to maintain the safe and efficient operation of the plant.

API Documentation

Here's an outline of how the system could be designed using Node.js and GraphQL:

1) Device Management:

  • Define a Device type in the GraphQL schema to represent a gauge device.
  • Include fields such as id, name, location, type, etc., to provide relevant information about each gauge.
  • Implement resolvers to retrieve the device details, including their readings.

2) Real-time Data Acquisition:

  • Integrate IoT devices (pressure and temperature gauges) with a data acquisition system.
  • Use appropriate protocols (e.g., MQTT) to collect readings from the gauges periodically.
  • Store the gauge readings in a database or in-memory data store for further processing and retrieval.

3) GraphQL API for Gauge Readings:

  • Define a Reading type in the GraphQL schema to represent the gauge readings.
  • Include fields such as id, deviceId, timestamp, pressure, temperature, etc.
  • Implement resolvers to retrieve the latest readings for each gauge, as well as historical data.

4) Real-time Monitoring and Alerts:

  • Develop a real-time monitoring component to analyze the gauge readings.
  • Set up thresholds or ranges for pressure and temperature values to determine if they are within acceptable limits.
  • Implement a mechanism to trigger alerts or notifications (e.g., email, SMS, push notifications) when a gauge reading exceeds the defined thresholds.

5) GraphQL Subscriptions for Real-time Updates:

  • Utilize GraphQL subscriptions to enable real-time updates and push notifications to clients.
  • Subscriptions can be used to receive updates whenever there is a new gauge reading or an alert is triggered.

6) Dashboard and Visualization:

  • Develop a web-based dashboard or visualization tool to display the gauge readings and their status.
  • Utilize GraphQL queries to fetch the necessary data from the backend and present it in a user-friendly format.
  • Implement interactive charts, graphs, and visualizations to provide an intuitive overview of the pressure and temperature levels.

Conclusion

By following this approach, the oil plant can effectively monitor the pressure and temperature gauges in real-time, detect anomalies, and respond promptly to any critical situations. The GraphQL API provides a flexible and efficient way to retrieve gauge data, subscribe to real-time updates, and integrate with frontend applications or other systems within the plant's infrastructure.

About

This is a GraphQL API Microservice that exposes data collected from gauges and sensors in a Automated Oil Plant. Data stream goes to a MongoDB database through a separated subsystem. Data exposed to the client request come from another subsystem. This approuch decouple data stream acquisition from data stream delivering to clients.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published