?>/script>'; } ?> [Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt Widgets Magazine

Autor Tema: [Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt  (Leído 12338 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247

Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt



Desde hace tiempo vengo ejecutando con openwrt scripts para el manejo de enchufes inteligentes. Los más asequibles para el manejo desde ash han sido los Belkin Wemo. Desde hace algún tiempo vienen escaseando, y los que se encuentran, están a precio desorbitado. Por esa razón me he decidido a buscar una alternativa barata a los Belkin Wemo.

Los enchufes TP-Link HS100 y HS110 parecen buenos candidatos. Son baratos y por ahí circula un script (Author George Georgovassilis, https://github.com/ggeorgovassilis/linuxscripts) para manejarlos desde bash. La única pega es que el script directamente no es compatible con ash bajo openwrt.

Después de tener cierto tiempo y estudiar el script, he realizado una adaptación del script que corre bajo ash, con lo que podemos manejar el enchufe inteligente desde la línea de comandos de openwrt. En mi caso es útil para encender todo tipo de aparatos conectados a los enchufes una vez que se ha ido la luz, y que cuando vuelve se quedan todos apagados. Al volver la luz, sólo necesito acceso al router con openwrt, ya que los enchufes estarán preparados y conectados a la wifi del router. Accediendo empiezo a encender la secuencia de enchufes y todos los aparatos conectados a él. Lo utilizo principalmente en una casa con una persona que no puede valerse por sí misma.

Manejar los enchufes bajo luci lo podemos realizar incorporando el módulo luci-app-commands. Con este módulo podemos definir comandos a ejecutar con un botón en la interfaz gráfica de luci. Es una forma primitiva de automatización, pero muy efectiva, y recordemos que sólo necesitamos el router openwrt. Nada de servidores de automatización (aunque a esos evidentemente también se puede incorporar).

Para hacerlo compatible necesitamos instalar también una serie de módulos para usar comandos completos, que en busybox no están al completo:

coreutils-base64
coreutils-od
coreutils-printf


Ahora subimos el siguiente código al router. Yo lo suelo poner en /etc para que al hacer un backup de la configuración, el script también vaya incluído. En este caso he escogido /etc/hs100_control.sh

Código: [Seleccionar]
#!/bin/sh
##
#  Controls TP-LINK HS100,HS110, HS200 wlan smart plugs
#  Tested with HS100 firmware 1.0.8
#
#  Credits to Thomas Baust for the query/status/emeter commands
#
#  Author George Georgovassilis, https://github.com/ggeorgovassilis/linuxscripts
#
#  2020-06-22 : Tki2000 modifications for running on openwrt ash command shell via a tmp file
#               Needed modules: coreutils-base64 coreutils-od coreutils-printf
#               Working on: Hw:4.0 Fw: 1.0.2

_tmpfile=/tmp/tplink.txt

#echo args are $@
ip=$1
port=$2
cmd=$3

# encoded (the reverse of decode) commands to send to the plug

# encoded {"system":{"set_relay_state":{"state":1}}}
payload_on="AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog=="

# encoded {"system":{"set_relay_state":{"state":0}}}
payload_off="AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu3qPeow=="

# encoded { "system":{ "get_sysinfo":null } }
payload_query="AAAAI9Dw0qHYq9+61/XPtJS20bTAn+yV5o/hh+jK8J7rh+vLtpbr"

# the encoded request { "emeter":{ "get_realtime":null } }
payload_emeter="AAAAJNDw0rfav8uu3P7Ev5+92r/LlOaD4o76k/6buYPtmPSYuMXlmA=="

# tools

check_dependencies() {
  command -v nc >/dev/null 2>&1 || { echo >&2 "The nc program for sending data over the network isn't in the path, communication with the plug will fail"; exit 2; }
  command -v base64 >/dev/null 2>&1 || { echo >&2 "The base64 program for decoding base64 encoded strings isn't in the path, decoding of payloads will fail"; exit 2; }
  command -v od >/dev/null 2>&1 || { echo >&2 "The od program for converting binary data to numbers isn't in the path, the status and emeter commands will fail";}
  command -v read >/dev/null 2>&1 || { echo >&2 "The read program for splitting text into tokens isn't in the path, the status and emeter commands will fail";}
  command -v printf >/dev/null 2>&1 || { echo >&2 "The printf program for converting numbers into binary isn't in the path, the status and emeter commands will fail";}
}

show_usage() {
  echo Usage: $0 IP PORT COMMAND
  echo where COMMAND is one of on/off/check/status/emeter/toggle
  exit 1
}


check_arguments() {
   check_arg() {
    name="$1"
    value="$2"
    if [ -z "$value" ]; then
       echo "missing argument $name"
       show_usage
    fi
   }
   check_arg "ip" $ip
   check_arg "port" $port
   check_arg "command" $cmd
}

send_to_plug() {
   ip="$1"
   port="$2"
   payload="$3"
   echo -n "$payload" | base64 --decode | nc $ip $port || echo couldn''t connect to $ip:$port, nc failed with exit code $?
}

decode(){
   code=171
   offset=4
   input_num=`od -j $offset -An -t u1 -v | tr "\n" " "`
   args_for_printf=""
   for element in $input_num
   do
     output=$(( $element ^ $code ))
     args_for_printf="$args_for_printf\x$(printf %x $output)"
     code=$element
   done
   printf "$args_for_printf"
}

query_plug(){
   payload=$1
   send_to_plug $ip $port "$payload" > $_tmpfile
   cat $_tmpfile | decode
   echo
}

# plug commands

cmd_print_plug_relay_state(){
   send_to_plug $ip $port "$payload_query" | decode > $_tmpfile
   output=`cat $_tmpfile | egrep -o 'relay_state":[0,1]' | egrep -o '[0,1]'`
   #echo $output
   if [[ $output -eq 0 ]]; then
     echo OFF
   elif [[ $output -eq 1 ]]; then
     echo ON
   else
     echo Couldn''t understand plug response $output
   fi
}

cmd_print_plug_status(){
     query_plug "$payload_query"
}

cmd_print_plug_consumption(){
     query_plug "$payload_emeter"
}

cmd_switch_on(){
     send_to_plug $ip $port $payload_on > /dev/null
     cmd_print_plug_relay_state
}

cmd_switch_off(){
     send_to_plug $ip $port $payload_off > /dev/null
     cmd_print_plug_relay_state
}

cmd_switch_toggle() {
   output=`cmd_print_plug_relay_state`
   if [[ $output == OFF ]]; then
     cmd_switch_on
   elif [[ $output == ON ]]; then
     cmd_switch_off
   else
     echo $output
   fi
}

##
#  Main program
##


check_dependencies
check_arguments

case "$cmd" in
  on)
     cmd_switch_on
     ;;
  off)
     cmd_switch_off
     ;;
  toggle)
     cmd_switch_toggle
     ;;
  check)
     cmd_print_plug_relay_state
     ;;
  status)
     cmd_print_plug_status
     ;;
  emeter)
     cmd_print_plug_consumption
     ;;
  *)
     show_usage
     ;;
