Let's create a smart home, without giving anyone access to our house 😊
Open-source server to control Smart Home IoT devices in a local network.
The latest release binaries available to download from casanet-server releases
This project aims to resolve a number of issues plaguing most Smart Home systems
-
Lack of common interfaces: Anyone who uses a number of smart devices (smart IR, smart sockets or anything of that kind) of different brands is familiar with the problem of having to deal with completely different applications, authentication methods, timings, operations etc. for each device.
-
Reliability & Stability: To control home appliances from the internet, the devices communicate with the manufacture's servers, some of which belong to small companies that may "come and go" or have downtime issues. Client side service issues are also notoriously difficult to diagnose and resolve.
-
Accessibility: Although that there is no good reason to disallow control of home appliances directly from the local network, most commercial home appliances allow control only via the manufacturer's servers, therefore rendering the device inoperable, (even from inside the LAN!) in case of connectivity issues.
-
Security: The biggest problem with commercial IOT is security. We definitely do not want to entrust our home to any code produced by an IOT manufacturer as they are known for making some of the most insecure and dubious systems in existence. We want to use vetted, battle-tested and privacy oriented open-source assets in order to ensure the devices do not turn rouge or outright malicious. We want the ability to isolate our devices from the outside world whilst retaining all (or most) capabilities.
As a solution to these problems, this project consolidates all the smart home appliances into one simple, clear and easy to access API.
The Casanet server can run on any computer type (x86, ARM) at home and does not required an internet connection to operate.
The Casanet server design is to manage abstract world devices and a collection of modules ("drives") for each physical device kind, to convert to/from an abstract device state to/from the physical device.
This allows to easily add support in vast devices kinds, and separately, control all of them in one dashboard, same timing/operation abilities and even open an easy to use modern API.
Each module/driver design to work only through a local network, let us disconnect the device for good from the internet.
The dashboard Android application assets (APK/AAB) also available here.
✨✨✨ Live Demo Dashboard ✨✨✨
For more details and information about the web & mobile interface see dashboard-app repository.
The (very) lightweight dashboard (only about 20kb of total assets) for old phones or very slow networks.
For the lightweight interface navigate to [server-ip/host]/light-app/index.html
.
For more details and information about the lightweight interface see lightweight-dashboard repository.
To make it easy to use there are ready-to-use binaries here just download the binary file (depend on your OS) and the casanet.json
configuration file and run the executable file.
It's recommended to read the configuration section here.
In order to set up Linux from scratch see Linux deployment tutorial for a Linux based devices (for raspberry pi etc.)
- Casanet server:
- Dashboard:
- Remote server:
- Purpose: Forward API requests from the wide internet to the local Casanet servers.
- Technologies: Node.js (using TypeScript + TSOA + PostgreSQL).
- Remote dashboard:
- Purpose: Management dashboard for the remote server admin (using remote server API)
- Technologies: Vue.js (using vue material).
- RF commands repository:
- API (for local and remote server):
- Technologies: Swagger.
The UI is designed to support multi-Language using i18.
Current supported Languages:
- English
- Hebrew
Any support for other languages will be welcome.
The server needs to run on local home network. So, how does one access it via the local home network? How does one get access to the casanet local server from the internet?
Make sure that the IP address of your home is public and redirect ports in-home router to the computer that is running the casanet server.
(DDNS is recommended for easy access to the home IP address).
The casa remote server is built for this, casanet-remote run on cloud service and used to redirect API requests to the local server.
-
Orvibo (aka wiwo)
- S20 (socket). link
-
Broadlink
-
Yeelight
-
Tuya (aka smart life)
-
Mi (aka xiaomi)
-
Tasmota (Rest API)
- Switch (tested with this and this)
- Air-conditioning (IR Transmitter) (tested with this (after flashing to Tasmota)
-
Mock (for testing purpose)
- Toggle demo.
- Switch demo
- Air-conditioning demo.
- Light demo.
- Temperature light demo.
- Color light demo.
- Roller demo.
- Temperature Sensor.
-
#MQTT module MQTT drivers documentation.
- Supported types:
- Toggle.
- Switch.
- Air-conditioning.
- Light
- Temperature light.
- Color light.
- Roller.
- Supported drivers:
- Supported types:
How to connect a device to the local network and how to add it to be managed by the casa-net server?
see here the brands modules documentation.
Yes, it is possible and it's welcomed! see modules documentation.
The full specs of API are documented in SwaggerHub.
To try it out against the demo mock server go to casanet-mock-server docs
For a running Casanet server use Swagger UI to make API calls in the [local server IP]/docs
URL.
- Windows - 10/7
- Linux - Ubuntu
- Raspberry PI - Raspbian
- Orange PI - Armbian (Debian-based)
Feel free to open an issue with a bug report or feature to develop for the next version.
For any suggestions or help feel free to contact.
This project doesn't include any type of data collection and tracking, all data is stored only in the machine where the server runs inside.
Keep the machine safe and secure to keep your data in your hands only.
Using this server is own your own risk, and could contain sensitive data such as your users' email, name, devices key, etc.
Please secure your network, server machine, and your data :)
By using this project you agree to the privacy policy please read it carefully.
This application is an open-source code, under the GNU license.
- Logo and UX consulting Ofek Avergil.
Shared with ❤️ by kastnet.