All Projects → lelylan → Lelylan

lelylan / Lelylan

Open Source Lightweight Microservices Architecture for the Internet of Things. For developers.

Projects that are alternatives of or similar to Lelylan

Rfsec Toolkit
RFSec-ToolKit is a collection of Radio Frequency Communication Protocol Hacktools.无线通信协议相关的工具集,可借助SDR硬件+相关工具对无线通信进行研究。Collect with ♥ by HackSmith
Stars: ✭ 1,085 (-28.29%)
Mutual labels:  hardware, iot
Agilework
可视化低代码快速开发平台,面向业务、企业管理系统定制开发平台和应用平台,包括设计器、应用端。提供业务配置和集成开发能力,用户通过可视化拖拉拽配置式操作即可快速构建出能同时在PC和移动端运行的各类管理系统,对于企业客户的信息系统在管理模式、业务流程、表单界面、数据可视化展示、IoT管控等个性化需求,可以通过设计器,快速的进行个性化配置。并支持企业微信,公众号,钉钉等移动集成,实现用户跨区域移动办公。从而构建企业个性化的行业应用、集成应用和复杂的业务报表。
Stars: ✭ 76 (-94.98%)
Mutual labels:  microservice, iot
Blinker Library
An IoT Solution,Blinker library for embedded hardware. Works with Arduino, ESP8266, ESP32.
Stars: ✭ 1,095 (-27.63%)
Mutual labels:  hardware, iot
Kong
🦍 The Cloud-Native API Gateway
Stars: ✭ 30,838 (+1938.2%)
Mutual labels:  microservice, iot
Iotsecurity101
A Curated list of IoT Security Resources
Stars: ✭ 1,302 (-13.95%)
Mutual labels:  hardware, iot
Go Restful Api
An idiomatic Go REST API starter kit (boilerplate) following SOLID principles and Clean Architecture
Stars: ✭ 1,043 (-31.06%)
Mutual labels:  microservice, architecture
Harmonyos
鸿蒙系统资料。Docs about HarmonyOS.
Stars: ✭ 1,191 (-21.28%)
Mutual labels:  iot, architecture
Attifyos
Attify OS - Distro for pentesting IoT devices
Stars: ✭ 615 (-59.35%)
Mutual labels:  hardware, iot
Usbserial
Usb serial controller for Android
Stars: ✭ 1,301 (-14.01%)
Mutual labels:  hardware, iot
Microservices Architecture Guidelines
Designing a Microservices Architecture
Stars: ✭ 86 (-94.32%)
Mutual labels:  microservice, architecture
Go Zero
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
Stars: ✭ 13,156 (+769.53%)
Mutual labels:  microservice, architecture
Embedos
EmbedOS - Embedded security testing virtual machine
Stars: ✭ 108 (-92.86%)
Mutual labels:  hardware, iot
Quarkus Microservices Poc
Very simplified shop sales system made in a microservices architecture using quarkus
Stars: ✭ 16 (-98.94%)
Mutual labels:  microservice, architecture
Architecture Service
Service Architecture Document
Stars: ✭ 53 (-96.5%)
Mutual labels:  microservice, architecture
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (-55.32%)
Mutual labels:  hardware, iot
Devis
A microservices framework for Node.js
Stars: ✭ 72 (-95.24%)
Mutual labels:  microservice, architecture
Awesome Fenix
讨论如何构筑一套可靠的分布式大型软件系统
Stars: ✭ 530 (-64.97%)
Mutual labels:  microservice, architecture
Wrmhl
⚡️ Super fast communication beetwen Unity3D and Arduino. Create Interactive experiences in a minute ⏱
Stars: ✭ 601 (-60.28%)
Mutual labels:  hardware, iot
Monday
⚡️ A dev tool for microservice developers to run local applications and/or forward others from/to Kubernetes SSH or TCP
Stars: ✭ 1,246 (-17.65%)
Mutual labels:  microservice, architecture
Dev Stuff
😎 Programming stuff for everyone. Collection of articles, videos about architecture, Domain Driven Design, microservices, testing etc.
Stars: ✭ 105 (-93.06%)
Mutual labels:  microservice, architecture

Lelylan. Open Source Internet of Things

Lelylan is an IoT cloud platform based on a lightweight microservices architecture.

The Lelylan platform is both hardware-agnostic and platform-agnostic. This means that you can connect any hardware, from the ESP8266 to the most professional embedded hardware solution and everything in between - and it can run on any public cloud, your own private datacenter, or even in a hybrid environment, whether virtualized or bare metal.