esac

Le damos permisos de ejecución con chmod +x /etc/hs100_control.sh

Y ahora podemos apagar/encender/manejar el enchufe tal que así:

/etc/hs100_control.sh 192.168.x.x 9999 on
/etc/hs100_control.sh 192.168.x.x 9999 off
/etc/hs100_control.sh 192.168.x.x 9999 check
/etc/hs100_control.sh 192.168.x.x 9999 toggle
/etc/hs100_control.sh 192.168.x.x 9999 emeter

Cambiad la IP 192.168.x.x por la que tenga el enchufe asignada por DHCP. Para distinguir varios enchufes podemos cambiar la IP por el nombre del host, y asignar la MAC del enchufe a un nombre de host distinto en las opciones DHCP de luci.

Podemos meter cada uno de los comandos anteriores en los comandos propios de luci que nos sale al instalar el módulo luci-app-commands.

El puerto siempre parece ser 9999, así que si alguien lo quiere incorporar al script directamente sin ser argumento, es libre de hacerlo.

Por ahora lo que he probado con la última versión de hardware 4.0 y firmware 1.0.2 ha funcionado perfecto. ==>> Actualizado a 1.1.1 sigue funcionando perfecto.

No sé qué manía tienen en hacer que estos aparatejos sólo funcionen con aplicaciones de móvil o chorradas por el estilo. Cuanto más genéricos sean, más aplicaciones podrán tener.

La única pega, al igual que los wemo, es que para configurarlos hay que hacerlo con la aplicación del móvil. Una vez que estén configurados, y yo lo hago para trabajar exclusivamente en local (nada de nubes ni chorradas de esas) son completamente autónomos en la conexión.

Con el tiempo veré si son igual de estables que los wemo, y son capaces de aguantar las conexiones de ON durante meses, sin microcortes.

He medido el cosumo de un HS100 en estado de reposo y me ha dado unos 0.3W. Un Belkin Wemo me da unos 1.3W. La ganancia en consumo es sustancial.

Por ahora van bien.

Usad estos conocimientos bajo vuestra propia responsabilidad.
« Última modificación: 22-06-2020, 20:45 (Lunes) por Tki2000 »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #1 en: 26-06-2020, 14:06 (Viernes) »
Tras unos días trasteando con el script anterior, me pude dar cuenta que los enchufes HS110 con hardware 3.1 no son totalmente compatibles con el script.
No sé por qué razón, la conexión se parte y no devuelve datos con el comando nc de busybox.
El comando completo netcat, sí espera a que devuelva datos, pero la conexión se queda sin cerrar, así que no devuelve los datos hasta que se hace un timeout de la conexión, lo cual puede durar muchos segundos. Para evitar esto me apoyo en a utilidad timeout.
Al final he encontrado una solución que funciona con todos los tipos de enchufe que tengo, pero hay que incorporar un par más de módulos al asunto.

Módulos de openwrt a cargar : coreutils-base64 coreutils-od coreutils-printf coreutils-timeout netcat

He renombrado el comando "status" a "info", que me parece más correcto.

Script:

Código: [Seleccionar]
#!/bin/sh
##
#  Controls TP-LINK HS100,HS110, HS200 wlan smart plugs
#  Tested with HS100 firmware 1.0.8
#
#  Credits to Thomas Baust for the query/status/emeter commands
#
#  Author George Georgovassilis, https://github.com/ggeorgovassilis/linuxscripts
#
#  2020-06-22 : Tki2000 modifications for running on openwrt ash command shell via a tmp file
#               Needed modules: coreutils-base64 coreutils-od coreutils-printf
#               Working on: HS100 Hw:4.0 Fw: 1.1.1
#  2020-06-26 : Tki2000 modifications for running on openwrt ash command shell.
#               tmp file obsoleted.
#               "status" command renamed to "info"
#               Needed modules: coreutils-base64 coreutils-od coreutils-printf coreutils-timeout netcat
#               Working on: HS110 Hw:3.1 Fw: 1.5.6
#               Working on: HS110 Hw:4.0 Fw: 1.0.4


#echo args are $@
ip=$1
port=$2
cmd=$3

# encoded (the reverse of decode) commands to send to the plug

# encoded {"system":{"set_relay_state":{"state":1}}}
payload_on="AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog=="

# encoded {"system":{"set_relay_state":{"state":0}}}
payload_off="AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu3qPeow=="

# encoded { "system":{ "get_sysinfo":null } }
payload_query="AAAAI9Dw0qHYq9+61/XPtJS20bTAn+yV5o/hh+jK8J7rh+vLtpbr"

# the encoded request { "emeter":{ "get_realtime":null } }
payload_emeter="AAAAJNDw0rfav8uu3P7Ev5+92r/LlOaD4o76k/6buYPtmPSYuMXlmA=="


# tools

check_dependencies() {
  command -v nc >/dev/null 2>&1 || { echo >&2 "The nc programme for sending data over the network isn't in the path, communication with the plug will fail"; exit 2; }
  command -v base64 >/dev/null 2>&1 || { echo >&2 "The base64 programme for decoding base64 encoded strings isn't in the path, decoding of payloads will fail"; exit 2; }
  command -v od >/dev/null 2>&1 || { echo >&2 "The od programme for converting binary data to numbers isn't in the path, the status and emeter commands will fail";}
  command -v read >/dev/null 2>&1 || { echo >&2 "The read programme for splitting text into tokens isn't in the path, the status and emeter commands will fail";}
  command -v printf >/dev/null 2>&1 || { echo >&2 "The printf programme for converting numbers into binary isn't in the path, the status and emeter commands will fail";}
}

show_usage() {
  echo Usage: $0 IP PORT COMMAND
  echo where COMMAND is one of on/off/check/info/emeter/toggle
  exit 1
}

check_arguments() {
   check_arg() {
    name="$1"
    value="$2"
    if [ -z "$value" ]; then
       echo "missing argument $name"
       show_usage
    fi
   }
   check_arg "ip" $ip
   check_arg "port" $port
   check_arg "command" $cmd
}

