smartthings remote ctrl
npm install smartthings-phevctl!smartthings.gif
!smartthings.gif
!Charger.png!doorLock.png
| Installation Type | Execute action(heating/cooling/headlights and etc...) | Smartthings Hub required | Internet connection required | can send/receive SMS | huawei e3372h-320(CL4E3372HM) / MikroTik LtAP mini LTE kit | Raspberry Pi must be installed | Send Push Notifications |
|-----------------------------------------------------------------------------|--------------------------------------------------------|----------------------|------------------------------|----------------------|----------------------------------------------|--------------------------------|-------------------------|
| Cloud Installation (run smartthings-phevctl on the cloud) | Immediately | No | Yes | No | Yes | No | Yes |
| Cloud Installation with rapberry Pi(Cloud is forwarded smartthings-phevctl) | Immediately | No | No | Yes | Yes | Yes | Yes |
| Сontrol over SMS without smartthings | 1-2 minutes delay | No | No | Yes | Yes | Yes | No |
| Local Network Installation(under NAT) | Immediately | Yes | Yes | No | Yes | No | Yes |
| Run without cloud and without Smartthings Hub | 2-5 minutes delay | No | No | Yes | Yes | Yes | Yes |
sudo su
curl -sSL https://get.docker.com | bash
usermod -aG docker $USER
`
- Supported Architectures: amd64,x86-64,arm64,ppc64le,arm/v7
`
docker -d run --name=smartthings-phevctl -p 8080:8080 -p 8099:8099 -p 8098:8098 --restart=always vassio/smartthings-phevctl
`
or
`
echo "{}">/opt/remote-ctrl-gsm.json
docker -d run --name=smartthings-phevctl -p 8080:8080 -p 8099:8099 -p 8098:8098 -v /opt/config/remote-ctrl-gsm.json:/opt/remote-ctrl-gsm.json --restart=always vassio/smartthings-phevctl
`Raspberry Pi Zero installation
1. Download Raspberry Pi OS Lite
2. write the Raspberry Pi OS image to the SD card using balenaEtcher or analog
3. write empty "ssh" and wpa_supplicant.conf files on sdcard (boot)
4. install phevctl, node(>=12) and smartthings-phevctl
`
sudo su
apt-get upgrade -y && apt-get -y install build-essential cmake git python3-distutils
mkdir /opt/phevctl
cd /opt/phevctl && git clone https://github.com/papawattu/msg-core
cd /opt/phevctl && git clone https://github.com/vzakharchenko/phevcore.git
cd /opt/phevctl && git clone https://github.com/DaveGamble/cJSON.git
cd /opt/phevctl && git clone https://github.com/vzakharchenko/phevctl
cd /opt/phevctl/cJSON && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/msg-core && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/phevcore && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/phevctl && mkdir -p build && cd build && cmake .. && make
rm -f /usr/bin/phevctl
ln -sf /opt/phevctl/phevctl/build/phevctl /usr/bin/phevctl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
source ~/.bashrc
nvm install --lts
You can go drink coffee)
npm i pm2 -g
env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp ${HOME}
pm2 startup -u root
npm i smartthings-phevctl -g
pm2 start npm root -g/smartthings-phevctl/smartthings-phevctl.js
pm2 save
`Server Manual Installation
`
sudo su
apt-get upgrade -y && apt-get -y install build-essential cmake git
mkdir /opt/phevctl
cd /opt/phevctl && git clone https://github.com/papawattu/msg-core
cd /opt/phevctl && git clone https://github.com/vzakharchenko/phevcore.git
cd /opt/phevctl && git clone https://github.com/DaveGamble/cJSON.git
cd /opt/phevctl && git clone https://github.com/vzakharchenko/phevctl
cd /opt/phevctl/cJSON && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/msg-core && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/phevcore && mkdir build && cd build && cmake .. && make && make install
cd /opt/phevctl/phevctl && mkdir -p build && cd build && cmake .. && make
rm -f /usr/bin/phevctl
wget -qO- https://getpm2.com/install.sh | bash
env PATH=$PATH:/usr/bin pm2 startup systemd -u ${currentUser} --hp ${HOME}
npm i smartthings-phevctl -g
pm2 start npm root -g/smartthings-phevctl/smartthings-phevctl.js
pm2 save
`
Smartthings installation
$3
1. open https://graph.api.smartthings.com/
2. open your location/ or create a new one 
3. open "My Device Handler" and "create New Device Handler"
4. select from code and add Outlander PHEV Action.groovy, Outlander PHEV Battery.groovy, Outlander PHEV Thermostat.groovy and Outlander PHEV Doors.groovy 
5. click save$3
1. open https://graph.api.smartthings.com/
2. open your location 
3. create a new SmartApp 
4. select from code and add remote-ctrl-gsm.groovy 
5. open smartapp application and click "App Settings"  
6. enable "OAuth" 
7. Save and publish application $3
1. open smartthings application in Phone Android or Apple
2. select location 
3. add SmartApp 
4. add "remote-ctrl-gsm" 
5. set IP and port of server and click save 
$3
1. open https://graph.api.smartthings.com/
2. select smartapps in your location 
3. select your smartapp 
4. get "Smartthings Application Id" and "Smartthings Application Secret" from the page $3
1. open server
`http://:8080 `
2. default login/password: admin/admin
3. configure "Smartthings Application Id", "Smartthings Application Secret" and mac address 
4. click save$3
1. select devices->add Device 
2. Device will be appear om Smartthings AppLocal Network Installation(under NAT)
- install [Smartthings Hub)[https://www.samsung.com/us/smart-home/smartthings/hubs/] on location.
- during installation smartapp select hub. Run without cloud and without Smartthings Hub
- Configure Smartthings application without cloud and hub
- during installation smartapp select "Setup my devices without cloud". Authentication
Local authentication (default)
default login/password: `admin/admin`
$3
$3
Keycloak authentication

restart Application
Keycloak authorization

restart Application
Thermostat operation state



Push Notification


EVSE Electric Vehicle (EV) Charging Stations
Scripts for energy star charging stations
- Slow charging(slowCharge.sh)
`
curl --header "application/x-www-form-urlencoded" --request POST --data 'cur_set=7&charge_start=1&adaptive_mode_status=1&adaptive_mode_voltage=220&timer=0&timer_start=0' http://192.168.4.1/ajax
`
- Normal charging(fastCharge.sh)`
curl --header "application/x-www-form-urlencoded" --request POST --data 'cur_set=16&charge_start=1&adaptive_mode_status=0&adaptive_mode_voltage=220&timer=0&timer_start=0' http://192.168.4.1/ajax
`
- Disable charging(disableCharge.sh)`
curl --header "application/x-www-form-urlencoded" --request POST --data 'cur_set=7&charge_start=0&adaptive_mode_status=1&adaptive_mode_voltage=220&timer=0&timer_start=0' http://192.168.4.1/ajax
`- Mikrotik Configuration
`
/interface wireless security-profiles
add authentication-types=wpa2-psk group-ciphers=tkip mode=dynamic-keys name=EVSE supplicant-identity=MikroTik unicast-ciphers=tkip wpa-pre-shared-key= wpa2-pre-shared-key=
/interface wireless
set [ find default-name=wlan1 ] disabled=no frequency=2447 mode=station-pseudobridge name=EVSE_CHARGER security-profile=EVSE ssid=/interface bridge
add dhcp-snooping=yes fast-forward=no igmp-snooping=yes name=bridgeEVSE
/interface bridge port
add bridge=bridgeEVSE broadcast-flood=no edge=no-discover interface=EVSE_CHARGER multicast-router=disabled trusted=yes unknown-multicast-flood=no unknown-unicast-flood=no
/interface bridge settings
set allow-fast-path=no
/ip dhcp-client
add add-default-route=no disabled=no interface=bridgeCar use-peer-dns=no use-peer-ntp=no
add add-default-route=no disabled=no interface=bridgeEVSE use-peer-dns=no use-peer-ntp=no
`add authorization for EVSE Charging
- start proxy application
`
npm i pm2 -g
env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp ${HOME}
pm2 startup -u root
npm i smartthings-phevctl -g
pm2 start npm root -g/smartthings-phevctl/evse-proxy.js
pm2 save
`- configure evse-proxy
`
nano ~/.remote-ctrl-gsm/config.json
`
`json
{
"evseServer": {
"/": "https://192.168.4.1",
"style.css": "https://192.168.4.1/style.css",
"es.js": "https://192.168.4.1/es.js",
"ajax": "https://192.168.4.1/ajax"
},
"users": [
{
"id": "0",
"username": "admin",
"password": "admin"
}
],
"port": 8011,
"role":":"
}
`
- Keycloak authorization
example keycloak.json:
`
{
"realm": "",
"auth-server-url": "https:///auth/",
"ssl-required": "external",
"resource": "",
"credentials": {
"secret": ""
},
"confidential-port": 0
}
`
Keycloak security role:
`
{
"evseServer": {
...
}
],
"role":":"
}
``