This Instruction shows how you can use your own domain to control the Sintron Smart Device.
if you are a developer or if you want to sell Smart Device to your customers. and you don't want them to find the source and real price. or you just want to make your own Smart Home products. this would be a good instruction for you.
if you only use iPhone Siri with Home Kit. you can check this blog too: How To Control Sintron Device with iPhone Home kit
ok, let's get started.
when you get the Sintron Device ST-027 / ST-029 etc... you will also get a API key ( from QR code )
also you will get the command link, for example :
https://sintron.vip/?host=google&username=sintron&auth=81aa151057ed4cd1ba76bb6d54483092&led=D2&pin=D2&action=off
( in this case, API is 81aa151057ed4cd1ba76bb6d54483092 )
and this article is going to show you how to make the link to be :
http://yourdomain.com?host=google&auth=81aa151057ed4cd1ba76bb6d54483092&led=D2&pin=D2&action=off
Method 1: Sintron already created this server for you, so just point your domain to this ip : 18.218.18.3
note: you can register a new domain for just a few bucks from godaddy.com etc..
( ps. we might change the ip once after one year, you can send us an email, and let us notify you before we change ip, the next time we change ip would be on "1st Feb 2020" )
then you can use your own domain to control it.
you can try :
http://yourdomain.com?host=google&auth=81aa151057ed4cd1ba76bb6d54483092&led=D2&pin=D2&action=off
and see if it works:
the benefit of this method is, it's very easy for you to set up. but the downside is, you can only use "http", but can't use "https". if you would like to use https, please check method 2.
Method 2. you can also create your own server.
Theory: we are going to run a server by node.js ( Sintron Provides the app ) in computer ( we choose linux in this example, you can also run it in windows etc..) , then point the domain to the server. then it would be ok.
Step 1. you need to have your domain first. ( of course. ) , you can register one from Godaddy.com etc..
Step 2. you need a cloud computer with linux system ( windows is also ok, but linux is more stable), you can register it from amazon aws or google cloud platform (GCP)
aws is free for 1 year, and GCP is free for $300. or you can also use your own linux computer.
please google how to create a VM instance, ubuntu 16.04 above is recommended.
Step 3. after you have a VM instance Ubuntu 16.04 or above.
please SSH connect to your VM instance.
and install necessary tools first.
in command line:
do not copy "$", this just shows it's the command.
press y & enter if you see any questions.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install npm nodejs unzip nginx
these might take some minutes.
Step 4: update npm & nodejs to newer & stable version and then reboot:
$ sudo npm cache clean -f
$ sudo npm install -g n
$ sudo n stable
$ sudo npm install pm2 -g
$ sudo reboot
Step 5.
Sintron already created a node js app for you.
let's download it :
$ sudo git clone https://github.com/kingccf/Sintron-domain-transfer.git
$ cd Sintron-domain-transfer
$ cd Sintron-domain-transfer
$ sudo npm install request
Step 6. now that you already have the app, then you just need to deploy it. then it would be ok.
$ pm2 start domain_transfer.js
ok, now the server is running ! and setup is completed !!
However, in the app, we are using port 8080 to run the server, so we need one more step. yes, we need to open port 8080 from firewall. otherwise firewall would block the connection.
Step 7. allow port 8080 from firewall.
let's use Google cloud platform as an example,
Network - VPC network - Firewall rules - create firewall rules
screenshot as below. and save it.
now it would work ! Congratulations!
you can try :
http://yourdomain.com:8080/?host=google&auth=ad022d9b3b3b4174b616f562c4f3a28b&led=D13&pin=D14&action=off
( note: only http, don't use https for now, we will need to install https certificate later, and remember to put 8080, we will also use nginx to forward the port, so later we don't need to specify 8080 too )
the next 2 steps, we are going to make them even better.
Step 8, forward http 80 port to local 8080 port.
for the webpage, we don't need to put :80 in the end, for example: http://google.com:80, because by default browser would think it's port 80.
so we would like the url to become :
http://yourdomain.com/?host=google&auth=ad022d9b3b3b4174b616f562c4f3a28b&led=D13&pin=D14&action=off
by using Nginx.
when receiving request from port 80 ( normal http request ), Nginx would bypass it to our server in 8080. this is how it works.
so we first edit the configuration file.
$ sudo nano /etc/nginx/sites-enabled/default
and also add this line :
then "ctrl O" to save it, "ctrl X" to leave the editor.
$ sudo fuser 80/tcp
just in case some other app might occupy port 80. we kill port 80 first.
now you can see it is working with :
sudo service nginx starthttp://yourdomain.com/?host=google&auth=ad022d9b3b3b4174b616f562c4f3a28b&led=D13&pin=D14&action=off
horrey !
Final Step .
now we are just missing one part. " HTTPS" for security.
i found this artical is very helpful.
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
then you will get the URL with HTTPS too now. it's all done !
if you have any questions, please feel free to post a comment below.
or if you would like to own your own server with your own ip, but still doesn't know how to create the server after this instruction. we can also help you to create it, you can contact us too.