Requisitos previos:
Dispositivo Shelly registrado en la app Shelly Cloud
Servidor web
Servidor de base de datos
En este ejemplo se utilizó un Shelly1 y 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);
Pasos en Shelly1 (primera generación, sólo http)
Abrimos la app Shelly Cloud, damos touche sobre el dispositivo a contabilizar, luego famos touche en Acciones de E/S y habilitamos Botón encedido (URLs)
Nota: Sólo contabilizará las veces que fué precionado el botón de switch físico (representado en color verde en el diagrama de arriba).
En url envidos cuando se completa la acción (máximo 5) escribiremos la url pública de nuestro archivo index.php
En este ejemplo es:
http://ingenieria.syscom.mx/shelly/?nombre=puerta1
donde:
http://ingenieria.syscom.mx/shelly/ es la ruta del archivo index.php, (acepta sólo http)
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
http://ingenieria.syscom.mx/shelly/?nombre=puerta2
Para la puerta 3
http://ingenieria.syscom.mx/shelly/?nombre=puerta3
Para la puerta 4
http://ingenieria.syscom.mx/shelly/?nombre=puerta4
Pasos en ShellyPro1 (segunda generación, http/https)
Abrimos la app de Shelly Cloud, y damos 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, (acepta http y https)
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
Resultado
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;