diff --git a/README-CN.md b/README-CN.md index e12a3014..de302df2 100644 --- a/README-CN.md +++ b/README-CN.md @@ -111,3 +111,5 @@ python3 -m robot -P ft/ --variable neuron_api:mqtt -d ft/mqtt_reports ft ## 社区 + +[neugates.io](https://neugates.io) diff --git a/README.md b/README.md index 66e2d360..36bd2657 100644 --- a/README.md +++ b/README.md @@ -8,34 +8,36 @@ English | [简体中文](https://github.com/neugates/neuron/blob/main/README-CN.md) -Neuron is a Industrial IoT (IIoT) edge industrial gateway for modern big data technology to leverage the power of Industrial 4.0. It supports one-stop access to dozens of industrial protocols and converts them into MQTT protocol to access the Industrial IoT platform. +Neuron is an Industrial IoT (IIoT) edge industrial gateway for modern big data technology to leverage the power of Industrial 4.0. It supports one-stop access to dozens of industrial protocols and converts them into MQTT protocol to access the IIoT platform. -Version 2.0 removes unnecessary features from version 1.x and focuses on data acquisition and forwarding of industrial protocols.Neuron 2.0 support simultaneous connection of a large number of devices with different protocols. +Version 2.0 streamlines some of the non-essential features in version 1.x and focuses on the data collection and forwarding of industrial protocols in order to provide more efficient and flexible one-stop protocol access and management for the IIoT platform. -## Design and Features +## Goals and Features -The design goal of Neuron is to focus on data collection, forwarding and aggregation of the Industrial Internet of Things, and to support multiple industrial protocols. Convert the data of various industrial device into MQTT messages, integrate these independent device into the large industrial Internet of Things system through neuron, and the user can control industrial device and obtain information from it at the remote end. We hope that Neuron can run in low-end embedded linux devices, so it has very little memory footprint and very low CPU footprint. Otherwise, Neuron can also run on a Linux workstation with larger memory to support a large number of connected devices and a large number of data points, so it has good scalability. +Neuron is designed to focus on data collection, forwarding, and aggregation for the IIoT - converting data from a wide variety of industrial devices with different protocol types into a unified standard MQTT message to interconnect these individual devices and better integrate them into the larger IoT system for direct remote control and information access. -Neuron has the following important features: +We hope that Neuron can run on both low-end embedded Linux devices and Linux workstations with larger memory to support large numbers of connected devices and large amounts of data points. Neuron is therefore designed to have a very little memory footprint and a very low CPU footprint while being scalable to meet the needs of different operating resources. -- Plugged-in southbound driver and northbound application; -- A light-weigh built-in web server, the user can configure, control and monitor device through browser. -- A replaceable MQTT Client, the user can control and read/write device by MQTT message. -- Support simultaneous connection of a large number of devices with different protocols; -- Highly integrated with other EMQ products,including eKuiper, EMQX, Fabric; -- Support updating device drivers during Neuron runtime; +The following is some important features of Neuron: -For full list of new features,plfaase read [Instructions for application and driver](https://github.com/neugates/nep/blob/main/docs/neuron2.x-driver.md)。 +- Plugged-in southbound driver and northbound application. +- A light-weigh built-in web server. The user can configure, control and monitor device through browser. +- A replaceable MQTT Client. The user can control and read/write device by MQTT message. +- Support simultaneous connection of a large number of devices with different protocols. +- Highly integrated with other EMQ products, including EMQ X, NanoMQ, eKuiper(Initiated by EMQ and now maintained and operated by LF Edge). +- Support updating device drivers during Neuron runtime. -For more information,please visit [Homepage](https://www.emqx.com/zh/products/neuron)。 +For a full list of new features, please read [Instructions for application and driver](https://github.com/neugates/nep/blob/main/docs/neuron2.x-driver.md)。 + +For more information, please visit [Homepage](https://www.emqx.com/zh/products/neuron)。 ## Architecture design -Most modern CPUs are already multi-core, even the lower-end ARM and Risc-V architecture CPUs used in embedded systems, all of which have multi-core chips. Therefore, we need to be able to make full use of these multi-core CPUs, that is, Neuron needs to have very good multi-core and multi-thread performance. We use library nng, which is an asynchronous concurrent library for multi-threaded IO processing and message passing, which can make full use of the multiple cores of the CPU. +Most modern CPUs are already multi-core, even the lower-end ARM and Risc-V architecture CPUs used in embedded systems, most of which have multi-core chips. Therefore, we need to be able to make full use of these multi-core CPUs, that is, Neuron needs to have very good multi-core and multi-thread performance. We use library NNG, which is an asynchronous concurrent library for multi-threaded IO processing and message passing, which can make full use of the multiple cores of the CPU. -We use the star bus mode as an organizational form, and there is a message routing center. This message routing is based on nng to provide a high-efficiency message forwarding. The sending and receiving of messages is communication between threads. By using shared buffers and smart pointers, there is no memory copy, which is very efficient. Around this routing center are nodes, every node include adapter and plugin. These nodes can be built-in with neuron, such as a lightweight web server, or they can be dynamically added, such as various device drivers, MQTT clients, eKuiper interface, and so on. By this design, it isolates the coupling between each device driver and northbound application. In addition, the subscription-publishing mechanism is used to realize the scattering and gathering of data streams, which makes Neuron extremely flexible. User can dynamically increase and decrease device-driven node according to the working load of the site, with good configurability. In addition, when the hardware CPU running Neuron has good performance, more cores, and large memory, Neuron can support more device driver nodes, massive data points, greater data throughput, and lower response time. Has good system scalability. +We use the star bus mode as an organizational form, and there is a message routing center. This message routing is based on NNG to provide high-efficiency message forwarding. The sending and receiving of messages is communication between threads. By using shared buffers and smart pointers, there is no memory copy, which is very efficient. Around this routing center are nodes, every node includes an adapter and plugin. These nodes can be built-in with Neuron, such as a lightweight web server, or they can be dynamically added, such as various device drivers, MQTT clients, eKuiper interface, and so on. By this design, it isolates the coupling between each device driver and northbound application. In addition, the subscription-publishing mechanism is used to realize the scattering and gathering of data streams, which makes Neuron extremely flexible. Users can dynamically increase and decrease device-driven nodes according to the working load of the site, with good configurability. In addition, when the hardware CPU running Neuron has good performance, more cores, and large memory, Neuron can support more device driver nodes, massive data points, greater data throughput, and lower response time. Has good system scalability. -Neuron use a plugged-in mechanism to support changing user functional requirements. Users can dynamically load plug-ins with different functional according to the functional requirements of the application scenario. When the device driver has a bug fix and needs to be upgraded, you can also dynamically update the new plug-in to solve the problem and get the new feature. The running state of each node is independent. When the plug-in of one node is upgraded, it will not affect the runing state of other nodes, and Neuron does not need to be restarted. +Neuron uses a plugged-in mechanism to support changing user functional requirements. Users can dynamically load plug-ins with different functions according to the functional requirements of the application scenario. When the device driver has a bug fix and needs to be upgraded, you can also dynamically update the new plug-in to solve the problem and get the new feature. The running state of each node is independent. When the plug-in of one node is upgraded, it will not affect the running state of other nodes, and Neuron does not need to be restarted. An overview of Neuron's architecture is shown in the figure below: @@ -106,3 +108,5 @@ python3 -m robot -P ft/ --variable neuron_api:mqtt -d ft/mqtt_reports ft ``` ## Community + +[neugates.io](https://neugates.io)