Control de Niko Home Control

3

Me gustaría saber si alguien ha podido tomar el control de ' Niko Home Control 'con una PC o microcontrolador (arduino)?

Busqué en Google, pero no puedo encontrar mucho sobre este tema. ¿Es incluso posible? Supongo que no es realmente de código abierto.

Cosas como:

  • Controla las luces
  • Supervisar qué luces están encendidas / apagadas

Estoy planeando usar el 'Control de Inicio Niko' en mi casa, pero me gusta usar nuestra propia interfaz ( Arduimotic ).

    
pregunta Think Graphical

2 respuestas

2

No sé si esto sigue siendo válido o si U encontró la solución para Niko Home Control todavía. Logré controlar y obtener comentarios del control de Niko Home a través de una aplicación externa

un ejemplo de un comando tcp de Niko: {"cmd": "executeactions", "id": 0, "value1": 100} esto da una identificación (para niko esta es una acción programada en el controlador, en mi caso, un circuito de luz en mi puerta frontal) un valor donde 0 está apagado y 100 está encendido, la retroalimentación del controlador niko da {"evento": "listactions" , "datos": [{"id": 0, "value1": 100}]} esos comandos se pueden probar usando un simple packetsender para la ip del controlador niko en el puerto 8000.

    
respondido por el wouter
3

Actualizar

Pude controlar Niko HC con la ayuda de @wouter.

He instalado un emulador de Android en mi mac. Luego, con Wireshark pude oler la comunicación.

Una vez que encuentre la IP del controlador, es relativamente simple:

Primero debe enviar un comando TCP: {"cmd": "startevents"} . Esto le permite obtener retroalimentación del controlador (para verificar si la luz se encendió o falló)

Luego puedes enviar un nuevo comando TCP: {"cmd": "listactions"} . Esto le da una visión general de las "acciones" disponibles y su estado (luces, acciones, ...)

Si desea saber qué habitaciones están disponibles, necesitará el siguiente comando: {"cmd":"listlocations"} (Gracias a @Wim Deblauwe)

Si desea controlar una acción, necesitará el siguiente comando:
{"cmd": "executeactions", id="{ID}", "value1" = "{VALUE}"}

Las personas con el módulo de energía pueden usar el siguiente comando TCP: {"cmd": "listenergy"} . Esto debería darle una descripción general del consumo de energía (no soy el propietario de este módulo, por lo que no estoy 100% seguro).

Si desea información sobre el sistema, puede usar el siguiente comando TCP: {"cmd": "systeminfo"} . Esto le proporciona información como idioma, moneda, versión api, ...

Con Laravel, he creado una pequeña API que me permite llamar a una URL simple para controlar las luces: /api/lights/{LIGHT}/{VALUE}

Esto llama a la siguiente función:

Route::get('/api/lights/{light}/{value}', function($light, $value){

$service_port = 8000;
$address = '192.168.0.233';

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    return "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    return "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
}

$in = json_encode(array(
    'cmd' => 'executeactions',
    'id' => intval($light),
    'value1' => intval($value)
));

socket_write($socket, $in, strlen($in));
$message = socket_read($socket,1000000);
socket_close($socket);

return $message;
});

Luego he creado una pequeña interfaz para encender / apagar las luces fácilmente:

Pasos siguientes

  • una 'simulación de presencia' personalizada.
  • agrega más 'datos de casa' con la ayuda de Arduino (estado del nivel del agua, estación meteorológica, ...)
  • ...

Nuevamente, ¡gracias a @wouter por la información proporcionada!

    
respondido por el Think Graphical

Lea otras preguntas en las etiquetas