Kankun smart plug

Hello,

A la demande « pressente » de @iooner :p je vais vous parler d’un produit que je viens de recevoir à la maison pour piloter une prise de courant.

Ce petit joujou est en fait un relai piloté par une carte supportant linux (OpenWrt) en wifi. C’est un produit qu’on trouve sur Amazon (désolé @iooner en effet c’est qu’en amérique du nord qu’on trouve ça pour le moment) ou sur alibaba (@iooner t’as peut être une chance :p) et il est vraiment donnée pour 30$.

Kankun_KK-SP3_Board_Large New-2014-CN-Ver-Original-Kankun-Smart-Plug-Wifi-Remote-Control-Socket-Intelligent-Charger-Wireless-Control

 

Bon je vous passe le fait qu’il y a des applications iphone et android qui vous permette de piloter et de programmer cela facilement.

Si je vous en parle c’est parce que la base est de l’openwrt et que pour le coup ça devient facile de faire ce que l’on veut avec. :)

Pour commencer il faudra initialiser votre prise avec un téléphone (android ou ios)
C’est très bien expliqué dans la notice et ça marche bien pour le connecter à votre réseau wifi. Une fois que c’est fait vous pouvez y accéder depuis le réseau facilement avec leur application.

Mais ce qui est top et le plus magique c’est qu’on peut accéder à sa prise en ssh :D

Pour cela rien de plus simple. Faut juste trouver l’ip sur votre réseau mais ça je vous laisse trouver l’outil pour ça

 ssh root@XXX.XXX.XXX.XXX

après faut le mot de passe pour moi c’est celui là qui a marché

p9z34c

Pour d’autres c’est admin et d’autres encore il faut faire un telnet XXX.XXX.XXX.XXX et un passwd pour initier le password.

Capture d’écran 2014-12-05 à 23.36.00

et voilà maintenant vous avez un petit linux facilement accessible :)

Mais comme je veux pousser un peu plus loin le truc et me faire un lien avec un serveur centralisant le pilotage de plusieurs prises il faut que je trouve un moyen facile de piloter tout ça. C’est là qu’intervient la bonne communauté du plug X)

On va implémenter un petit script cgi pour piloter depuis une requête http la prise.

Pour cela toujours connecté en ssh, il faut se créer un petit répertoire /www/cgi-bin
et construire le script cgi, json.cgi comme suit (un petit coup de vi)

#!/bin/sh
echo « Content-Type: application/javascript »
echo « Cache-Control: no-cache, must-revalidate »
echo « Expires: Sat, 26 Jul 1997 05:00:00 GMT »
echo

VERSION=0.0.1
RELAY_CTRL=/sys/class/leds/tp-link:blue:relay/brightness
TIMINGS=`tail -n+3 /etc/online.txt | sed ‘:a;N;$!ba;s/\n/ », »/g’`
IP_ADDRESS=`ifconfig wlan0 | sed ‘:a;N;$!ba;s/\n/ », »/g’ | grep -E -o ‘[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+’ | head -n 1`

get=$(echo « $QUERY_STRING » | sed -n ‘s/^.*get=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)
set=$(echo « $QUERY_STRING » | sed -n ‘s/^.*set=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)
callback=$(echo « $QUERY_STRING » | sed -n ‘s/^.*callback=\([^&]*\).*$/\1/p’ | sed « s/%20/ /g »)

case « $get » in
state)
case « `cat $RELAY_CTRL` » in
0) echo « $callback({\ »state\ »:\ »off\ »}) »
;;
1) echo « $callback({\ »state\ »:\ »on\ »}) »
;;
esac
;;
timing)
echo « $callback({\ »timings\ »:[\ »$TIMINGS\ »]}) »
;;
esac

case « $set » in
on)
echo 1 > $RELAY_CTRL
echo « $callback({\ »ok\ »:true}) »
;;
off)
echo 0 > $RELAY_CTRL
echo « $callback({\ »ok\ »:true}) »
;;
esac

if [ -z « $get » ] && [ -z « $set » ]; then
echo « $callback({\ »info\ »:{\ »name\ »:\ »kankun-json\ »,\ »version\ »:\ »$VERSION\ »,\ »ipAddress\ »:\ »$IP_ADDRESS\ »},\ »links\ »:{\ »meta\ »:{\ »state\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?get=state\ »,\ »timing\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?get=timing\ »},\ »actions\ »:{\ »on\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?set=on\ »,\ »off\ »:\ »http://$IP_ADDRESS/cgi-bin/json.cgi?set=off\ »}}}) »
fi

 

Vous retrouverez le code ici

https://github.com/homedash/kankun-json

ensuite il n’y a plus qu’à s’amuser avec les requêtes qui vont bien
pour avoir des infos: http://$IP_ADDRESS/cgi-bin/json.cgi
Jour:

http://$IP_ADDRESS/cgi-bin/json.cgi?set=on

Nuit:

http://$IP_ADDRESS/cgi-bin/json.cgi?set=off


et voilà bon évidemment ce n’est pas protégé par mot de passe mais bon normalement il n’y a personne d’autre qui va lancer ce genre de requête dans mon réseau interne…même si il ne faut pas oublier que c’est qd même un boitier chinois à 30$ et que ça se trouve c’est une porte d’entrée pour la nsa chinoise #parano… mais bon faut tester. Un petite page html dans le répertoire /www/ pour que http://$IP_ADDRESS soit clean. Voir même y créer 2 gros boutons ON/OFF utilisant les liens précédents.

voilà il y a aussi plein d’info sur la petite communauté

https://plus.google.com/communities/115308608951565782559

Bon c’est vrai que c’est pas mal et en plus c’est tout petit mais ça ne vaut pas ma multiprise « Nicolas » en cpl :)

Allez je vous laisse vous amuser avec ce super plug an.. à bientôt X)

So enjoy!