Lelylan Logo

Notes

This repository defines the architecture documentation. Check out the microservices list for the code implementation.

Why Lelylan

Research in the Internet of Things is global and growing fast, but lacks the standard tools. Many companies are building their own solutions. By sharing what we have learned during the years, we want to create a shared code base with a clear focus on developers. To see Lelylan in action checkout the tutorials in the dev center.

Resources

Getting Started

Requirements

Lelylan is tested against

  • Ruby MRI ~1.9.3
  • Node ~0.8.8
  • MongoDB ~2.6
  • Redis ~2.6

(remember to run the mongod and redis-server)

Setup

Installation

Development

Lelylan is composed by different microservices. Follow the installation guidelines for each of them.

Microservice Description
API Proxy Proxy API
Devices API Device monitoring and control
Types API Device type structure
Subscriptions API Realtime subscription
Profiles API Profile information
OAuth 2.0 User authentication and authorization
Physical Proxy Forward requests to the physical world
MQTT Node Forward and receive MQTT requests
MQTT Server MQTT server/broker
Webhooks Realtime HTTP notification
Websockets Full-duplex communication over TCP
Dev Center Lelylan Dev Center
Devices Dashboard Lelylan Devices Dashboard
Types Dashboard Lelylan Types Dashboard

You can now access the APIs from http://0.0.0.0:8200 (API proxy URL).

Development Environment Variable

During deployment, every microservice needs to be set to the following environment variables (remember to change them with your own microservices, mongodb, redis and cache URLs).

Environment Variable Description
RACK_ENV=development Development rack environment
RAILS_ENV=development Development rails environment
NODE_ENV=development Development node environment
LELYLAN_API_URL Api Proxy microservice URL
LELYLAN_API_HOST Api Proxy microservice URL
LELYLAN_DEV_URL=dev.lelylan.com Dev Center microservice URL
LELYLAN_PEOPLE_URL=people.lelylan.com OAuth 2.0 microservice URL
LELYLAN_DEVICES_URL=devices.lelylan.com Devices API microservice URL
LELYLAN_TYPES_URL=types.lelylan.com Types API microservice URL
LELYLAN_SUBSCRIPTIONS_URL=subscriptions.lelylan.com Subs. API microservice URL
LELYLAN_PROFILES_URL=profiles.lelylan.com Profiles API microservice URL
MONGOLAB_PEOPLE_URL=mongodb://<user>:<pass>@<host>:<port>/<name> OAuth 2.0 MongoDB URL
MONGOLAB_DEVICES_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Devices API MongoDB URL
MONGOLAB_TYPES_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Types API MongoDB URL
MONGOLAB_JOBS_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Event Bus MongoDB URL
MONGOLAB_SUBSCRIPTIONS_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Subs. MongoDB URL
MEMCACHIER_SERVERS=<host>:<port> Cache server
MEMCACHIER_USERNAME=<username> Cache server username
MEMCACHIER_PASSWORD=<password> Cache server password
REDIS_URL=redis://<user>:<pass>@<host>:<port>/ Background Job Redis URL
REDIS_RATE_LIMIT_URL=redis://<user>:<pass>@<host>:<port>/ Late Limit Redis URL

We are studying solutions such as Docker, Mesos, and Ansible to simplify the installation process. If you are experimenting in the same area get in touch with lelylan team.

Docker Development Installation

  • Configure environment variables in docker-compose-dev.yml
  • Run docker compose
docker-compose -f docker-compose-dev.yml up -d
Use subdomains for all microservices
Sed to replace domains
sed -i '/VIRTUAL_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/DEFAULT_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/PUBLIC_URL/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/LELYLAN_DEV_URL/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/PUBLIC_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/LELYLAN_PROXY_URL/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/LELYLAN_API_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
Microservice Default Domian Domian after sed commands
api-proxy api-proxy api-proxy.lelylan.com
devices devices devices.lelylan.com
types types types.lelylan.com
subscriptions subscriptions subscriptions.lelylan.com
profiles profiles profiles.lelylan.com
people people people.lelylan.com
physicals physicals physicals.lelylan.com
nodes nodes nodes.lelylan.com
mqtt mqtt mqtt.lelylan.com
webhooks webhooks webhooks.lelylan.com
websockets websockets websockets.lelylan.com
dev dev-center dev-center.lelylan.com
devices-dashboard-ng devices-dashboard-ng devices-dashboard-ng.lelylan.com
types-dashboard-ng types-dashboard-ng types-dashboard-ng.lelylan.com

