Requisitos previos:

  • Dispositivo Shelly registrado en la app Shelly Cloud

  • Servidor web

  • Servidor de base de datos

En este ejemplo se utilizó un ShellyPro1, un servidor Apache con Php y una base de datos MySQL Server. Simularemos el conteo de las veces que se abren varias puertas mediante un contacto seco.

En primer paso crearemos una base de datos:

CREATE DATABASE `shelly` /*!40100 DEFAULT CHARACTER SET utf8 */;

luego una tabla donde se registrarán los datos:

CREATE TABLE `data_input` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fecha` date DEFAULT NULL,
`hora` time DEFAULT NULL,
`tipo` varchar(20) COLLATE utf8_spanish_ci DEFAULT NULL,
`dato` varchar(20) COLLATE utf8_spanish_ci,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

posterior a esto, creamos un archivo público en nuestro servidor web (index.php), en este ejemplo utilizamos php para registrar el dato:


<?php

$host="localhost";
$user="root";
$password="kuyfuigf54453d";
$database = "otros";
$port = 3306;

date_default_timezone_set("America/Mexico_City");
$fecha = date("Y/m/d", time());
$hora = date("H:i:s", time());

$dato = $_GET["nombre"];

$conexion = mysqli_connect($host, $user, $password, $database, $port);
mysqli_set_charset($conexion, 'utf8');

$query = "insert into otros.data_input (fecha,hora,tipo,dato) values ('$fecha','$hora','shelly','$dato')";
mysqli_query($conexion,$query);

http_response_code(200);

Después abrimos la app de Shelly Cloud, y dar touche sobre el dispositivo a contabilizar, luego damos touche en Acciones de E/S y touche en añadir.

Tecleamos un nombre y seleccionamos una hora de inicio y fin en a cual queremos que cuente, en este ejemplo lo dejamos en 00:00 hasta 00:00 para que siempre esté realizando esta acción.

En este ejemplo contaremos las veces que se activa el dispositivo, pero existen 7 detonadores de la acción.

En url activas escribiremos la url pública de nuestro archivo index.php

En este ejemplo es:

https://ingenieria.syscom.mx/shelly/?nombre=puerta1

donde:

  • https://ingenieria.syscom.mx/shelly/ es la ruta del archivo index.php

  • nombre es la variable tipo GET que utilizaremos en el archivo index.php

  • puerta1 es el dato que se almacenará en la base de datos

Esto debemos hacerlo en cada dispositivo que queramos contabilizar, siempre cambiando el valor de nombre. Ejemplos:

Para la puerta 2

https://ingenieria.syscom.mx/shelly/?nombre=puerta2

Para la puerta 3

https://ingenieria.syscom.mx/shelly/?nombre=puerta3

Para la puerta 4

https://ingenieria.syscom.mx/shelly/?nombre=puerta4

Así se verán los datos almacenados en crudo:

SELECT * FROM shelly.data_input order by id desc limit 10;

y así aplicándole una clausula count():

select tipo, dato, count(dato) as 'cantidad'
from shelly.data_input where tipo = 'shelly' and fecha between '2023-01-23' and '2023-01-23'
group by tipo, dato;

¿Ha quedado contestada tu pregunta?