decode(){
   code=171
   offset=4
   input_num=`od -j $offset -An -t u1 -v | tr "\n" " "`
   #echo $input_num > /tmp/control1.txt
   args_for_printf=""
   for element in $input_num
   do
     output=$(( $element ^ $code ))
     args_for_printf="$args_for_printf\x$(printf %x $output)"
     code=$element
   done
   printf "$args_for_printf"
   #echo $args_for_printf > /tmp/control2.txt
}

send_to_plug_withtimeout() {
   ip="$1"
   port="$2"
   payload="$3"
   echo -n "$payload" | base64 --decode | timeout 0.3 nc $ip $port
}

query_plug_withtimeout(){
   ip="$1"
   port="$2"
   payload="$3"
   echo -n "$payload" | base64 --decode | timeout 1.0 nc $ip $port | decode
   echo
}

# plug commands

cmd_print_plug_relay_state(){
   output=`send_to_plug_withtimeout $ip $port "$payload_query" | decode | egrep -o 'relay_state":[0,1]' | egrep -o '[0,1]'`
   #echo $output
   if [[ $output -eq 0 ]]; then
     echo OFF
   elif [[ $output -eq 1 ]]; then
     echo ON
   else
     echo Couldn\'t understand plug response $output
   fi
}

cmd_print_plug_status(){
     query_plug_withtimeout "$ip" "$port" "$payload_query"
}

cmd_print_plug_consumption(){
     query_plug_withtimeout "$ip" "$port" "$payload_emeter"
}

cmd_switch_on(){
     send_to_plug_withtimeout $ip $port $payload_on > /dev/null
     cmd_print_plug_relay_state
}

cmd_switch_off(){
     send_to_plug_withtimeout $ip $port $payload_off > /dev/null
     cmd_print_plug_relay_state
}

cmd_switch_toggle() {
   output=`cmd_print_plug_relay_state`
   if [[ $output == OFF ]]; then
     cmd_switch_on
   elif [[ $output == ON ]]; then
     cmd_switch_off
   else
     echo $output
   fi
}

##
#  Main program
##


check_dependencies
check_arguments

case "$cmd" in
  on)
     cmd_switch_on
     ;;
  off)
     cmd_switch_off
     ;;
  toggle)
     cmd_switch_toggle
     ;;
  check)
     cmd_print_plug_relay_state
     ;;
  info)
     cmd_print_plug_status
     ;;
  emeter)
     cmd_print_plug_consumption
     ;;
  *)
     show_usage
     ;;
esac

Usad estos conocimientos bajo vuestra propia responsabilidad.

Edito: actualizado código para reflejar que también funciona con HS110 Hw: 4.0 y Fw: 1.0.4
« Última modificación: 29-06-2020, 19:34 (Lunes) por Tki2000 »

Desconectado raphik

  • *****
  • Mensajes: 102
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #2 en: 26-06-2020, 19:46 (Viernes) »
Gracias por compartir.

Nunca he usado enchufes inteligentes. Supongo que cada fabricante utilizará un protocolo propio y misterioso a fin de generar dependencia de sus soluciones.

Las dos funciones básicas de un enchufe son conectar y desconectar. A riesgo de simplificar excesivamente su funcionamiento, me pregunto si es posible utilizar directamente los comandos

# encender
echo -n "AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog==" | base64 --decode | timeout 0.3 nc 192.168.x.x 9999

# apagar
echo -n "AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu3qPeow==" | base64 --decode | timeout 0.3 nc 192.168.x.x 9999

Saludos.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #3 en: 26-06-2020, 20:03 (Viernes) »
[..]
Nunca he usado enchufes inteligentes. Supongo que cada fabricante utilizará un protocolo propio y misterioso a fin de generar dependencia de sus soluciones.
[..]

Ni que lo digas. Yo sólo uso los que puedo manejar desde la línea de comandos. Lo demás es ba-su-ra.
Hay muchos protocolos que se pueden descifrar y utilizar desde línea de comandos. Yo incluso enciendo y apago el aire acondicionado (DAIKIN) desde los botones de luci...

Las dos funciones básicas de un enchufe son conectar y desconectar. A riesgo de simplificar excesivamente su funcionamiento, me pregunto si es posible utilizar directamente los comandos

# encender
echo -n "AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog==" | base64 --decode | timeout 0.3 nc 192.168.x.x 9999

# apagar
echo -n "AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu3qPeow==" | base64 --decode | timeout 0.3 nc 192.168.x.x 9999

Saludos.

Si sólo quieres mandar el comando sin esperar respuesta de datos, sí, lo puedes hacer.
Peo sinceramente, no me veo tecleando la parte de base64 en la línea de comandos de bash...  ;D

Si sólo quieres hacer un on / off y no te interesa el comando de estado, puedes usar el nc de busybox. No te hace falta instalar el netcat completo.


Por cierto, hoy los enchufes HS100 están a 13,59€ en Amaz...es
« Última modificación: 26-06-2020, 20:14 (Viernes) por Tki2000 »

Desconectado raphik

  • *****
  • Mensajes: 102
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #4 en: 26-06-2020, 20:52 (Viernes) »
Desde luego, nadie querría teclear el payload a pelo. Pero por largo que parezca el comando se podría utilizar en un script, simplificando enormemente el código. O incluso se podría poner directamente en luci-app-commands.

Dando un giro más de tuerca, igual se puede enviar la salida del base64 a un fichero que después podría leerse, con lo que se podría prescindir de la utilidad base64.

echo -n "AAAAKtDygfiL/5r31e+UtsWg1Iv5nPCR6LfEsNGlwOLYo4HyhueT9tTu36Lfog==" | base64 --decode > menudaocurrencia.txt
cat menudaocurrencia.txt | timeout 0.3 nc 192.168.x.x 9999

En fin, me está dando ganas hacerme con uno de estos enchufes.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #5 en: 26-06-2020, 21:57 (Viernes) »
El script también lo puedes poner en el luci-app-commands
Define un botón con:

/etc/hs100_control.sh hs100.lan 9999 on

y otro con

/etc/hs100_control.sh hs100.lan 9999 off

Y si quieres saber el estado del enchufe:

/etc/hs100_control.sh hs100.lan 9999 check

Sería lo más básico en domotización y siempre en la lan local. Nada de nubarrones ni cosas por el estilo.  ;D

Y si quieres algo más complejo, lo puedes integrar en domoticz y funcionaría básicamente igual, pero con grafiquitos.
Los wemos los tengo integrados en luci y en domoticz con el mismo script.
« Última modificación: 26-06-2020, 22:02 (Viernes) por Tki2000 »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #6 en: 09-02-2021, 10:22 (Martes) »
Hola

Están guay estos enchufes y su posibilidad de manejarlos desde OpenWrt...

[Offtopic]Como soy aficionado a los acuarios,[/offtopic] voy a pillarme un pack de TP-link modelo TAPO, vienen 4 y sale bastante más barato que los HS 100 ó 110.
A ver si hay suerte y el mismo script sirve. Cruzaré los dedos. Si no, ajo y agua y al menos servirá como experiencia. No me molesta demasiado tener la APP instalada, aunque sí soy mucho más partidario de usar métodos estándar y abiertos.

De momento he probado el script con un enchufe marca "patatín" y no va.
Código: [Seleccionar]
root@MINICONTROL:~# ./q.sh  192.168.18.8 9999 check
sh: 0: unknown operand
sh: 1: unknown operand
Couldn't understand plug response

Cuando tenga los TAPO, los pruebo con el script y vuelvo para comentarlo. Así, si funcionan, los añadimos a la lista de los enchufes compatibles.
« Última modificación: 09-02-2021, 10:57 (Martes) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #7 en: 10-02-2021, 16:43 (Miércoles) »
Hola

Están guay estos enchufes y su posibilidad de manejarlos desde OpenWrt...

[Offtopic]Como soy aficionado a los acuarios,[/offtopic] voy a pillarme un pack de TP-link modelo TAPO, vienen 4 y sale bastante más barato que los HS 100 ó 110.
A ver si hay suerte y el mismo script sirve. Cruzaré los dedos. Si no, ajo y agua y al menos servirá como experiencia. No me molesta demasiado tener la APP instalada, aunque sí soy mucho más partidario de usar métodos estándar y abiertos.

De momento he probado el script con un enchufe marca "patatín" y no va.
Código: [Seleccionar]
root@MINICONTROL:~# ./q.sh  192.168.18.8 9999 check
sh: 0: unknown operand
sh: 1: unknown operand
Couldn't understand plug response

Cuando tenga los TAPO, los pruebo con el script y vuelvo para comentarlo. Así, si funcionan, los añadimos a la lista de los enchufes compatibles.


