Skip to content

Randers-Kommune-Digitalisering/import-iot-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

import-iot-data README.md

Formål | Beskrivelse | Afhængigheder

Formål

Formålet med applikationen er at modtage og lagre store mængder IoT data fra målere opsat i kommunale bygninger og institutioner via OS2IoT.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#3c3c3c',
      'primaryTextColor': '#fff',
      'primaryBorderColor': '#3c3c3c',
      'lineColor': '#F8B229',
      'secondaryColor': '#616161',
      'tertiaryColor': '#616161',
      'tertiaryTextColor': '#fff'
    }
  }
}%%

%% Upload af data %%
flowchart LR

    subgraph SG1["OS2IoT"]
        A[("Målerdata")] 
    end
    
    subgraph SG2["Kubernetes miljø"]
        subgraph SG20 [ ]
            style SG20 stroke-dasharray: 0 1  
            subgraph SG21["import-iot-data"]
            
                B1("
                Modtagelse, evt. decoding
                før lagring via Node-RED
                ")
            end
            

				B2[(MariaDB)]
        end
    end
    
    A-->B1
    B1-->B2
Loading

Beskrivelse

Målerdata modtages fra OS2IoT via en POST request på endpoint /os2iot. Applikationen modtager dataobjekter som følger denne JSON objekt struktur:

[
    {
	    "deviceEui": string,
	    "observedAt" unix timestamp string,
	    "values": [
		    {
			    "type": string,
			    "value": number
		    }
	    ],
	    "rssi": number,
	    "batteryLevel": number
    }
]

OBS: Applikationen har indbygget dekodning af Adeunis enheder, da OS2IoT ikke understøtter dette. Sæt her nøglen decoder i samme objekt med værdien adeunis, og i stedet for values populeres nøglen data med rå data fra enheden i hexadecimal format.

Modtagne data gemmes i SQL database (MariaDB) hvis der allerede findes metadata for den gældende måler i databasen. Metadata oprettes for målere når disse registreres med admin-iot-devices.

Data for individuelle målere gennes i separate tabeller med følgende struktur:

observedAt type value
timestamp varchar float
UNIQUE(observedAt, type)
  • Unique-statementet gør at det ikke er muligt at have 2 datapunkter med samme type og samme timestamp.

Tabellen oprettes med navnet iot_data_{{deviceEui}}, og en reference gemmes i metadata for måleren når tabellen oprettes.

Afhængigheder

⚙️ | Node.js 18, Node-RED 3.0.2, NPM-moduler: @adeunis/node-red-contrib-adeunis-codecs, node-red-mysql-r2

☁️ | Adgang for indgående trafik til endpoint /os2iot

💲 | Miljøvariabler for database: DB_HOST, DB_PORT, DB_DATABASE, DB_USER, DB_PASS

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages