Libraries
The IoT Gateway project includes a series of programming libraries for Rapid Application Development of IoT applications available as NuGet packages. They are free to use for private, academic or test use. Commercial use requires a commercial license. A complete list of libraries, together with source code are available on GitHub. The libraries are grouped into the following categories:
- Content libraries handle content parsing, encoding and decoding. This includes HTML and Markdown processing.
- Events libraries define an infrastructure for event logging, as well as and persistence, processing or distribution of incoming events.
- Networking libraries define classes for network communication. Libraries exist for CoAP, HTTP, LWM2M, MQTT, Peer-to-Peer, XMPP and UPnP communication.
- Persistence libraries create an infrastructure for persistence of objects in applications. This includes a simple embedded encrypted local object database, as well as integration with external databases. Objects are persisted based on their annotated class definitions.
- Runtime libraries help applications with common runtime tasks, such as caching, maintaining a type inventory, language localization, runtime settings, timing and scheduling.
- Script libraries define an extensible execution envionment for script supporting canonical extensions, .NET integration, graphs, etc.
- Security libraries are dedicated at solving particular security or data protection such as authentication, authorization and encryption.
- Things libraries define a hardware and data abstraction layer for interacting with things. This includes describing sensor data, control parameters, attributes, displayable parameters, commands, queries and data sources. It also includes embedding things dynamically, to form more complex devices, such as concentrators or bridges.
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 pageContent
The content libraries manage Internet Content, including parsing and rendering and their corresponding Internet Content Type encodings and decodings.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Content | .NET Std 1.3 | NuGet | The Waher.Content project is a class library that provides basic abstraction for Internet Content Type, and basic encodings and decodings. This includes handling and parsing of common data types. |
Waher.Content.Dsn | .NET Std 1.3 | NuGet | The Waher.Content.Dsn project provides encoding and decoding of Delivery Status Notification (DSN) messages and message reports, as defined in RFC 3462 and 3464. |
Waher.Content.Emoji | .NET Std 1.3 | NuGet | The Waher.Content.Emoji project contains utilities for working with emojis. |
Waher.Content.Emoji.Emoji1 | .NET Std 1.3 | NuGet | The Waher.Content.Emoji.Emoji1 project provide free emojis from Emoji One to content applications. |
Waher.Content.Html | .NET Std 1.3 | NuGet | The Waher.Content.Html project provides a simple HTML document parser that can be used to extract information from web pages. Social Meta-data can be easily extracted from page. Information is taken from Open Graph meta data or Twitter Card meta data, as well as standard HTML meta data. |
Waher.Content.Images | .NET Std 1.3 | NuGet | The Waher.Content.Images project contains encoders and decoders for images. It uses SkiaSharp for cross-platform 2D graphics manipulation. |
Waher.Content.Markdown | .NET Std 1.3 | NuGet | The Waher.Content.Markdown project parses markdown documents and transforms them to other formats, such as HTML, Plain text and XAML. For a description of the markdown flavour supported by the parser, see Markdown documentation. |
Waher.Content.Markdown.Web | .NET Std 1.3 | NuGet | The Waher.Content.Markdown.Web project allows the publishing of web content using Markdown. The library converts Markdown documents in real-time to HTML when hosted using the web server defined in Waher.Content.HTTP. |
Waher.Content.Markdown.Web.UWP | .NET Std 1.3 | NuGet | The Waher.Content.Markdown.Web.UWP project allows the publishing of web content using Markdown. The library converts Markdown documents in real-time to HTML when hosted using the web server defined in Waher.Content.HTTP.UWP. |
Waher.Content.Xml | .NET Std 1.3 | NuGet | The Waher.Content.Xml project helps with encoding and decoding of XML. It integrates with the architecture defined in Waher.Content. |
Waher.Content.Xsl | .NET Std 2.0 | NuGet | The Waher.Content.Xsl project helps with validating and transforming XML documents. It integrates with the architecture defined in Waher.Content. |
Events
The event libraries define an infrastructure for event logging, and pluggable event sink modules that process incoming events.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Events | .NET Std 1.3 | NuGet | The Waher.Events project provides the basic architecture and framework for event logging in applications. It uses the static class Log as a hub for all type of event logging in applications. To this hub you can register any number of Event Sinks that receive events and distribute them according to implementation details in each one. By logging all events to Log you have a configurable environment where you can change logging according to specific needs of the project. |
Waher.Events.Console | .NET Std 1.3 | NuGet | The Waher.Events.Console project provides a simple event sink, that outputs events to the console standard output. Useful, if creating simple console applications. |
Waher.Events.Files | .NET Std 1.3 | NuGet | The Waher.Events.Files project defines event sinks that outputs events to files. Supported formats are plain text and XML. XML files can be transformed using XSLT to other formats, such as HTML. |
Waher.Events.MQTT | .NET Std 1.3 | NuGet | The Waher.Events.MQTT project defines an event sink that sends events to an MQTT topic. Events are sent as XML fragments, according to the schema defined in XEP-0337. |
Waher.Events.MQTT.UWP | UWP | NuGet | The Waher.Events.MQTT.UWP project provides a Universal Windows Platform compatible version of the Waher.Events.MQTT Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Events.Persistence | .NET Std 1.3 | NuGet | The Waher.Events.Persistence project creates an even sink that stores incoming (logged) events in the local object database, as defined by Waher.Persistence. Event life time in the database is defined in the constructor. Searches can be made for historical events. |
Waher.Events.Statistics | .NET Std 1.3 | NuGet | The Waher.Events.Statistics project defines an event sink that computes statistics of events being logged. |
Waher.Events.WindowsEventLog | .NET Std 1.3 | NuGet | The Waher.Events.WindowsEventLog project defines an event sink that logs events to a Windows Event Log. |
Waher.Events.XMPP | .NET Std 1.3 | NuGet | The Waher.Events.XMPP project defines an event sink that distributes events over XMPP, according to XEP-0337. |
Waher.Events.XMPP.UWP | UWP | NuGet | The Waher.Events.XMPP.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Events.XMPP Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Layout
The layout libraries provide libraries for laying out objects visually.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Layout.Layout2D | .NET Std 1.3 | NuGet | The Waher.Layout.Layout2D project provides an object model for laying out graphical objects in two dimensions. These models can then be used to generate images. The models can be represented in XML, and contains an XML schema that can be used to validate documents, as well as provide support when editing layout documents. |
Networking
The networking libraries provide classes that manage network communication. Different protocols and protocol extensions are managed by separate libraries.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Networking | .NET Std 1.3 | NuGet | The Waher.Networking project provides the basic architecture and tools for all networking libraries. This includes sniffers, etc. |
Waher.Networking.Cluster | .NET Std 1.3 | NuGet | The Waher.Networking.Cluster project provides a framework for building applications that can cooperate and solve problems in clusters. Communication between endpoints in clusters is performed using AES-256 encrypted datagrams over a predefined UDP Multicast channel. Only participants with access to the shared key can participate in the cluster. Supports Unacknowledged, Acknowledged and Assured Message transfers in clusters, as well as Request/Response command executions, Locking of singleton resources, serialization of objects, etc. |
Waher.Networking.CoAP | .NET Std 1.3 | NuGet | The Waher.Networking.CoAP project provides a simple CoAP endpoint client with DTLS support. |
Waher.Networking.CoAP.UWP | UWP | NuGet | The Waher.Networking.CoAP.UWP project provides a Universal Windows Platform compatible version of the Waher.Networking.CoAP Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.DNS | .NET Std 1.3 | NuGet | The Waher.Networking.DNS project provides a custom DNS resolver that help applications resolve names and services easily. |
Waher.Networking.HTTP | .NET Std 1.3 | NuGet | The Waher.Networking.HTTP project provides a simple HTTP server for publishing dynamic content and managing user authentication based on a customizable set of users and privileges. Supports the WebSocket protocol. |
Waher.Networking.HTTP.UWP | UWP | NuGet | The Waher.Networking.HTTP.UWP project provides a Universal Windows Platform compatible version of the Waher.Networking.HTTP Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.LWM2M | .NET Std 1.3 | NuGet | The Waher.Networking.LWM2M project provides LWM2M interfaces for your application, using the CoAP library defined in Waher.Networking.CoAP. |
Waher.Networking.LWM2M.UWP | UWP | NuGet | The Waher.Networking.LWM2M.UWP project provides a Universal Windows Platform compatible version of the Waher.Networking.LWM2M Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.MQTT | .NET Std 1.3 | NuGet | The Waher.Networking.MQTT project provides a simple MQTT client. |
Waher.Networking.MQTT.UWP | UWP | NuGet | The Waher.Networking.MQTT.UWP project provides a Universal Windows Platform compatible version of the Waher.Networking.MQTT Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.PeerToPeer | .NET Std 1.3 | NuGet | The Waher.Networking.PeerToPeer project provides tools for peer-to-peer and multi-player communication. |
Waher.Networking.UPnP | .NET Std 1.3 | NuGet | The Waher.Networking.UPnP project provides tools for searching and interacting with devices in the local area network using the UPnP protocol. |
Waher.Networking.WHOIS | .NET Std 1.3 | NuGet | The Waher.Networking.WHOIS project implements a WHOIS client that can be used to query Regional Internet Registries for information relating to IP addresses, etc. |
Waher.Networking.WHOIS.UWP | UWP | NuGet | The Waher.Networking.WHOIS.UWP project provides a Universal Windows Platform compatible version of the Waher.Networking.WHOIS Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP project provides a simple XMPP client. |
Waher.Networking.XMPP.Avatar | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Avatar project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on helps the client manage avatars. |
Waher.Networking.XMPP.Avatar.UWP | UWP | NuGet | The Waher.Networking.XMPP.Avatar.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Avatar Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.BOSH | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.BOSH project provides support for the HTTP altenative binding based on BOSH (defined in XEP-0124 and XEP-0206) to the XMPP client defined in Waher.Networking.XMPP. |
Waher.Networking.XMPP.BOSH.UWP | UWP | NuGet | The Waher.Networking.XMPP.BOSH.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.BOSH Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Chat | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Chat project provides a simple XMPP chat server bot for things, that is added to the XMPP client defined in Waher.Networking.XMPP. It supports markdown, and follows the chat semantics outlined in this proto-XEP: Chat Interface for Internet of Things Devices |
Waher.Networking.XMPP.Chat.UWP | UWP | NuGet | The Waher.Networking.XMPP.Chat.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Chat Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Concentrator | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Concentrator project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client and server concentrator capabilities, as defined in XEP-0326. The concentrator interface allows a device to manage a set of internal virtual devices, all sharing the same XMPP connection. |
Waher.Networking.XMPP.Concentrator.UWP | UWP | NuGet | The Waher.Networking.XMPP.Concentrator.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Concentrator Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Contracts | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Contracts project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client interfaces for managing legal identities, smart contracts and signatures, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Control | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Control project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client and server control capabilities, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Control.UWP | UWP | NuGet | The Waher.Networking.XMPP.Control.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Control Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.HTTPX | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.HTTPX project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client and server HTTPX support, as defined in XEP-0332. It also provides an HTTP proxy for tunneling HTTPX content through an HTTPⓈ-based web server hosted by Waher.Networking.HTTP. |
Waher.Networking.XMPP.Mail | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Mail project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client support for mail extensions on XMPP servers. |
Waher.Networking.XMPP.MUC | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.MUC project adds support for the Multi-User-Chat (MUC) extension (XEP-0045) to the XMPP Client library defined in Waher.Networking.XMPP. |
Waher.Networking.XMPP.MUC.UWP | UWP | NuGet | The Waher.Networking.XMPP.MUC.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.MUC Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.P2P | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.P2P project provides classes that help the application do servless XMPP (peer-to-peer) communication, as defined in XEP-0174. |
Waher.Networking.XMPP.PEP | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.PEP project adds support for the Personal Eventing Protocol extension (XEP-0163) to the XMPP Client library defined in Waher.Networking.XMPP. |
Waher.Networking.XMPP.PEP.UWP | UWP | NuGet | The Waher.Networking.XMPP.PEP.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.PEP Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Provisioning | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Provisioning project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client support for provisioning and delegation of trust, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Provisioning.UWP | UWP | NuGet | The Waher.Networking.XMPP.Provisioning.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Provisioning Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.PubSub | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.PubSub project adds support for the Publish/Subscribe extension (XEP-0060) to the XMPP Client library defined in Waher.Networking.XMPP. |
Waher.Networking.XMPP.PubSub.UWP | UWP | NuGet | The Waher.Networking.XMPP.PubSub.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.PubSub Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Sensor | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Sensor project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides client and server sensor capabilities, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Sensor.UWP | UWP | NuGet | The Waher.Networking.XMPP.Sensor.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Sensor Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.Software | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Software project provides a client for managing and downloading software packages and software updates, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Synchronization | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.Synchronization project provides an add-on to the XMPP client defined in Waher.Networking.XMPP. This add-on provides clock synchronization capabilities, as defined in the IEEE XMPP IoT extensions. |
Waher.Networking.XMPP.Synchronization.UWP | UWP | NuGet | The Waher.Networking.XMPP.Synchronization.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.Synchronization Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.UWP | UWP | NuGet | The Waher.Networking.XMPP.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Networking.XMPP.WebSocket | .NET Std 1.3 | NuGet | The Waher.Networking.XMPP.WebSocket project provides support for the websocket altenative binding based on BOSH (defined in RFC-7395) to the XMPP client defined in Waher.Networking.XMPP. |
Waher.Networking.XMPP.WebSocket.UWP | UWP | NuGet | The Waher.Networking.XMPP.WebSocket.UWP project provides a reduced Universal Windows Platform compatible version of the Waher.Networking.XMPP.WebSocket Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Persistence
The persistence libraries create an infrastructure for persistence of objects in applications. This includes a simple embedded encrypted local object database, as well as integration with external databases. Objects are persisted based on their annotated class definitions.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Persistence | .NET Std 1.3 | NuGet | The Waher.Persistence project provides the central interfaces for interaction with object databases. All modules can use the static Database class to persist and find objects in the preconfigured object database. |
Waher.Persistence.Files | .NET Std 1.5 | NuGet | The Waher.Persistence.Files project defines a library that provides an object database that stores objects in local AES-256 encrypted files. Storage, indices, searching and retrieval is based solely on meta-data provided through the corresponding class definitions. Object serializers are created dynamically. Dynamic code is compiled. Access is provided through the Waher.Persistence library. |
Waher.Persistence.FilesLW | .NET Std 1.3 | NuGet | The Waher.Persistence.FilesLW project defines a library that provides an object database that stores objects in local files. Storage, indices, searching and retrieval is based solely on meta-data provided through the corresponding class definitions. Object serializers are created dynamically. Access is provided through the Waher.Persistence library. |
Waher.Persistence.MongoDB | .NET Std 1.5 | NuGet | The Waher.Persistence.MongoDB project provides a MongoDB database provider that can be used for object persistence through the Waher.Persistence library. |
Waher.Persistence.Serialization | .NET Std 1.3 | NuGet | The Waher.Persistence.Serialization project defines a library that serializes objects to binary form using meta-data provided through the corresponding class definitions. Object serializers are created dynamically. Compatible with Waher.Persistence.Serialization.Compiled. |
Waher.Persistence.Serialization.Compiled | .NET Std 1.5 | NuGet | The Waher.Persistence.Serialization.Compiled project defines a library that serializes objects to binary form using meta-data provided through the corresponding class definitions. Object serializers are created dynamically. Dynamic code is compiled. Compatible with Waher.Persistence.Serialization. |
Runtime
The runtime libraries help applications with common runtime tasks, such as caching, maintaining a type inventory, language localization, runtime settings, timing and scheduling.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Runtime.Cache | .NET Std 1.3 | NuGet | The Waher.Runtime.Cache project provides tools for in-memory caching. |
Waher.Runtime.Inventory | .NET Std 1.3 | NuGet | The Waher.Runtime.Inventory project keeps an inventory of types and interfaces available in your code. It also provides a means to access available types given an interface. |
Waher.Runtime.Inventory.Loader | .NET Std 2.0 | NuGet | The Waher.Runtime.Inventory.Loader project dynamically loads modules from a folder, and initiates the inventory defined in Waher.Runtime.Inventory with all loaded and referenced assemblies. |
Waher.Runtime.Language | .NET Std 1.3 | NuGet | The Waher.Runtime.Language project helps applications with language localization. |
Waher.Runtime.Queue | .NET Std 1.3 | NuGet | The Waher.Runtime.Queue project contains a specialised FIFO Queue for asynchronous transport of items between tasks. You can have multiple working tasks adding items to the queue, as well as multiple working tasks subscribing to items from the queue. |
Waher.Runtime.ServiceRegistration | .NET Std 1.3 | NuGet | The Waher.Runtime.ServiceRegistration library allows applications to register themselves with an XMPP-based Service Registry, such as the IoT Broker. |
Waher.Runtime.Settings | .NET Std 1.3 | NuGet | The Waher.Runtime.Settings project helps applications maintain a set of persistent settings. |
Waher.Runtime.Text | .NET Std 1.0 | NuGet | The Waher.Runtime.Text project provides classes working with text and text documents, particularly find differences between texts, or sequences of symbols. |
Waher.Runtime.Temporary | .NET Std 1.3 | NuGet | The Waher.Runtime.Temporary project contains classes simplifying working with temporary in-memory and file streams. |
Waher.Runtime.Threading | .NET Std 1.3 | NuGet | The Waher.Runtime.Threading project provides classes for usage in multi-threaded asynchronous environments providing multiple-read/single-write capabilities. |
Waher.Runtime.Timing | .NET Std 1.3 | NuGet | The Waher.Runtime.Timing project provides tools for timing and scheduling. |
Script
The script libraries define an extensible execution envionment for script supporting canonical extensions, .NET integration, graphs, physical units and unit conversions, etc. For more information about the script engine supported by these libraries, see the script reference.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Script | .NET Std 1.3 | NuGet | The Waher.Script project is a class library that provides basic abstraction and execution model for symbolic math and scripting. It also manages pluggable modules and easy dynamic access to runtime namespaces and types. |
Waher.Script.Content | .NET Std 1.3 | NuGet | The Waher.Script.Content project is a class library that adds content functions to the script engine, suitable for loading, fetching or processing content from files or online resources. |
Waher.Script.Cryptography | .NET Std 1.3 | NuGet | The Waher.Script.Cryptography project is a class library that adds cryptography functions to the script engine. |
Waher.Script.Fractals | .NET Std 2.0 | NuGet | The Waher.Script.Fractals project is a class library that adds fractal image functions to the script engine, suitable for generating backgound images. It uses SkiaSharp for cross-platform 2D graphics manipulation. |
Waher.Script.Graphs | .NET Std 1.3 | NuGet | The Waher.Script.Graphs project is a class library that adds graphing functions to the script engine. It uses SkiaSharp for cross-platform 2D graphics manipulation. |
Waher.Script.Graphs3D | .NET Std 1.3 | NuGet | The Waher.Script.Graphs3D project is a class library that adds 3D-graphing functions to the script engine. It uses SkiaSharp for cross-platform 2D graphics manipulation. |
Waher.Script.Persistence | .NET Std 1.3 | NuGet | The Waher.Script.Persistence project is a class library that allows access to the object database defined in the Waher.Persistence library in script. |
Waher.Script.Statisics | .NET Std 1.5 | NuGet | The Waher.Script.Statisics project is a class library that adds statistical functions to the script engine. |
Waher.Script.Xml | .NET Std 1.3 | NuGet | The Waher.Script.Xml project is a class library that contains script extensions for parsing XML. |
Security
The security libraries are dedicated at solving particular security or data protection such as authentication, authorization and encryption.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Security | .NET Std 1.3 | NuGet | The Waher.Security project provides a basic security model based on users, roles and privileges. It’s not based on operating system features, to allow code to be platform independent. |
Waher.Security.ACME | .NET Std 1.3 | NuGet | The Waher.Security.ACME project contains a class library implementing the ACME v2 protocol for the generation of certificates using ACME-compliant certificate servers, as defined in the ACME draft. |
Waher.Security.CallStack | .NET Std 2.0 | NuGet | The Waher.Security.CallStack project provide tools for securing access to methods and properties in code, by limiting access to them to a given set of callers. This prevents unintentional leaks of information through code running in the same process. |
Waher.Security.ChaChaPoly | .NET Std 1.3 | NuGet | The Waher.Security.ChaChaPoly project implements the ChaCha20, Poly1305 and AEADCHACHA20POLY1305 algorithms, as defined in RFC 8439. |
Waher.Security.DTLS | .NET Std 1.3 | NuGet | The Waher.Security.DTLS project contains a class library implementing the Datagram Transport Layer Security (DTLS) Version 1.2, as defined in RFC 6347. |
Waher.Security.EllipticCurves | .NET Std 1.3 | NuGet | The Waher.Security.EllipticCurves project contains a class library implementing algorithms for Elliptic Curve Cryptography, such as ECDH, ECDSA, EdDSA, NIST P-192, NIST P-224, NIST P-256, NIST P-384, NIST P-521, Curve25519, Curve448, Edwards25519 and Edwards448. |
Waher.Security.JWS | .NET Std 1.3 | NuGet | The Waher.Security.JWS project implements a framework for JSON Web Signatures (JWS), as defined in RFC 7515. |
Waher.Security.JWT | .NET Std 1.3 | NuGet | The Waher.Security.JWT project helps applications with the creation and validation of Java Web Tokens (JWT), as defined in RFC 7519. |
Waher.Security.JWT.UWP | UWP | NuGet | The Waher.Security.JWT.UWP project provides a Universal Windows Platform compatible version of the Waher.Security.JWT Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Security.LoginMonitor | .NET Std 1.3 | NuGet | The Waher.Security.LoginMonitor helps applications monitor login activity, and help block malicious entities from the system. |
Waher.Security.LoginMonitor.UWP | UWP | NuGet | The Waher.Security.LoginMonitor.UWP project provides a Universal Windows Platform compatible version of the Waher.Security.LoginMonitor Library. This library can be used to develop applications for Windows 10, on for instance Rasperry Pi. |
Waher.Security.PKCS | .NET Std 1.3 | NuGet | The Waher.Security.PKCS project contains classes and tools for working with Public Key Cryptography Standards (PKCS). |
Waher.Security.SHA3 | .NET Std 1.3 | NuGet | The Waher.Security.SHA3 project implements SHA-3, as defined in NIST FIPS 202, including the general KECCAK algorithm and the SHAKE128, SHAKE256, RawSHAKE128 and RawSHAKE256 XOF functions. |
Waher.Security.SPF | .NET Std 1.3 | NuGet | The Waher.Security.SPF project contains a class library for resolving Sender Policy Framework (SPF) strings as defined in RFC 7208. |
Themes
Themes-related libraries define pluggable visual themes for the web interfaces hosted by the IoT Gateway.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Theme.CactusRose | .NET Std 1.0 | NuGet | The Waher.Theme.CactusRose project contains content files for the Cactus Rose theme. |
Waher.Theme.GothicPeacock | .NET Std 1.0 | NuGet | The Waher.Theme.GothicPeacock project contains content files for the Gothic Peacock theme. |
Things
Things-related libraries define a hardware and data abstraction layer for interacting with things. This includes describing sensor data, control parameters, attributes, displayable parameters, commands, queries and data sources. It also includes embedding things dynamically, to form more complex devices, such as concentrators or bridges.
Project | Type | Link | Project description |
---|---|---|---|
Waher.Things | .NET Std 1.3 | NuGet | The Waher.Things project is a class library that provides basic abstraction of things, errors, sensor data and control operations. |
Waher.Things.Arduino | UWP | NuGet | The Waher.Things.Arduino project is a class library that publishes nodes for interaction with Arduinos and connected modules via Firmata. |
Waher.Things.Gpio | UWP | NuGet | The Waher.Things.Gpio project is a class library that publishes nodes for interaction with onboard General Purpose Input/Output (GPIO) modules. |
Waher.Things.Ip | .NET Std 2.0 | NuGet | The Waher.Things.Ip project is a class library that publishes nodes representing nodes on an IP network. |
Waher.Things.Metering | .NET Std 1.3 | NuGet | The Waher.Things.Metering project is a class library that defines a basic metering infrastructure. |
Mastering Internet of Things
Many of the libraries presented here are described 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