Production

Lelylan is composed by different microservices. Follow the installation guidelines for each of them.

Microservice Description
API Proxy Proxy API
Devices API Device monitoring and control
Types API Device type structure
Subscriptions API Realtime subscription
Profiles API Profile information
OAuth 2.0 User authentication and authorization
Physical Proxy Forward requests to the physical world
MQTT Node Forward and receive MQTT requests
MQTT Server MQTT server/broker
Webhooks Realtime HTTP notification
Websockets Full-duplex communication over TCP

You can now access the APIs from http://0.0.0.0:8200 (API proxy URL).

Production Environment Variable

During deployment, every microservice needs to be set to the following environment variables (remember to change them with your own microservices, mongodb, redis and cache URLs).

Environment Variable Description
RACK_ENV=production Production rack environment
RAILS_ENV=production Production rails environment
NODE_ENV=production Production node environment
LELYLAN_API_URL Api Proxy microservice URL
LELYLAN_API_HOST Api Proxy microservice URL
LELYLAN_PEOPLE_URL=people.lelylan.com OAuth 2.0 microservice URL
LELYLAN_DEVICES_URL=devices.lelylan.com Devices API microservice URL
LELYLAN_TYPES_URL=types.lelylan.com Types API microservice URL
LELYLAN_SUBSCRIPTIONS_URL=subscriptions.lelylan.com Subs. API microservice URL
LELYLAN_PROFILES_URL=profiles.lelylan.com Profiles API microservice URL
MONGOLAB_PEOPLE_URL=mongodb://<user>:<pass>@<host>:<port>/<name> OAuth 2.0 MongoDB URL
MONGOLAB_DEVICES_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Devices API MongoDB URL
MONGOLAB_TYPES_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Types API MongoDB URL
MONGOLAB_JOBS_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Event Bus MongoDB URL
MONGOLAB_SUBSCRIPTIONS_URL=mongodb://<user>:<pass>@<host>:<port>/<name> Subs. MongoDB URL
MEMCACHIER_SERVERS=<host>:<port> Cache server
MEMCACHIER_USERNAME=<username> Cache server username
MEMCACHIER_PASSWORD=<password> Cache server password
REDIS_URL=redis://<user>:<pass>@<host>:<port>/ Background Job Redis URL
REDIS_RATE_LIMIT_URL=redis://<user>:<pass>@<host>:<port>/ Late Limit Redis URL

We are studying solutions such as Docker, Mesos, and Ansible to simplify the installation process. If you are experimenting in the same area get in touch with lelylan team.

Docker Production Installation

  • Configure environment variables in docker-compose.yml
  • Run docker compose
docker-compose up -d
Use subdomains for all microservices
Sed to replace domains
sed -i '/VIRTUAL_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/DEFAULT_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/PUBLIC_URL/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/LELYLAN_PROXY_URL/ s/$/.lelylan.com/' docker-compose-dev.yml
sed -i '/LELYLAN_API_HOST/ s/$/.lelylan.com/' docker-compose-dev.yml
Microservice Default Domian Domian after sed commands
api-proxy api-proxy api-proxy.lelylan.com
devices devices devices.lelylan.com
types types types.lelylan.com
subscriptions subscriptions subscriptions.lelylan.com
profiles profiles profiles.lelylan.com
people people people.lelylan.com
physicals physicals physicals.lelylan.com
nodes nodes nodes.lelylan.com
mqtt mqtt mqtt.lelylan.com
webhooks webhooks webhooks.lelylan.com
websockets websockets websockets.lelylan.com

Roadmap

The Roadmap provides the description of the items that the project has decided to concentrate on. It should serve as a reference point for Lelylan contributors to understand where the project is going, and helps to determine whether a contribution could be conflicting considering the future goals.

The fact that a feature isn't listed here doesn't mean that a patch for it will automatically be refused (we also miss important things). We are always happy to receive patches for new cool features that we haven't thought about, or didn't consider as a priority. Nevertheless understand that such patches might take longer for us to review.

Checkout the roadmap to see our near future goals.

Contributing to Lelylan

This Contributing document tries to define a contributor's guide explaining how to contribute to one or more Lelylan Microservice. It contains information about reporting issues as well as some useful tips and guidelines for experienced open source contributors.

Checkout the contributing to help us with Lelylan.

Support

Use the available communication channels to communicate your ideas, problems or suggestions.

License

Lelylan is licensed under the Apache License, Version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].