Server Software
The IoT Gateway server is a hosting environment for IoT applications using .NET Core.
Overview
The IoT Gateway provides:
- A hosting environment for applications
- A web server with static and dynamic resources
- Realtime Markdown to HTML generation
- A powerful script execution environment
- An encrypted object database
- Hardware abstraction layer for things
- Communication libraries for common IoT protocols such as CoAP, HTTP, LWM2M, MQTT and XMPP
- Support for IEEE IoT Harmonization interfaces based on XMPP
- Support for common runtime tasks such as caching, localization, scheduling, type inventory and settings
- Event logging architecture
- A set of .NET Standard Libraries for the Rapid Application Development of IoT applications
- Source Code on GitHub for customization or review
You can use the Simple IoT Client to interact and administer devices published using the IoT Gateway in a secure fashion. If the gateway is connected to an IoT Broker or similar broker, the gateway and its devices can be provisioned in an interoperable and secure manner by their corresponding owners.
The IoT Gateway is available for download under the following license terms.
License
You should carefully read the following terms and conditions before using this software. Your use of this software indicates your acceptance of this license agreement and warranty. If you do not agree with the terms of this license, or if the terms of this license contradict with your local laws, you must remove any files from the IoT Gateway from your storage devices and cease to use it. The terms of this license are subjects of changes in future versions of the IoT Gateway.
You may not use, copy, emulate, clone, rent, lease, sell, modify, decompile, disassemble, otherwise reverse engineer, or transfer the licensed program, or any subset of the licensed program, except as provided for in this agreement. Any such unauthorised use shall result in immediate and automatic termination of this license and may result in criminal and/or civil prosecution.
The source code and libraries provided in this repository is provided open for the following uses:
For Personal evaluation. Personal evaluation means evaluating the code, its libraries and underlying technologies, including learning about underlying technologies.
For Academic use. If you want to use the following code for academic use, all you need to do is to inform the author of who you are, what academic institution you work for (or study for), and in what projects you intend to use the code. All I ask in return is for an acknowledgement and visible attribution to this repository, including a link, and that you do not redistribute the source code, or parts thereof in the solutions you develop. Any solutions developed for academic use, that become commercial, require a commercial license.
For Security analysis. If you perform any security analysis on the code, to see what security aspects the code might have, all that is asked of you, is that you inform the author of any findings at least forty-five days before publication of the findings, so that any vulnerabilities might be addressed. Such contributions are much appreciated and will be acknowledged.
Commercial use of the code, in part or in full, in compiled binary form, or its source code, requires a Commercial License. Contact the author for details.
All rights to the source code are reserved and exclusively owned by Waher Data AB. Any contributions made to the IoT Gateway repository become the intellectual property of Waher Data AB. If you’re interested in using the source code, as a whole, or in part, you need a license agreement with the author. You can contact him through LinkedIn.
This software is provided by the copyright holder and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
The IoT Gateway is © Waher Data AB 2016-2018. All rights reserved.
Top of pageDownload
Select the download that best suits your needs:
File | Description |
---|---|
Windows installer | This setup application will install the IoT Gateway on Windows machines. The IoT Gateway will be run as a Windows Service by default. It can also be run using the command prompt. Source code for the setup application is available on GitHub to make it customizable, and is based on the Wix framework. |
MSI package | If you are creating custom setup applications, you can embed the IoT Gateway using this MSI package. Source code for the MSI package is available on GitHub to make it customizable, and is based on the Wix framework. |
Executable applications
The installation folder holds all executable applications hosted by the IoT Gateway. Hosted applications are Dynamic Link Library* (*.dll
) files that the gateway loads during startup. The folder also contains the following executable files.
Waher.IoTGateway.Svc.exe
This is the IoT Gateway service. It can also be run from the command prompt. This way, it can be used to debug applications developed for the gateway.
Command-line parameters:
Switch | Description |
---|---|
-? |
Brings this help. |
-install |
Installs service in operating system |
-uninstall |
Uninstalls service from operating system. |
-displayname Name |
Sets the display name of the service. Default is “IoT Gateway Service”. |
-description Desc |
Sets the textual description of the service. Default is “Windows Service hosting the Waher IoT Gateway.”. |
-start Mode |
Sets the default starting mode of the service. Default is Disabled. Available options are StartOnBoot, StartOnSystemStart, AutoStart, StartOnDemand and Disabled |
-immediate |
If the service should be started immediately. |
-console |
Run the service as a console application. |
-localsystem |
Installed service will run using the Local System account. |
-localservice |
Installed service will run using the Local Service account (default). |
-networkservice |
Installed service will run using the Network Service account. |
Waher.Utility.Install.exe
Use this executable command to install an application into the IoT Gateway. The application must be properly described using an Application Manifest File. This is an XML file complying with the Application Manifest XML Schema. The executable accepts the following command-line arguments:
Switch | Description |
---|---|
-m MANIFEST_FILE |
Points to the manifest file describing the files in the module. |
-d APP_DATA_FOLDER |
Points to the application data folder. |
-s SERVER_EXE |
Points to the executable file of the IoT Gateway. |
-v |
Verbose mode. |
-i |
Install. This is the default. Switch not required. |
-u |
Uninstall. Add this switch if the module is being uninstalled. |
-r |
Remove files. Add this switch if you want files removed during uninstallation. Default is to not remove files. |
-? |
Help. |
Application Data
Any application data read or written by the IoT Gateway or any of its applications, reside in the Program Data Folder. On normal Windows operating systems, this is typically C:\ProgramData\IoT Gateway
. If running the UWP IoT Gateway App, a link to the folder will be displayed on the screen.
The principle file for configuring the gateway is Gateway.config
. It must conform to the GatewayConfiguration.xsd schema file. The Gateway.config
defines:
- The domain of the gateway (if any)
- Reference to certificate
- XMPP connection definition
- Default page
- Database configuration
- Ports to open for different protocols
- Network folders
The program data folder also contains a set of subfolders with the following contents:
Subfolder | Description |
---|---|
Backup |
Backups will be placed in this folder by default. |
Data |
The object database stores its files in this folder. |
Events |
Events are stored in this folder, and kept for up to seven days. |
Graphics |
Common graphics elements such as emojis are stored here. |
HTTP |
If sniffers have been enabled, logs of HTTP communication are stored here, and kept fo rup to seven days. |
Language |
Localized text strings are stored in this folder. |
Root |
Represents the root folder of the web server. Any files put in this folder or its subfolders will be published by the web server. |
Transforms |
Contains XSL Transforms of common XML files output by the gateway to HTML files viewable in a browser. |
UPnP |
If sniffers have been enabled, logs of UPnP communication are stored here, and kept fo rup to seven days. |
XMPP |
If sniffers have been enabled, logs of XMPP Client to Server (c2s) communication are stored here, and kept fo rup to seven days. |
Mastering Internet of Things
The IoT Gateway is presented in more detail in the book Mastering Internet of Things. Source code examples are available on GitHub. The book is available on Amazon, Packt, Bokus (2), or other online book stores.
Top of pageContact
If you have any questions or comments, if you would like to request added features, or if you would like to license the software, please go to the Feedback page.
Top of page