[−][src]Crate new_home_proxy
New Home Proxy
This library contains shared code for the two contained binaries "client" and "server".
New Home is a project for creating your own smart home with open code and low cost in the way of hardware as it runs on potentially all systems (Raspberry PI, any-other-fruit-or-thing-PI, Arduino/ESP/NodeMCU microcontrollers). The Proxy is used to access New Home resources from outside of your home.
Proxy server
The server is the part that can be publicly available and route requests to multiple clients. It keeps your requests secure with SSL (if hosted correctly).
In combination with the UI
The proxy was intentionally created to work together with the "New Home UI" which can supply a PWA, but only if it is served via HTTPS which would require the Core to also be reachable via HTTPS which can be complicated to setup. So this proxy grants you access to the PWA and allows you to control your home from everywhere.
Config
You can find a description for the fields and an example config in the Config struct
Proxy client
Runs on your New Home controller device and establishes a connection to the server. By this you dont have to fight with port-forwarding or anything else.
In combination with the Core
As said, this proxy is meant to be used with the "New Home Core". The client takes the role of receiving requests from the server and forwarding it to the Core while also make sure that the request is authorized (with a username and a password).
Config
You can find a description for the fields and an example config in the Config struct
How it works
When started the client will generate a name for itself. This name is used to connect to the configured proxy then.
The connection is done through websockets. This allows you to just start the client and don't care about port forwarding, daily changing IPs etc.
Modules
auth | This module contains all the code that is required to authorize user requests on the client side |
client | This module contains client specific code |
communication | This module contains structs for the communication between the server and client |
proxy_error | This module contains the central error of the application |
server | This module contains server specific code |