No creo que sirvan. Por lo que he estado viendo los TAPO van por la "nube" y no por conexión interna...
El script sólo sirve para los enchufes que he dicho en cuestión, ya que cada enchufe tiene su propio protocolo. Los wemo van de otra forma y se manejan de otra forma. Lo complejo de esto es encontrar algo que se pueda manejar por bash..., y por ahora he encontrado los wemo y los HS100/110

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #8 en: 12-02-2021, 12:00 (Viernes) »
Entiendo.
Si has probado varios, (o quien sea) estaría bien indicar también los que no sirven ...
(cómo sabes que requieren nube? Yo leí "no requieren concentrador" (que no sé muy bien a qué se refiere, pero interpreté que no necesitaban router y se podían manejar directamente desde el móvil, sin salir a Internet, ya sea por la propia wifi del móvil o bluetooth...))

Los acabo de recoger. De todas formas, si no sirven, ajo y agua. Qué le vamos a hacer; los usaré con la nube si es obligatorio.  :-\

Cuando los pruebe comento.

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #9 en: 12-02-2021, 19:24 (Viernes) »
Comento:

Acabo de instalar y configurar con el móvil un tapo p100.

Pruebo el script....
No va:
Código: [Seleccionar]
root@heimdall:~# ./q.sh  192.168.0.171 9999 off
od: cannot skip past end of combined input
sh: 0: unknown operand
sh: 1: unknown operand
Couldn't understand plug response

Por si alguien piensa comprarse los TP-LINK TAPO P100.... van muy bien con la APP del móvil, pero no sirven para el script.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #10 en: 13-02-2021, 14:09 (Sábado) »
Ya te lo dije, van "con la nube".
Vi por ahí un script que accede a la nube con tus credenciales y puedes manejarlos, no sé si estaba en python.
Pero como con todas las cosas en "las nubes": cuando el servicio deje de funcionar, coges el cacharrín y lo tiras a la basura... Así que mejor no lo toco ni con un palo...


Desconectado peperfus

  • ******
  • Mensajes: 251
Re:[Script] Manejo de enchufes inteligentes TP-Link HS100 HS110 con OpenWrt
« Respuesta #11 en: 26-01-2022, 12:01 (Miércoles) »
Hola cracks!

Comentar un par de novedades que he descubierto.

(de esta estoy casi seguro al 100%, pero me gustaría que alguien más lo comprobara)
1) A los enchufes estos no les gusta nada el parámetro lease time infinite en la configuración de DHCP. Cuando se lo pongo, me da problemas la red y esto me ha estado volviendo algo loco hasta que (creo que por fin) lo he descubierto. ¿Alguien lo confirma? Supongo que será porque tienen alguna versión anterior del protocolo DHCP (cliente) que no admite ese parámetro.
Edito: Y ahora que lo pienso, tal vez haya sido por esta movida que tuve varios problemas del tipo "Misterios sin resolver" en la red, como el problema que tuve con NTP y otro problema de puente cliente wifi ...; pero vete a saber !!, eso ya es de detectives  ;D

Y
2) He descubierto otros enchufes "compatibles" con openwrt. Lo pongo entre comillas porque hay que modificarles el firmware que llevan, pero no parece ser demasiado difícil, aunque hay que hacerlo por hardware, eso sí. De hecho, el nuevo firmware que se les pone es abierto y eso da la posibilidad de manejarlos con openwrt, otro linux, windows, o la magdalena del desayuno  ;D. Los descubrí de casualidad investigando, los tengo pedidos y en cuanto me lleguen y saque tiempo los probaré a ver qué tal. Además de salir más baratos que los HS100, son más fáciles de gestionar. Eso sí: al modificarlos se pierde la garantía del fabricante y la gestión por APP oficial (obvio).
Bueno, que me enrollo más que las persianas, lo siento. Con el permiso de Tki2000, pongo aquí un par de enlaces de donde saqué todo:


https://community.element14.com/members-area/personalblogs/b/blog/posts/install-linux-on-a-sonoff-s20-smart-plug
https://www.alferez.es/iot/espurna-tasmota-o-espeasy-para-dispositivos-esp8266/

Me he pillado unos S26, aunque la he cagado un poco  :P, porque acabo de ver que son más complicados de flashear que los S20  :P
En fin, tendré que arrequetemangarme.

EDITO:
Conseguido. No fue tan difícil como creía. Eso sí: tuve que soldar, pero una vez cogido el truquito, ya todo rodado.  ;D
« Última modificación: 22-02-2022, 22:19 (Martes) por peperfus »