diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 1ff0c423..00000000
--- a/.gitattributes
+++ /dev/null
@@ -1,63 +0,0 @@
-###############################################################################
-# Set default behavior to automatically normalize line endings.
-###############################################################################
-* text=auto
-
-###############################################################################
-# Set default behavior for command prompt diff.
-#
-# This is need for earlier builds of msysgit that does not have it on by
-# default for csharp files.
-# Note: This is only used by command line
-###############################################################################
-#*.cs diff=csharp
-
-###############################################################################
-# Set the merge driver for project and solution files
-#
-# Merging from the command prompt will add diff markers to the files if there
-# are conflicts (Merging from VS is not affected by the settings below, in VS
-# the diff markers are never inserted). Diff markers may cause the following
-# file extensions to fail to load in VS. An alternative would be to treat
-# these files as binary and thus will always conflict and require user
-# intervention with every merge. To do so, just uncomment the entries below
-###############################################################################
-#*.sln merge=binary
-#*.csproj merge=binary
-#*.vbproj merge=binary
-#*.vcxproj merge=binary
-#*.vcproj merge=binary
-#*.dbproj merge=binary
-#*.fsproj merge=binary
-#*.lsproj merge=binary
-#*.wixproj merge=binary
-#*.modelproj merge=binary
-#*.sqlproj merge=binary
-#*.wwaproj merge=binary
-
-###############################################################################
-# behavior for image files
-#
-# image files are treated as binary by default.
-###############################################################################
-#*.jpg binary
-#*.png binary
-#*.gif binary
-
-###############################################################################
-# diff behavior for common document formats
-#
-# Convert binary document formats to text before diffing them. This feature
-# is only available from the command line. Turn it on by uncommenting the
-# entries below.
-###############################################################################
-#*.doc diff=astextplain
-#*.DOC diff=astextplain
-#*.docx diff=astextplain
-#*.DOCX diff=astextplain
-#*.dot diff=astextplain
-#*.DOT diff=astextplain
-#*.pdf diff=astextplain
-#*.PDF diff=astextplain
-#*.rtf diff=astextplain
-#*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
index 6a3d2a22..8f03dd4c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,71 +1,45 @@
-
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/arm64-v8a/libxamarin-app.so
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/arm64-v8a/libxamarin-app.so
-Airlink/Airlink.Android/Airlink.Android.csproj
-Airlink/Airlink.Android/bin/Debug/Airlink.Android.dll
-Airlink/Airlink.Android/bin/Debug/Airlink.Android.pdb
-Airlink/Airlink.Android/bin/Debug/Airlink.dll
-Airlink/Airlink.Android/bin/Debug/Airlink.pdb
-Airlink/Airlink.Android/bin/Debug/com.companyname.airlink-Signed.apk
-*.dll
-*.pdb
-*.zip
-*.dex
-*.apk
-.vs/Airlink/xs/UserPrefs.xml
-Airlink/Airlink.Android/Airlink.Android.csproj
-Airlink/Airlink.Android/bin/Debug/Airlink.Android.dll
-Airlink/Airlink.Android/bin/Debug/Airlink.Android.pdb
-Airlink/Airlink.Android/bin/Debug/Airlink.dll
-Airlink/Airlink.Android/bin/Debug/Airlink.pdb
-Airlink/Airlink.Android/bin/Debug/com.companyname.airlink-Signed.apk
-Airlink/Airlink.Android/obj/Debug/Airlink.Android.csproj.FileListAbsolute.txt
-Airlink/Airlink.Android/obj/Debug/Airlink.Android.dll
-Airlink/Airlink.Android/obj/Debug/Airlink.Android.pdb
-Airlink/Airlink.Android/obj/Debug/android/assets/Airlink.Android.dll
-Airlink/Airlink.Android/obj/Debug/android/assets/Airlink.Android.pdb
-Airlink/Airlink.Android/obj/Debug/android/assets/Airlink.dll
-Airlink/Airlink.Android/obj/Debug/android/assets/Airlink.pdb
-Airlink/Airlink.Android/obj/Debug/android/bin/classes.dex
-Airlink/Airlink.Android/obj/Debug/android/bin/classes.zip
-Airlink/Airlink.Android/obj/Debug/android/bin/com.companyname.airlink.apk
-Airlink/Airlink.Android/obj/Debug/android/compressed_assemblies.x86.o
-Airlink/Airlink.Android/obj/Debug/android/compressed_assemblies.x86.s
-Airlink/Airlink.Android/obj/Debug/android/compressed_assemblies.x86_64.o
-Airlink/Airlink.Android/obj/Debug/android/compressed_assemblies.x86_64.s
-Airlink/Airlink.Android/obj/Debug/android/environment.arm64-v8a.o
-Airlink/Airlink.Android/obj/Debug/android/environment.arm64-v8a.s
-Airlink/Airlink.Android/obj/Debug/android/environment.armeabi-v7a.o
-Airlink/Airlink.Android/obj/Debug/android/environment.armeabi-v7a.s
-Airlink/Airlink.Android/obj/Debug/android/environment.x86.o
-Airlink/Airlink.Android/obj/Debug/android/environment.x86.s
-Airlink/Airlink.Android/obj/Debug/android/environment.x86_64.o
-Airlink/Airlink.Android/obj/Debug/android/environment.x86_64.s
-Airlink/Airlink.Android/obj/Debug/android/typemaps.x86.o
-Airlink/Airlink.Android/obj/Debug/android/typemaps.x86.s
-Airlink/Airlink.Android/obj/Debug/android/typemaps.x86_64.o
-Airlink/Airlink.Android/obj/Debug/android/typemaps.x86_64.s
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/arm64-v8a/libxamarin-app.so
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/armeabi-v7a/libxamarin-app.so
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/x86/libxamarin-app.so
-Airlink/Airlink.Android/obj/Debug/app_shared_libraries/x86_64/libxamarin-app.so
-Airlink/Airlink.Android/obj/Debug/build.props
-Airlink/Airlink.Android/obj/Debug/buildid.txt
-Airlink/Airlink.Android/obj/Debug/designtime/build.props
-Airlink/Airlink.iOS/obj/iPhone/Debug/Airlink.iOS.csproj.AssemblyReference.cache
-Airlink/Airlink/bin/Debug/netstandard2.0/Airlink.dll
-Airlink/Airlink/bin/Debug/netstandard2.0/Airlink.pdb
-Airlink/Airlink/bin/Debug/netstandard2.0/ref/Airlink.dll
-Airlink/Airlink/obj/Debug/netstandard2.0/Airlink.dll
-Airlink/Airlink/obj/Debug/netstandard2.0/Airlink.pdb
-Airlink/Airlink/obj/Debug/netstandard2.0/ref/Airlink.dll
-Airlink/Airlink.Android/obj/Debug/110/android/bin/com.companyname.airlink.apk
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
.DS_Store
-Airlink/.DS_Store
-Airlink/Airlink.Android/.DS_Store
-Airlink/Airlink.Android/obj/.DS_Store
-Airlink/Airlink.Android/obj/Debug/.DS_Store
-Airlink/Airlink.Android/obj/Debug/110/.DS_Store
-Airlink/Airlink.Android/obj/Release/110/.DS_Store
-*.vs
-*.idea
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+*.env
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
diff --git a/.idea/.idea.Airlink/.idea/.gitignore b/.idea/.idea.Airlink/.idea/.gitignore
deleted file mode 100644
index 368ef596..00000000
--- a/.idea/.idea.Airlink/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/modules.xml
-/contentModel.xml
-/projectSettingsUpdater.xml
-/.idea.Airlink.iml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-/httpRequests/
diff --git a/.idea/.idea.Airlink/.idea/encodings.xml b/.idea/.idea.Airlink/.idea/encodings.xml
deleted file mode 100644
index df87cf95..00000000
--- a/.idea/.idea.Airlink/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Airlink/.idea/indexLayout.xml b/.idea/.idea.Airlink/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163c..00000000
--- a/.idea/.idea.Airlink/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.Airlink/.idea/misc.xml b/.idea/.idea.Airlink/.idea/misc.xml
deleted file mode 100644
index 1d8c84d0..00000000
--- a/.idea/.idea.Airlink/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/Airlink.iml b/.idea/Airlink.iml
deleted file mode 100644
index d6ebd480..00000000
--- a/.idea/Airlink.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 27b31b9a..00000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 56175c32..00000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 6c2499f6..00000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1665580451437
-
-
- 1665580451437
-
-
-
-
\ No newline at end of file
diff --git a/app/.metadata b/.metadata
similarity index 100%
rename from app/.metadata
rename to .metadata
diff --git a/.vs/Airlink/DesignTimeBuild/.dtbcache.v2 b/.vs/Airlink/DesignTimeBuild/.dtbcache.v2
deleted file mode 100644
index f24d17dc..00000000
Binary files a/.vs/Airlink/DesignTimeBuild/.dtbcache.v2 and /dev/null differ
diff --git a/.vs/Airlink/FileContentIndex/35e068af-0d0d-40b7-909a-c51112ba34ae.vsidx b/.vs/Airlink/FileContentIndex/35e068af-0d0d-40b7-909a-c51112ba34ae.vsidx
deleted file mode 100644
index ac41fcf7..00000000
Binary files a/.vs/Airlink/FileContentIndex/35e068af-0d0d-40b7-909a-c51112ba34ae.vsidx and /dev/null differ
diff --git a/.vs/Airlink/FileContentIndex/read.lock b/.vs/Airlink/FileContentIndex/read.lock
deleted file mode 100644
index e69de29b..00000000
diff --git a/.vs/Airlink/project-colors.json b/.vs/Airlink/project-colors.json
deleted file mode 100644
index de1565e8..00000000
--- a/.vs/Airlink/project-colors.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "Version": 1,
- "ProjectMap": {
- "96ac72a4-8fd2-4e8a-8ee2-ee0435780fdb": {
- "ProjectGuid": "96ac72a4-8fd2-4e8a-8ee2-ee0435780fdb",
- "DisplayName": "Airlink.Android",
- "ColorIndex": 0
- },
- "2f1f4f2c-b8fb-4407-b1c2-2d97e4e4bf83": {
- "ProjectGuid": "2f1f4f2c-b8fb-4407-b1c2-2d97e4e4bf83",
- "DisplayName": "Airlink",
- "ColorIndex": 1
- },
- "24f62a43-f928-4c0d-958d-78a3ad765d07": {
- "ProjectGuid": "24f62a43-f928-4c0d-958d-78a3ad765d07",
- "DisplayName": "Airlink.iOS",
- "ColorIndex": 2
- },
- "a2fe74e1-b743-11d0-ae1a-00a0c90fffc3": {
- "ProjectGuid": "a2fe74e1-b743-11d0-ae1a-00a0c90fffc3",
- "DisplayName": "Miscellaneous Files",
- "ColorIndex": -1
- }
- },
- "NextColorIndex": 3
-}
\ No newline at end of file
diff --git a/.vs/Airlink/v16/.suo b/.vs/Airlink/v16/.suo
deleted file mode 100644
index 659153d0..00000000
Binary files a/.vs/Airlink/v16/.suo and /dev/null differ
diff --git a/.vs/Airlink/v17/.futdcache.v1 b/.vs/Airlink/v17/.futdcache.v1
deleted file mode 100644
index 5d3a0b68..00000000
Binary files a/.vs/Airlink/v17/.futdcache.v1 and /dev/null differ
diff --git a/.vs/Airlink/v17/.suo b/.vs/Airlink/v17/.suo
deleted file mode 100644
index 3b864d08..00000000
Binary files a/.vs/Airlink/v17/.suo and /dev/null differ
diff --git a/.vs/Airlink/xs/UserPrefs.xml b/.vs/Airlink/xs/UserPrefs.xml
deleted file mode 100644
index 5e44e35b..00000000
--- a/.vs/Airlink/xs/UserPrefs.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.vs/Airlink/xs/project-cache/Airlink-Debug.json b/.vs/Airlink/xs/project-cache/Airlink-Debug.json
deleted file mode 100644
index 38033e70..00000000
--- a/.vs/Airlink/xs/project-cache/Airlink-Debug.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Format":1,"ProjectReferences":[],"MetadataReferences":[{"FilePath":"/Users/vav/.nuget/packages/acr.userdialogs/7.2.0.534/lib/netstandard2.0/Acr.UserDialogs.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/ble.net/1.2.1/lib/netstandard2.0/ble.net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.cbor/4.4.4/lib/netstandard1.0/CBOR.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/mscorlib.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/netstandard.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/nexus.core/0.34.0/lib/netstandard2.0/nexus.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.numbers/1.8.1/lib/netstandard1.0/Numbers.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/netstandard2.0/Plugin.BLE.Abstractions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/netstandard2.0/Plugin.BLE.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/rg.plugins.popup/2.0.0.14/lib/netstandard2.0/Rg.Plugins.Popup.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlite-net-pcl/1.8.116/lib/netstandard2.0/SQLite-net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.bundle_green/2.0.4/lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.core/2.0.4/lib/netstandard2.0/SQLitePCLRaw.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.provider.e_sqlite3/2.0.4/lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.AppContext.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.Concurrent.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.NonGeneric.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.Specialized.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.Composition.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Console.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Data.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Data.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Contracts.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Debug.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Process.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Tools.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Drawing.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Drawing.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Dynamic.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.Calendars.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.IsolatedStorage.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Pipes.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Expressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Queryable.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Http.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.NameResolution.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.NetworkInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Ping.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Requests.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Sockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebSockets.Client.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebSockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.numerics.vectors/4.5.0/ref/netstandard2.0/System.Numerics.Vectors.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ObjectModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.reflection.emit.ilgeneration/4.7.0/ref/netstandard2.0/System.Reflection.Emit.ILGeneration.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.reflection.emit.lightweight/4.7.0/ref/netstandard2.0/System.Reflection.Emit.Lightweight.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.Reader.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.ResourceManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.Writer.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.runtime.compilerservices.unsafe/4.5.3/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Handles.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.InteropServices.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Claims.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Principal.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.SecureString.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ServiceModel.Web.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.RegularExpressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Overlapped.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Tasks.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.threading.tasks.extensions/4.5.4/lib/netstandard2.0/System.Threading.Tasks.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Thread.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.ThreadPool.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Timer.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Transactions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ValueTuple.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Web.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Windows.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.Serialization.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XmlSerializer.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XPath.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.uriutility/1.0.0/lib/netstandard1.0/URIUtility.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.3.0/lib/netstandard2.0/Xamarin.CommunityToolkit.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.essentials/1.7.0/lib/netstandard2.0/Xamarin.Essentials.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/netstandard2.0/Xamarin.Forms.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms.pancakeview/2.3.0.759/lib/netstandard2.0/Xamarin.Forms.PancakeView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/netstandard2.0/Xamarin.Forms.Platform.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/netstandard2.0/Xamarin.Forms.Xaml.dll","Aliases":[],"Framework":null}],"Files":["/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/App.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/AppShell.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/AssemblyInfo.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/MainPage.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/AirLink Advertisement/PUEAdvertisedData.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/AirLinkDevice.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/AirlinkPAYG/PUEPayGData.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/BleItem.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/PaygUpdate.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/PostResponse.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/ProfileModel/TenantKeyModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/Property.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/PropertyDataBank.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/ProvisionResponse.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/Resource.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/ResourceAndProperties.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Models/ResourceDataBank.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/PclCustomUI/CustomEntry.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/AirLinkServer.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/DataConverter.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/HttpsEndpoint.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/IEnvironment.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/IItemStore.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/IMobile.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/ItemStore.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Services/TheTheme.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/AirlinkRecources/PayGData.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/BaseViewModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/BLEDeviceDetailsViewModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/BLEDevicesViewModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/BluetoothServerModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/ProfilePageViewModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/ViewModels/ProfileViewModel/TenantkeyViewModel.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/DevicePage.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/PropertyReadingsPage.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/ScannedDetailsPage.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/ServerPage.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/WritetoPropertPopup.xaml.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Profile/ProfilePage.xaml.cs","/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.3.0/build/PreserveXamarinCommunityToolkit.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/App.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/AppShell.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/MainPage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Devices/DevicePage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Devices/PropertyReadingsPage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Devices/ScannedDetailsPage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Devices/ServerPage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Devices/WritetoPropertPopup.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Views/Profile/ProfilePage.xaml.g.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/App.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/AppShell.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/MainPage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Profile/ProfilePage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/WritetoPropertPopup.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/ScannedDetailsPage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/ServerPage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/PropertyReadingsPage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Devices/DevicePage.xaml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/.DS_Store","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/.DS_Store","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Views/Profile/.DS_Store","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Airlink.AssemblyInfo.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Airlink.AssemblyInfo.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/obj/Debug/netstandard2.0/Airlink.AssemblyInfo.cs"],"BuildActions":["Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","EmbeddedResource","None","None","None","Compile","Compile","Compile"],"Analyzers":[],"AdditionalFiles":[],"EditorConfigFiles":[]}
\ No newline at end of file
diff --git a/.vs/Airlink/xs/project-cache/Airlink.Android-Debug.json b/.vs/Airlink/xs/project-cache/Airlink.Android-Debug.json
deleted file mode 100644
index 430ce9de..00000000
--- a/.vs/Airlink/xs/project-cache/Airlink.Android-Debug.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Format":1,"ProjectReferences":[{"FilePath":"/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Airlink.csproj","Aliases":[],"Framework":null}],"MetadataReferences":[{"FilePath":"/Users/vav/.nuget/packages/acr.userdialogs/7.2.0.534/lib/monoandroid10.0/Acr.UserDialogs.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/andhud/1.4.3/lib/monoandroid81/AndHUD.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/ble.net-android/1.2.1/lib/MonoAndroid50/ble.net-android21.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/ble.net/1.2.1/lib/netstandard2.0/ble.net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.cbor/4.4.4/lib/netstandard1.0/CBOR.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/MonoAndroid10.0/FormsViewGroup.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Java.Interop.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v11.0/Mono.Android.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/mscorlib.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/nexus.core/0.34.0/lib/netstandard2.0/nexus.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.numbers/1.8.1/lib/netstandard1.0/Numbers.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/MonoAndroid/Plugin.BLE.Abstractions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/MonoAndroid/Plugin.BLE.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/rg.plugins.popup/2.0.0.14/lib/monoandroid10.0/Rg.Plugins.Popup.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlite-net-pcl/1.8.116/lib/netstandard2.0/SQLite-net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.bundle_green/2.0.4/lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.core/2.0.4/lib/netstandard2.0/SQLitePCLRaw.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.lib.e_sqlite3.android/2.0.4/lib/monoandroid80/SQLitePCLRaw.lib.e_sqlite3.android.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.provider.e_sqlite3/2.0.4/lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.Numerics.Vectors.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/System.Xml.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.uriutility/1.0.0/lib/netstandard1.0/URIUtility.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.activity/1.3.1.2/lib/monoandroid90/Xamarin.AndroidX.Activity.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.annotation/1.2.0.3/lib/monoandroid90/Xamarin.AndroidX.Annotation.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.annotation.experimental/1.1.0.3/lib/monoandroid90/Xamarin.AndroidX.Annotation.Experimental.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.appcompat.appcompatresources/1.3.1.3/lib/monoandroid90/Xamarin.AndroidX.AppCompat.AppCompatResources.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.appcompat/1.3.1.3/lib/monoandroid90/Xamarin.AndroidX.AppCompat.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.arch.core.common/2.1.0.11/lib/monoandroid90/Xamarin.AndroidX.Arch.Core.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.arch.core.runtime/2.1.0.11/lib/monoandroid90/Xamarin.AndroidX.Arch.Core.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.asynclayoutinflater/1.0.0.8/lib/monoandroid90/Xamarin.AndroidX.AsyncLayoutInflater.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.browser/1.3.0.6/lib/monoandroid90/Xamarin.AndroidX.Browser.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.cardview/1.0.0.11/lib/monoandroid90/Xamarin.AndroidX.CardView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.collection/1.1.0.10/lib/monoandroid90/Xamarin.AndroidX.Collection.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.concurrent.futures/1.1.0.3/lib/monoandroid90/Xamarin.AndroidX.Concurrent.Futures.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.constraintlayout.core/1.0.1.2/lib/monoandroid90/Xamarin.AndroidX.ConstraintLayout.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.constraintlayout/2.1.1.2/lib/monoandroid90/Xamarin.AndroidX.ConstraintLayout.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.coordinatorlayout/1.1.0.10/lib/monoandroid90/Xamarin.AndroidX.CoordinatorLayout.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.core/1.6.0.3/lib/monoandroid90/Xamarin.AndroidX.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.cursoradapter/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.CursorAdapter.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.customview/1.1.0.9/lib/monoandroid90/Xamarin.AndroidX.CustomView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.documentfile/1.0.1.10/lib/monoandroid90/Xamarin.AndroidX.DocumentFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.drawerlayout/1.1.1.5/lib/monoandroid90/Xamarin.AndroidX.DrawerLayout.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.dynamicanimation/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.DynamicAnimation.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.fragment/1.3.6.3/lib/monoandroid90/Xamarin.AndroidX.Fragment.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.interpolator/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.Interpolator.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.core.ui/1.0.0.9/lib/monoandroid90/Xamarin.AndroidX.Legacy.Support.Core.UI.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.core.utils/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.Legacy.Support.Core.Utils.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.v4/1.0.0.8/lib/monoandroid90/Xamarin.AndroidX.Legacy.Support.V4.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.common/2.3.1.3/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.livedata.core/2.3.1.3/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.livedata/2.3.1.1/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.LiveData.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.runtime/2.3.1.4/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodel/2.3.1.3/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.ViewModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodelsavedstate/2.3.1.3/lib/monoandroid90/Xamarin.AndroidX.Lifecycle.ViewModelSavedState.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.loader/1.1.0.10/lib/monoandroid90/Xamarin.AndroidX.Loader.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.localbroadcastmanager/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.LocalBroadcastManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.media/1.4.0.1/lib/monoandroid90/Xamarin.AndroidX.Media.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.multidex/2.0.1.5/lib/monoandroid90/Xamarin.AndroidX.MultiDex.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.navigation.common/2.3.5.1/lib/monoandroid90/Xamarin.AndroidX.Navigation.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.navigation.runtime/2.3.5.1/lib/monoandroid90/Xamarin.AndroidX.Navigation.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.navigation.ui/2.3.5.1/lib/monoandroid90/Xamarin.AndroidX.Navigation.UI.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.preference/1.1.1.9/lib/monoandroid90/Xamarin.AndroidX.Preference.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.print/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.Print.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.recyclerview/1.2.1.3/lib/monoandroid90/Xamarin.AndroidX.RecyclerView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.savedstate/1.1.0.4/lib/monoandroid90/Xamarin.AndroidX.SavedState.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.slidingpanelayout/1.1.0.3/lib/monoandroid90/Xamarin.AndroidX.SlidingPaneLayout.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.swiperefreshlayout/1.1.0.3/lib/monoandroid90/Xamarin.AndroidX.SwipeRefreshLayout.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.tracing.tracing/1.0.0.3/lib/monoandroid90/Xamarin.AndroidX.Tracing.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.transition/1.4.1.3/lib/monoandroid90/Xamarin.AndroidX.Transition.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.vectordrawable.animated/1.1.0.10/lib/monoandroid90/Xamarin.AndroidX.VectorDrawable.Animated.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.vectordrawable/1.1.0.10/lib/monoandroid90/Xamarin.AndroidX.VectorDrawable.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.versionedparcelable/1.1.1.10/lib/monoandroid90/Xamarin.AndroidX.VersionedParcelable.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.viewpager/1.0.0.10/lib/monoandroid90/Xamarin.AndroidX.ViewPager.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.androidx.viewpager2/1.0.0.12/lib/monoandroid90/Xamarin.AndroidX.ViewPager2.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.3.0/lib/monoandroid10.0/Xamarin.CommunityToolkit.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.essentials/1.7.0/lib/monoandroid10.0/Xamarin.Essentials.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/MonoAndroid10.0/Xamarin.Forms.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms.visual.material/5.0.0.2196/lib/MonoAndroid10.0/Xamarin.Forms.Material.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms.pancakeview/2.3.0.759/lib/monoandroid10.0/Xamarin.Forms.PancakeView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/MonoAndroid10.0/Xamarin.Forms.Platform.Android.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/MonoAndroid10.0/Xamarin.Forms.Platform.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2196/lib/MonoAndroid10.0/Xamarin.Forms.Xaml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.google.android.material/1.4.0.4/lib/monoandroid90/Xamarin.Google.Android.Material.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.google.guava.listenablefuture/1.0.0.2/lib/monoandroid50/Xamarin.Google.Guava.ListenableFuture.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.Contracts.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.FileVersionInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XPath.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.WebSockets.Client.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Dynamic.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Serialization.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Principal.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.ThreadPool.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Cng.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ComponentModel.EventBasedAsync.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Encryption.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.CompilerServices.VisualC.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.DeriveBytes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/netstandard.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.UnmanagedMemoryStream.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceModel.Http.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.FileSystem.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XPath.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.Xsl.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Resources.Writer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Console.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Cache.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Sockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Text.Encoding.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.NetworkInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Utilities.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Principal.Windows.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Claims.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Hashing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ComponentModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.FileSystem.DriveInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.X509Certificates.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.FileSystem.Watcher.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.TraceSource.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.Emit.Lightweight.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Text.Encoding.CodePages.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Linq.Expressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Timer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.InteropServices.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.Pipes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.HttpListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Text.RegularExpressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Tasks.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Collections.NonGeneric.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Collections.Concurrent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Overlapped.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Pkcs.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Handles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Data.SqlClient.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ObjectModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.WebHeaderCollection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.InteropServices.RuntimeInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ComponentModel.TypeConverter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Mail.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Tasks.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Linq.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.SecureString.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/Microsoft.Win32.Registry.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.RSA.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ComponentModel.Annotations.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.FileSystem.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.Compression.ZipFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.InteropServices.WindowsRuntime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Linq.Queryable.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Resources.ResourceManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Resources.Reader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Collections.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.Emit.ILGeneration.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Data.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.NameResolution.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ComponentModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceProcess.ServiceController.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Loader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceModel.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.AuthenticationManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Tasks.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.AppContext.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Encryption.ECDsa.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Csp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.TextWriterTraceListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Text.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.MemoryMappedFiles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.OpenSsl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/Microsoft.Win32.Registry.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Globalization.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.RandomNumberGenerator.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Collections.Specialized.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.ProtectedData.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ValueTuple.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XPath.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.ServicePoint.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Xml.XmlSerializer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Globalization.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Resources.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.IsolatedStorage.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceModel.NetTcp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.TypeExtensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Globalization.Calendars.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Requests.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.WebSockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.Emit.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.IO.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Serialization.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Threading.Thread.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.Process.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.Tools.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Hashing.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.Debug.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/Microsoft.Win32.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Serialization.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.TraceEvent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Drawing.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Runtime.Serialization.Formatters.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Ping.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.ServiceModel.Duplex.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Diagnostics.StackTrace.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Reflection.DispatchProxy.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Security.Cryptography.Encryption.Aes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Net.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.Android.framework/Versions/12.0.0.3/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/Facades/System.Drawing.Common.dll","Aliases":[],"Framework":null}],"Files":["/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/BackgroundService.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/BleServer.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/BleServerCallBack.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/CustomUI/CustomEntryRenderer.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/MainActivity.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/Resource.designer.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Properties/AssemblyInfo.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/UniqueIdAndroid.cs","/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.3.0/build/PreserveXamarinCommunityToolkit.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/AboutResources.txt","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Assets/AboutAssets.txt","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Properties/AndroidManifest.xml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/values/styles.xml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/values/colors.xml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-anydpi-v26/icon.xml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-anydpi-v26/icon_round.xml","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-hdpi/icon.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-hdpi/launcher_foreground.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-mdpi/icon.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-mdpi/launcher_foreground.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xhdpi/icon.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xhdpi/launcher_foreground.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xxhdpi/icon.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xxhdpi/launcher_foreground.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xxxhdpi/icon.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Airlink.csproj","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/tab_about.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/tab_blue.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/tab_client.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/tab_feed.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/tab_server.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/xamarin_logo.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/device.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/dashboard.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/profile.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/profil.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.Android/Resources/drawable/foward.png","/Users/vav/.nuget/packages/xamarin.androidx.annotation/1.2.0.3/jar/androidx.annotation.annotation.jar","/Users/vav/.nuget/packages/xamarin.androidx.collection/1.1.0.10/jar/androidx.collection.collection.jar","/Users/vav/.nuget/packages/xamarin.androidx.versionedparcelable/1.1.1.10/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.versionedparcelable/1.1.1.10/aar/androidx.versionedparcelable.versionedparcelable.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.common/2.3.1.3/jar/androidx.lifecycle.lifecycle-common.jar","/Users/vav/.nuget/packages/xamarin.androidx.arch.core.common/2.1.0.11/jar/androidx.arch.core.core-common.jar","/Users/vav/.nuget/packages/xamarin.androidx.arch.core.runtime/2.1.0.11/aar/androidx.arch.core.core-runtime.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.runtime/2.3.1.4/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.runtime/2.3.1.4/aar/androidx.lifecycle.lifecycle-runtime.aar","/Users/vav/.nuget/packages/xamarin.androidx.annotation.experimental/1.1.0.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.annotation.experimental/1.1.0.3/aar/androidx.annotation.annotation-experimental.aar","/Users/vav/.nuget/packages/xamarin.androidx.core/1.6.0.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.core/1.6.0.3/aar/androidx.core.core.aar","/Users/vav/.nuget/packages/xamarin.androidx.customview/1.1.0.9/aar/androidx.customview.customview.aar","/Users/vav/.nuget/packages/xamarin.androidx.viewpager/1.0.0.10/aar/androidx.viewpager.viewpager.aar","/Users/vav/.nuget/packages/xamarin.androidx.tracing.tracing/1.0.0.3/aar/androidx.tracing.tracing.aar","/Users/vav/.nuget/packages/xamarin.androidx.savedstate/1.1.0.4/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.savedstate/1.1.0.4/aar/androidx.savedstate.savedstate.aar","/Users/vav/.nuget/packages/xamarin.androidx.recyclerview/1.2.1.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.recyclerview/1.2.1.3/aar/androidx.recyclerview.recyclerview.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodel/2.3.1.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodel/2.3.1.3/aar/androidx.lifecycle.lifecycle-viewmodel.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.livedata.core/2.3.1.3/aar/androidx.lifecycle.lifecycle-livedata-core.aar","/Users/vav/.nuget/packages/xamarin.androidx.loader/1.1.0.10/aar/androidx.loader.loader.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodelsavedstate/2.3.1.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.viewmodelsavedstate/2.3.1.3/aar/androidx.lifecycle.lifecycle-viewmodel-savedstate.aar","/Users/vav/.nuget/packages/xamarin.androidx.activity/1.3.1.2/aar/androidx.activity.activity.aar","/Users/vav/.nuget/packages/xamarin.androidx.fragment/1.3.6.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.fragment/1.3.6.3/aar/androidx.fragment.fragment.aar","/Users/vav/.nuget/packages/xamarin.androidx.viewpager2/1.0.0.12/aar/androidx.viewpager2.viewpager2.aar","/Users/vav/.nuget/packages/xamarin.androidx.vectordrawable/1.1.0.10/aar/androidx.vectordrawable.vectordrawable.aar","/Users/vav/.nuget/packages/xamarin.androidx.interpolator/1.0.0.10/aar/androidx.interpolator.interpolator.aar","/Users/vav/.nuget/packages/xamarin.androidx.vectordrawable.animated/1.1.0.10/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.vectordrawable.animated/1.1.0.10/aar/androidx.vectordrawable.vectordrawable-animated.aar","/Users/vav/.nuget/packages/xamarin.androidx.transition/1.4.1.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.transition/1.4.1.3/aar/androidx.transition.transition.aar","/Users/vav/.nuget/packages/xamarin.androidx.print/1.0.0.10/aar/androidx.print.print.aar","/Users/vav/.nuget/packages/xamarin.androidx.localbroadcastmanager/1.0.0.10/aar/androidx.localbroadcastmanager.localbroadcastmanager.aar","/Users/vav/.nuget/packages/xamarin.androidx.documentfile/1.0.1.10/aar/androidx.documentfile.documentfile.aar","/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.core.utils/1.0.0.10/aar/androidx.legacy.legacy-support-core-utils.aar","/Users/vav/.nuget/packages/xamarin.androidx.dynamicanimation/1.0.0.10/aar/androidx.dynamicanimation.dynamicanimation.aar","/Users/vav/.nuget/packages/xamarin.androidx.drawerlayout/1.1.1.5/aar/androidx.drawerlayout.drawerlayout.aar","/Users/vav/.nuget/packages/xamarin.androidx.cursoradapter/1.0.0.10/aar/androidx.cursoradapter.cursoradapter.aar","/Users/vav/.nuget/packages/xamarin.androidx.coordinatorlayout/1.1.0.10/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.coordinatorlayout/1.1.0.10/aar/androidx.coordinatorlayout.coordinatorlayout.aar","/Users/vav/.nuget/packages/xamarin.androidx.constraintlayout.core/1.0.1.2/jar/androidx.constraintlayout.constraintlayout-core.jar","/Users/vav/.nuget/packages/xamarin.androidx.appcompat.appcompatresources/1.3.1.3/aar/androidx.appcompat.appcompat-resources.aar","/Users/vav/.nuget/packages/xamarin.androidx.appcompat/1.3.1.3/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.appcompat/1.3.1.3/aar/androidx.appcompat.appcompat.aar","/Users/vav/.nuget/packages/xamarin.androidx.constraintlayout/2.1.1.2/aar/androidx.constraintlayout.constraintlayout.aar","/Users/vav/.nuget/packages/xamarin.androidx.cardview/1.0.0.11/aar/androidx.cardview.cardview.aar","/Users/vav/.nuget/packages/xamarin.google.android.material/1.4.0.4/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.google.android.material/1.4.0.4/aar/com.google.android.material.material.aar","/Users/vav/.nuget/packages/xamarin.androidx.lifecycle.livedata/2.3.1.1/aar/androidx.lifecycle.lifecycle-livedata.aar","/Users/vav/.nuget/packages/xamarin.androidx.swiperefreshlayout/1.1.0.3/aar/androidx.swiperefreshlayout.swiperefreshlayout.aar","/Users/vav/.nuget/packages/xamarin.androidx.slidingpanelayout/1.1.0.3/aar/androidx.slidingpanelayout.slidingpanelayout.aar","/Users/vav/.nuget/packages/xamarin.androidx.preference/1.1.1.9/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.preference/1.1.1.9/aar/androidx.preference.preference.aar","/Users/vav/.nuget/packages/xamarin.androidx.navigation.common/2.3.5.1/aar/androidx.navigation.navigation-common.aar","/Users/vav/.nuget/packages/xamarin.androidx.navigation.runtime/2.3.5.1/aar/androidx.navigation.navigation-runtime.aar","/Users/vav/.nuget/packages/xamarin.androidx.navigation.ui/2.3.5.1/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.navigation.ui/2.3.5.1/aar/androidx.navigation.navigation-ui.aar","/Users/vav/.nuget/packages/xamarin.androidx.media/1.4.0.1/proguard/proguard.txt","/Users/vav/.nuget/packages/xamarin.androidx.media/1.4.0.1/aar/androidx.media.media.aar","/Users/vav/.nuget/packages/xamarin.androidx.asynclayoutinflater/1.0.0.8/aar/androidx.asynclayoutinflater.asynclayoutinflater.aar","/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.core.ui/1.0.0.9/aar/androidx.legacy.legacy-support-core-ui.aar","/Users/vav/.nuget/packages/xamarin.androidx.legacy.support.v4/1.0.0.8/aar/androidx.legacy.legacy-support-v4.aar","/Users/vav/.nuget/packages/xamarin.androidx.concurrent.futures/1.1.0.3/jar/androidx.concurrent.concurrent-futures.jar","/Users/vav/.nuget/packages/xamarin.androidx.browser/1.3.0.6/aar/androidx.browser.browser.aar"],"BuildActions":["Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","None","None","None","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","ProjectReference","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidResource","AndroidJavaLibrary","AndroidJavaLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidJavaLibrary","AndroidJavaLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidJavaLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","ProguardConfiguration","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidAarLibrary","AndroidJavaLibrary","AndroidAarLibrary"],"Analyzers":[],"AdditionalFiles":[],"EditorConfigFiles":[]}
\ No newline at end of file
diff --git a/.vs/Airlink/xs/project-cache/Airlink.iOS-Debug_iPhone.json b/.vs/Airlink/xs/project-cache/Airlink.iOS-Debug_iPhone.json
deleted file mode 100644
index 3f9161c9..00000000
--- a/.vs/Airlink/xs/project-cache/Airlink.iOS-Debug_iPhone.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Format":1,"ProjectReferences":[{"FilePath":"/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink/Airlink.csproj","Aliases":[],"Framework":null}],"MetadataReferences":[{"FilePath":"/Users/vav/.nuget/packages/acr.userdialogs/7.2.0.534/lib/xamarinios10/Acr.UserDialogs.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/ble.net/1.2.1/lib/netstandard2.0/ble.net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/btprogresshud/1.3.4/lib/xamarinios10/BTProgressHUD.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.cbor/4.4.4/lib/netstandard1.0/CBOR.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.ios.materialcomponents/92.0.0/lib/Xamarin.iOS/MaterialComponents.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/mscorlib.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/nexus.core/0.34.0/lib/netstandard2.0/nexus.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.numbers/1.8.1/lib/netstandard1.0/Numbers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/OpenTK-1.0.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/Xamarin.iOS10/Plugin.BLE.Abstractions.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/plugin.ble/2.1.2/lib/Xamarin.iOS10/Plugin.BLE.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/rg.plugins.popup/2.0.0.12/lib/xamarinios10/Rg.Plugins.Popup.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlite-net-pcl/1.8.116/lib/netstandard2.0/SQLite-net.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.bundle_green/2.0.4/lib/Xamarin.iOS10/SQLitePCLRaw.batteries_v2.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.core/2.0.4/lib/netstandard2.0/SQLitePCLRaw.core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.bundle_green/2.0.4/lib/Xamarin.iOS10/SQLitePCLRaw.nativelibrary.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/sqlitepclraw.provider.dynamic_cdecl/2.0.4/lib/netstandard2.0/SQLitePCLRaw.provider.dynamic_cdecl.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/System.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/System.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Drawing.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/System.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/System.Numerics.Vectors.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/System.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/petero.uriutility/1.0.0/lib/netstandard1.0/URIUtility.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.2.0/lib/xamarinios10/Xamarin.CommunityToolkit.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.essentials/1.7.0/lib/xamarinios10/Xamarin.Essentials.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2083/lib/Xamarin.iOS10/Xamarin.Forms.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms.visual.material/5.0.0.2196/lib/Xamarin.iOS10/Xamarin.Forms.Material.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms.pancakeview/2.3.0.759/lib/xamarinios10/Xamarin.Forms.PancakeView.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2083/lib/Xamarin.iOS10/Xamarin.Forms.Platform.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2083/lib/Xamarin.iOS10/Xamarin.Forms.Platform.iOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/vav/.nuget/packages/xamarin.forms/5.0.0.2083/lib/Xamarin.iOS10/Xamarin.Forms.Xaml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Xamarin.iOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Contracts.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.FileVersionInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.Client.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Dynamic.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.ThreadPool.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Cng.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.EventBasedAsync.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.CompilerServices.VisualC.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.DeriveBytes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/netstandard.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.UnmanagedMemoryStream.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Http.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.Xsl.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Resources.Writer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Console.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Cache.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Sockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.NetworkInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Utilities.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.Windows.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Claims.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.DriveInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.X509Certificates.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Watcher.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceSource.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.Lightweight.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.CodePages.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Linq.Expressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Timer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.Pipes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.HttpListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Text.RegularExpressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Collections.NonGeneric.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Collections.Concurrent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Overlapped.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Pkcs.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Handles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Data.SqlClient.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ObjectModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.WebHeaderCollection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.RuntimeInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.TypeConverter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Mail.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Linq.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.SecureString.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RSA.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Annotations.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.Compression.ZipFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.WindowsRuntime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Linq.Queryable.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Resources.ResourceManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Resources.Reader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Collections.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.ILGeneration.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Data.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.NameResolution.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceProcess.ServiceController.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Loader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.AuthenticationManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.AppContext.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDsa.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Csp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TextWriterTraceListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.MemoryMappedFiles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.OpenSsl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Globalization.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RandomNumberGenerator.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Collections.Specialized.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.ProtectedData.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ValueTuple.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.ServicePoint.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlSerializer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Globalization.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Resources.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.IsolatedStorage.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.NetTcp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.TypeExtensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Globalization.Calendars.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Requests.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Threading.Thread.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Process.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tools.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Debug.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceEvent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Drawing.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Formatters.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Ping.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Duplex.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.StackTrace.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Reflection.DispatchProxy.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.Aes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/15.2.0.1/lib/mono/Xamarin.iOS/Facades/System.Net.Primitives.dll","Aliases":[],"Framework":null}],"Files":["/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Main.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/AppDelegate.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Properties/AssemblyInfo.cs","/Users/vav/.nuget/packages/xamarin.communitytoolkit/1.2.0/build/PreserveXamarinCommunityToolkit.cs","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Entitlements.plist","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Info.plist","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Resources/LaunchScreen.storyboard","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png","/Users/vav/Downloads/Simusolar/Airlink-App/Airlink-App/Airlink/Airlink.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png"],"BuildActions":["Compile","Compile","Compile","Compile","None","None","InterfaceDefinition","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset"],"Analyzers":[],"AdditionalFiles":[],"EditorConfigFiles":[]}
\ No newline at end of file
diff --git a/.vs/ProjectEvaluation/airlink.metadata.v2 b/.vs/ProjectEvaluation/airlink.metadata.v2
deleted file mode 100644
index bfbb64f1..00000000
Binary files a/.vs/ProjectEvaluation/airlink.metadata.v2 and /dev/null differ
diff --git a/.vs/ProjectEvaluation/airlink.projects.v2 b/.vs/ProjectEvaluation/airlink.projects.v2
deleted file mode 100644
index 72f2efc4..00000000
Binary files a/.vs/ProjectEvaluation/airlink.projects.v2 and /dev/null differ
diff --git a/README.md b/README.md
index 36b153ec..32e9f783 100644
--- a/README.md
+++ b/README.md
@@ -1,91 +1,25 @@
-# AirLink: An IoT Framework
-## Technical Documentation
+# AirLink App
-> AirLink is an open source framework ([MIT License](https://opensource.org/licenses/MIT)) to manage IoT devices connecting to IoT servers via Bluetooth® LE ↔ GSM gateways. The protocol provides a communication standard and example code for devices and smartphones. As such, it removes the need for edge IoT devices to have direct internet connectivity by using the smartphone or intermediate gateway as a relay.
->
-> The framework comes with BLE discovery-based provisioning, a flow for tracking lost devices via crowd-sourced detection, as well as 'PAY-Go' rolling-code token functionality to support use cases for financed consumer devices or to transfer encrypted commands.
->
-> AirLink was developed to help entrepreneurs get over non-differentiating IoT development hurdles quickly and focus on their unique application
+Based on Flutter, the AirLink Mobile app is a communication app skeleton enabling gateway functionality i.e. end to end communication between AirLink Bluetooth® devices and an AirLink server. The app is intended to act as a base that takes care of device interactions, on which different customer experiences can be built by the businesses adopting AirLink.
-This is the technical documentation for AirLink. If you are looking for an overview instead:
-[https://enaccess.org/airlink/](https://enaccess.org/airlink/)
+## Features
-Here is a helpful guide for AirLink adopters: [Quick-start guide](AirLink%20Docs/Quick-start%20guide.md)
+- Discovering AirLink devices
+- Authorizing the gateway to use an AirLink device
+- Device serialization and provisioning
+- Data sync: gateway, device, and the server
+- Generate PayG tokens
+- Entering PayG tokens
-And an end to end demo on how to get started in minutes: [AirLink demo video](https://youtu.be/OAEcQaUBIao)
+## Screenshots
-This documentation consists of the overview on this page, three sub pages on the three components of AirLink, the Quick-start guide above, and a page on integrating with PAYG software providers.
+
----
+## Getting started
+For help getting started with Flutter, view the [documentation](https://flutter.dev/).
-### AirLink Components
-AirLink proposes three components of which two are required at any given time. Each component has an open source library to get started with.
-
+For more detailed information on how to use the App, visit the [official documentation](https://airlinkdocs.enaccess.org/)
-
-
-**[AirLink Devices](AirLink%20Docs/AirLink%20Devices.md)**: *Nordic nRF firmware on [GitHub](https://github.com/EnAccess/AirLink-Devices)*
-
-
-
-**[AirLink App](AirLink%20Docs/AirLink%20App.md)**: *a Flutter app on [GitHub](https://github.com/EnAccess/Airlink-App)*
-
-
-
-**[AirLink Server](AirLink%20Docs/AirLink%20Server.md)**: A *[Demo server](https://airlink.enaccess.org) Hosted by EnAccess.org*
-
-
-
----
-
-### AirLink Functional Highlights
-Smartphone-gateway connectivity, an opinionated device lifecycle, a flow for lost/stolen devices and built-in PAYGO functionality are what set AirLink apart among open-source IoT frameworks.
-
-#### AirLink Data Layer
-AirLink leverages Bluetooth and GSM to flow data from the device to the server via the app, and vice versa. Data is structured for minimum overhead for devices and plug-and-play adding of new device types without server/app redos.
-
-
-#### AirLink Devices Lifecycle
-AirLink covers the full device lifecycle, with a complete path to
-1. get devices registered in the server,
-2. exchange data and location, and
-3. control PAYGo functionality
-
-
-#### Finding Lost/Stolen AirLink Devices
-AirLink 'community-sources' device security, anyone with an AirLink app (not from a particular adopter) can help find lost devices without sharing private data or compromising device PAYGo. AirLink apps automatically post information about unknown devices back to the AirLink server, where they can be forwarded to the lost and found repository hosted by EnAccess on it's AirLink server. Owners of the device can then get access to this information either through the manufacturer's AirLink server or the common lost and found server, with help from EnAccess. The default open source setup can also be edited to have a separate lost and found tenant on an adopter's own server.
-
-
-#### PAYGo: Internal or Integration with Solaris and Angaza
-AirLink has built-in token generation, but also connects to external PAYGo Software providers.
-
-Solaris and Angaza are two major providers of PAYGo business software stacks. AirLink devices can exchange PAYGO tokens with Angaza and Solaris servers through the AirLink Data Layer, enabled by the AirLink Server out-of-the-box.
-
-The AirLink server recognizes the type of provider based on a server side attribute payg_type for the device, and connects with Angaza or Solaris servers to get the latest PAYGo token. This provides out-of-the-box integration for those devices that support Nexus Token or OpenPAYGO Token.
->[PayGo Options in AirLink](AirLink%20Docs/Connecting%20to%20Solaris%20or%20Angaza.md)
-
----
-
-### Related Resources
-[Nexus Channel: Angaza's Inter-operability initiative](https://angaza.github.io/nexus-channel-models/resource_type_spec.html)
-
-[OCF: Open source connectivity standards that AirLink derives from](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwionv_ev7zyAhXM8uAKHbRED4oQFnoECAgQAQ&url=https%3A%2F%2Fopenconnectivity.org%2Fdeveloper%2Fspecifications%2F&usg=AOvVaw1qzAFKPKuOt-Sv9a1-V_jA)
-
-[OpenPAYGO Link: Wired inter-operability from Solaris/ EnAccess](https://github.com/EnAccess/OpenPAYGO-Link/tree/main/Documentation)
-
-[OpenPAYGO Metrics: GSM inter-operability from Solaris](https://github.com/openpaygo/metrics)
-
-[OpenPAYGO Token: Open Source PAYGO token reference design from Solaris/EnAccess](https://github.com/EnAccess/OpenPAYGO-Token)
-
-[CBOR: Memory-Efficient data arrays](http://cbor.io)
-
-
----
-**AirLink was developed by [Simusolar Inc](https://www.simusolar.com)**
-
-
-
-**with support from [EnAccess](http://enaccess.org)**
-
-
+## License
+This project is under the [MIT License](https://github.com/kaykhahima/Airlink-App/blob/main/LICENSE "Project License")
diff --git a/app/analysis_options.yaml b/analysis_options.yaml
similarity index 100%
rename from app/analysis_options.yaml
rename to analysis_options.yaml
diff --git a/app/android/.gitignore b/android/.gitignore
similarity index 100%
rename from app/android/.gitignore
rename to android/.gitignore
diff --git a/app/android/app/build.gradle b/android/app/build.gradle
similarity index 100%
rename from app/android/app/build.gradle
rename to android/app/build.gradle
diff --git a/app/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
similarity index 100%
rename from app/android/app/src/debug/AndroidManifest.xml
rename to android/app/src/debug/AndroidManifest.xml
diff --git a/app/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
similarity index 100%
rename from app/android/app/src/main/AndroidManifest.xml
rename to android/app/src/main/AndroidManifest.xml
diff --git a/app/android/app/src/main/java/org/enaccess/airlink/app/airlink/MainActivity.java b/android/app/src/main/java/org/enaccess/airlink/app/airlink/MainActivity.java
similarity index 100%
rename from app/android/app/src/main/java/org/enaccess/airlink/app/airlink/MainActivity.java
rename to android/app/src/main/java/org/enaccess/airlink/app/airlink/MainActivity.java
diff --git a/app/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
similarity index 100%
rename from app/android/app/src/main/res/drawable-v21/launch_background.xml
rename to android/app/src/main/res/drawable-v21/launch_background.xml
diff --git a/app/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
similarity index 100%
rename from app/android/app/src/main/res/drawable/launch_background.xml
rename to android/app/src/main/res/drawable/launch_background.xml
diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
rename to android/app/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
rename to android/app/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/app/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
similarity index 100%
rename from app/android/app/src/main/res/values-night/styles.xml
rename to android/app/src/main/res/values-night/styles.xml
diff --git a/app/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
similarity index 100%
rename from app/android/app/src/main/res/values/styles.xml
rename to android/app/src/main/res/values/styles.xml
diff --git a/app/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
similarity index 100%
rename from app/android/app/src/profile/AndroidManifest.xml
rename to android/app/src/profile/AndroidManifest.xml
diff --git a/app/android/build.gradle b/android/build.gradle
similarity index 100%
rename from app/android/build.gradle
rename to android/build.gradle
diff --git a/app/android/gradle.properties b/android/gradle.properties
similarity index 100%
rename from app/android/gradle.properties
rename to android/gradle.properties
diff --git a/app/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from app/android/gradle/wrapper/gradle-wrapper.properties
rename to android/gradle/wrapper/gradle-wrapper.properties
diff --git a/app/android/settings.gradle b/android/settings.gradle
similarity index 100%
rename from app/android/settings.gradle
rename to android/settings.gradle
diff --git a/app/.gitignore b/app/.gitignore
deleted file mode 100644
index 8f03dd4c..00000000
--- a/app/.gitignore
+++ /dev/null
@@ -1,45 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-migrate_working_dir/
-*.env
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/app/README.md b/app/README.md
deleted file mode 100644
index 535083c5..00000000
--- a/app/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# airlink
-
-Android App based on Flutter framework and the clean architecture pattern.
-[Reference repo](https://github.com/EnAccess/Airlink-App)
diff --git a/assets/images/screenshots/home - credentials page - airlink.jpg b/assets/images/screenshots/home - credentials page - airlink.jpg
new file mode 100644
index 00000000..b55ca585
Binary files /dev/null and b/assets/images/screenshots/home - credentials page - airlink.jpg differ
diff --git a/assets/images/screenshots/home - credentials page - angaza.jpg b/assets/images/screenshots/home - credentials page - angaza.jpg
new file mode 100644
index 00000000..91982829
Binary files /dev/null and b/assets/images/screenshots/home - credentials page - angaza.jpg differ
diff --git a/assets/images/screenshots/home - device list page - device details page - provisioning choices.jpg b/assets/images/screenshots/home - device list page - device details page - provisioning choices.jpg
new file mode 100644
index 00000000..430d451c
Binary files /dev/null and b/assets/images/screenshots/home - device list page - device details page - provisioning choices.jpg differ
diff --git a/assets/images/screenshots/home - device list page - device details page - provisioning input with type expanded.jpg b/assets/images/screenshots/home - device list page - device details page - provisioning input with type expanded.jpg
new file mode 100644
index 00000000..022dbdf3
Binary files /dev/null and b/assets/images/screenshots/home - device list page - device details page - provisioning input with type expanded.jpg differ
diff --git a/assets/images/screenshots/home - device list page - device details page - provisioning input.jpg b/assets/images/screenshots/home - device list page - device details page - provisioning input.jpg
new file mode 100644
index 00000000..2d88d59d
Binary files /dev/null and b/assets/images/screenshots/home - device list page - device details page - provisioning input.jpg differ
diff --git a/assets/images/screenshots/home - device list page - device details page - transfer payg token.jpg b/assets/images/screenshots/home - device list page - device details page - transfer payg token.jpg
new file mode 100644
index 00000000..0c2f77d6
Binary files /dev/null and b/assets/images/screenshots/home - device list page - device details page - transfer payg token.jpg differ
diff --git a/assets/images/screenshots/home - device list page - device details page.jpg b/assets/images/screenshots/home - device list page - device details page.jpg
new file mode 100644
index 00000000..247ebd88
Binary files /dev/null and b/assets/images/screenshots/home - device list page - device details page.jpg differ
diff --git a/assets/images/screenshots/home - device list page - no permissions.jpg b/assets/images/screenshots/home - device list page - no permissions.jpg
new file mode 100644
index 00000000..2fcb835e
Binary files /dev/null and b/assets/images/screenshots/home - device list page - no permissions.jpg differ
diff --git a/assets/images/screenshots/home - device list page.jpg b/assets/images/screenshots/home - device list page.jpg
new file mode 100644
index 00000000..084817c8
Binary files /dev/null and b/assets/images/screenshots/home - device list page.jpg differ
diff --git a/assets/images/screenshots/home - payg token page - enter credit.jpg b/assets/images/screenshots/home - payg token page - enter credit.jpg
new file mode 100644
index 00000000..b827eecc
Binary files /dev/null and b/assets/images/screenshots/home - payg token page - enter credit.jpg differ
diff --git a/assets/images/screenshots/home - payg token page - search for device.jpg b/assets/images/screenshots/home - payg token page - search for device.jpg
new file mode 100644
index 00000000..335eb166
Binary files /dev/null and b/assets/images/screenshots/home - payg token page - search for device.jpg differ
diff --git a/assets/images/screenshots/home - payg token page - token generated.jpg b/assets/images/screenshots/home - payg token page - token generated.jpg
new file mode 100644
index 00000000..6274ec99
Binary files /dev/null and b/assets/images/screenshots/home - payg token page - token generated.jpg differ
diff --git a/assets/images/screenshots/home - payg token page.jpg b/assets/images/screenshots/home - payg token page.jpg
new file mode 100644
index 00000000..ba3e7920
Binary files /dev/null and b/assets/images/screenshots/home - payg token page.jpg differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361.html
deleted file mode 100644
index 23350958..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361.html
+++ /dev/null
@@ -1,674 +0,0 @@
-AirLink App
AirLink App
-
The AirLink Mobile app is a communication app skeleton enabling gateway functionality i.e. end to end communication between AirLink Bluetooth® devices and an AirLink server. The app is intended to act as a base that takes care of device interactions, on which different customer experiences can be built by the businesses adopting AirLink.
Once the App Instance is authenticated to the tenant or customer by the application server transferring the provisioning codes, it can provision the phone as an AirLink gateway using the phone’s IMEI. This allows flexibility in lost phones by tying functionality and device ownership to an authenticated user rather than a particular phone. The app provides a UI for entering these codes until the application server is enabled.
The app can be used for the following purposes:
Scanning and connecting to AirLink devices automatically
Registering AirLink devices to the server securely
Updating Pay-as-you-go status of the device securely
Posting data from the device to the server with authentication
Finding AirLink devices even when the app is not running, and posting their locations to the server
Architecture
Mobile App Framework built on Xamarin
Platform : Xamarin
App Development Framework
Xamarin multi-platform mobile app development framework
This is Microsoft's multi-platform mobile app development framework.
Access of Bluetooth hardware requires platform specific code in Xamarin, and the AirLink App is implemented only for Android at present but can be extended to iOS with minimal additional code.
We chose Xamarin as the development environment due to it’s relative maturity compared with Flutter and larger community in case of development challenges, however we believe that an AirLink spec app can also be implemented in Flutter using the Xamarin app as a reference for functionality.
Xamarin Forms adds another layer of UI abstraction, at some cost of speed. We use Xamarin Forms for UI pages and all pages are represented in XAML.
Microsoft introduced new development framework [ .NET MAUI ] for increased code sharing across platforms, by leveraging .NET layers. This Xamarin-forms app could be converted to .NET MAUI in 2022 using the migration scripts that Microsoft has promised to provide.
Flutter uses design widgets to make it easy to move between software that supports prototyping (e.g. Figma) and app development. This app uses the in-built Flutter widgets to display the app’s functionalities. However, they can be customized to fit the specific needs of the app, allowing you to create unique and engaging user experiences.
Flutter packages
To realize the Bluetooth requirements and other core functionality of AirLink, the AirLink app (gateway) uses the following packages:
line_icons: ^2.0.1
flutter_blue: ^0.8.0
cbor: ^5.0.1
convert: ^3.0.1
hex: ^0.2.0
flutter_secure_storage: ^5.0.2
flutter_dotenv: ^5.0.2
http: ^0.13.4
device_info_plus: ^3.2.2
flutter_barcode_scanner: ^2.0.0
location: ^4.3.0
sqflite: ^2.0.2
provider: ^6.0.3
app_settings: ^4.1.8
workmanager: ^0.5.0
permission_handler: ^10.2.0
timezone: ^0.9.0
Flutter Libraries leveraged to build the framework
Gateway Sync
The primary role of the AirLink gateway is to keep AirLink devices and the AirLink server in sync with respect to the state and operation of the device. There are three types of data sync:
Server updates Device: Pay as you go credits after payment are the primary server update, along with client and configuration dataAirLink Gateways or this App maps Server and Device properties
Device posts time-series telemetry via primary gateway: Device posts various IoT data described in Nexus Resource Models relating to energy generation, consumption, battery use as well as productive output. In this case, the app actually masquerades as the device and posts data directly into the device's telemetry endpoint. This is enabled for the app via user input of device access token or in a production app, from the server pairing the gateway with devices via sharing of the access token automatically upon sale. Location is added by the gateway.
-
Neighborhood watch gateway posts device advertisement: If the app finds an AirLink device that is not registered as managed by that app, it will post it to the server as a 'piggy-back' onto it's own telemetry, which the server then snips out and decides to post to the original device or forward on to the lost devices database
AirLink Lost/Stolen Devices Flow
-
To convert between server-friendly JSON and Bluetooth-service friendly CBOR/.NET objects, the Json.NET and PeterO.CBOR libraries are used. Since the list of properties can vary, we use collections and read the property types = device resource models such as “/batt” and “/temp” from the Bluetooth Descriptors.
First Step: Enter the information from AirLink Server and Provision the phone as a gateway on the server.
If you enter the data correctly including the tenant administrator, the gateway will provision.
Connecting to AirLink devices
Second Step: Your phone is ready to sync devices. Discover AirLink devices in the vicinity!
Once you find a device, tapping on it simply brings up a list of Nexus resources available on the device
Authorizing the gateway to the device with the Access Token
Always, when connecting to a device, we recommend that the device lock it’s properties until the (default or server) access token is supplied. Authorizing the device supplies it with the default access token.
To authorize the device, simply tap the “Authorize” button. The default access token is already saved on both the App and the device. The device will then compare its access token with this default one. Once they match, the device will be successfully authorized.
Once authorized, you can now read data from the device. The App receives CBOR encoded data from the device, and decodes it into a JSON that is more amenable to posting to the server, and displays this for each property when tapped.
Serializing and provisioning a new device and preparing it for accepting tokens
If a device has just been manufactured, it may not yet be serialized, and be locked with a default access token. Enter this token, then press “Provision” to provision the device. The app will prompt for serial number entry.
Scan or enter by hand this serial number. This is a one-time activity after which the device will forever remember it’s serial number. However if the serial number exists on the server, the provisioning will fail.
As long as a unique serial number is supplied, the server accepts the device and returns a device-specific access token, which the app saves automatically to secure storage as well as displays in the access token field
Entering Tokens
Some properties are writeable, especially true for the PAYG token property, found in the “PC” resource. Tapping this will open a prompt to enter a token. During the Provisioning stage, the token generator on the server is initialized and matched to each device’s secret. Hence, the token can be obtained from the server automatically by syncing the phone, or by manually copying the PC_tkn property value and inputting by hand while the phone is offline.
PAYG tokens are single-use and must match the individual device. If these criteria are met, the device accepts the token.
Synchronizing data with the server over the lifetime of the device
All AirLink properties can be kept in sync between the server and the individual device simply by tapping the Sync button, or using the underlying function in an automated flow in your custom version of the app
The ability of the gateway to post device data to the server (”Client Scope”) as well as pull server data into the device (”Shared Scope”) generates a success message. All failure messages can be effectively debugged using the USB-connected debug mode of Visual Studio.
Copyright 2021 Simusolar Inc
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Handles all the entries that configure the App to connect to the AirLink server
Category
Platform IndependentUI Business Logic
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Arch_Open-Source_App_Architecture.jpeg b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Arch_Open-Source_App_Architecture.jpeg
deleted file mode 100644
index 1f505dc9..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Arch_Open-Source_App_Architecture.jpeg and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2 1.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2 1.png
deleted file mode 100644
index ea50c4a3..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2 1.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2.png
deleted file mode 100644
index d6598079..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture-2.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture.png
deleted file mode 100644
index b176f00f..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/IoT_Communications_and_Components_spec_-_App_Architecture.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/MVVMPattern.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/MVVMPattern.png
deleted file mode 100644
index 87e4ab82..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/MVVMPattern.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae.html
deleted file mode 100644
index bb198e83..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae.html
+++ /dev/null
@@ -1,676 +0,0 @@
-Visual Studio setup and to Git library instructions (Mac)
Visual Studio setup and to Git library instructions (Mac)
Download Xamarin - Visual Studio for Mac (~2+GB). If you want to build your application for iOS, you will also need Xcode (12+GB), which Visual studio will prompt you to install once it is done installing itself.
Setting up the GitHub repository:
In Github Airlink repository: Copy the HTTPS clone link:
-
In the visual studio menu, instead of creating a new project from the startup popup screen, go to Menu and select Clone Repository...
-
Paste the link copied from Github
-
That's it! Visual studio will create the project. You might need to allow it to download additional components as required.
-
To post updates to the project, you will need to request developer access from EnAccess as well as setup a personal access token.
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.11_AM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.11_AM.png
deleted file mode 100644
index 15e1a814..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.11_AM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.50_AM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.50_AM.png
deleted file mode 100644
index f0c6eb62..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.52.50_AM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.38_AM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.38_AM.png
deleted file mode 100644
index 86888ecc..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.38_AM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.55_AM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.55_AM.png
deleted file mode 100644
index 2e060d60..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/Visual Studio setup and to Git library instruction 1c38135f4b6b4e3db7ed0d2b3a30ccae/Screen_Shot_2021-10-04_at_10.53.55_AM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/syo9FlQN.jpg b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/syo9FlQN.jpg
deleted file mode 100644
index 0b8132b4..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink App ab448f056ad94eb097874d756342f361/syo9FlQN.jpg and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154.html
deleted file mode 100644
index 582c3d11..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154.html
+++ /dev/null
@@ -1,728 +0,0 @@
-AirLink Devices
AirLink Devices
-
Preface: A note on Bluetooth® SIG requirements, Nov 2021
Our understanding is that the Bluetooth® Special Interest Group requires that any entity branding and selling devices enabled with Bluetooth® must register as a member with the SIG at bluetooth.com, as well as declare the product and the Bluetooth® component being used. This is true for resellers, distributors, and all commercial sales. The final selling brand and product name must be separately declared by the seller, even if the component containing Bluetooth® has been declared by the manufacturer.
Although membership has a free tier, each declaration as of this writing costs $8,000, set to rise to $9,600 in 2022. Multiple products using the same Bluetooth® component (one with an approved QDID) can be added to a new or existing declaration, however if the underlying Bluetooth® component is changed even within the same product, a new declaration must be filed with the full fee. Repercussions of not filing declarations may include shipments of the product being held by customs agents, from a global reference list maintained at bluetooth.com.
This requirement as we understand only applies for sold products, not prototypes.
Please note that this note is not official Bluetooth® SIG communication, but rather it is our understanding of the requirements set by the Bluetooth® SIG as of this writing.
Development Reference
Device Emulator App
To enable quick end to end testing of AirLink, we have designed a single-page Android-native app that imitates an AirLink device with temperature, battery and device configuration resources. The source code of this app as well as an Android-9 executable APK is saved in the AirLink Devices Github repository under the Device Simulator folder.
Device Simulator app running on an Android-9 phone
This app allows you to:
Pair with the main AirLink (gateway) app on another phone
Go through the provisioning flow and initialize the token generation flow
Send data to the server via the AirLink gateway app
Accept tokens from the server - although there is no nexus token decoder running in the app, so it will accept any token
The source code is meant as a reference when designing embedded firmware that can match AirLink’s provisioning and data exchange flows. With the emulator app, anyone can test AirLink without requiring hardware, simply by downloading it onto an Android phone, installing the AirLink gateway app on another phone, and logging on to the demo/custom tenant on the AirLink server.
The source code is not meant to actually process tokens, but could act as a starting point if Android Airlink devices are being developed.
Nordic Device Firmware
Nordic makes the most popular set of Bluetooth chips, and we have developed example firmware to support provisioning, data as well as full Nexus token capability. This firmware is meant to act as a reference for developing custom bluetooth hardware that supports AirLink and also to act as a testbed while developing a custom AirLink gateway app.
Nordic firmware reference source code is available on the AirLink Devices github repository.
A Nordic DVK-BLE kit running AirLink demo firmware
Programming the Nordic kit with AirLink demo firmware
AirLink Devices adopt the Open Connectivity Foundation's Resource Model bridging guidelines for Bluetooth LE devices. A key feature of this bridge is that several OCF Resources are wrapped into one Bluetooth Service to make GET/POST requests efficient. We leverage CBOR for this encapsulation.
-
-
AirLink Protocol Design
Resource model design
-
The OCF bridging recommendation covers GATT properties well, however it does not cover Advertising nor does it cover a resource enumerator explicitly.
We used the following additional assumptions to design our resource models:
Bluetooth gateways from any vendor adopting AirLink should be able to detect other AirLink devices, to ensure interoperability as well as crowd-sourced stolen asset detection. Hence the advertising packet needs to be open format with sufficient information to identify the device and it's basic state
Extended advertising should not be required to transmit the required data, limiting the overall size to 26 bytes
The advertisement data packet as well as other GATT service characteristics must be CBOR encoded lists of Resource Model properties. This is designed for compatibility with the Nexus Channel effort. The GATT characteristics should be in 2-D array format, whereas the Advertisement packet will be a single dimensional byte array with positionally separated properties to conserve data packet length. The gateway device then converts this into a 2-D CBOR array and includes location information before transmitting to the server.
Location is to be appended by the gateway device before transmission to the server, as non-gateway devices are unlikely to have GSM/GPS to locate themselves. However, devices can store locations provided to them by gateway devices to enable a location history within the device if required
Pay-as-you-go credits are sent as Nexus Keycode Tokens, with planned future support for OpenPAYGO Tokens - this is to ensure interoperability with existing keypad/remote enabled devices as well as independence from time-stamp synchronization between server/gateway/end device.
We cover the following general use cases here:
Required: Asset locatability by any gateway via advertisement
Required: Resource enumerator service
Required: Pay-as-you-go credits - we postulate that this does not require manufacturer specific authorization because OpenPAYG Tokens are already securely encrypted between a server and device
Self-provisioning as supported by Thingsboard.io servers
Optional: Power use and Productive Output data logging
Device Discovery Services
The advertisement packet is a compressed resource always readable from the device. We designate it as an 'Implicit GET'.
-A gateway device reads this resource while scanning for devices (before a connection is established), and decompresses it to create a standard-format resource model compatible with AirLink Server. It adds items such as resource type, interface type etc as required by OCF but also timezone, location lat-lon where the device was discovered and the manufacturer ID which is in the bluetooth advertisement header
The /res enumerator resource in AirLink is not included explicitly but each bluetooth property has the corresponding resource endpoint in its ‘Descriptor’ field, removing the need for an explicit descriptor resource while still allowing gateways to discover resources available in a device
To discover how a device gets added to the AirLink server, check the AirLink Server page!
10 (major/minor digits), 2 Bytes = 2^(8*2) = 65536 i.e from 0-65535 (0xFFFF) The format of the data version according to the protocol used. First integer is major number, second minor
From 0-23. Any Universal error that should be executed with priority.
-Error 0 = Unprovisioned,
-Error 1 = Lost track of PAYG credit (battery off),
-Error 2 = Battery Fault
-Error 3 = Output Overcurrent/Overtemp - details in ftd field in timeseries data
-Error 23 = Lost device (e.g. when device doesn't find other Bluetooth devices from it's 'pack'.
-Errors 4-22 are manufacturer specific
2^(8*4) = 4,294,967,296 numeric device ids. The ID of the device that resides in manufacturer registry. AirLink uses the BLE mac ID to uniquely identify an unknown device so this is only a human readable option
2^8 = 256 i.e from 0-255 (0xFF) The status of the device according to manufacturer definition. It can be
-1-unserialized,
-2-unprovisioned,
-3-disabled,
-4-recall,
-5-stolen,
-6-9-Manufacturer custom
-The range is from 1-9. If not supported then 0
Expected signal strength of this Bluetooth device for a receiver (phone / other Bluetooth device) placed at 1 meter, used for distance estimation.
-Value is in negative dB (e.g. a value of s1=70 is considered to be -70dB)
-Calibrated during device prototyping, and adjusted by each device for any changes in it’s transmit power with respect to the transmit power at calibration time (e.g. +2dB transmit power during advertising ⇒ s1=68, if 0dB transmit power at calibration time had yielded an RSSI of -70dB).
From Device advertisement - all manufacturers and end brands of BLE products need to be registered with Bluetooth SIG, as well as EnAccess as tenants to use this service
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
-
Device Config Service
We presume and recommend self-provisioning, although this resource can also be written to if the device firmware permits.
Gateways can be updated with a list of these configurations for downstream devices
The command resource is a passthrough for building a custom encrypted application links e.g. Nexus Channel
On connection, the gateway must write the server access token property with the correct value for that device, upon which the rest of the properties are opened by the device for communication. This is expected to be the programmed behavior of AirLink devices
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
seconds passed since last /pu data pull by any gateway device - presumption is that gateway transmits the data to server. Useful for devices that store a rolling history of data
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
'Energy consumed period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Type of power generator. Known types -
-0 = Disconnected/None - autodetected
-1 = DC Solar - autodetected
-2 = AC Grid/microgrid (as a source) - autodetected
-3 = DC Grid/microgrid (as a source) - from gateway
-4 = AC Wind power - from gateway
-5 = DC Wind power - from gateway
-6 = AC Hydro power - from gateway
-7 = DC Hydro power - from gateway
-8 = AC Petrol/Diesel Generator - from gateway
-100 = Unknown - from gateway
'Energy generation period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour.
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
10 (major/minor digits), 2 Bytes = 2^(8*2) = 65536 i.e from 0-65535 (0xFFFF) The format of the data version according to the protocol used. First integer is major number, second minor
From 0-23. Any Universal error that should be executed with priority.
-Error 0 = Unprovisioned,
-Error 1 = Lost track of PAYG credit (battery off),
-Error 2 = Battery Fault
-Error 3 = Output Overcurrent/Overtemp - details in ftd field in timeseries data
-Error 23 = Lost device (e.g. when device doesn't find other Bluetooth devices from it's 'pack'.
-Errors 4-22 are manufacturer specific
2^(8*4) = 4,294,967,296 numeric device ids. The ID of the device that resides in manufacturer registry. AirLink uses the BLE mac ID to uniquely identify an unknown device so this is only a human readable option
2^8 = 256 i.e from 0-255 (0xFF) The status of the device according to manufacturer definition. It can be
-1-unserialized,
-2-unprovisioned,
-3-disabled,
-4-recall,
-5-stolen,
-6-9-Manufacturer custom
-The range is from 1-9. If not supported then 0
Expected signal strength of this Bluetooth device for a receiver (phone / other Bluetooth device) placed at 1 meter, used for distance estimation.
-Value is in negative dB (e.g. a value of s1=70 is considered to be -70dB)
-Calibrated during device prototyping, and adjusted by each device for any changes in it’s transmit power with respect to the transmit power at calibration time (e.g. +2dB transmit power during advertising ⇒ s1=68, if 0dB transmit power at calibration time had yielded an RSSI of -70dB).
From Device advertisement - all manufacturers and end brands of BLE products need to be registered with Bluetooth SIG, as well as EnAccess as tenants to use this service
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/BLE Advt resource version rv 3300859a95894961a8470b3453d443a2.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/BLE Advt resource version rv 3300859a95894961a8470b3453d443a2.html
deleted file mode 100644
index 2dc172b4..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/BLE Advt resource version rv 3300859a95894961a8470b3453d443a2.html
+++ /dev/null
@@ -1,669 +0,0 @@
-BLE Advt resource version "rv"
BLE Advt resource version "rv"
Description
10 (major/minor digits), 2 Bytes = 2^(8*2) = 65536 i.e from 0-65535 (0xFFFF) The format of the data version according to the protocol used. First integer is major number, second minor
Nx Resource
AirLink Advt Resource 1.0
Octets
3
Qualifiers
Float (uint16_t)Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Airlink ID aid + Cbor header 4 bytes 7ca986675c6749f883879ecd9eb2df2d.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Airlink ID aid + Cbor header 4 bytes 7ca986675c6749f883879ecd9eb2df2d.html
deleted file mode 100644
index 61157819..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Airlink ID aid + Cbor header 4 bytes 7ca986675c6749f883879ecd9eb2df2d.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Airlink ID "aid" + Cbor header 4 bytes
Device Airlink ID "aid" + Cbor header 4 bytes
Description
2^(8*4) = 4,294,967,296 numeric device ids. The ID of the device that resides in manufacturer registry. AirLink uses the BLE mac ID to uniquely identify an unknown device so this is only a human readable option
Nx Resource
AirLink Advt Resource 1.0
Octets
5
Qualifiers
OptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device FW Ver fv f53ffaf4fd02499d86ff064f5eafa20a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device FW Ver fv f53ffaf4fd02499d86ff064f5eafa20a.html
deleted file mode 100644
index 568a361c..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device FW Ver fv f53ffaf4fd02499d86ff064f5eafa20a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device FW Ver "fv"
Device FW Ver "fv"
Description
2^8 = 256 i.e from 0-255 (0xFF). Shows the version of the hardware firmware. It ranges from 01-99. If not supported then 0
Nx Resource
AirLink Advt Resource 1.0
Octets
2
Qualifiers
Integer (uint8_t)Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Fault Status ft , cbor encoded b637848925174c2f94e0ea4acc4b9449.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Fault Status ft , cbor encoded b637848925174c2f94e0ea4acc4b9449.html
deleted file mode 100644
index 412df551..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Fault Status ft , cbor encoded b637848925174c2f94e0ea4acc4b9449.html
+++ /dev/null
@@ -1,675 +0,0 @@
-Device Fault Status "ft", cbor encoded
Device Fault Status "ft", cbor encoded
Description
From 0-23. Any Universal error that should be executed with priority.
-Error 0 = Unprovisioned,
-Error 1 = Lost track of PAYG credit (battery off),
-Error 2 = Battery Fault
-Error 3 = Output Overcurrent/Overtemp - details in ftd field in timeseries data
-Error 23 = Lost device (e.g. when device doesn't find other Bluetooth devices from it's 'pack'.
-Errors 4-22 are manufacturer specific
Nx Resource
AirLink Advt Resource 1.0
Octets
1
Qualifiers
Integer (uint8_t)Read-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Manufacturer ID mid added by gateway device acfe0c925f804a8aad26ad862ad95fd7.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Manufacturer ID mid added by gateway device acfe0c925f804a8aad26ad862ad95fd7.html
deleted file mode 100644
index 14f3a9da..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device Manufacturer ID mid added by gateway device acfe0c925f804a8aad26ad862ad95fd7.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Manufacturer ID "mid" added by gateway device
Device Manufacturer ID "mid" added by gateway device
Description
From Device advertisement - all manufacturers and end brands of BLE products need to be registered with Bluetooth SIG, as well as EnAccess as tenants to use this service
2^(8*2) = 65536 i.e from 0-65535 (0xFFFF). The value remaining for the device to OFF. Range is from 01-9999
-If non payg device then 0
Nx Resource
AirLink Advt Resource 1.0
Octets
5
Qualifiers
Read-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device provisioning status pst 6029f410b6794aa8bd50c65882cb3b39.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device provisioning status pst 6029f410b6794aa8bd50c65882cb3b39.html
deleted file mode 100644
index fbf2ad95..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Device provisioning status pst 6029f410b6794aa8bd50c65882cb3b39.html
+++ /dev/null
@@ -1,676 +0,0 @@
-Device provisioning status "pst"
Device provisioning status "pst"
Description
2^8 = 256 i.e from 0-255 (0xFF) The status of the device according to manufacturer definition. It can be
-1-unserialized,
-2-unprovisioned,
-3-disabled,
-4-recall,
-5-stolen,
-6-9-Manufacturer custom
-The range is from 1-9. If not supported then 0
Some Bluetooth chips require fixed-length advts, this dummy can make up for variation in other properties lengths
Nx Resource
AirLink Advt Resource 1.0
Octets
Qualifiers
Optional
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Expected RSSI at 1 meter \342\200\234s1\342\200\235 86e8807c2505478393bcf6892e81149b.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Expected RSSI at 1 meter \342\200\234s1\342\200\235 86e8807c2505478393bcf6892e81149b.html"
deleted file mode 100644
index 79daf7c5..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Expected RSSI at 1 meter \342\200\234s1\342\200\235 86e8807c2505478393bcf6892e81149b.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Expected RSSI at 1 meter “s1”
Expected RSSI at 1 meter “s1”
Description
Expected signal strength of this Bluetooth device for a receiver (phone / other Bluetooth device) placed at 1 meter, used for distance estimation.
-Value is in negative dB (e.g. a value of s1=70 is considered to be -70dB)
-Calibrated during device prototyping, and adjusted by each device for any changes in it’s transmit power with respect to the transmit power at calibration time (e.g. +2dB transmit power during advertising ⇒ s1=68, if 0dB transmit power at calibration time had yielded an RSSI of -70dB).
Nx Resource
AirLink Advt Resource 1.0
Octets
2
Qualifiers
Integer (uint8_t)Read-OnlyScope: Client
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Spare 6fd3e0665e9945d6b14d89308f48cb34.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Spare 6fd3e0665e9945d6b14d89308f48cb34.html
deleted file mode 100644
index 8a5948dd..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Spare 6fd3e0665e9945d6b14d89308f48cb34.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Spare
Spare
Description
Can be used for Manufacturer specific information, for example type of asset, data about status etc
Nx Resource
AirLink Advt Resource 1.0
Octets
1
Qualifiers
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Timestamp last pulled from gateway or network gts 349bc00bca614803a4bd8c8f16730d55.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Timestamp last pulled from gateway or network gts 349bc00bca614803a4bd8c8f16730d55.html
deleted file mode 100644
index 689ed360..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/Timestamp last pulled from gateway or network gts 349bc00bca614803a4bd8c8f16730d55.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp last pulled from gateway or network "gts"
Timestamp last pulled from gateway or network "gts"
Description
Linux epoch format, expires in Y2035
Nx Resource
AirLink Advt Resource 1.0
Octets
5
Qualifiers
Byte ArrayRead-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/\342\200\234mac\342\200\235 5d9ddee6bf4743cdbf100731be502f11.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/\342\200\234mac\342\200\235 5d9ddee6bf4743cdbf100731be502f11.html"
deleted file mode 100644
index eefe4b6a..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Advertisement advt 6db1187bc0a44fb4ab9d5ab0f86aa9e6/\342\200\234mac\342\200\235 5d9ddee6bf4743cdbf100731be502f11.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-“mac”
“mac”
Description
Bluetooth MAC ID Automatically available in BLE Advertisement. Sent to AirLink server as advt_mac converted to all-caps text e.g. BD:DD:EE:FF:AA:BB
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Thinsboard.io has a 20-char device authentication token unique to each device
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Client Provisioning resource version rv 65c09a2bcdde481f82b7150ae927214f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Client Provisioning resource version rv 65c09a2bcdde481f82b7150ae927214f.html
deleted file mode 100644
index 03c4e394..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Client Provisioning resource version rv 65c09a2bcdde481f82b7150ae927214f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Client Provisioning resource version "rv"
Client Provisioning resource version "rv"
Octets
3
Description
10 (major/minor digits)
Nx Resource
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Customer Name cn b40c28d9d2d4487594a55d599aedf9c2.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Customer Name cn b40c28d9d2d4487594a55d599aedf9c2.html
deleted file mode 100644
index 6ddc0c01..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Client Provisioning Resource ccfg 4e42d04a6e094f69ae26b34ebcd6b48b/Customer Name cn b40c28d9d2d4487594a55d599aedf9c2.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Customer Name
-"cn"
Customer Name
-"cn"
Octets
16
Description
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Device Provisioning Resource dcfg e44a180df02e444b86f74aa33201bed0/Server access Token sat f966836748d34a69b9360a0b395429c4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Device Provisioning Resource dcfg e44a180df02e444b86f74aa33201bed0/Server access Token sat f966836748d34a69b9360a0b395429c4.html
deleted file mode 100644
index fe2a1585..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Device Provisioning Resource dcfg e44a180df02e444b86f74aa33201bed0/Server access Token sat f966836748d34a69b9360a0b395429c4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Server access Token "sat"
Server access Token "sat"
Octets
21
Description
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880.html
deleted file mode 100644
index 184119f0..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880.html
+++ /dev/null
@@ -1,673 +0,0 @@
-AirLink Productive Use Resource /pu
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
seconds passed since last /pu data pull by any gateway device - presumption is that gateway transmits the data to server. Useful for devices that store a rolling history of data
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/AirLink TimeSeries resource version rv 1cb4ed7cf7564b1fa53409e7dd5c460a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/AirLink TimeSeries resource version rv 1cb4ed7cf7564b1fa53409e7dd5c460a.html
deleted file mode 100644
index b8c83fb3..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/AirLink TimeSeries resource version rv 1cb4ed7cf7564b1fa53409e7dd5c460a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-AirLink TimeSeries resource version "rv"
AirLink TimeSeries resource version "rv"
Octets
4
Description
1.0
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/BatteryDevice bat 600363d8bae2473d9dc64ae40ebd22ad.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/BatteryDevice bat 600363d8bae2473d9dc64ae40ebd22ad.html
deleted file mode 100644
index b20cac0e..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/BatteryDevice bat 600363d8bae2473d9dc64ae40ebd22ad.html
+++ /dev/null
@@ -1,669 +0,0 @@
-BatteryDevice "bat"
BatteryDevice "bat"
Octets
1
Description
Yes/No Yes = it has an internal or system level battery
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerMandatoryRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault Data ftd e17ec1a2e17e4d90a04dafba6392fb72.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault Data ftd e17ec1a2e17e4d90a04dafba6392fb72.html
deleted file mode 100644
index 86237d7a..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault Data ftd e17ec1a2e17e4d90a04dafba6392fb72.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Fault Data "ftd"
Device Fault Data "ftd"
Octets
2
Description
Can contain details of error e.g. over-pressure error could contain max pressure measured
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
ByteArrayIntegerOptional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault ft 7b90f1b0f09f4a5cb07f42c5e4158b73.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault ft 7b90f1b0f09f4a5cb07f42c5e4158b73.html
deleted file mode 100644
index ae384c1d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Device Fault ft 7b90f1b0f09f4a5cb07f42c5e4158b73.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Fault "ft"
Device Fault "ft"
Octets
1
Description
Same as Advertisement packet
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
EnumIntegerMandatoryRead-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Dummy \342\200\234dmy\342\200\235 18c0dcdbd6bb484497cf623c82cc49b4.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Dummy \342\200\234dmy\342\200\235 18c0dcdbd6bb484497cf623c82cc49b4.html"
deleted file mode 100644
index 297ec8ee..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Dummy \342\200\234dmy\342\200\235 18c0dcdbd6bb484497cf623c82cc49b4.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Dummy “dmy”
Dummy “dmy”
Octets
Description
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Optional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Equipment Type pue 61da2e444af54906bc2162a99847796f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Equipment Type pue 61da2e444af54906bc2162a99847796f.html
deleted file mode 100644
index 7cfeb632..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Equipment Type pue 61da2e444af54906bc2162a99847796f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Productive Equipment Type "pue"
Productive Equipment Type "pue"
Octets
2
Description
e.g. "Surface Pump", "Borehole Pump", "Fishing Light" etc preregistered types
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerMandatoryRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Metric op 467f88bd5f44421682468daeb2f57029.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Metric op 467f88bd5f44421682468daeb2f57029.html
deleted file mode 100644
index d0eb45d2..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Metric op 467f88bd5f44421682468daeb2f57029.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Productive Output Primary Metric "op"
Productive Output Primary Metric "op"
Octets
4
Description
e.g. Water output for pumps in Litres/hour
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerOptional Grp 1Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Set Limit \342\200\235opl\342\200\235 3faf4861153049c9af692ec2d130c82e.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Set Limit \342\200\235opl\342\200\235 3faf4861153049c9af692ec2d130c82e.html"
deleted file mode 100644
index 1ce29f9e..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Primary Set Limit \342\200\235opl\342\200\235 3faf4861153049c9af692ec2d130c82e.html"
+++ /dev/null
@@ -1,670 +0,0 @@
-Productive Output Primary Set Limit ”opl”
Productive Output Primary Set Limit ”opl”
Octets
4
Description
The limit of primary product Output
-Eg. 100L/H for the pump that can go to 500 L/H
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerOptional Grp 1Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Metric os fbefd16080cc443fb62412ec9ce95a07.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Metric os fbefd16080cc443fb62412ec9ce95a07.html
deleted file mode 100644
index 20e84039..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Metric os fbefd16080cc443fb62412ec9ce95a07.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Productive Output Secondary Metric "os"
Productive Output Secondary Metric "os"
Octets
4
Description
e.g. Pressure for pumps in kPa (1kPa = 10cm water or 0.1 bar)
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerOptional Grp 1Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Set Limit \342\200\234osl\342\200\235 1dcd1441ede849378cb32ae96093837c.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Set Limit \342\200\234osl\342\200\235 1dcd1441ede849378cb32ae96093837c.html"
deleted file mode 100644
index 5f03e5d9..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Productive Output Secondary Set Limit \342\200\234osl\342\200\235 1dcd1441ede849378cb32ae96093837c.html"
+++ /dev/null
@@ -1,670 +0,0 @@
-Productive Output Secondary Set Limit “osl”
Productive Output Secondary Set Limit “osl”
Octets
4
Description
The limit of secondary product Output
-Eg. Could be a pressure of 5kPa for the pump that can preduce the pressure of 10kPa
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerOptional Grp 1Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Time Series Data Format df 7063167dd3f74fc5bf2c1bdc0f2b8162.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Time Series Data Format df 7063167dd3f74fc5bf2c1bdc0f2b8162.html
deleted file mode 100644
index b41f93aa..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Time Series Data Format df 7063167dd3f74fc5bf2c1bdc0f2b8162.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Time Series Data Format "df"
Time Series Data Format "df"
Octets
1
Description
following DF in OpenPAYGO Metrics (in case device has GSM). 0 if not used
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
IntegerMandatoryRead-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History Index \342\200\234thi\342\200\235 cd90a4b443e34c4c94af0ce171d3b006.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History Index \342\200\234thi\342\200\235 cd90a4b443e34c4c94af0ce171d3b006.html"
deleted file mode 100644
index f6db7300..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History Index \342\200\234thi\342\200\235 cd90a4b443e34c4c94af0ce171d3b006.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Octets
4
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History remaining \342\200\234tsh\342\200\235 4b74fa25a5c24a618634b953121dc715.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History remaining \342\200\234tsh\342\200\235 4b74fa25a5c24a618634b953121dc715.html"
deleted file mode 100644
index 42feb1aa..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries History remaining \342\200\234tsh\342\200\235 4b74fa25a5c24a618634b953121dc715.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries History remaining “tsh”
Timeseries History remaining “tsh”
Octets
2
Description
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
OptionalRead-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries Timestamp \342\200\234ts\342\200\235 29eaf8ad68964b91b6513c51ac491208.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries Timestamp \342\200\234ts\342\200\235 29eaf8ad68964b91b6513c51ac491208.html"
deleted file mode 100644
index 0549e164..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/Timeseries Timestamp \342\200\234ts\342\200\235 29eaf8ad68964b91b6513c51ac491208.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries Timestamp “ts”
Timeseries Timestamp “ts”
Octets
4
Description
TImestamp of when the data is recorded
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/cbor header 6445d94fb4cf4d17bd35f6d490aab37f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/cbor header 6445d94fb4cf4d17bd35f6d490aab37f.html
deleted file mode 100644
index 174e82fb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/cbor header 6445d94fb4cf4d17bd35f6d490aab37f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-cbor header
cbor header
Octets
1
Description
encapsulating the rest of the properties
Nx Resource
Qualifiers
Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/seconds since data measured ss 20bb603d3e054a56bffda96f72867778.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/seconds since data measured ss 20bb603d3e054a56bffda96f72867778.html
deleted file mode 100644
index 30685c79..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Productive Use Resource pu ba4b9f526b794cb78d547188976a0880/seconds since data measured ss 20bb603d3e054a56bffda96f72867778.html
+++ /dev/null
@@ -1,669 +0,0 @@
-seconds since data measured "ss"
seconds since data measured "ss"
Octets
6
Description
seconds passed since last /pu data pull by any gateway device - presumption is that gateway transmits the data to server. Useful for devices that store a rolling history of data
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
MandatoryRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a.html
deleted file mode 100644
index cd8b28e5..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a.html
+++ /dev/null
@@ -1,671 +0,0 @@
-AirLink Temperature Resource /temp
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Current Temperature temp d22f039c00c94dd891719d3a55d7b306.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Current Temperature temp d22f039c00c94dd891719d3a55d7b306.html
deleted file mode 100644
index 4bb3bbe0..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Current Temperature temp d22f039c00c94dd891719d3a55d7b306.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Current Temperature "temp"
Current Temperature "temp"
Octets
5
Description
0-128C in 1/2 degree increments
Nx Resource
TEMP 1.0
Qualifiers
MandatoryRead-OnlyScope: Time-series
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Dummy \342\200\234dmy\342\200\235 846c8d70c9ba4104a135d15bc0893c7c.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Dummy \342\200\234dmy\342\200\235 846c8d70c9ba4104a135d15bc0893c7c.html"
deleted file mode 100644
index d1a8b413..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Dummy \342\200\234dmy\342\200\235 846c8d70c9ba4104a135d15bc0893c7c.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Dummy “dmy”
Dummy “dmy”
Octets
Description
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
Nx Resource
TEMP 1.0
Qualifiers
Optional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmax 8e3ae9bd25ed4e2294377cb6715fd99a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmax 8e3ae9bd25ed4e2294377cb6715fd99a.html
deleted file mode 100644
index 7c165928..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmax 8e3ae9bd25ed4e2294377cb6715fd99a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Max Temperature "tmax"
Max Temperature "tmax"
Octets
5
Description
0-128C in 1/2 degree increments
Nx Resource
TEMP 1.0
Qualifiers
OptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmin c8137ffc83a74172b42f1c47f2db8fe8.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmin c8137ffc83a74172b42f1c47f2db8fe8.html
deleted file mode 100644
index 19af77c6..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Max Temperature tmin c8137ffc83a74172b42f1c47f2db8fe8.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Max Temperature "tmin"
Max Temperature "tmin"
Octets
5
Description
0-128C in 1/2 degree increments
Nx Resource
TEMP 1.0
Qualifiers
OptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/TEMP resource version rv 55e84782d048427f877e0a0294959c7d.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/TEMP resource version rv 55e84782d048427f877e0a0294959c7d.html
deleted file mode 100644
index 0ed03daa..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/TEMP resource version rv 55e84782d048427f877e0a0294959c7d.html
+++ /dev/null
@@ -1,669 +0,0 @@
-TEMP resource version "rv"
TEMP resource version "rv"
Octets
3
Description
10 (major/minor digits)
Nx Resource
TEMP 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature lower limit threshold llim 4d19e520c09144abac43c4dbdc789cb4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature lower limit threshold llim 4d19e520c09144abac43c4dbdc789cb4.html
deleted file mode 100644
index 569d6318..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature lower limit threshold llim 4d19e520c09144abac43c4dbdc789cb4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Temperature lower limit threshold "llim"
Temperature lower limit threshold "llim"
Octets
5
Description
0-128C in 1/2 degree increments
Nx Resource
TEMP 1.0
Qualifiers
OptionalRead-WriteScope: Client Attr
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature upper limit threshold hlim fab790055cb646a6877254cd14e20513.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature upper limit threshold hlim fab790055cb646a6877254cd14e20513.html
deleted file mode 100644
index eed46dbc..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Temperature upper limit threshold hlim fab790055cb646a6877254cd14e20513.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Temperature upper limit threshold "hlim"
Temperature upper limit threshold "hlim"
Octets
5
Description
0-128C in 1/2 degree increments
Nx Resource
TEMP 1.0
Qualifiers
OptionalRead-WriteScope: Client Attr
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History Index \342\200\234thi\342\200\235 c921dbf34c904f81b5d3c6bd11365e96.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History Index \342\200\234thi\342\200\235 c921dbf34c904f81b5d3c6bd11365e96.html"
deleted file mode 100644
index 5620c73d..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History Index \342\200\234thi\342\200\235 c921dbf34c904f81b5d3c6bd11365e96.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Octets
4
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
TEMP 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History remaining \342\200\234tsh\342\200\235 7ba39d7c0efd402caf1fc7f363886ad5.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History remaining \342\200\234tsh\342\200\235 7ba39d7c0efd402caf1fc7f363886ad5.html"
deleted file mode 100644
index a355cd44..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries History remaining \342\200\234tsh\342\200\235 7ba39d7c0efd402caf1fc7f363886ad5.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries History remaining “tsh”
Timeseries History remaining “tsh”
Octets
2
Description
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Nx Resource
PAYG Credit 1.0
Qualifiers
OptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries Timestamp \342\200\234ts\342\200\235 1bd6fd1a03ef4ea5835ae311b12614fb.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries Timestamp \342\200\234ts\342\200\235 1bd6fd1a03ef4ea5835ae311b12614fb.html"
deleted file mode 100644
index 29ffb0f1..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/Timeseries Timestamp \342\200\234ts\342\200\235 1bd6fd1a03ef4ea5835ae311b12614fb.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries Timestamp “ts”
Timeseries Timestamp “ts”
Octets
4
Description
TImestamp of when the data is recorded
Nx Resource
TEMP 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/cbor map header 5b4050a1f30e479394e49d120a4b810a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/cbor map header 5b4050a1f30e479394e49d120a4b810a.html
deleted file mode 100644
index be072783..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/AirLink Temperature Resource temp b1035d2999d74ac79996a5560908b32a/cbor map header 5b4050a1f30e479394e49d120a4b810a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-cbor map header
cbor map header
Octets
1
Description
encapsulating the rest of the properties
Nx Resource
TEMP 1.0
Qualifiers
Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e.html
deleted file mode 100644
index e97b5dde..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e.html
+++ /dev/null
@@ -1,675 +0,0 @@
-Battery Resource /batt
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat Voltage mV vb 2feff419673d43dd88727a391c75c12a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat Voltage mV vb 2feff419673d43dd88727a391c75c12a.html
deleted file mode 100644
index cf48a1cb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat Voltage mV vb 2feff419673d43dd88727a391c75c12a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Bat Voltage mV "vb"
Bat Voltage mV "vb"
Octets
4
Description
Only for Battery Device
Nx Resource
Battery 1.0
Qualifiers
IntegerOptional Grp 3Read-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat charging or discharge current mA ib a27962dd59264d798220f48c5cfbb136.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat charging or discharge current mA ib a27962dd59264d798220f48c5cfbb136.html
deleted file mode 100644
index b82000b7..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Bat charging or discharge current mA ib a27962dd59264d798220f48c5cfbb136.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Bat charging or discharge current mA "ib"
Bat charging or discharge current mA "ib"
Octets
4
Description
Only for Battery Device
Nx Resource
Battery 1.0
Qualifiers
IntegerOptional Grp 3Read-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Charging Status cs 831bad6bdafd4ac89b03dcc48c0b2132.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Charging Status cs 831bad6bdafd4ac89b03dcc48c0b2132.html
deleted file mode 100644
index e1089bfb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Charging Status cs 831bad6bdafd4ac89b03dcc48c0b2132.html
+++ /dev/null
@@ -1,672 +0,0 @@
-Charging Status "cs"
Charging Status "cs"
Octets
1
Description
0 = No Data
-1 = Charging - fast
-2 = Charging - slow / trickle
-3 = Discharging
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History Index \342\200\234thi\342\200\235 e49c58d7170948a3ac2757981f9a311d.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History Index \342\200\234thi\342\200\235 e49c58d7170948a3ac2757981f9a311d.html"
deleted file mode 100644
index 509d6222..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History Index \342\200\234thi\342\200\235 e49c58d7170948a3ac2757981f9a311d.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Octets
4
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
Battery 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History remaining \342\200\234tsh\342\200\235 f1acfcc1e7374e149e4a483b53161b79.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History remaining \342\200\234tsh\342\200\235 f1acfcc1e7374e149e4a483b53161b79.html"
deleted file mode 100644
index 37cdf5e0..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Battery Resource batt 9f53f43ac8fc467aba3fba5696246a8e/Timeseries History remaining \342\200\234tsh\342\200\235 f1acfcc1e7374e149e4a483b53161b79.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries History remaining “tsh”
Timeseries History remaining “tsh”
Octets
2
Description
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
'Energy consumed period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length Characteristics, this dummy can make up for variation in other properties lengths
Nx Resource
energy consumption 1.0
Qualifiers
Optional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Power (deciWatts) po 332ce5ff5f944dc9ab0a6d1493dcdb34.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Power (deciWatts) po 332ce5ff5f944dc9ab0a6d1493dcdb34.html
deleted file mode 100644
index c531f64f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Power (deciWatts) po 332ce5ff5f944dc9ab0a6d1493dcdb34.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Power (deciWatts) "po"
Power (deciWatts) "po"
Octets
4
Description
Output power depending on data format registered by manufacturer
Nx Resource
energy consumption 1.0
Qualifiers
IntegerOptionalRead-OnlySource: Time-series
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History Index \342\200\234thi\342\200\235 db86cd53bb3a4a63b9734c584da609b0.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History Index \342\200\234thi\342\200\235 db86cd53bb3a4a63b9734c584da609b0.html"
deleted file mode 100644
index 704cbcbd..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History Index \342\200\234thi\342\200\235 db86cd53bb3a4a63b9734c584da609b0.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Octets
4
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
energy consumption 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History remaining \342\200\234tsh\342\200\235 520d4478858e4055a240d72f00eb6913.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History remaining \342\200\234tsh\342\200\235 520d4478858e4055a240d72f00eb6913.html"
deleted file mode 100644
index 21014708..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Consumption Resource eout 6a412ad84155409fbe6ecf130ad18ff3/Timeseries History remaining \342\200\234tsh\342\200\235 520d4478858e4055a240d72f00eb6913.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries History remaining “tsh”
Timeseries History remaining “tsh”
Octets
2
Description
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
'Energy consumed period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour
Type of power generator. Known types -
-0 = Disconnected/None - autodetected
-1 = DC Solar - autodetected
-2 = AC Grid/microgrid (as a source) - autodetected
-3 = DC Grid/microgrid (as a source) - from gateway
-4 = AC Wind power - from gateway
-5 = DC Wind power - from gateway
-6 = AC Hydro power - from gateway
-7 = DC Hydro power - from gateway
-8 = AC Petrol/Diesel Generator - from gateway
-100 = Unknown - from gateway
'Energy generation period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour.
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Current (centiAmps) ai 0c2ae0b6e7514b3086da4a95fab600d4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Current (centiAmps) ai 0c2ae0b6e7514b3086da4a95fab600d4.html
deleted file mode 100644
index c34cdd19..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Current (centiAmps) ai 0c2ae0b6e7514b3086da4a95fab600d4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Current (centiAmps) "ai"
Current (centiAmps) "ai"
Octets
4
Description
Input current depending on data format registered by manufacturer. We will start with PV in controllers and Output in FL
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Power (deciWatts) pi ce199a07e16e41e482942c6c1f4bafdb.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Power (deciWatts) pi ce199a07e16e41e482942c6c1f4bafdb.html
deleted file mode 100644
index 82cf4895..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Power (deciWatts) pi ce199a07e16e41e482942c6c1f4bafdb.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Power (deciWatts) "pi"
Power (deciWatts) "pi"
Octets
4
Description
Input power depending on data format registered by manufacturer. We will start with PV in controllers and Output in FL
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Type of source st c1e974c45f3b4742b91113f69931bac1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Type of source st c1e974c45f3b4742b91113f69931bac1.html
deleted file mode 100644
index 146837fb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Type of source st c1e974c45f3b4742b91113f69931bac1.html
+++ /dev/null
@@ -1,679 +0,0 @@
-Type of source "st"
Type of source "st"
Octets
1
Description
Type of power generator. Known types -
-0 = Disconnected/None - autodetected
-1 = DC Solar - autodetected
-2 = AC Grid/microgrid (as a source) - autodetected
-3 = DC Grid/microgrid (as a source) - from gateway
-4 = AC Wind power - from gateway
-5 = DC Wind power - from gateway
-6 = AC Hydro power - from gateway
-7 = DC Hydro power - from gateway
-8 = AC Petrol/Diesel Generator - from gateway
-100 = Unknown - from gateway
Nx Resource
energy generation 1.0
Qualifiers
EnumIntegerMandatoryRead-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Voltage (milliVolts) vi d775d1c3b3774dd098e93bc6b25c3a78.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Voltage (milliVolts) vi d775d1c3b3774dd098e93bc6b25c3a78.html
deleted file mode 100644
index 7d510ae8..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/Voltage (milliVolts) vi d775d1c3b3774dd098e93bc6b25c3a78.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Voltage (milliVolts) "vi"
Voltage (milliVolts) "vi"
Octets
4
Description
Input voltage depending on data format registered by manufacturer. We will start with PV in controllers and Output in FL
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/cbor header 9efb8fe529444ed988208442b6a0e1e1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/cbor header 9efb8fe529444ed988208442b6a0e1e1.html
deleted file mode 100644
index 8ad2cf6c..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/cbor header 9efb8fe529444ed988208442b6a0e1e1.html
+++ /dev/null
@@ -1,669 +0,0 @@
-cbor header
cbor header
Octets
1
Description
encapsulating the rest of the properties
Nx Resource
Qualifiers
Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/eg d028a053a80541b0aa366a9cd9cee104.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/eg d028a053a80541b0aa366a9cd9cee104.html
deleted file mode 100644
index 1ff1e3ed..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/eg d028a053a80541b0aa366a9cd9cee104.html
+++ /dev/null
@@ -1,669 +0,0 @@
-eg
eg
Octets
4
Description
'Energy generated' in deciwatt-hours(Wh / 10). Computed over a time window defined by egs and egp.
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egp 0eae208ec85247eda715114b76cb6448.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egp 0eae208ec85247eda715114b76cb6448.html
deleted file mode 100644
index fe987f0d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egp 0eae208ec85247eda715114b76cb6448.html
+++ /dev/null
@@ -1,669 +0,0 @@
-egp
egp
Octets
4
Description
'Energy generation period'. Minutes since egs over which the value of eg was accumulated. For example, if egs is 60, and egp is 60, the value of eg represents the watt-hours generated during the past hour.
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egs 2e60e7641bf54ca095ddb22bd93d4fc1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egs 2e60e7641bf54ca095ddb22bd93d4fc1.html
deleted file mode 100644
index 782b00ce..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Energy Generation Resource ein 9707ac361be74048ad6c418807b577d4/egs 2e60e7641bf54ca095ddb22bd93d4fc1.html
+++ /dev/null
@@ -1,669 +0,0 @@
-egs
egs
Octets
4
Description
'Energy generation start'. Minutes in the past (minutes ago) when the reported eg value began accumulation.
Nx Resource
energy generation 1.0
Qualifiers
IntegerOptionalRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4.html
deleted file mode 100644
index 42a4b69b..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Location Resource /loc
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Array Cbor header b3832bd6e6784980b69e4248b16f8da4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Array Cbor header b3832bd6e6784980b69e4248b16f8da4.html
deleted file mode 100644
index 9199d089..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Array Cbor header b3832bd6e6784980b69e4248b16f8da4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Array Cbor header
Array Cbor header
Description
Array declaration header of 8 elements
Nx Resource
Octets
1
Qualifiers
CBOR Header
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Device Signal strength dss added by gateway device cba4eb12802d4022a7ee935131fca528.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Device Signal strength dss added by gateway device cba4eb12802d4022a7ee935131fca528.html
deleted file mode 100644
index dd9e124e..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Device Signal strength dss added by gateway device cba4eb12802d4022a7ee935131fca528.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Signal strength "dss" added by gateway device
Device Signal strength "dss" added by gateway device
Description
Added by gateway device reporting the exactly location of the device from a gateway expressed in dBm
Nx Resource
Location Resource 1.0
Octets
Qualifiers
String
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Dummy \342\200\234dmy\342\200\235 3bd8a08a6ba94910a2fc4b341e660f38.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Dummy \342\200\234dmy\342\200\235 3bd8a08a6ba94910a2fc4b341e660f38.html"
deleted file mode 100644
index bba68d50..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Dummy \342\200\234dmy\342\200\235 3bd8a08a6ba94910a2fc4b341e660f38.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Dummy “dmy”
Dummy “dmy”
Description
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
Nx Resource
AirLink PUE Timeseries 1.0
Octets
Qualifiers
Optional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway AirLink ID gid added by gateway device 40e213a988e7431a91fade26163be4e4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway AirLink ID gid added by gateway device 40e213a988e7431a91fade26163be4e4.html
deleted file mode 100644
index 79410e76..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway AirLink ID gid added by gateway device 40e213a988e7431a91fade26163be4e4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Gateway AirLink ID "gid" added by gateway device
Gateway AirLink ID "gid" added by gateway device
Description
Nx Resource
Location Resource 1.0
Octets
5
Qualifiers
Integer (uint32_t)
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway Manufacturer ID gmid added by gateway devi 97eef973738548959e5f3520ee1c010e.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway Manufacturer ID gmid added by gateway devi 97eef973738548959e5f3520ee1c010e.html
deleted file mode 100644
index f1e87100..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Gateway Manufacturer ID gmid added by gateway devi 97eef973738548959e5f3520ee1c010e.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Gateway Manufacturer ID "gmid" added by gateway device
Gateway Manufacturer ID "gmid" added by gateway device
Description
How can we prevent one manufacturer from messing up the other's IDs?
Nx Resource
Location Resource 1.0
Octets
2
Qualifiers
Integer (uint16_t)MandatoryRead-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Latitude lt added by gatway device 701bac14e8d1483ea8c00e0ffd0a50c1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Latitude lt added by gatway device 701bac14e8d1483ea8c00e0ffd0a50c1.html
deleted file mode 100644
index 5aab74e0..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Latitude lt added by gatway device 701bac14e8d1483ea8c00e0ffd0a50c1.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Latitude "lt" added by gatway device
Latitude "lt" added by gatway device
Description
Added by gateway device reporting location of non-gateway device, 10 octets
Nx Resource
Location Resource 1.0
Octets
Qualifiers
String
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Location accuracy la added by gateway device 0da012bdf52242d89bbdd8faf7384479.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Location accuracy la added by gateway device 0da012bdf52242d89bbdd8faf7384479.html
deleted file mode 100644
index c5310eeb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Location accuracy la added by gateway device 0da012bdf52242d89bbdd8faf7384479.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Location accuracy "la" added by gateway device
Location accuracy "la" added by gateway device
Description
Added by gateway device reporting location of non-gateway device, 6 octets
Nx Resource
Location Resource 1.0
Octets
Qualifiers
String
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Longitude ln added by gateway device 9ec99c93487141b3ad85fe8c79288e0b.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Longitude ln added by gateway device 9ec99c93487141b3ad85fe8c79288e0b.html
deleted file mode 100644
index 03476b12..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Longitude ln added by gateway device 9ec99c93487141b3ad85fe8c79288e0b.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Longitude "ln" added by gateway device
Longitude "ln" added by gateway device
Description
Added by gateway device reporting location of non-gateway device, 10 octets
Nx Resource
Location Resource 1.0
Octets
Qualifiers
String
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries History Index \342\200\234thi\342\200\235 9bd2f22622c34d0588137ae8ecb834e5.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries History Index \342\200\234thi\342\200\235 9bd2f22622c34d0588137ae8ecb834e5.html"
deleted file mode 100644
index dba513a3..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries History Index \342\200\234thi\342\200\235 9bd2f22622c34d0588137ae8ecb834e5.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
AirLink PUE Timeseries 1.0
Octets
4
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries Timestamp \342\200\234ts\342\200\235 a73891099b11477e9cd08008d6a191c3.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries Timestamp \342\200\234ts\342\200\235 a73891099b11477e9cd08008d6a191c3.html"
deleted file mode 100644
index e67486a9..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timeseries Timestamp \342\200\234ts\342\200\235 a73891099b11477e9cd08008d6a191c3.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries Timestamp “ts”
Timeseries Timestamp “ts”
Description
TImestamp of when the data is recorded
Nx Resource
AirLink PUE Timeseries 1.0
Octets
4
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timestamp last pulled from gateway or network gts 78eb3260d15b4f45a8a6c3ff50a49117.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timestamp last pulled from gateway or network gts 78eb3260d15b4f45a8a6c3ff50a49117.html
deleted file mode 100644
index 8cd0b740..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Location Resource loc 1e2833229c0a42fe92acc35cf066cbb4/Timestamp last pulled from gateway or network gts 78eb3260d15b4f45a8a6c3ff50a49117.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp last pulled from gateway or network "gts"
Timestamp last pulled from gateway or network "gts"
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/AirLink PAYG resource version rv 1f3a5adf4f924ff0a5b38d64c90db47e.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/AirLink PAYG resource version rv 1f3a5adf4f924ff0a5b38d64c90db47e.html
deleted file mode 100644
index 775422ce..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/AirLink PAYG resource version rv 1f3a5adf4f924ff0a5b38d64c90db47e.html
+++ /dev/null
@@ -1,669 +0,0 @@
-AirLink PAYG resource version "rv"
AirLink PAYG resource version "rv"
Octets
3
Description
10 (major/minor digits)
Nx Resource
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Current Local Time lt 6e4941b4bf754e21a7e8a19d1ba30bf2.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Current Local Time lt 6e4941b4bf754e21a7e8a19d1ba30bf2.html
deleted file mode 100644
index c0c87d1d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Current Local Time lt 6e4941b4bf754e21a7e8a19d1ba30bf2.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Current Local Time "lt"
Current Local Time "lt"
Octets
6
Description
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes
Nx Resource
PAYG Credit 1.0
Qualifiers
DateTimeOptionalRead-WriteScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Device PayG Credit Remaining re 3007039c266f4d0491cf8af57e474145.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Device PayG Credit Remaining re 3007039c266f4d0491cf8af57e474145.html
deleted file mode 100644
index 3d06a50f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Device PayG Credit Remaining re 3007039c266f4d0491cf8af57e474145.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Device PayG Credit Remaining "re"
Device PayG Credit Remaining "re"
Octets
5
Description
should be The value remaining for the device to OFF.
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token
Nx Resource
PAYG Credit 1.0
Qualifiers
IntegerMandatoryRead-WriteScope: Time-series
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Dummy \342\200\234dmy\342\200\235 955a58001e0b49cfa50bdd7ea7b41e39.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Dummy \342\200\234dmy\342\200\235 955a58001e0b49cfa50bdd7ea7b41e39.html"
deleted file mode 100644
index fd8e6831..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Dummy \342\200\234dmy\342\200\235 955a58001e0b49cfa50bdd7ea7b41e39.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Dummy “dmy”
Dummy “dmy”
Octets
Description
Some Bluetooth chips require fixed-length characteristics, this dummy can make up for variation in other properties lengths
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Optional
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Last Added PayG Credit lcr 81566cd01ed4418ea2d58275d95be744.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Last Added PayG Credit lcr 81566cd01ed4418ea2d58275d95be744.html
deleted file mode 100644
index 9a3ca176..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Last Added PayG Credit lcr 81566cd01ed4418ea2d58275d95be744.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Last Added PayG Credit "lcr"
Last Added PayG Credit "lcr"
Octets
2
Description
Historical last PayG credit update duration. Range is from 01-9999
Nx Resource
PAYG Credit 1.0
Qualifiers
IntegerOptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Mode mo b3b54440869e4e28ab6484305302b94d.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Mode mo b3b54440869e4e28ab6484305302b94d.html
deleted file mode 100644
index ab1c0065..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Mode mo b3b54440869e4e28ab6484305302b94d.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Mode "mo"
Mode "mo"
Octets
1
Description
mode of device i.e. leading/following etc
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token
Nx Resource
PAYG Credit 1.0
Qualifiers
Read-WriteScope: Shared Attr
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/PayG Token tkn a325dc9913444fffa0e7406337797acd.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/PayG Token tkn a325dc9913444fffa0e7406337797acd.html
deleted file mode 100644
index 0e6b7dd8..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/PayG Token tkn a325dc9913444fffa0e7406337797acd.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PayG Token "tkn"
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History Index \342\200\234thi\342\200\235 32f0ca52c1ba47fbbd9a9540fc05b9f3.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History Index \342\200\234thi\342\200\235 32f0ca52c1ba47fbbd9a9540fc05b9f3.html"
deleted file mode 100644
index d78e6fb5..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History Index \342\200\234thi\342\200\235 32f0ca52c1ba47fbbd9a9540fc05b9f3.html"
+++ /dev/null
@@ -1,671 +0,0 @@
-Timeseries History Index “thi”
Timeseries History Index “thi”
Octets
4
Description
Whenever this property is available that means it is a timeseries resource.
-thi = 0, means there is no more timeseries data.
-Any number greater than zero can be used for indicating which data proceeds especially when the timestamp is the same.
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History remaining \342\200\234tsh\342\200\235 97453b8372914a0fa4042380ee986285.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History remaining \342\200\234tsh\342\200\235 97453b8372914a0fa4042380ee986285.html"
deleted file mode 100644
index 18cfc9f9..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries History remaining \342\200\234tsh\342\200\235 97453b8372914a0fa4042380ee986285.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries History remaining “tsh”
Timeseries History remaining “tsh”
Octets
2
Description
Any resource with one or more timeseries properties is enabled with this optional property which can indicate that the device has stored historical data while offline that it can sequentially upload to the gateway via multiple reads
Nx Resource
PAYG Credit 1.0
Qualifiers
OptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries Timestamp \342\200\234ts\342\200\235 b8c65dbbb1054b0db0ec3f10e052b039.html" "b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries Timestamp \342\200\234ts\342\200\235 b8c65dbbb1054b0db0ec3f10e052b039.html"
deleted file mode 100644
index d2a87875..00000000
--- "a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timeseries Timestamp \342\200\234ts\342\200\235 b8c65dbbb1054b0db0ec3f10e052b039.html"
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries Timestamp “ts”
Timeseries Timestamp “ts”
Octets
4
Description
TImestamp of when the data is recorded
Nx Resource
AirLink PUE Timeseries 1.0
Qualifiers
Read-Only
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp at which PayG remaining was calculated p 836dff85b1184a0fba33a4d3ee43d249.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp at which PayG remaining was calculated p 836dff85b1184a0fba33a4d3ee43d249.html
deleted file mode 100644
index c30ceea2..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp at which PayG remaining was calculated p 836dff85b1184a0fba33a4d3ee43d249.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp at which PayG remaining was calculated "pts"
Timestamp at which PayG remaining was calculated "pts"
Octets
6
Description
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
Nx Resource
PAYG Credit 1.0
Qualifiers
DateTimeOptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp of last PAYG Update to device lts 6d90c70764b34215ad2ebeee7a8829ac.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp of last PAYG Update to device lts 6d90c70764b34215ad2ebeee7a8829ac.html
deleted file mode 100644
index f75bbedc..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/Timestamp of last PAYG Update to device lts 6d90c70764b34215ad2ebeee7a8829ac.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp of last PAYG Update to device "lts"
Timestamp of last PAYG Update to device "lts"
Octets
6
Description
Linux epoch format, expires in Y2035, readonly - Historical last PayG update Timestamp
Nx Resource
PAYG Credit 1.0
Qualifiers
DateTimeOptionalRead-OnlyScope: Time-series
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/cbor map header dad9bb74ae304a7db2b24cf1f5f0393f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/cbor map header dad9bb74ae304a7db2b24cf1f5f0393f.html
deleted file mode 100644
index c0e19f9a..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/PAYG Credit Resource pc fe07481669c0479abdec399ee05fddb9/cbor map header dad9bb74ae304a7db2b24cf1f5f0393f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-cbor map header
cbor map header
Octets
1
Description
encapsulating the rest of the properties
Nx Resource
Qualifiers
Read-Write
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Range Testing Results ef4c4ece8fba4542830d415dc0fa1a42.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Range Testing Results ef4c4ece8fba4542830d415dc0fa1a42.html
deleted file mode 100644
index 00af3dc4..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Devices 4dfc27f9e47e452594ec42eafbb56154/Range Testing Results ef4c4ece8fba4542830d415dc0fa1a42.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Range Testing Results
📏
Range Testing Results
Range testing was done with a Laird BL652 (nRF51832) chip in advertisement mode being scanned from an Android phone.
Coverage around concrete houseCoverage through concrete wallsLine of sight range
We have created a fully functional demo tenant to enable quick testing of AirLink in conjunction with the gateway and device apps. The demo tenant also can plot information reported from the Nordic BLE kit, as shown below:
AirLink IoT Server Architecture
AirLink builds a structure on top of a standard Thingsboard.io professional edition server. The only, minimal customization is the addition of a rule node to generate PAYG tokens, which is not a default part of Thingsboard. A Thingsboard PE server is a ‘multi-tenant’ server, which means several separated businesses can run their IoT devices from a single server without visibility into the other tenants data. This setup makes it a perfect candidate for a centrally hosted server that can onboard new participants in the AirLink community. Please familiarize yourself with http://thingsboard.io/ documentation before reading the rest of this page!
In the figure, the “AirLink Tenant” is the main location of the IoT setup of a particular tenant, which can be very different from the next tenant. In fact, we setup a second “Lost & Found Tenant”, also referred in this documentation as “Neighborhood Watch”, which is intended to be a common repository for tenant gateways who find AirLink devices that don’t belong to them but want to help locate them.
This documentation serves as the reference to setup your own tenant in a way that is AirLink compliant. The bulk of the setup is very simple, and the only relatively complex configuration which is the “Rule Chain”, can be imported from a JSON file available in the AirLink Server repository.
Debug DataDistributorGraphs and MapsPAYG CreditToken Automation
Customer GroupCustomer HierarchyMulti-tenancy
Test entities
We encourage creating test entities to learn about Thingsboard, that way production entities can be easily kept separate. Every entity can be grouped, so creating a test group for each type of entity is an easy way to do testing. Entities can be added to a test group by selecting one or more entities from the 'All' catch-all group, and adding to a specific group.
-
Tenant Configuration
How to get started with your AirLink Server tenant
Here is a step by step setup to your own tenancy in the AirLink server. Alternatively, if you end up installing your own Thingsboard.io server, this guide can also help you right past the end of the installation steps detailed on Thingsboard.io.
Assumption: You have a “Tenant Administrator” email login provided by EnAccess for the first AirLink server, or one that you made for your own server
Setup Device Profiles
Setup a “Gateways” profile and enable the “Allow provisioning...” option. To do this, you need to tap the pencil button and then remember to save by pressing the tick-mark button.
Setup a “Devices” Profile, and enable the “Default” checkbox as in the figure above. Also enable the “Allow provisioning...” option as in the previous step
Copy the Provisioning Keys and Secrets, you will need to input these in the AirLink app!
Import the rule chains: All data that flows to the thingsboard server goes to the root rule chain, and any other rule chain that the root chain hands off to. To process AirLink data, especially to enable PAYG token generation as well as the Neighborhood watch function, we customized this rule chain and saved it as a JSON file in the AirLink Server repository. To use functionality beyond just the core AirLink functionality, we created another “Business Logic” rule chain which gets handed off all the data from the Root rule chain.
First import the “Business Logic”, “Unknown Device Piggyback” and “PAYG Software Providers” rule chains JSON file by going to Rule Chain → + → Import Rule Chain
Next, Import the “Root Advertisements and Telemetry” Rule chain. Your rule chain setup should look like this with no errors now:
Mark this rule chain as “Root” using the ‘flag’ button
Setup Test Devices, Customers, Users, Assets etc as shown in test entities above to assign devices, test the “Relationships” property and so on to build a digital model of your IoT business model. As you can see, each screenshot above has our own Test entities for good measure!
That’s it for the minimum required configuration! Next, configure your AirLink App to talk to your server, and your set to test with real devices!
The following sections show a few details of the other elements of the server, the latest documentation for which can be found on thingsboard.io.
User Roles
Two main roles are defined, Tenant Admin (first assigned along with tenant) who has full privileges within the platform including controlling other users access, and Technician who has full device privileges including re-provisioning and assigning to customers. Customer administration is presumed to be done via API integration by the business applications server, hence there is no third role regarding customer administration.
-
Device Provisioning Flow in AirLink Server
Device State
Gateway Action
No Serial #
Program Serial # via BLE to Device
Has Serial #, but not Provisioned
Act as Application Server: using Tenant Admin or Customer User credentials (login + password)
-1. Generate Server Auth Token (SAT) and Airlink ID (aid)
-2. Provision Device to Devices Profile* in Server and get DeviceUUID
-3. Generate PAYG Token Secret (PTS)
-4. Write PTS to Server Side Attributes using DeviceUUID in Thingsboard server
-5. Forget DeviceUUID
-
-using BLE,
-1. write (SAT), (PTS) to device
Has Serial #, SAT, PTS
Act as application server:
-Request PAYG Token generation using user credentials / token generation credentials
-
-Act as regular gateway:
-1. Request PAYG Attributes for Device using SAT
-2. Write PAYG Token to device using BLE
Has Serial#, SAT, PTS and test token
Read device telemetry and post to server
*Device profiles can be considered as the equivalent of 'class definitions' in object oriented programming, with each device then being an instance of a particular profile. We have two main device profiles, an edge device and a gateway. These could potentially be merged, however Thingsboard does make a differentiation between a gateway and non-gateway with a checkbox as well as requirements on data format, hence we define two profiles.
Attributes and Time Series Data
Data exchanged with the device or with the application server in the context of a device are termed attributes.
In the AirLink server (based on Thingsboard), Attributes are Device properties that are only stored as current values, while Timeseries data are properties tracked over time. Attributes and Timeseries keys can be created during provisioning or are automatically created in the Airlink server when first posted, allowing for flexibility in growing resource models over time without requiring reconfiguration of the server. The core AirLink resource models are registered in the Nexus Resource Models Registry.
The following are the major attribute types and their scopes in a basic AirLink setup.
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes eg client experience
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
mode of device i.e. leading/following etc
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
should be The value remaining for the device to OFF.
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
On first release, this is the Nexus Keycode message ID
Posting of device data to the server for off-edge devices is done via gateway by sharing their device access tokens with the gateway using the application server. For Smartphone gateways, this can be done via a separate channel to the application server. For 'thing' gateways, this must be done via a 'disappearing' shared server attribute for that gateway, so that tokens are not saved in the insecure data space for too long. The application server then would update the attribute to transfer tokens to the gateway, and then blank it out once the gateway receives the tokens or after a certain timeout.
Authentication and Access types
AirLink server controls IoT interactions and can connect with the business applications server via REST API. The Business Applications server must authenticate itself as a User or Customer using JWT authentication, or have access keys to a custom integration as specified in the authentication flow. Note that only Custom Integration configurations are visible in the UI, the built-in telemetry, admin etc endpoints are only visible in the Swagger documentation but all events from each endpoint are posted to the root rule chain, enabling customized business logic for all types of data.
AirLink Server Device Auth Flows
Full API reference is available as live Swagger documentation here after you have a tenant login:
Device-initiated or gateway-initiated communications posting time-series data and accepting a PAYG update response are expected to form the bulk of IoT traffic in PAYG use cases. Considering the Auth flows available for posting data, AirLink recommends four types of transport:
Individual devices equipped with GSM send data directly using their device token e.g. water pump control boxes
Gateways bundled with a sale register as MQTT gateways in the AirLink server to be able to post data from multiple downstream devices while minimizing bandwidth use. This is relevant because such IoT gateways often use data-thrifty 'Global-SIM' cards which can rack up high data costs e.g. solar panel with GSM chip bundled with 3 batteries that it charges
Phone apps acting as gateways post data as the device and get PAYG updates from the server, using the individual device tokens downloaded during the sales and service flows. This needs to be enabled by the business applications server and is useful because several phone gateways may be used to operate the same device and a one-device multi-gateway scenario with offline access is not well served by MQTT. PAYG security is still ensured by the fact that the token is still only decode-able to the server and the device and not the intervening gateways. e.g. equipment owner could operate the device, several equipment technicians could operate the device etc.
Phone apps and gateways post advertisement data for unknown AirLink devices to facilitate lost-and-found using a special property within the gateway's telemetry which is then processed by the root rule chain with the necessary validations to ensure that data gets send to the correct recipient and so that it is not used for posting non-advertising telemetry or attributes for the device.
AirLink currently only supports HTTP transport, CoAP will be enabled in the future. CBOR formatting of data is not currently supported.
✅ Thingsboard supports MQTT as gateway paired with customer devices, majority use case
-✅ Single connection can report multiple devices' data
-❌ If multiple gateways need to own devices, they would need to be transferred between devices e.g. Field service agent's phone, customer's phone, farm boys' phone etc by online transactions with server - may not be feasible in the field
⚠️ Credential of each device would need to be known to gateway (additional thingsboard workflow), and list of gateways that can control device wouldn't be registered with Airlink server (more potential for spoofing), requiring credentials to be refreshed or other security measures
-⚠️ Each device would need to be reported separately, increasing number of HTTP required connections
-✅ Could support arbitrary number of gateways
KeyCode generation
Nexus Keycode generation integrated into the Root Rule Chain
Nexus Keycode as well as OpenPAYGO Token use 'SipHash' to generate the key, and have Python/Java libraries available. However Thingsboard only runs single-file JavaScript in it's rule chains and custom Java in it's rule nodes, hence we decided to create a Java rule node based on Nexus Keycode. External keycodes could also be used by swapping that rule node with an External REST component in the AirLink server that points to a client's server running code generation, and response sent as token via AirLink to the device.
Since Keycode generation is not a telemetry-time operation but rather account-payment time operation, the number of requests will scale with the number of devices and payment frequency rather than the number or frequency of telemetry data.
The provided KeyCode node
Understands incoming business request as adding credit, setting credit or unlocking the device - POST REST requests to the rule-engine, authenticated using role-based access control (login) are used for the same.
Uses a per-device secret stored in the AirLink server db and the SipHash algorithm to generate the actual keycode
Returns this keycode to the rule chain for saving in the database to serve future GET requests from devices, and potentially sends it to a business server if required for SMS communications or saving in the business application server database
KeyCode Generator Test Results
Here is a test sequence that can verify that the PAYG Token chain is working end to end from credit request to device function.
KeyCode Node Function
msg_id, saved in server side attributes
Credit Request Packet from Postman POST mimicking loan management server - note the knowledge of ‘Device ID’, which is the UUID of the IoT device on the AirLink Server
Input Key to KeyCode node, visible in node “Events” metadata with Debug enabled on AirLink Server
Output Message from KeyCode node sent to Device via Shared Attributes sync’d through the AirLink gateway App, visible in node “Events” metadata with Debug enabled on AirLink Server
Decoded Output within AirLink Device implementing Nexus Keycode
Added 6 Days
1
{
- “pay_g_tkn”:”6”
-}
“pay_g_tkn”:”6”,
*010 050 135 981 34#
- Received tkn *01005013598134#
-- PayG update received
-- Keycode is valid.
-- Credit remaining: 86400 seconds
-- PayG update received
Set Device to exactly 10 Days
2
{
- “set_tkn”:”11”
-}
“set_tkn”:”11”
*123 026 694 078 81#
- Received tkn *12302669407881#
-- PayG update received
-- Keycode is valid.
-- Credit remaining: 950100 seconds
-- PayG update received
Unlock the Device
3
{
- “unlock_tkn”:”1”
-}
“unlock_tkn”:”1”
*336 153 083 439 44#
- Received tkn *33615308343944#
-- PayG update received
-- Keycode is valid.
-- The device is unlocked
-- PayG update received
Lost asset location tracking
A significant benefit of interoperability is the ability across vendors to track lost and stolen items. Given the distributed and rural nature of PAYG distribution, this becomes particularly relevant if all wireless-enabled devices can report their current location to any AirLink gateway whether paired with the device or not. The gateway then needs to be able to post this data to Thingsboard without knowing the device's security token. To facilitate this process, the gateway posts device data one at a time as it's own timeseries property which is processed by the Rule chain modification shown below. We then host a 'Lost and Found Tenant' in the server as shown in the architecture diagram, where un-secured device locations can be stored by gateways registered to other tenants. The process then is that if a gateway chances upon a device it doesn't have access to, it reports the advertising packet along with it's own location to the 'neighborhood watch' tenant, which then passes on the information to the tenant that owns the device using the device's manufacturer code, and automated rule-chain code passes this unregistered device onto the lost and found tenant where it can be available for access by the tenant who may have lost the device. If the tenant owning the device is the same as that of the gateway, then MQTT can also be leveraged for posting advertisement data without any change required to the server. However for devices belonging to other tenants, since a gateway cannot claim them, this flow of posting via the /timeseries/ endpoint for the gateway itself as a piggyback device is valid. Unfortunately thingsboard.io does not provide an easy method to post several devices from the gateway within the same transmission, hence the gateway will see one transmission per reported device. This should be considered in the data limits of each device, and alternate flows employed if the data flow is a bottleneck. Data-rich gateways such as Smartphones should afford virtually unlimited device reporting per day.
Gateway Telemetry with a Piggyback Device
-
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2.html
deleted file mode 100644
index 6edab83d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Attribute Scopes for AirLink resource properties
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/AirLink ID 34a6a602814745ab9a28940d1d3af142.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/AirLink ID 34a6a602814745ab9a28940d1d3af142.html
deleted file mode 100644
index 72b2fc2f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/AirLink ID 34a6a602814745ab9a28940d1d3af142.html
+++ /dev/null
@@ -1,669 +0,0 @@
-AirLink ID
AirLink ID
Scope
Shared by Server
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Config status e g Firmware version 988f3023800e4866a1e1261b6fa36f35.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Config status e g Firmware version 988f3023800e4866a1e1261b6fa36f35.html
deleted file mode 100644
index 6e6fe70d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Config status e g Firmware version 988f3023800e4866a1e1261b6fa36f35.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Config status e.g. Firmware version
Config status e.g. Firmware version
Scope
Device (Client) Side:
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Customer Provisioning Information c6f47efb3ff542858cf76d07d5186883.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Customer Provisioning Information c6f47efb3ff542858cf76d07d5186883.html
deleted file mode 100644
index 2831030c..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Customer Provisioning Information c6f47efb3ff542858cf76d07d5186883.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Customer Provisioning Information
Customer Provisioning Information
Scope
Shared by Server
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device Administration Configuration 30d49450eb1a44ccbd1ac620dcc63072.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device Administration Configuration 30d49450eb1a44ccbd1ac620dcc63072.html
deleted file mode 100644
index 0ff530bb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device Administration Configuration 30d49450eb1a44ccbd1ac620dcc63072.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device Administration Configuration
Device Administration Configuration
Scope
Server Side
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device provisioning or claiming keys c74f19fa1fe54dddb737c804e3d103da.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device provisioning or claiming keys c74f19fa1fe54dddb737c804e3d103da.html
deleted file mode 100644
index 70976d72..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Device provisioning or claiming keys c74f19fa1fe54dddb737c804e3d103da.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device provisioning or claiming keys
Device provisioning or claiming keys
Scope
Shared by Server
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Command or Token ef142acab5b44b3a9fcb61522d5acaf5.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Command or Token ef142acab5b44b3a9fcb61522d5acaf5.html
deleted file mode 100644
index bee91aaf..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Command or Token ef142acab5b44b3a9fcb61522d5acaf5.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PAYG Command or Token
PAYG Command or Token
Scope
Shared by Server
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Status 11596ed3dbde4bf4a6f9621ddc6dcede.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Status 11596ed3dbde4bf4a6f9621ddc6dcede.html
deleted file mode 100644
index 75aff009..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Status 11596ed3dbde4bf4a6f9621ddc6dcede.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PAYG Status
PAYG Status
Scope
Device (Client) Side:
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Token Secret, Message ID b093831971814a90b318c81b731c49f2.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Token Secret, Message ID b093831971814a90b318c81b731c49f2.html
deleted file mode 100644
index 88fc0c3c..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/PAYG Token Secret, Message ID b093831971814a90b318c81b731c49f2.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PAYG Token Secret, Message ID
PAYG Token Secret, Message ID
Scope
Server Side
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Rule chain alarm Thresholds c22121ef28224db891e765cb24ba59d5.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Rule chain alarm Thresholds c22121ef28224db891e765cb24ba59d5.html
deleted file mode 100644
index ea22e9fa..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Rule chain alarm Thresholds c22121ef28224db891e765cb24ba59d5.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Rule chain alarm Thresholds
Rule chain alarm Thresholds
Scope
Server Side
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Timeseries Data 5c5d4a527a5e4fa18fc32c31fe1fba8c.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Timeseries Data 5c5d4a527a5e4fa18fc32c31fe1fba8c.html
deleted file mode 100644
index e33705dc..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Attribute Scopes for AirLink resource properties 81cd9ab605c54348a6c03bbef738dbd2/Timeseries Data 5c5d4a527a5e4fa18fc32c31fe1fba8c.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timeseries Data
Timeseries Data
Scope
Device (Client) Side:
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82.html
deleted file mode 100644
index 6c1b74b9..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Concepts by Use Case
Debug DataDistributorGraphs and MapsPAYG CreditToken Automation
Customer GroupCustomer HierarchyMulti-tenancy
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses Nexus Keycode or Solaris OpenPAYGO To baad0df87fe542168bcf5ebd8a6668b4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses Nexus Keycode or Solaris OpenPAYGO To baad0df87fe542168bcf5ebd8a6668b4.html
deleted file mode 100644
index a1c801ca..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses Nexus Keycode or Solaris OpenPAYGO To baad0df87fe542168bcf5ebd8a6668b4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-AirLink uses Nexus Keycode or Solaris OpenPAYGO Token
AirLink uses Nexus Keycode or Solaris OpenPAYGO Token
Thingsboard Concepts
AttributesRule-chain Script
Business Concepts
AirLinkToken Automation
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses nexus channel resource models ie stan c3012da3a0104f53b8832c21fa16a52c.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses nexus channel resource models ie stan c3012da3a0104f53b8832c21fa16a52c.html
deleted file mode 100644
index ec8c155d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/AirLink uses nexus channel resource models ie stan c3012da3a0104f53b8832c21fa16a52c.html
+++ /dev/null
@@ -1,669 +0,0 @@
-AirLink uses nexus channel resource models ie standard device types
AirLink uses nexus channel resource models ie standard device types
Thingsboard Concepts
AttributesDevice Profiles
Business Concepts
AirLink
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/CBOR transfer over HTTP MQTT 6044cee84d404ef0a3933ca8fab60303.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/CBOR transfer over HTTP MQTT 6044cee84d404ef0a3933ca8fab60303.html
deleted file mode 100644
index 1d669684..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/CBOR transfer over HTTP MQTT 6044cee84d404ef0a3933ca8fab60303.html
+++ /dev/null
@@ -1,669 +0,0 @@
-CBOR transfer over HTTP/MQTT
CBOR transfer over HTTP/MQTT
Thingsboard Concepts
Data ConverterIntegration
Business Concepts
AirLink
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device belongs to customer 4f8b0c6fa1804ae2ad3a30f3584702ed.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device belongs to customer 4f8b0c6fa1804ae2ad3a30f3584702ed.html
deleted file mode 100644
index 118b6ba5..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device belongs to customer 4f8b0c6fa1804ae2ad3a30f3584702ed.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device belongs to customer
Device belongs to customer
Thingsboard Concepts
API TokenCustomerDeviceIntegration
Business Concepts
PAYG Box IDPAYG CustomerSales OrderSystem ID
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device data saved 0f4a8cfa163841a7b0a3994c8d861c47.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device data saved 0f4a8cfa163841a7b0a3994c8d861c47.html
deleted file mode 100644
index 0c05a649..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device data saved 0f4a8cfa163841a7b0a3994c8d861c47.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device data saved
Device data saved
Thingsboard Concepts
Data ConverterDeviceDevice AuthTokenRule-chain Script
Business Concepts
Callhome DataGraphs and Maps
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device heeds PAYG credits 51d48f9c491d4eb1b18cbaefa5bf510f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device heeds PAYG credits 51d48f9c491d4eb1b18cbaefa5bf510f.html
deleted file mode 100644
index b955df65..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Device heeds PAYG credits 51d48f9c491d4eb1b18cbaefa5bf510f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device heeds PAYG credits
Device heeds PAYG credits
Thingsboard Concepts
Device AuthTokenIntegration
Business Concepts
Financing
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Devices provision themselves 66b81060a908455fbb17619a5f846bdc.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Devices provision themselves 66b81060a908455fbb17619a5f846bdc.html
deleted file mode 100644
index 77e6aaed..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Devices provision themselves 66b81060a908455fbb17619a5f846bdc.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Devices provision themselves
Devices provision themselves
Thingsboard Concepts
API TokenDevice AuthTokenGatewayIntegrationProvisioningRule-chain Script
Business Concepts
ProvisionDeviceTechnician
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Loan platform updates credits d337d92a51e241658ab1da5c8b1457d8.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Loan platform updates credits d337d92a51e241658ab1da5c8b1457d8.html
deleted file mode 100644
index e60606ee..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Loan platform updates credits d337d92a51e241658ab1da5c8b1457d8.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Loan platform updates credits
Loan platform updates credits
Thingsboard Concepts
API TokenIntegration
Business Concepts
FinancingPAYG CreditWebi
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Orders make Customers d87fa72232354f28a90aeec6fa8e8371.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Orders make Customers d87fa72232354f28a90aeec6fa8e8371.html
deleted file mode 100644
index 77aec0c1..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Orders make Customers d87fa72232354f28a90aeec6fa8e8371.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Orders make Customers
Orders make Customers
Thingsboard Concepts
AssetCustomer
Business Concepts
PAYG CustomerSales Order
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Partners can see referred customer data 8b653e6eebf646529769f252c7c097a8.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Partners can see referred customer data 8b653e6eebf646529769f252c7c097a8.html
deleted file mode 100644
index cd00add6..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Partners can see referred customer data 8b653e6eebf646529769f252c7c097a8.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Partners can see referred customer data
Partners can see referred customer data
Thingsboard Concepts
Customer GroupData ChartEntity View Group
Business Concepts
Graphs and MapsPAYG CreditPAYG Customer
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Phone or solar panel controls device 7f9bdd56757149afa4f118321faee0e1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Phone or solar panel controls device 7f9bdd56757149afa4f118321faee0e1.html
deleted file mode 100644
index d087d1fc..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Phone or solar panel controls device 7f9bdd56757149afa4f118321faee0e1.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Phone or solar panel controls device
Phone or solar panel controls device
Thingsboard Concepts
Device AuthTokenDevice Group
Business Concepts
AirLink
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar franchises payg functionality 13bc9d05709f48e5adc0897d3b0b527e.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar franchises payg functionality 13bc9d05709f48e5adc0897d3b0b527e.html
deleted file mode 100644
index 697c51c6..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar franchises payg functionality 13bc9d05709f48e5adc0897d3b0b527e.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Simusolar franchises payg functionality
Simusolar franchises payg functionality
Thingsboard Concepts
Customer GroupCustomer HierarchyMulti-tenancy
Business Concepts
Debug DataDistributorGraphs and MapsPAYG CreditToken Automation
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar operates in several countries with inter 0b6402e0dc114363ababf162e27f883c.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar operates in several countries with inter 0b6402e0dc114363ababf162e27f883c.html
deleted file mode 100644
index 1a24ffb2..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar operates in several countries with inter 0b6402e0dc114363ababf162e27f883c.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Simusolar operates in several countries with inter-country asset movement
Simusolar operates in several countries with inter-country asset movement
Thingsboard Concepts
AssetAsset GroupUser Group
Business Concepts
Centralized IT
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar uses Aeris globalSIM in PAYG gateways 3f2fea6b31704024882cf9a5d171e742.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar uses Aeris globalSIM in PAYG gateways 3f2fea6b31704024882cf9a5d171e742.html
deleted file mode 100644
index cefe7836..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Simusolar uses Aeris globalSIM in PAYG gateways 3f2fea6b31704024882cf9a5d171e742.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Simusolar uses Aeris globalSIM in PAYG** gateways
Simusolar uses Aeris globalSIM in PAYG** gateways
Thingsboard Concepts
Device AuthTokenGatewayIntegration
Business Concepts
Aeris VPNFirst PAYG Server
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Technicians update devices ba872e9b2e5b4ae794e29ca8c342d176.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Technicians update devices ba872e9b2e5b4ae794e29ca8c342d176.html
deleted file mode 100644
index 3b0ee360..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Concepts by Use Case 1e02ad21427d45808173baf543d9fb82/Technicians update devices ba872e9b2e5b4ae794e29ca8c342d176.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Technicians update devices
Technicians update devices
Thingsboard Concepts
AssetAsset GroupDFUData ConverterDeviceDevice AuthTokenGatewayIntegrationUser Group
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933.html
deleted file mode 100644
index e8f57ba5..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933.html
+++ /dev/null
@@ -1,672 +0,0 @@
-How we chose Thingsboard.io for AirLink Server
PAYG devices fall under the IoT 'edge device' umbrella. A small set of SaaS companies are currently offering integrated loan management and device management services to PAYG-IoT distributors, primarily focused on token-based GSM home-system devices with some extensions for data feedback. Companies like Angaza have proprietary hardware+software IoT stacks that offer API-integration at some levels while companies like Solaris offer more open source codebases for device firmware and token software. Neither offer an open-source provisioning or analytics platform, although both have SaaS offerings for analytics and PAYG control, integrated with their custom loan platform. Both have a per-end-user-per-month revenue model which is consistent with contemporary SaaS - their revenues scale directly with their customer's customer bases.
Simusolar would like to build or buy a PAYG + IoT Data system that has API integration, configurable analytics, cost-effective implementation, ability to serve partners as well as ability to aggregate data over BLE / GSM / Keypad / Wired systems. EnAccess has provided a $50,000 grant to Simusolar to build an open-source multi-medium IoT communication protocol and data format to support these goals in 2021, with a focus on a deliverable that can enable upstart companies in this area to easily overcome the PAYG-IoT technology barrier. Simusolar currently has pumps and fishing lights that will be modified to meet this standard.
We need to decide on the best alternative approach to building this IoT database and related tools. Simusolar has recently adopted several managed and no-code tools to enable speed of secure and scalable business process automation with low overhead costs. We believe this approach has long term value and hence we give priority to options which have managed or no-code cores. We consider two high-level options
-a. custom database with open source dashboarding tools (no-code device/partner management can follow alternate no-code/code analysis)
-b. open source IoT platforms
a. Custom db + Dashboard Options
(IaaS, e.g. managed Redis on DigitalOcean + custom droplet with code)
Freedom to adopt managed or self-managed databases without lock-in
Completely custom server code i.e. process triggers and PAYG responses
The communication layer ends at the database, cleanly separating the application layer which can be full-custom
A central database managed by one entity e.g. EnAccess would only require to handle communication layer while application layer would be handed off, making the central db more easily viable compared to a solution with an application layer
Cons of a custom db+dashboard approach
Requires coding competence to pre-process incoming IoT data stream
Requires domain-expert skill for building of device provisioning and basic analytics flows
Requires a full-time administrator to manage IoT connection to rest of business apps platform
New workflow features require coding and hence take weeks to develop
Initial adoption by business takes longer due to coding requirements
b. IoT Platform Options
(PaaS if managed or IaaS+PaaS in case of self-managed, includes closed-source options for reference)
Leverages a pre-built best-practices approach to managing incoming IoT data-stream
Leverages a device provisioning and basic analytics platform that is ready to go, reducing the startup-building burden
New workflows can be built quickly as many of these platforms offer drag and drop UIs for process triggers based on incoming IoT connections
Companies can choose a managed or SaaS model for the same service if their business model supports that choice better than a self-managed PaaS
Cons of an open-source IoT Platform approach
Adopters would be initially oblivious to implementation details before they can study the large amount of platform source code in the specific programming language
The Application layer comes with presumptions about IoT management that may not apply across all businesses
Any central entity such as EnAccess who manages a common db might need to provide application-level client-management/API as well as database management and communication layer level API
Perspectives on Approach
Simusolar has experienced the often hidden time-cost and domain-knowledge complexity of building device-provisioning/onboarding flows for IoT systems, and considers provisioning an important complement to the IoT data/PAYG flow when considering approaches facilitating new ventures in this field. Standardizing this while considering privacy best-practices could reduce a big barrier, further abstracting away the technical details for integrating PAYG IoT with other business applications.
Data Retention management and Analytics is another natural feature desired of GSM IoT collections. We conjecture that most IoT analysis usually pivots on a single plotted variable for a particular device class e.g. power used by time of day for energy products, along with some standard status variables e.g. location, error state. PAYG control also has common requirements e.g. on/off control or use-metered control.
Hence there are opportunities to design a platform that has pre-built, privacy-enabled standard features for device provisioning, single-variable control and single-variable graphing with map and status indicators and a built in retention policy. Such a platform could enable adopters of the project to incorporate standard IoT outcomes easily into their business operations.
Lock-in risks as well as the central role of EnAccess in enabling upstarts points to the importance of open source, modular approaches that allow the scaling of individual components as managed or self-managed entities, such as front end databases and servers that run data processing code.
Culling the options
AWS/Azure/IBM IoT offerings were not considered the right cost-value tradeoff due to the complexity of adoption and the fact that the dataset of most adopters of this project will be limited in size and will manage with smaller IT teams i.e. not tens of millions of devices/interactions per day managed by a specialist IT team, but hundreds of thousands at most managed by a multi-tasking IT team. The caveat is potentially losing out on AI integration which could be useful for predictive tasks. In the PAYG-IoT business case, learning and prediction requirements are as yet not well defined as business differentiators and hence AI was not considered a prime factor.
The alternatives list was further limited by the following parameter choices: Open source, Free/freemium versions and no per-device fees. Per-devices services are roughly $2/month/device (in addition to any network/SIM card fees), which adds up quickly when selling a large number of smart devices and can be margin-limiting in low-cost markets. This consideration discounted dweetpro.io, thingstream.io, particle.io and thingspeak.com
Baseline: SaaS + PaaS + IaaS + Support-vendor costs for Simusolar are $86,658/yr projected to reduce to $52,100/yr by December 2021 by using no-code platforms and internal support
IaaS: DigitalOcean droplet with custom stream-processing code, managed Redis db buffer for incoming data providing high-rel front end, then managed PostGreSQL db for IoT metrics. Custom device/partner management workflows on another platform e.g. Airtable-like no-code platform
Open Source or Managed PaaS: Monolithic/microservice interchangeable, IoT stream processing, device/partner management and and IoT Analytics platform in Docker on a DigitalOcean droplet with Aiven-Cassandra + PostGreSQL managed dbs on DigitalOcean. One downloadable package architecture, can be clustered
Open Source or Managed PaaS: microservices type IoT stream processing, device/partner management and and IoT Analytics platform in Docker connecting to a Redis + PostGreSQL. No monolithic download so steeper initial learning curve
Assissted deployment only, no managed cloud options
Open Source or Managed PaaS: CrateDB is a distributed SQL database built on top of a NoSQL foundation. Customers often use CrateDB to store and query machine data. This is because CrateDB makes it easy and economical to handle the velocity, volume, and diversity of machine and log data.
Company could decide to fork free/paid codebases. Timestream data could be migrated but tenant management structure would probably need to fork codebase
Timestream data could be migrated but tenant management structure would probably need to fork codebase
Timestream data could be migrated but tenant management structure would probably need to fork codebase
Developing for specific db type could lead to harder migration options
Setup administration for EnAccess and tenancy for Simusolar and Tulima Solar
Setup tenant profile including dashboard template
Setup provisioning flow on Simusolar servers to attach to Simusolar tenant
Configure phone app to act as MQTT gateway for protocol-compliant devices, including claiming flow
Stakeholder validation (R.A.C.I.)
Were the responsible (implementers) persons consulted for feasibility?
Are the accountable (project manager) persons committed to the outcome?
Have the consulted (change recipients) people indicated their support?
Will the Informed (all other impacted) people receive the information in time?
Final Choice:
Date:
Decider (Proof):
-
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548.html
deleted file mode 100644
index 3c06443f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Last Round Alternatives
IaaS: DigitalOcean droplet with custom stream-processing code, managed Redis db buffer for incoming data providing high-rel front end, then managed PostGreSQL db for IoT metrics. Custom device/partner management workflows on another platform e.g. Airtable-like no-code platform
Open Source or Managed PaaS: Monolithic/microservice interchangeable, IoT stream processing, device/partner management and and IoT Analytics platform in Docker on a DigitalOcean droplet with Aiven-Cassandra + PostGreSQL managed dbs on DigitalOcean. One downloadable package architecture, can be clustered
Open Source or Managed PaaS: microservices type IoT stream processing, device/partner management and and IoT Analytics platform in Docker connecting to a Redis + PostGreSQL. No monolithic download so steeper initial learning curve
Assissted deployment only, no managed cloud options
Open Source or Managed PaaS: CrateDB is a distributed SQL database built on top of a NoSQL foundation. Customers often use CrateDB to store and query machine data. This is because CrateDB makes it easy and economical to handle the velocity, volume, and diversity of machine and log data.
Company could decide to fork free/paid codebases. Timestream data could be migrated but tenant management structure would probably need to fork codebase
Timestream data could be migrated but tenant management structure would probably need to fork codebase
Timestream data could be migrated but tenant management structure would probably need to fork codebase
Developing for specific db type could lead to harder migration options
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/API 2b45090acf5a4dd3bb6c93cf09bbd247.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/API 2b45090acf5a4dd3bb6c93cf09bbd247.html
deleted file mode 100644
index 0378ac3e..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/API 2b45090acf5a4dd3bb6c93cf09bbd247.html
+++ /dev/null
@@ -1,669 +0,0 @@
-API
API
ThingsBoard.io ✓
REST with JWT auth per device/entity
Crate.io ❌
—
Kaaproject.org
REST API
OpenRemote.io ❌
custom development
Will need to be built
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Analytics for metrics 5d54acc723e1438499645a7d8fd8e7b5.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Analytics for metrics 5d54acc723e1438499645a7d8fd8e7b5.html
deleted file mode 100644
index bff41a0f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Analytics for metrics 5d54acc723e1438499645a7d8fd8e7b5.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Analytics for metrics
Analytics for metrics
ThingsBoard.io ✓
Yes
Crate.io ❌
Not inbuilt ❌
Kaaproject.org
Yes
OpenRemote.io ❌
custom development
No
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Basic Data External forwarding and Workflow trigge 04a000ddf27045a58324c05c69129708.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Basic Data External forwarding and Workflow trigge 04a000ddf27045a58324c05c69129708.html
deleted file mode 100644
index 5be3cc66..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Basic Data External forwarding and Workflow trigge 04a000ddf27045a58324c05c69129708.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Basic Data External forwarding and Workflow triggers
Basic Data External forwarding and Workflow triggers
ThingsBoard.io ✓
Yes, Kafka stream and Rulechain configured from drag and drop UI
Crate.io ❌
Needs external SQL queries but performance is fast enough to support datastream analysis
Kaaproject.org
Yes Redis based queue
OpenRemote.io ❌
'Rule-chain' for PAYG response seems very basic without custom scripts, only math/text functions ❌
custom development
—
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Chart options e17ee203b9f24c1aada36ec4907d4e53.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Chart options e17ee203b9f24c1aada36ec4907d4e53.html
deleted file mode 100644
index 463d4dcb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Chart options e17ee203b9f24c1aada36ec4907d4e53.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Chart options
Chart options
ThingsBoard.io ✓
Moving line/bar/speed-gauge/map
Crate.io ❌
No ❌
Kaaproject.org
Moving line/bar/speed-gauge/map
OpenRemote.io ❌
custom development
Will need external service e.g. No code big-data service
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer management 8db790b517ed40b0ad46a54d5e22d3e6.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer management 8db790b517ed40b0ad46a54d5e22d3e6.html
deleted file mode 100644
index 7fa0c13c..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer management 8db790b517ed40b0ad46a54d5e22d3e6.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Customer management
Customer management
ThingsBoard.io ✓
Yes with groups and embeddable client dashboards
Crate.io ❌
No ❌
Kaaproject.org
Yes with groups
OpenRemote.io ❌
custom development
Will need to be built
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer support c389bb7fd1314df5b11b9229e3913f07.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer support c389bb7fd1314df5b11b9229e3913f07.html
deleted file mode 100644
index 2d23ede4..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Customer support c389bb7fd1314df5b11b9229e3913f07.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Customer support
Customer support
ThingsBoard.io ✓
Only for cloud otherwise internal
Crate.io ❌
Kaaproject.org
Only for cloud otherwise internal
OpenRemote.io ❌
custom development
Internal
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Dashboard UX 5dad589f771c4a029339bbaf7a3c88eb.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Dashboard UX 5dad589f771c4a029339bbaf7a3c88eb.html
deleted file mode 100644
index 15b01486..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Dashboard UX 5dad589f771c4a029339bbaf7a3c88eb.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Dashboard UX
Dashboard UX
ThingsBoard.io ✓
Basic, sufficient
Crate.io ❌
—
Kaaproject.org
Basic, sufficient
OpenRemote.io ❌
custom development
—
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Data management possiblity 452df22571f145aeb569939c9146bc21.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Data management possiblity 452df22571f145aeb569939c9146bc21.html
deleted file mode 100644
index e5c35ad9..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Data management possiblity 452df22571f145aeb569939c9146bc21.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Data management possiblity
Data management possiblity
ThingsBoard.io ✓
Part of docker image as starting point, Managed Cassandra (Aiven on DigitalOcean) + PostgreSQL (native DigitalOcean) database
Crate.io ❌
Kaaproject.org
Managed Redis + Managed PostgreSQL
OpenRemote.io ❌
custom development
Managed Redis + Managed PostgreSQL
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device Sandbox codebase 4ad4a1269d814bc498180c06887a9355.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device Sandbox codebase 4ad4a1269d814bc498180c06887a9355.html
deleted file mode 100644
index 870e8c9f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device Sandbox codebase 4ad4a1269d814bc498180c06887a9355.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device/Sandbox codebase
Device/Sandbox codebase
ThingsBoard.io ✓
not seen any
Crate.io ❌
Python client example
Kaaproject.org
Arduino samples, web sandbox, etc
OpenRemote.io ❌
custom development
—
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device management 89dd4a0b8d174648b6b88b68ba915f89.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device management 89dd4a0b8d174648b6b88b68ba915f89.html
deleted file mode 100644
index dc7eee16..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Device management 89dd4a0b8d174648b6b88b68ba915f89.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Device management
Device management
ThingsBoard.io ✓
Yes with profiles and gateway MQTT-only devices
Crate.io ❌
No ❌
Kaaproject.org
Yes with profiles, versions and gateway MQTT-only devices
OpenRemote.io ❌
custom development
Will need to be built
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature cost a078e1055d1c4dc3be68b1c194a6d0bc.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature cost a078e1055d1c4dc3be68b1c194a6d0bc.html
deleted file mode 100644
index 1adca490..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature cost a078e1055d1c4dc3be68b1c194a6d0bc.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Feature cost
Feature cost
ThingsBoard.io ✓
Internal Development @$1000/month
Crate.io ❌
Internal Development @$1000/month
Kaaproject.org
Internal Development @$1000/month
OpenRemote.io ❌
Internal Development @$1000/month
custom development
Internal Development @$1000/month
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature dev speed 7468c1c2b41f4e07a5c21f60089fcc1d.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature dev speed 7468c1c2b41f4e07a5c21f60089fcc1d.html
deleted file mode 100644
index dd36efff..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Feature dev speed 7468c1c2b41f4e07a5c21f60089fcc1d.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Feature dev speed
Feature dev speed
ThingsBoard.io ✓
~1day-1wk (most common features are UI based)
Crate.io ❌
~1wk-1mo
Kaaproject.org
~1day-1wk (most common features are UI based)
OpenRemote.io ❌
~1day-1wk (most common features are UI based)
custom development
~1wk-1mo
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Filters on displayed charts 085f49ada5944cadb42c9865898b0232.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Filters on displayed charts 085f49ada5944cadb42c9865898b0232.html
deleted file mode 100644
index 10b07668..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Filters on displayed charts 085f49ada5944cadb42c9865898b0232.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Filters on displayed charts
Filters on displayed charts
ThingsBoard.io ✓
Only time filters?
Crate.io ❌
No ❌
Kaaproject.org
Only time filters?
OpenRemote.io ❌
custom development
—
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Git source Link 3d7d92e5cc5f458db244260d3b9424ac.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Git source Link 3d7d92e5cc5f458db244260d3b9424ac.html
deleted file mode 100644
index 0719b387..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Git source Link 3d7d92e5cc5f458db244260d3b9424ac.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Git / source Link
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Interoperable format compatibility 2566d647a3e4402890f3e48472e3b59f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Interoperable format compatibility 2566d647a3e4402890f3e48472e3b59f.html
deleted file mode 100644
index 4d5b4ccf..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Interoperable format compatibility 2566d647a3e4402890f3e48472e3b59f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Interoperable format compatibility
Interoperable format compatibility
ThingsBoard.io ✓
JSON key-value pairs, additional Customizable 'connectors' for custom binary
Crate.io ❌
Kaaproject.org
JSON
OpenRemote.io ❌
custom development
Yes
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/IoT Comms 7fccfe926a3b4b9fafa201822f7a164f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/IoT Comms 7fccfe926a3b4b9fafa201822f7a164f.html
deleted file mode 100644
index 3953699d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/IoT Comms 7fccfe926a3b4b9fafa201822f7a164f.html
+++ /dev/null
@@ -1,669 +0,0 @@
-IoT Comms
IoT Comms
ThingsBoard.io ✓
POST/MQTT/CoAP upload, GET request or Gateway subscribing via MQTT
Crate.io ❌
—
Kaaproject.org
POST/MQTT/CoAP upload, GET request or Gateway subscribing via MQTT
OpenRemote.io ❌
custom development
Customizable
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Lock-in risk c4cee9ccea7b4add8234d7af062f0a1a.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Lock-in risk c4cee9ccea7b4add8234d7af062f0a1a.html
deleted file mode 100644
index 323caf11..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Lock-in risk c4cee9ccea7b4add8234d7af062f0a1a.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Lock-in risk
Lock-in risk
ThingsBoard.io ✓
Company could decide to fork free/paid codebases. Timestream data could be migrated but tenant management structure would probably need to fork codebase
Crate.io ❌
Developing for specific db type could lead to harder migration options
Kaaproject.org
Timestream data could be migrated but tenant management structure would probably need to fork codebase
OpenRemote.io ❌
Timestream data could be migrated but tenant management structure would probably need to fork codebase
custom development
Nil
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Login based filtering ae8d17cc1af74ff99a1ec4324e53e3ba.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Login based filtering ae8d17cc1af74ff99a1ec4324e53e3ba.html
deleted file mode 100644
index 423c431e..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Login based filtering ae8d17cc1af74ff99a1ec4324e53e3ba.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Login based filtering
Login based filtering
ThingsBoard.io ✓
Yes
Crate.io ❌
Kaaproject.org
Yes
OpenRemote.io ❌
custom development
Custom development
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Model f4340e4dcc1c424684d2345ff7352be7.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Model f4340e4dcc1c424684d2345ff7352be7.html
deleted file mode 100644
index 82bd1008..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Model f4340e4dcc1c424684d2345ff7352be7.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Model
Model
ThingsBoard.io ✓
Open Source or Managed PaaS: Monolithic/microservice interchangeable, IoT stream processing, device/partner management and and IoT Analytics platform in Docker on a DigitalOcean droplet with Aiven-Cassandra + PostGreSQL managed dbs on DigitalOcean. One downloadable package architecture, can be clustered
Crate.io ❌
Open Source or Managed PaaS: CrateDB is a distributed SQL database built on top of a NoSQL foundation. Customers often use CrateDB to store and query machine data. This is because CrateDB makes it easy and economical to handle the velocity, volume, and diversity of machine and log data.
Kaaproject.org
Open Source or Managed PaaS: microservices type IoT stream processing, device/partner management and and IoT Analytics platform in Docker connecting to a Redis + PostGreSQL. No monolithic download so steeper initial learning curve
OpenRemote.io ❌
Assissted deployment only, no managed cloud options
custom development
IaaS: DigitalOcean droplet with custom stream-processing code, managed Redis db buffer for incoming data providing high-rel front end, then managed PostGreSQL db for IoT metrics. Custom device/partner management workflows on another platform e.g. Airtable-like no-code platform
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Open source 387cd4e6cba54538af21c020f6b19cf1.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Open source 387cd4e6cba54538af21c020f6b19cf1.html
deleted file mode 100644
index 44fcd9d3..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Open source 387cd4e6cba54538af21c020f6b19cf1.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Open source
Open source
ThingsBoard.io ✓
Yes, updated in 2021
Crate.io ❌
Yes, updated in 2021
Kaaproject.org
Yes, updated in 2021
OpenRemote.io ❌
Yes, updated in 2021
custom development
—
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Performance scale e6052517c5fa41a29509227c87dcf768.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Performance scale e6052517c5fa41a29509227c87dcf768.html
deleted file mode 100644
index 65f56f33..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Performance scale e6052517c5fa41a29509227c87dcf768.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Performance / scale
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Programming language dafec3aef11545a789df7e5c5326f130.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Programming language dafec3aef11545a789df7e5c5326f130.html
deleted file mode 100644
index 94be0cf1..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Programming language dafec3aef11545a789df7e5c5326f130.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Programming language
Programming language
ThingsBoard.io ✓
Java
Crate.io ❌
Java
Kaaproject.org
Go
OpenRemote.io ❌
Go
custom development
PHP
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/SSO types for users customers 565c4ec86bef46c78ece2158d6f80cd6.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/SSO types for users customers 565c4ec86bef46c78ece2158d6f80cd6.html
deleted file mode 100644
index 2dd0c62d..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/SSO types for users customers 565c4ec86bef46c78ece2158d6f80cd6.html
+++ /dev/null
@@ -1,669 +0,0 @@
-SSO types for users/customers
SSO types for users/customers
ThingsBoard.io ✓
Oauth2
Crate.io ❌
Kaaproject.org
Oauth2
OpenRemote.io ❌
custom development
Custom development
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Total Cost of Ownership for paid premium option - 6077e5705a174cdc86fe64348bf16fdb.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Total Cost of Ownership for paid premium option - 6077e5705a174cdc86fe64348bf16fdb.html
deleted file mode 100644
index 6ab19a61..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Total Cost of Ownership for paid premium option - 6077e5705a174cdc86fe64348bf16fdb.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Total Cost of Ownership for paid premium option - 1 year, 10,000 devices
Total Cost of Ownership for paid premium option - 1 year, 10,000 devices
ThingsBoard.io ✓
$3600/yr for Docker+managed db or $6,000/yr for SaaS cloud, provides flexibility
Crate.io ❌
db-only $2616/month ❌
Kaaproject.org
$3600/yr for self-managed or $24,000/yr for managed on-premise
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Vendor info any risk to business 6ecbb09542ef478caeb5b327d783d74e.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Vendor info any risk to business 6ecbb09542ef478caeb5b327d783d74e.html
deleted file mode 100644
index f1c5b0a6..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Last Round Alternatives 0ab7b7c54fa646a9ae62f45fe89de548/Vendor info any risk to business 6ecbb09542ef478caeb5b327d783d74e.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Vendor info / any risk to business
Vendor info / any risk to business
ThingsBoard.io ✓
thingsboard pro used by Engie, no SLA for community edition, dependent on internal developers
Crate.io ❌
—
Kaaproject.org
FDA and HIPAA as customers
OpenRemote.io ❌
Germany focus with some cities adopting it also Schipol security
custom development
SLA is fully dependent on internal developers
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-11_at_11.20.51_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-11_at_11.20.51_PM.png
deleted file mode 100644
index b6418634..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-11_at_11.20.51_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.07.11_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.07.11_PM.png
deleted file mode 100644
index 61a9fbe9..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.07.11_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.10.41_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.10.41_PM.png
deleted file mode 100644
index 17daf6fc..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.10.41_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.14.02_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.14.02_PM.png
deleted file mode 100644
index 331f980c..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.14.02_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.15.02_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.15.02_PM.png
deleted file mode 100644
index f04cdf4e..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.15.02_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.16.29_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.16.29_PM.png
deleted file mode 100644
index 6f4d4384..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Screen_Shot_2021-04-12_at_12.16.29_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Untitled.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Untitled.png
deleted file mode 100644
index 5680e46f..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/How we chose Thingsboard io for AirLink Server fdf5dfccc506431c838c41eb1c407933/Untitled.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture-2.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture-2.png
deleted file mode 100644
index 39f015c4..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture-2.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture.png
deleted file mode 100644
index 4839b860..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/IoT_Communications_and_Components_spec_-_Thingsboard.io_Architecture.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_2.51.22_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_2.51.22_PM.png
deleted file mode 100644
index d8a842fc..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_2.51.22_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.36.07_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.36.07_PM.png
deleted file mode 100644
index 435feab9..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.36.07_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.30_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.30_PM.png
deleted file mode 100644
index a74f3d3c..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.30_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.44_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.44_PM.png
deleted file mode 100644
index dc68b262..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.44_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.53_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.53_PM.png
deleted file mode 100644
index 05b870d1..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2021-11-14_at_3.42.53_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2022-01-26_at_9.29.42_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2022-01-26_at_9.29.42_PM.png
deleted file mode 100644
index f77faffa..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screen_Shot_2022-01-26_at_9.29.42_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screenshot_2023-01-30_at_1.48.06_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screenshot_2023-01-30_at_1.48.06_PM.png
deleted file mode 100644
index 90abf6e1..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Screenshot_2023-01-30_at_1.48.06_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0.html
deleted file mode 100644
index 698289ca..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0.html
+++ /dev/null
@@ -1,673 +0,0 @@
-Server and Shared Data to support AirLink Devices
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes eg client experience
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
mode of device i.e. leading/following etc
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
should be The value remaining for the device to OFF.
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
On first release, this is the Nexus Keycode message ID
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Current Server Time 6e8ee941ef4840aeb3cb505a7bae6bd4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Current Server Time 6e8ee941ef4840aeb3cb505a7bae6bd4.html
deleted file mode 100644
index a3c2628a..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Current Server Time 6e8ee941ef4840aeb3cb505a7bae6bd4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Current Server Time
Current Server Time
CBOR Type
Description
Linux epoch format, expires in Y2035. The current time when updating the device with PayG update. We do not recommend using this to calculate PAYG use, because it could be used to trick the device into more tokens. This is for non-PAYG purposes eg client experience
Nx Resource
AirLink PAYG 1.0
Qualifiers
OptionalScope: Device
key
lt
rtr
pyg
rtr_prop
pyg_lt
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer Name 8e700637a9ac4ad8ab4050baccd8d740.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer Name 8e700637a9ac4ad8ab4050baccd8d740.html
deleted file mode 100644
index c033af98..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer Name 8e700637a9ac4ad8ab4050baccd8d740.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Customer Name
Customer Name
CBOR Type
3
Description
Requested by customers for lost device reporting. This writes the customer name to a device with the maximum of 16 characters with space and special characters inclusive.
Nx Resource
AirLink Client Provisioning 1.0
Qualifiers
OptionalScope: SharedString
key
cn
rtr
prc
rtr_prop
prc_cn
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer's Phone 447de667979044afa5b10b19150adc65.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer's Phone 447de667979044afa5b10b19150adc65.html
deleted file mode 100644
index c0445085..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Customer's Phone 447de667979044afa5b10b19150adc65.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Customer's Phone
Customer's Phone
CBOR Type
3
Description
Requested by customers for stolen device reporting (needs a workflow to collect this number explicitly from client in addition to regular lead number). Assign the mobile number of the customer to a device. With maximum of 16 character including + and country code number. This is for security purpose
Nx Resource
AirLink Client Provisioning 1.0
Qualifiers
OptionalScope: SharedString
key
cp
rtr
prc
rtr_prop
prc_cp
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Device PayG Credit Remaining 4f885f938ca5444288920737f352d078.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Device PayG Credit Remaining 4f885f938ca5444288920737f352d078.html
deleted file mode 100644
index 8623b150..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Device PayG Credit Remaining 4f885f938ca5444288920737f352d078.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Device PayG Credit Remaining
Device PayG Credit Remaining
CBOR Type
Description
should be The value remaining for the device to OFF.
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
Nx Resource
PAYG Credit 1.0
Qualifiers
MandatoryScope: Time Series
key
re
rtr
pyg
rtr_prop
pyg_re
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Last Added PayG Credit 555b1a7b375347b9b84c57559b23eafc.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Last Added PayG Credit 555b1a7b375347b9b84c57559b23eafc.html
deleted file mode 100644
index 7a37e866..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Last Added PayG Credit 555b1a7b375347b9b84c57559b23eafc.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Last Added PayG Credit
Last Added PayG Credit
CBOR Type
Description
Historical last PayG credit update duration. Range is from 01-9999
Nx Resource
AirLink PAYG 1.0
Qualifiers
OptionalScope: Device
key
lcr
rtr
pyg
rtr_prop
pyg_lcr
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Mode 6b1abaa5863047ec8037f25373370564.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Mode 6b1abaa5863047ec8037f25373370564.html
deleted file mode 100644
index 0f4d9ee1..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Mode 6b1abaa5863047ec8037f25373370564.html
+++ /dev/null
@@ -1,671 +0,0 @@
-Mode
Mode
CBOR Type
Description
mode of device i.e. leading/following etc
-
-For Write, a Nexus Channel Link must be established otherwise read-only, updated via token. AirLink 1.0 does not implement Nexus Channel, which was in development at the time of release of AirLink 1.0
Nx Resource
PAYG Credit 1.0
Qualifiers
Not ImplementedScope: Shared
key
mo
rtr
pyg
rtr_prop
pyg_mo
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Nexus COSE command cde93e10db0b4bdb90825e7f9cee0c78.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Nexus COSE command cde93e10db0b4bdb90825e7f9cee0c78.html
deleted file mode 100644
index d385fdc0..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Nexus COSE command cde93e10db0b4bdb90825e7f9cee0c78.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Nexus COSE command
Nexus COSE command
CBOR Type
3
Description
Upto 120 bytes for Nexus Channel Passthrough commands
Nx Resource
AirLink Nexus Command 1.0
Qualifiers
Scope: Shared
key
cmd
rtr
nxc
rtr_prop
nxc_cmd
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token d214d4ed63434ed8be594f6edc120a44.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token d214d4ed63434ed8be594f6edc120a44.html
deleted file mode 100644
index 833d2b8f..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token d214d4ed63434ed8be594f6edc120a44.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PayG Token
PayG Token
CBOR Type
Description
SipHash token. Accepted by device only if valid. No read token to ensure unsecured gateways cannot act maliciously.
Nx Resource
AirLink PAYG 1.0
Qualifiers
Scope: Shared
key
tkn
rtr
pyg
rtr_prop
pyg_tkn
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token starting code cbbcf7cc9486491eac188e8d4f46de54.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token starting code cbbcf7cc9486491eac188e8d4f46de54.html
deleted file mode 100644
index 8d0b835b..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Token starting code cbbcf7cc9486491eac188e8d4f46de54.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PayG Token starting code
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Unit 0e789d8da48f4055b7c88bb763d2f06c.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Unit 0e789d8da48f4055b7c88bb763d2f06c.html
deleted file mode 100644
index fbecf9c7..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Unit 0e789d8da48f4055b7c88bb763d2f06c.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PayG Unit
PayG Unit
CBOR Type
3
Description
36^1 The unit of the PayG update, it can be minutes, hours, days, months and years. [m-minutes, h-hours, d- days, M-months, Y-years]
Nx Resource
AirLink Device Provisioning 1.0
Qualifiers
MandatoryScope: SharedString
key
pu
rtr
prd
rtr_prop
prd_pu
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Units accepted 0b96489501154a758273ff020a0340fa.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Units accepted 0b96489501154a758273ff020a0340fa.html
deleted file mode 100644
index 3ca10106..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/PayG Units accepted 0b96489501154a758273ff020a0340fa.html
+++ /dev/null
@@ -1,669 +0,0 @@
-PayG Units accepted
PayG Units accepted
CBOR Type
3
Description
CSV list of acceptable Units e.g. "l" for liters, "h,d" for hours and days
Nx Resource
AirLink Device Provisioning 1.0
Qualifiers
MandatoryScope: DeviceString
key
pul
rtr
prd
rtr_prop
prd_pul
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Message ID 38de87cbf4494a1491faf64dacd53f40.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Message ID 38de87cbf4494a1491faf64dacd53f40.html
deleted file mode 100644
index 6515e5ef..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Message ID 38de87cbf4494a1491faf64dacd53f40.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Payg Token Message ID
Payg Token Message ID
CBOR Type
Description
On first release, this is the Nexus Keycode message ID
Nx Resource
PAYG Credit 1.0
Qualifiers
MandatoryScope: Server
key
msg
rtr
pyg
rtr_prop
pyg_msg
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Secret 489aacc5c473465eb1b4cc4ea4d343ca.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Secret 489aacc5c473465eb1b4cc4ea4d343ca.html
deleted file mode 100644
index 1db03df0..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Payg Token Secret 489aacc5c473465eb1b4cc4ea4d343ca.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Payg Token Secret
Payg Token Secret
CBOR Type
Description
On first release, this is the Nexus Keycode secret
Nx Resource
PAYG Credit 1.0
Qualifiers
MandatoryScope: Server
key
pts
rtr
pyg
rtr_prop
pyg_pts
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status b8372b205dcd46eca168cbe185648c48.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status b8372b205dcd46eca168cbe185648c48.html
deleted file mode 100644
index aed3b3ee..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status b8372b205dcd46eca168cbe185648c48.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Provisioning Status
Provisioning Status
CBOR Type
0
Description
Reflected in Advt packet also. It can be unprovisioned, disabled, recall, stolen, Cash, Loan. The range is from 1-9. If not supported then 0
Nx Resource
AirLink Device Provisioning 1.0
Qualifiers
Integer (uint8_t)MandatoryScope: Shared
key
pst
rtr
prd
rtr_prop
prd_pst
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status ffeee399beb440d29a6b5f60041533c4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status ffeee399beb440d29a6b5f60041533c4.html
deleted file mode 100644
index fa03e5d6..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Provisioning Status ffeee399beb440d29a6b5f60041533c4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Provisioning Status
Provisioning Status
CBOR Type
0
Description
Reflected in Advt packet also. It can be unprovisioned, disabled, recall, stolen, Cash, Loan. The range is from 1-9. If not supported then 0
Nx Resource
AirLink Client Provisioning 1.0
Qualifiers
Integer (uint8_t)MandatoryScope: Shared
key
pst
rtr
prc
rtr_prop
prc_pst
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Readable ID + Cbor header 2 bytes 17a1f308a1bd43e9ba68644e1d36dcc7.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Readable ID + Cbor header 2 bytes 17a1f308a1bd43e9ba68644e1d36dcc7.html
deleted file mode 100644
index 71bfcd57..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Readable ID + Cbor header 2 bytes 17a1f308a1bd43e9ba68644e1d36dcc7.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Readable ID + Cbor header 2 bytes
Readable ID + Cbor header 2 bytes
CBOR Type
26
Description
2^(8*4) = 4,294,967,296 numeric device ids or payment reference or any number that device should display
Nx Resource
AirLink Client Provisioning 1.0
Qualifiers
Integer (uint32_t)MandatoryScope: Shared
key
rid
rtr
prc
rtr_prop
prc_rid
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Server Auth Token 35227ec20e694686bc5e726f9bebdb01.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Server Auth Token 35227ec20e694686bc5e726f9bebdb01.html
deleted file mode 100644
index 169828f8..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Server Auth Token 35227ec20e694686bc5e726f9bebdb01.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Server Auth Token
Server Auth Token
CBOR Type
3
Description
Thinsboard.io has a 20-char device authentication token unique to each device. During device provisioning, this token is written to the device, permanently attaching the device to the server. The token is never transmitted again.
Nx Resource
AirLink Device Provisioning 1.0
Qualifiers
MandatoryScope: SharedString
key
sat
rtr
prd
rtr_prop
prd_sat
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp at which PayG remaining was calculated d6145c33d5d8466f9cfb7e13d0c836a4.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp at which PayG remaining was calculated d6145c33d5d8466f9cfb7e13d0c836a4.html
deleted file mode 100644
index 6bed2eec..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp at which PayG remaining was calculated d6145c33d5d8466f9cfb7e13d0c836a4.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp at which PayG remaining was calculated
Timestamp at which PayG remaining was calculated
CBOR Type
Description
Linux epoch format, expires in Y2035. The Last date and time when the PayG update was fetched from the Server to client [Mobile phone or other communication device]
Nx Resource
AirLink PAYG 1.0
Qualifiers
OptionalScope: Device
key
ts
rtr
pyg
rtr_prop
pyg_ts
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp of last PAYG Update to device 5762bdc2311b4b7bae362427af8f67f5.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp of last PAYG Update to device 5762bdc2311b4b7bae362427af8f67f5.html
deleted file mode 100644
index 7a6b8603..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Server and Shared Data to support AirLink Devices 8f353da8b8544540b1c97a5f36b166b0/Timestamp of last PAYG Update to device 5762bdc2311b4b7bae362427af8f67f5.html
+++ /dev/null
@@ -1,669 +0,0 @@
-Timestamp of last PAYG Update to device
Timestamp of last PAYG Update to device
CBOR Type
Description
Linux epoch format, expires in Y2035, readonly - Historical last PayG update Timestamp
Nx Resource
AirLink PAYG 1.0
Qualifiers
OptionalScope: Device
key
lts
rtr
pyg
rtr_prop
pyg_lts
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Token_Generation_in_Rule_Chain.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Token_Generation_in_Rule_Chain.png
deleted file mode 100644
index fd51c69e..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/Token_Generation_in_Rule_Chain.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/demo_tenant.jpg b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/demo_tenant.jpg
deleted file mode 100644
index a06dd68c..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink Server 641fbcdbfd2840be835111db708aba26/demo_tenant.jpg and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink_Unknown_Device_Flow.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink_Unknown_Device_Flow.png
deleted file mode 100644
index df7d0420..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/AirLink_Unknown_Device_Flow.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/IoT_Communications_and_Components_spec_-_App_Architecture.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/IoT_Communications_and_Components_spec_-_App_Architecture.png
deleted file mode 100644
index b9945f3a..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/IoT_Communications_and_Components_spec_-_App_Architecture.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f.html b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f.html
deleted file mode 100644
index 81d5134a..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f.html
+++ /dev/null
@@ -1,672 +0,0 @@
-Quick-start guide
and you have the three components needed to try AirLink quickly without buying any hardware!
Who Is AirLink for?
AirLink is a ready-made protocol and software backend for businesses who want to enable Pay as you go control and data on their products using a smartphones as a gateway; either because the end product e.g. a home light does not have a remote control or GSM based pay as you go built in, or because adding a smartphone to your product offering adds significant value to your customers.
-
-AirLink is also for businesses who want their products secured against loss or theft using crowd-sourced ‘pings’ via everyone else who uses AirLink devices.
Components
Server: EnAccess.org runs a multi-tenant AirLink server for early adopters and people who want to try out airlink - you can subscribe to as a tenant
Get a tenant login from EnAccess via an email request or use the Demo tenant to try out AirLink (contact EnAccess for login)
Optional: Get your own thingsboard.io server configured to support AirLink using the JSON files available on AirLink Server Github page, then you don’t need the EnAccess server.
PAYG Devices: Get AirLink Devices
Use a smartphone with the ‘AirLink Device Emulator’ app from the AirLink Devices repository to get started and test airlink without requiring any hardware!
Find Suppliers or make your own Bluetooth hardware that is compatible with the AirLink Devices spec. Use the example firmware available for Nordic BLE products on the AirLink Devices Github library
If you want to re-brand the devices that you sell, register with Bluetooth SIG, create a declaration for your product, and use ID text they provide as the 'advertisement' manufacturer text in the Bluetooth advertisement
Smartphone: Get an Android phone and install the Airlink App!
Follow the steps in the next section to setup your AirLink Server tenant
Scan the device via the app and see if it registers on the server
API: Use a third party business application to automate device on/off e.g. Solaris via API calls to the AirLink server
Develop your business integrations further by building on the open source app for clients or API integrations with the IoT server
Don't forget to integrate with the EnAccess server for the inter-company, crowdsourced 'Neighborhood Watch' (lost assets database)
-
How to get started with your AirLink Server tenant
Here is a step by step setup for your tenant login in the AirLink server. Alternatively, if you end up installing your own Thingsboard.io server, this guide can also help you configure it to AirLink specifications after the native thingsboard installation is ready. You will first setup the server, then connect the AirLink App to the server, provision a device using the App, and finally generate a Pay as you go token for the airlink device.
Assumption: You have a “Tenant Administrator” email login provided by EnAccess, or one that you made for your own server. Login with this administrator account.
Go to Users → Tenant Users, click on the + sign at the the top right of the page to create a new Tenant User. Once activated, note down the email and password. Note that the AirLink app uses this login information for administrative actions like registering devices via Oauth, whereas device data exchange is done using access tokens.
Setup Device Profiles
Setup a “Gateways” profile and enable the “Allow provisioning...” option. To do this, you need to tap the pencil button and then remember to save by pressing the tick-mark button.
Setup a “Devices” Profile, and enable the “Default” checkbox as in the figure above. Also enable the “Allow provisioning...” option as in the previous step
Copy the Provisioning Keys and Secrets, you will need to input these in the AirLink app!
Import the rule chains: All data that flows to the thingsboard server goes to the root rule chain, and any other rule chain that the root chain hands off to. To process AirLink data, especially to enable PAYG token generation as well as the Neighborhood watch function, we customized this rule chain and saved it as a JSON file in the AirLink Server repository. To use functionality beyond just the core AirLink functionality, we created another “Business Logic” rule chain which gets handed off all the data from the Root rule chain.
First import the “Business Logic” rule chain JSON file by going to Rule Chain → + → Import Rule Chain
Next, Import the “Root Advertisements and Telemetry” Rule chain. Your rule chain setup should look like this with no errors now:
Mark this rule chain as “Root” using the ‘flag’ button
That’s it for the minimum required configuration on the Server! Next, configure your AirLink App to talk to your server per the following video, and you are set to provision and test real devices!
After registering a device using the above flow, you can generate a Nexus Keycode PAYG token for it by using the Postman collection in the AirLink-Server repository.
Download both the API calls collection and the environment, and upload to your Postman (getpostman.com)
First use the login flow with the Tenant User username/password of the demo user to authenticate and get a JWT token, then
enter the JWT token into the Airlink environment current value
Use the Generate Token flow with the correct device ID to generate a Nexus Keycode PAYG token for your device. This token will be automatically saved in the device properties as well
Connect the AirLink App and type the token in manually into the PC resource, or via keypad as shown in the video above
\ No newline at end of file
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.15.41_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.15.41_PM.png
deleted file mode 100644
index 14a5f39c..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.15.41_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.16.36_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.16.36_PM.png
deleted file mode 100644
index aec64b8d..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.16.36_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.13_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.13_PM.png
deleted file mode 100644
index f6762221..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.13_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.24_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.24_PM.png
deleted file mode 100644
index 2d7c0dd5..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.20.24_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.27.48_PM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.27.48_PM.png
deleted file mode 100644
index 17944952..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Quick-start guide 2cc1a0d344594b08ac92916bf933fe6f/Screen_Shot_2022-01-26_at_9.27.48_PM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/README.md b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/README.md
deleted file mode 100644
index 5b3af6bb..00000000
--- a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Old AirLink documentation
-
-This documentation is archived.
-It's a snapshot of the old AirLink documentation managed in Notion.
-
-The new (and updated) documentation can be found at:
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Screenshot_2023-01-19_at_11.58.05_AM.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Screenshot_2023-01-19_at_11.58.05_AM.png
deleted file mode 100644
index 6b0e1e38..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Screenshot_2023-01-19_at_11.58.05_AM.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_Architecture_Diagram_-_IoT_Data_Flow.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_Architecture_Diagram_-_IoT_Data_Flow.png
deleted file mode 100644
index 06b3a86a..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_Architecture_Diagram_-_IoT_Data_Flow.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_logo.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_logo.png
deleted file mode 100644
index f3901b0c..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/Simusolar_logo.png and /dev/null differ
diff --git a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/logo.png b/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/logo.png
deleted file mode 100644
index 41d24f7d..00000000
Binary files a/docs/AirLink Docs 83f2c2ce8fb0463a9078d63aad81a0c7/logo.png and /dev/null differ
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index 65a31a41..00000000
--- a/docs/index.html
+++ /dev/null
@@ -1,705 +0,0 @@
-AirLink Docs
AirLink Docs
-
This is technical documentation for AirLink.
-
-If you are looking for an overview, the landing page is here:
-https://enaccess.org/airlink/
Here is also a helpful guide that plays through the AirLink adoption flow in short
AirLink is an open source framework (MIT License) for Pay-As-You-Go (PAYG) IoT devices to connect to compatible servers via Bluetooth® gateways. The protocol provides an interoperable communication standard and example code for wire-free communication between PAYG devices and an IoT server using smartphones as gateways.
-
\ No newline at end of file
diff --git a/app/lib/core/api/airlink_api_service.dart b/lib/core/api/airlink_api_service.dart
similarity index 100%
rename from app/lib/core/api/airlink_api_service.dart
rename to lib/core/api/airlink_api_service.dart
diff --git a/app/lib/core/api/angaza_api_service.dart b/lib/core/api/angaza_api_service.dart
similarity index 100%
rename from app/lib/core/api/angaza_api_service.dart
rename to lib/core/api/angaza_api_service.dart
diff --git a/app/lib/core/api/angaza_base_client.dart b/lib/core/api/angaza_base_client.dart
similarity index 100%
rename from app/lib/core/api/angaza_base_client.dart
rename to lib/core/api/angaza_base_client.dart
diff --git a/app/lib/core/api/base_api_client.dart b/lib/core/api/base_api_client.dart
similarity index 100%
rename from app/lib/core/api/base_api_client.dart
rename to lib/core/api/base_api_client.dart
diff --git a/app/lib/core/api/token_manager.dart b/lib/core/api/token_manager.dart
similarity index 100%
rename from app/lib/core/api/token_manager.dart
rename to lib/core/api/token_manager.dart
diff --git a/app/lib/core/bluetooth/bluetooth_info.dart b/lib/core/bluetooth/bluetooth_info.dart
similarity index 100%
rename from app/lib/core/bluetooth/bluetooth_info.dart
rename to lib/core/bluetooth/bluetooth_info.dart
diff --git a/app/lib/core/device_info/device_info.dart b/lib/core/device_info/device_info.dart
similarity index 100%
rename from app/lib/core/device_info/device_info.dart
rename to lib/core/device_info/device_info.dart
diff --git a/app/lib/core/errors/failures.dart b/lib/core/errors/failures.dart
similarity index 100%
rename from app/lib/core/errors/failures.dart
rename to lib/core/errors/failures.dart
diff --git a/app/lib/core/location/location_info.dart b/lib/core/location/location_info.dart
similarity index 100%
rename from app/lib/core/location/location_info.dart
rename to lib/core/location/location_info.dart
diff --git a/app/lib/core/network/network_info.dart b/lib/core/network/network_info.dart
similarity index 100%
rename from app/lib/core/network/network_info.dart
rename to lib/core/network/network_info.dart
diff --git a/app/lib/core/storage/storage.dart b/lib/core/storage/storage.dart
similarity index 100%
rename from app/lib/core/storage/storage.dart
rename to lib/core/storage/storage.dart
diff --git a/app/lib/core/utils/constants/characteristic_uuids.dart b/lib/core/utils/constants/characteristic_uuids.dart
similarity index 100%
rename from app/lib/core/utils/constants/characteristic_uuids.dart
rename to lib/core/utils/constants/characteristic_uuids.dart
diff --git a/app/lib/core/utils/enums/enums.dart b/lib/core/utils/enums/enums.dart
similarity index 100%
rename from app/lib/core/utils/enums/enums.dart
rename to lib/core/utils/enums/enums.dart
diff --git a/app/lib/core/utils/helper_functions.dart b/lib/core/utils/helper_functions.dart
similarity index 100%
rename from app/lib/core/utils/helper_functions.dart
rename to lib/core/utils/helper_functions.dart
diff --git a/app/lib/core/widgets/app_alert.dart b/lib/core/widgets/app_alert.dart
similarity index 100%
rename from app/lib/core/widgets/app_alert.dart
rename to lib/core/widgets/app_alert.dart
diff --git a/app/lib/core/widgets/appbar_actions.dart b/lib/core/widgets/appbar_actions.dart
similarity index 100%
rename from app/lib/core/widgets/appbar_actions.dart
rename to lib/core/widgets/appbar_actions.dart
diff --git a/app/lib/core/widgets/snackbars.dart b/lib/core/widgets/snackbars.dart
similarity index 100%
rename from app/lib/core/widgets/snackbars.dart
rename to lib/core/widgets/snackbars.dart
diff --git a/app/lib/features/device/data/data_sources/local/ble_device_local_data_source.dart b/lib/features/device/data/data_sources/local/ble_device_local_data_source.dart
similarity index 100%
rename from app/lib/features/device/data/data_sources/local/ble_device_local_data_source.dart
rename to lib/features/device/data/data_sources/local/ble_device_local_data_source.dart
diff --git a/app/lib/features/device/data/data_sources/local/ble_device_local_data_source_impl.dart b/lib/features/device/data/data_sources/local/ble_device_local_data_source_impl.dart
similarity index 100%
rename from app/lib/features/device/data/data_sources/local/ble_device_local_data_source_impl.dart
rename to lib/features/device/data/data_sources/local/ble_device_local_data_source_impl.dart
diff --git a/app/lib/features/device/data/data_sources/remote/device_remote_data_source.dart b/lib/features/device/data/data_sources/remote/device_remote_data_source.dart
similarity index 100%
rename from app/lib/features/device/data/data_sources/remote/device_remote_data_source.dart
rename to lib/features/device/data/data_sources/remote/device_remote_data_source.dart
diff --git a/app/lib/features/device/data/data_sources/remote/device_remote_data_source_impl.dart b/lib/features/device/data/data_sources/remote/device_remote_data_source_impl.dart
similarity index 100%
rename from app/lib/features/device/data/data_sources/remote/device_remote_data_source_impl.dart
rename to lib/features/device/data/data_sources/remote/device_remote_data_source_impl.dart
diff --git a/app/lib/features/device/data/models/advertisement_packet_model.dart b/lib/features/device/data/models/advertisement_packet_model.dart
similarity index 100%
rename from app/lib/features/device/data/models/advertisement_packet_model.dart
rename to lib/features/device/data/models/advertisement_packet_model.dart
diff --git a/app/lib/features/device/data/models/characteristic_model.dart b/lib/features/device/data/models/characteristic_model.dart
similarity index 100%
rename from app/lib/features/device/data/models/characteristic_model.dart
rename to lib/features/device/data/models/characteristic_model.dart
diff --git a/app/lib/features/device/data/models/device_model.dart b/lib/features/device/data/models/device_model.dart
similarity index 100%
rename from app/lib/features/device/data/models/device_model.dart
rename to lib/features/device/data/models/device_model.dart
diff --git a/app/lib/features/device/data/models/provisioned_device_model.dart b/lib/features/device/data/models/provisioned_device_model.dart
similarity index 100%
rename from app/lib/features/device/data/models/provisioned_device_model.dart
rename to lib/features/device/data/models/provisioned_device_model.dart
diff --git a/app/lib/features/device/data/models/telemetry_model.dart b/lib/features/device/data/models/telemetry_model.dart
similarity index 100%
rename from app/lib/features/device/data/models/telemetry_model.dart
rename to lib/features/device/data/models/telemetry_model.dart
diff --git a/app/lib/features/device/data/repositories/ble_device_repository_impl.dart b/lib/features/device/data/repositories/ble_device_repository_impl.dart
similarity index 100%
rename from app/lib/features/device/data/repositories/ble_device_repository_impl.dart
rename to lib/features/device/data/repositories/ble_device_repository_impl.dart
diff --git a/app/lib/features/device/domain/entities/advertisement_packet.dart b/lib/features/device/domain/entities/advertisement_packet.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/advertisement_packet.dart
rename to lib/features/device/domain/entities/advertisement_packet.dart
diff --git a/app/lib/features/device/domain/entities/characteristic.dart b/lib/features/device/domain/entities/characteristic.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/characteristic.dart
rename to lib/features/device/domain/entities/characteristic.dart
diff --git a/app/lib/features/device/domain/entities/characteristic_data.dart b/lib/features/device/domain/entities/characteristic_data.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/characteristic_data.dart
rename to lib/features/device/domain/entities/characteristic_data.dart
diff --git a/app/lib/features/device/domain/entities/device.dart b/lib/features/device/domain/entities/device.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/device.dart
rename to lib/features/device/domain/entities/device.dart
diff --git a/app/lib/features/device/domain/entities/provisioned_device.dart b/lib/features/device/domain/entities/provisioned_device.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/provisioned_device.dart
rename to lib/features/device/domain/entities/provisioned_device.dart
diff --git a/app/lib/features/device/domain/entities/telemetry.dart b/lib/features/device/domain/entities/telemetry.dart
similarity index 100%
rename from app/lib/features/device/domain/entities/telemetry.dart
rename to lib/features/device/domain/entities/telemetry.dart
diff --git a/app/lib/features/device/domain/repositories/device_repository.dart b/lib/features/device/domain/repositories/device_repository.dart
similarity index 100%
rename from app/lib/features/device/domain/repositories/device_repository.dart
rename to lib/features/device/domain/repositories/device_repository.dart
diff --git a/app/lib/features/device/domain/usecases/authorize_device.dart b/lib/features/device/domain/usecases/authorize_device.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/authorize_device.dart
rename to lib/features/device/domain/usecases/authorize_device.dart
diff --git a/app/lib/features/device/domain/usecases/connect_to_ble_device.dart b/lib/features/device/domain/usecases/connect_to_ble_device.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/connect_to_ble_device.dart
rename to lib/features/device/domain/usecases/connect_to_ble_device.dart
diff --git a/app/lib/features/device/domain/usecases/disconnect_ble_device.dart b/lib/features/device/domain/usecases/disconnect_ble_device.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/disconnect_ble_device.dart
rename to lib/features/device/domain/usecases/disconnect_ble_device.dart
diff --git a/app/lib/features/device/domain/usecases/get_ble_devices.dart b/lib/features/device/domain/usecases/get_ble_devices.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/get_ble_devices.dart
rename to lib/features/device/domain/usecases/get_ble_devices.dart
diff --git a/app/lib/features/device/domain/usecases/get_device_access_token.dart b/lib/features/device/domain/usecases/get_device_access_token.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/get_device_access_token.dart
rename to lib/features/device/domain/usecases/get_device_access_token.dart
diff --git a/app/lib/features/device/domain/usecases/post_advertisement_data.dart b/lib/features/device/domain/usecases/post_advertisement_data.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/post_advertisement_data.dart
rename to lib/features/device/domain/usecases/post_advertisement_data.dart
diff --git a/app/lib/features/device/domain/usecases/provision_device.dart b/lib/features/device/domain/usecases/provision_device.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/provision_device.dart
rename to lib/features/device/domain/usecases/provision_device.dart
diff --git a/app/lib/features/device/domain/usecases/read_characteristic.dart b/lib/features/device/domain/usecases/read_characteristic.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/read_characteristic.dart
rename to lib/features/device/domain/usecases/read_characteristic.dart
diff --git a/app/lib/features/device/domain/usecases/save_advertisement_data.dart b/lib/features/device/domain/usecases/save_advertisement_data.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/save_advertisement_data.dart
rename to lib/features/device/domain/usecases/save_advertisement_data.dart
diff --git a/app/lib/features/device/domain/usecases/sync_gateway_and_device.dart b/lib/features/device/domain/usecases/sync_gateway_and_device.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/sync_gateway_and_device.dart
rename to lib/features/device/domain/usecases/sync_gateway_and_device.dart
diff --git a/app/lib/features/device/domain/usecases/sync_server_and_gateway.dart b/lib/features/device/domain/usecases/sync_server_and_gateway.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/sync_server_and_gateway.dart
rename to lib/features/device/domain/usecases/sync_server_and_gateway.dart
diff --git a/app/lib/features/device/domain/usecases/transfer_payg_token.dart b/lib/features/device/domain/usecases/transfer_payg_token.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/transfer_payg_token.dart
rename to lib/features/device/domain/usecases/transfer_payg_token.dart
diff --git a/app/lib/features/device/domain/usecases/usecase.dart b/lib/features/device/domain/usecases/usecase.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/usecase.dart
rename to lib/features/device/domain/usecases/usecase.dart
diff --git a/app/lib/features/device/domain/usecases/write_characteristic.dart b/lib/features/device/domain/usecases/write_characteristic.dart
similarity index 100%
rename from app/lib/features/device/domain/usecases/write_characteristic.dart
rename to lib/features/device/domain/usecases/write_characteristic.dart
diff --git a/app/lib/features/device/presentation/pages/device_details_page.dart b/lib/features/device/presentation/pages/device_details_page.dart
similarity index 100%
rename from app/lib/features/device/presentation/pages/device_details_page.dart
rename to lib/features/device/presentation/pages/device_details_page.dart
diff --git a/app/lib/features/device/presentation/pages/device_list_page.dart b/lib/features/device/presentation/pages/device_list_page.dart
similarity index 100%
rename from app/lib/features/device/presentation/pages/device_list_page.dart
rename to lib/features/device/presentation/pages/device_list_page.dart
diff --git a/app/lib/features/device/presentation/providers/device_provider.dart b/lib/features/device/presentation/providers/device_provider.dart
similarity index 100%
rename from app/lib/features/device/presentation/providers/device_provider.dart
rename to lib/features/device/presentation/providers/device_provider.dart
diff --git a/app/lib/features/device/presentation/widgets/action_button.dart b/lib/features/device/presentation/widgets/action_button.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/action_button.dart
rename to lib/features/device/presentation/widgets/action_button.dart
diff --git a/app/lib/features/device/presentation/widgets/barcode_scanner_dialog.dart b/lib/features/device/presentation/widgets/barcode_scanner_dialog.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/barcode_scanner_dialog.dart
rename to lib/features/device/presentation/widgets/barcode_scanner_dialog.dart
diff --git a/app/lib/features/device/presentation/widgets/ble_device_tile.dart b/lib/features/device/presentation/widgets/ble_device_tile.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/ble_device_tile.dart
rename to lib/features/device/presentation/widgets/ble_device_tile.dart
diff --git a/app/lib/features/device/presentation/widgets/characteristic_button.dart b/lib/features/device/presentation/widgets/characteristic_button.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/characteristic_button.dart
rename to lib/features/device/presentation/widgets/characteristic_button.dart
diff --git a/app/lib/features/device/presentation/widgets/device_actions.dart b/lib/features/device/presentation/widgets/device_actions.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/device_actions.dart
rename to lib/features/device/presentation/widgets/device_actions.dart
diff --git a/app/lib/features/device/presentation/widgets/device_data.dart b/lib/features/device/presentation/widgets/device_data.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/device_data.dart
rename to lib/features/device/presentation/widgets/device_data.dart
diff --git a/app/lib/features/device/presentation/widgets/input_field.dart b/lib/features/device/presentation/widgets/input_field.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/input_field.dart
rename to lib/features/device/presentation/widgets/input_field.dart
diff --git a/app/lib/features/device/presentation/widgets/input_payg_token_dialog.dart b/lib/features/device/presentation/widgets/input_payg_token_dialog.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/input_payg_token_dialog.dart
rename to lib/features/device/presentation/widgets/input_payg_token_dialog.dart
diff --git a/app/lib/features/device/presentation/widgets/input_serial_number_dialog.dart b/lib/features/device/presentation/widgets/input_serial_number_dialog.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/input_serial_number_dialog.dart
rename to lib/features/device/presentation/widgets/input_serial_number_dialog.dart
diff --git a/app/lib/features/device/presentation/widgets/payg_token_input_form.dart b/lib/features/device/presentation/widgets/payg_token_input_form.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/payg_token_input_form.dart
rename to lib/features/device/presentation/widgets/payg_token_input_form.dart
diff --git a/app/lib/features/device/presentation/widgets/search_field.dart b/lib/features/device/presentation/widgets/search_field.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/search_field.dart
rename to lib/features/device/presentation/widgets/search_field.dart
diff --git a/app/lib/features/device/presentation/widgets/serial_number_input_form.dart b/lib/features/device/presentation/widgets/serial_number_input_form.dart
similarity index 100%
rename from app/lib/features/device/presentation/widgets/serial_number_input_form.dart
rename to lib/features/device/presentation/widgets/serial_number_input_form.dart
diff --git a/app/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source.dart b/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source.dart
similarity index 100%
rename from app/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source.dart
rename to lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source.dart
diff --git a/app/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source_impl.dart b/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source_impl.dart
similarity index 100%
rename from app/lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source_impl.dart
rename to lib/features/generate_token/data/data_sources/remote/token_device_remote_data_source_impl.dart
diff --git a/app/lib/features/generate_token/data/models/device_suggestion_model.dart b/lib/features/generate_token/data/models/device_suggestion_model.dart
similarity index 100%
rename from app/lib/features/generate_token/data/models/device_suggestion_model.dart
rename to lib/features/generate_token/data/models/device_suggestion_model.dart
diff --git a/app/lib/features/generate_token/data/models/token_device_model.dart b/lib/features/generate_token/data/models/token_device_model.dart
similarity index 100%
rename from app/lib/features/generate_token/data/models/token_device_model.dart
rename to lib/features/generate_token/data/models/token_device_model.dart
diff --git a/app/lib/features/generate_token/data/repositories/token_device_repository_impl.dart b/lib/features/generate_token/data/repositories/token_device_repository_impl.dart
similarity index 100%
rename from app/lib/features/generate_token/data/repositories/token_device_repository_impl.dart
rename to lib/features/generate_token/data/repositories/token_device_repository_impl.dart
diff --git a/app/lib/features/generate_token/domain/entities/device_suggestion.dart b/lib/features/generate_token/domain/entities/device_suggestion.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/entities/device_suggestion.dart
rename to lib/features/generate_token/domain/entities/device_suggestion.dart
diff --git a/app/lib/features/generate_token/domain/entities/token_device.dart b/lib/features/generate_token/domain/entities/token_device.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/entities/token_device.dart
rename to lib/features/generate_token/domain/entities/token_device.dart
diff --git a/app/lib/features/generate_token/domain/repositories/token_device_repository.dart b/lib/features/generate_token/domain/repositories/token_device_repository.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/repositories/token_device_repository.dart
rename to lib/features/generate_token/domain/repositories/token_device_repository.dart
diff --git a/app/lib/features/generate_token/domain/usecases/generate_token.dart b/lib/features/generate_token/domain/usecases/generate_token.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/usecases/generate_token.dart
rename to lib/features/generate_token/domain/usecases/generate_token.dart
diff --git a/app/lib/features/generate_token/domain/usecases/get_device_suggestion.dart b/lib/features/generate_token/domain/usecases/get_device_suggestion.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/usecases/get_device_suggestion.dart
rename to lib/features/generate_token/domain/usecases/get_device_suggestion.dart
diff --git a/app/lib/features/generate_token/domain/usecases/usecase.dart b/lib/features/generate_token/domain/usecases/usecase.dart
similarity index 100%
rename from app/lib/features/generate_token/domain/usecases/usecase.dart
rename to lib/features/generate_token/domain/usecases/usecase.dart
diff --git a/app/lib/features/generate_token/presentation/pages/generate_token_page.dart b/lib/features/generate_token/presentation/pages/generate_token_page.dart
similarity index 100%
rename from app/lib/features/generate_token/presentation/pages/generate_token_page.dart
rename to lib/features/generate_token/presentation/pages/generate_token_page.dart
diff --git a/app/lib/features/generate_token/presentation/providers/token_device_provider.dart b/lib/features/generate_token/presentation/providers/token_device_provider.dart
similarity index 100%
rename from app/lib/features/generate_token/presentation/providers/token_device_provider.dart
rename to lib/features/generate_token/presentation/providers/token_device_provider.dart
diff --git a/app/lib/features/generate_token/presentation/widgets/search_field.dart b/lib/features/generate_token/presentation/widgets/search_field.dart
similarity index 100%
rename from app/lib/features/generate_token/presentation/widgets/search_field.dart
rename to lib/features/generate_token/presentation/widgets/search_field.dart
diff --git a/app/lib/features/profile/data/data_sources/local/angaza_local_data_source.dart b/lib/features/profile/data/data_sources/local/angaza_local_data_source.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/local/angaza_local_data_source.dart
rename to lib/features/profile/data/data_sources/local/angaza_local_data_source.dart
diff --git a/app/lib/features/profile/data/data_sources/local/angaza_local_data_source_impl.dart b/lib/features/profile/data/data_sources/local/angaza_local_data_source_impl.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/local/angaza_local_data_source_impl.dart
rename to lib/features/profile/data/data_sources/local/angaza_local_data_source_impl.dart
diff --git a/app/lib/features/profile/data/data_sources/local/profile_local_data_source.dart b/lib/features/profile/data/data_sources/local/profile_local_data_source.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/local/profile_local_data_source.dart
rename to lib/features/profile/data/data_sources/local/profile_local_data_source.dart
diff --git a/app/lib/features/profile/data/data_sources/local/profile_local_data_source_impl.dart b/lib/features/profile/data/data_sources/local/profile_local_data_source_impl.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/local/profile_local_data_source_impl.dart
rename to lib/features/profile/data/data_sources/local/profile_local_data_source_impl.dart
diff --git a/app/lib/features/profile/data/data_sources/remote/profile_remote_data_source.dart b/lib/features/profile/data/data_sources/remote/profile_remote_data_source.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/remote/profile_remote_data_source.dart
rename to lib/features/profile/data/data_sources/remote/profile_remote_data_source.dart
diff --git a/app/lib/features/profile/data/data_sources/remote/profile_remote_data_source_impl.dart b/lib/features/profile/data/data_sources/remote/profile_remote_data_source_impl.dart
similarity index 100%
rename from app/lib/features/profile/data/data_sources/remote/profile_remote_data_source_impl.dart
rename to lib/features/profile/data/data_sources/remote/profile_remote_data_source_impl.dart
diff --git a/app/lib/features/profile/data/models/angaza_user_model.dart b/lib/features/profile/data/models/angaza_user_model.dart
similarity index 100%
rename from app/lib/features/profile/data/models/angaza_user_model.dart
rename to lib/features/profile/data/models/angaza_user_model.dart
diff --git a/app/lib/features/profile/data/models/profile_model.dart b/lib/features/profile/data/models/profile_model.dart
similarity index 100%
rename from app/lib/features/profile/data/models/profile_model.dart
rename to lib/features/profile/data/models/profile_model.dart
diff --git a/app/lib/features/profile/data/repositories/angaza_repository_impl.dart b/lib/features/profile/data/repositories/angaza_repository_impl.dart
similarity index 100%
rename from app/lib/features/profile/data/repositories/angaza_repository_impl.dart
rename to lib/features/profile/data/repositories/angaza_repository_impl.dart
diff --git a/app/lib/features/profile/data/repositories/profile_repository_impl.dart b/lib/features/profile/data/repositories/profile_repository_impl.dart
similarity index 100%
rename from app/lib/features/profile/data/repositories/profile_repository_impl.dart
rename to lib/features/profile/data/repositories/profile_repository_impl.dart
diff --git a/app/lib/features/profile/domain/entities/angaza_user.dart b/lib/features/profile/domain/entities/angaza_user.dart
similarity index 100%
rename from app/lib/features/profile/domain/entities/angaza_user.dart
rename to lib/features/profile/domain/entities/angaza_user.dart
diff --git a/app/lib/features/profile/domain/entities/profile.dart b/lib/features/profile/domain/entities/profile.dart
similarity index 100%
rename from app/lib/features/profile/domain/entities/profile.dart
rename to lib/features/profile/domain/entities/profile.dart
diff --git a/app/lib/features/profile/domain/repositories/angaza_repository.dart b/lib/features/profile/domain/repositories/angaza_repository.dart
similarity index 100%
rename from app/lib/features/profile/domain/repositories/angaza_repository.dart
rename to lib/features/profile/domain/repositories/angaza_repository.dart
diff --git a/app/lib/features/profile/domain/repositories/profile_repository.dart b/lib/features/profile/domain/repositories/profile_repository.dart
similarity index 100%
rename from app/lib/features/profile/domain/repositories/profile_repository.dart
rename to lib/features/profile/domain/repositories/profile_repository.dart
diff --git a/app/lib/features/profile/domain/usecases/get_angaza_credentials.dart b/lib/features/profile/domain/usecases/get_angaza_credentials.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/get_angaza_credentials.dart
rename to lib/features/profile/domain/usecases/get_angaza_credentials.dart
diff --git a/app/lib/features/profile/domain/usecases/get_gateway_device_id.dart b/lib/features/profile/domain/usecases/get_gateway_device_id.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/get_gateway_device_id.dart
rename to lib/features/profile/domain/usecases/get_gateway_device_id.dart
diff --git a/app/lib/features/profile/domain/usecases/get_profile.dart b/lib/features/profile/domain/usecases/get_profile.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/get_profile.dart
rename to lib/features/profile/domain/usecases/get_profile.dart
diff --git a/app/lib/features/profile/domain/usecases/provision_gateway.dart b/lib/features/profile/domain/usecases/provision_gateway.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/provision_gateway.dart
rename to lib/features/profile/domain/usecases/provision_gateway.dart
diff --git a/app/lib/features/profile/domain/usecases/save_angaza_credentials.dart b/lib/features/profile/domain/usecases/save_angaza_credentials.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/save_angaza_credentials.dart
rename to lib/features/profile/domain/usecases/save_angaza_credentials.dart
diff --git a/app/lib/features/profile/domain/usecases/usecase.dart b/lib/features/profile/domain/usecases/usecase.dart
similarity index 100%
rename from app/lib/features/profile/domain/usecases/usecase.dart
rename to lib/features/profile/domain/usecases/usecase.dart
diff --git a/app/lib/features/profile/presentation/pages/profile_page.dart b/lib/features/profile/presentation/pages/profile_page.dart
similarity index 100%
rename from app/lib/features/profile/presentation/pages/profile_page.dart
rename to lib/features/profile/presentation/pages/profile_page.dart
diff --git a/app/lib/features/profile/presentation/provider/angaza_provider.dart b/lib/features/profile/presentation/provider/angaza_provider.dart
similarity index 100%
rename from app/lib/features/profile/presentation/provider/angaza_provider.dart
rename to lib/features/profile/presentation/provider/angaza_provider.dart
diff --git a/app/lib/features/profile/presentation/provider/profile_provider.dart b/lib/features/profile/presentation/provider/profile_provider.dart
similarity index 100%
rename from app/lib/features/profile/presentation/provider/profile_provider.dart
rename to lib/features/profile/presentation/provider/profile_provider.dart
diff --git a/app/lib/features/profile/presentation/widgets/airlink_credentials.dart b/lib/features/profile/presentation/widgets/airlink_credentials.dart
similarity index 100%
rename from app/lib/features/profile/presentation/widgets/airlink_credentials.dart
rename to lib/features/profile/presentation/widgets/airlink_credentials.dart
diff --git a/app/lib/features/profile/presentation/widgets/angaza_credentials_form.dart b/lib/features/profile/presentation/widgets/angaza_credentials_form.dart
similarity index 100%
rename from app/lib/features/profile/presentation/widgets/angaza_credentials_form.dart
rename to lib/features/profile/presentation/widgets/angaza_credentials_form.dart
diff --git a/app/lib/features/profile/presentation/widgets/input_field.dart b/lib/features/profile/presentation/widgets/input_field.dart
similarity index 100%
rename from app/lib/features/profile/presentation/widgets/input_field.dart
rename to lib/features/profile/presentation/widgets/input_field.dart
diff --git a/app/lib/main.dart b/lib/main.dart
similarity index 100%
rename from app/lib/main.dart
rename to lib/main.dart
diff --git a/app/lib/providers.dart b/lib/providers.dart
similarity index 100%
rename from app/lib/providers.dart
rename to lib/providers.dart
diff --git a/app/lib/service_locator.dart b/lib/service_locator.dart
similarity index 100%
rename from app/lib/service_locator.dart
rename to lib/service_locator.dart
diff --git a/app/pubspec.lock b/pubspec.lock
similarity index 100%
rename from app/pubspec.lock
rename to pubspec.lock
diff --git a/app/pubspec.yaml b/pubspec.yaml
similarity index 100%
rename from app/pubspec.yaml
rename to pubspec.yaml
diff --git a/app/test/widget_test.dart b/test/widget_test.dart
similarity index 100%
rename from app/test/widget_test.dart
rename to test/widget_test.dart