Skip to content

istSOS/istSOS4-GrafanaPlugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 

Repository files navigation

istSOS4 Grafana Plugin

This plugin enables Grafana integration with istSOS4 servers, providing comprehensive data visualization and dashboard capabilities for OGC SensorThings API implementations.


πŸš€ Features

SensorThings API Integration

  • Full support for OGC SensorThings API implementations
  • Compatible with istSOS4 server instances

Advanced Filtering

Comprehensive filter system supporting:

  • Basic filters: Common fields like ids, name and description
  • Temporal filters: Date ranges and temporal functions
  • Spatial filters: Geometric queries intersect and within geometries such as (Point, Polygon, LineString)
  • Measurement filters: Sensor-specific data filtering like Unit and Symbol Measurement
  • Observation filters: Result, phenomenon time and result time
  • Entity filters: Manages the relationships between the entities
  • Other SensorThings API standard features: Expansions, Selections and top, skip values
  • Complex expressions: Write queries as you want, but ensure they are in correct format

Variable Support

  • Dashboard template variables: For dynamic queries
  • Variable Chaining support: Create fully customizable and dynamic dashboards based on chained Variables (Variables depend on other variables)

Dynamic Panels & Dashboards

Ability to create panels and dashboards to visualize:

  • Datastream Observations: Time-series data visualization
  • Locations and Historical Locations of Things: Using orchestracities-map-panel that supports complex geometries visualizations

πŸ“ Project Structure

Source Code (/src)

src/
β”œβ”€β”€ datasource.ts              # Main data source implementation
β”œβ”€β”€ module.ts                  # Plugin module registration and exports
β”œβ”€β”€ plugin.json                # Plugin metadata and configuration
β”œβ”€β”€ types.ts                   # TypeScript type definitions
β”œβ”€β”€ queryBuilder.ts            # OData query construction utilities
β”œβ”€β”€ README.md                  # Plugin-specific documentation
β”œβ”€β”€ components/                # React UI components
β”‚   β”œβ”€β”€ ConfigEditor.tsx       # Data source configuration interface
β”‚   β”œβ”€β”€ FilterPanel.tsx        # Advanced filtering UI component
β”‚   β”œβ”€β”€ MapWithTerraDraw.tsx   # Interactive map for spatial queries
β”‚   β”œβ”€β”€ QueryEditor.tsx        # Main query building interface
β”‚   β”œβ”€β”€ VariableQueryEditor.tsx # Template variable configuration
β”‚   └── VariablesPanel.tsx     # Dashboard variables management
β”œβ”€β”€ transformations/           # Data transformation modules
β”‚   β”œβ”€β”€ datastream.ts          # Datastream entity transformations
β”‚   β”œβ”€β”€ featureOfInterest.ts   # FeatureOfInterest transformations
β”‚   β”œβ”€β”€ generic.ts             # Generic entity transformations
β”‚   β”œβ”€β”€ historicalLocations.ts # HistoricalLocations transformations
β”‚   β”œβ”€β”€ location.ts            # Location entity transformations
β”‚   β”œβ”€β”€ observations.ts        # Observations data transformations
β”‚   β”œβ”€β”€ observedProperty.ts    # ObservedProperty transformations
β”‚   β”œβ”€β”€ sensor.ts              # Sensor entity transformations
β”‚   └── thing.ts               # Thing entity transformations
└── utils/                     # Utility functions and helpers
    β”œβ”€β”€ constants.ts           # Application constants and enums
    └── utils.ts               # General utility functions

Core Files Description

Main Implementation Files

  • datasource.ts: Core data source class implementing Grafana's DataSourceApi. Handles:

    • Authentication and connection management
    • Query execution and data fetching
    • Pagination logic including expanded observations
    • Integration with Grafana's query system and Variable Substitution
  • types.ts: TypeScript interfaces and type definitions for:

    • Query configurations and options
    • Data source settings and authentication
    • API response structures
    • Filter and entity type definitions
  • queryBuilder.ts: OData query construction utilities:

    • Follows Builder Pattern to construct the query
    • URL parameters building
    • Filter expression generation
    • Pagination parameter handling
    • Expand clause construction
    • Other standard Option integration

UI Components

  • ConfigEditor.tsx: Data source configuration interface allowing users to:

    • Set istSOS4 server URL and authentication
    • Configure default pagination settings
  • QueryEditor.tsx: Main query building interface featuring:

    • Entity type selection (Things, Datastreams, Observations, etc.)
    • Entity ID specification for targeted queries
    • Expand options for related entities
    • Integration with Filters and Variables for advanced filtering
    • Other standard Options
  • FilterPanel.tsx: Advanced filtering system supporting:

    • Basic field-based filters
    • Temporal filters with date ranges
    • Spatial filters with geometric queries
    • Measurement-specific filters
    • Entity Filters
    • Observation Filters
  • MapWithTerraDraw.tsx: Interactive map component for:

    • Spatial query visualization
    • Drawing geometric filters (points, polygons, etc.)
    • Location-based entity selection
    • Integration with spatial filtering
  • VariablesPanel.tsx: UI for Variables management


πŸ”§ Configuration

1. Add Data Source

  1. In Grafana, go to Configuration β†’ Data Sources
  2. Click Add data source
  3. Search for and select istSOS4
  4. Configure the connection:
    • URL: Your istSOS4 server URL
    • Token URL: Your server Token URL
    • Basic Auth: Configure your username and password
    • Default Top (Pagination) Values: Configure your preferred top values for Entities and Expanded Observations

2. Test Connection

Click Save & Test to verify the connection to your istSOS4 server.

Screenshot from 2025-08-29 23-53-13

πŸ“Š Usage

Exploring Data

After configuration, you can play with the plugin from the Explore section in the sidebar. Here is the interface: explorer

Creating Dashboards with Variables

You can create dynamic dashboards using Grafana variables for flexible data visualization.

Here is a demo showing how you can create a dashboard for Datastream_Observations of specific Things.

demo.online-video-cutter.com.mp4

πŸ› οΈ Installation & Development Setup


πŸ“Š Example Panels

obs Gauge

πŸ—οΈ Built With


πŸ“„ License

This project is licensed under the Apache-2.0 License.