@City IoT Plataforma en la nube




iSys - Sistemas inteligentes IoT Soluciones









IoE.Systems

Tabla de contenido

1. Introducción. 5

1.1 Tipos de dispositivos compatibles. 5

1.2. Tipos de productos admitidos. 5

1.3. Protocolos de comunicación compatibles 5

1.4. Tecnología de comunicación admitida de los dispositivos 6

1.5. @City Cloud Server 6

1.5.1. Pasarelas de comunicación y servidor 7

1.5.2 Integración HTTP LoRaWAN 7

1.5.3. Interfaz de usuario 8

1.5.3. Derechos de acceso al servidor 8

1.6. Dispositivos inteligentes 9

1.6.1. CIoT - dispositivos GSM 9

1.6.3. BAS, BMS, IoT: dispositivos Ethernet y WiFi 9

1.6.2. IoT -Dispositivos LoRaWAN 9

1.7. Opciones de empresa a empresa (B2B) 9

2. @City IoT Funcionalidad de la plataforma 10

3. Página principal 11

4. Formulario principal 11

4.1. Encabezado 12

4.1.1. Vínculo con el hogar - (abre la tabla de resultados reales) 12

4.1.2. Casilla de verificación "X": abre / cierra el formulario de consulta 12

4.1.3. Casilla de verificación "V": abre / cierra los campos Formulario 12

4.1.4. Iconos gráficos: vínculos a los resultados de visualización (editables) 12

4.2. Forma: 12

4.2.1. Casilla de verificación "X": abre / cierra todo el formulario de consulta 12

4.2.2. CSS: seleccione el tema de visualización 12

4.2.3 Casilla de verificación Campos visibles: muestra / oculta la lista de filtros de campo 12

4.2.4. Pestaña: Nombre de la pestaña para agregar o eliminar 12

4.2.5. Agregar / quitar botones: agregue o elimine pestañas con el nombre en el campo de pestañas 12

4.2.6. Seleccionar el botón principal 12

4.2.7. Botón Deseleccionar todo 12

4.2.7. Botón Seleccionar todo 12

4.2.8. Ocultar filtro - Ocultar formulario 12 completo

4.2.9. Botón Ejecutar - Cambiar la configuración de los parámetros 13

4.2.10. Casilla de verificación "V": mostrar / campos de filtro alto. 13

4.3. Pestañas 13

4.4. Contenido de la tabla 13

4.4.1. Ejecutar: visualiza el tipo de resultado 13

4.4.2. Copiar (+/- enlaces) 13

4.4.3. Vínculos de celda de tabla 13

4.5. Orden de datos 13

4.6. Ejemplo 13

5. Mapas 15

5.1. Inicialización del mapa 15

5.2. Configuración opcional para la consulta 15

5.2.1. Modificar escala MAP (nivel de zoom) 16

5.2.2. IMEI (Seleccionar campo de dispositivo) 16

5.2.3. Lon, Lat (campos de coordenadas de longitud y latitud) 16

5.2.4. Modificar estilo MAP (tema) 16

5.2.5. DONDE Cláusula 16

5.2.6. Ejecutar (botón Ejecutar consulta) 16

5.2.7. Deseleccionar todo (eliminar todos los campos de la consulta) 17

5.2.8. Casilla de verificación "V" (formulario de campo Abrir / Cerrar) 17

5.2.9. Casilla de verificación "X" (Mostrar / Ocultar formulario de consulta) 17

5.3. Ejemplo 17

6. Mostrar resultados en la tabla 18

6.1. Inicialización de la tabla 18

6.2. Configuración opcional para la consulta 19

6.2.1. Ordenar - ordenar campo y ordenar ascendente / descendente 19

6.2.2. DB / IMEI - Seleccionar dispositivo 19

6.2.3. CSS: seleccione el estilo (tema de visualización) 20

6.2.4. Campos visibles: formulario 20 para mostrar / ocultar campos

6.2.5. Eliminar vacío: no mostrar columnas vacías 20

6.2.6. Casilla de verificación "X" (Mostrar / Ocultar formulario de consulta) 20

6.2.7. Where Cláusula (para limitación de datos) 20

6.2.8. Seleccione el botón principal (habilite los campos más comunes) 20

6.2.9. Botón Deseleccionar todo (Eliminar todos los campos de la consulta) 20

6.2.10. Ejecutar (botón Ejecutar consulta) 20

6.2.11. Casilla de verificación "V" (formulario de campo Abrir / Cerrar) 20

7. Gráfica de barras. 21

8. Gráficos históricos. 22

8.1. Inicialización de gráficos históricos 22

8.2. Configuración opcional de gráficos históricos 23

8.2.1. IMEI - (Seleccionar dispositivo para mostrar datos históricos) 23

8.2.2. Mínimo - límite del valor mínimo del primer campo 23

8.2.3. Max: límite del valor máximo del primer campo 23

8.2.4. "V": formulario 23 para mostrar / ocultar campos

8.2.5. Desde: establecer fecha / hora mínima (*) 23

8.2.6. Para: establecer fecha / hora máxima (*) 23

8.2.7. Casilla de verificación "X" (Mostrar / Ocultar formulario de consulta) 23

8.2.8. "Dónde" Cláusula 23

8.2.9. Botón Deseleccionar todo (Eliminar todos los campos de la consulta) 23

8.2.10. Ejecutar (botón Ejecutar consulta) 23

8.2.11. Casilla de verificación "V" (formulario de campo Abrir / Cerrar) 24

8.3. Variante de barras: (muestra solo los datos disponibles) 24

8.4. Variante continua (con los mismos datos): 24

9. Compatibilidad del navegador web 25

10. Personalización de temas 26

11. Actualización de algoritmos 27

12. Estructura de la base de datos 28

12.1. Estructura de las tablas "ithings_" y "*" 29

12.2. Tabla de cola de comandos de dispositivo (eventos) "* ​​_c" - estructura 30

12.3. Acceso a resultados de bases de datos - Nivel medio (lectura de datos) 30

12.3.1. Obtener estados actuales de todos los dispositivos 30

12.3.2. Obtener datos históricos del dispositivo 31

12.3.3. Obtener lista de dispositivos: campo único de los estados actuales con limitación 32


1. Introducción.

@City IoT Cloud Platform está dedicado "micro-nube" sistema para clientes individuales. La plataforma no se puede compartir y solo un cliente tiene acceso al servidor físico o virtual (VPS o servidores dedicados). El cliente puede seleccionar uno de los numerosos centros de datos de Europa o del mundo.

1.1 Tipos de dispositivos compatibles.

La plataforma @City IoT está dedicada a seguir los productos iSys.PL



1.2. Tipos de productos admitidos.

@City (eCity) Cloud IoT Platform es un sistema de varios tamaños para productos IP IoT (llamados juntos como @City Hardware o Dispositivos CioT ):


1.3. Protocolos de comunicación compatibles

La plataforma @City IoT admite los siguientes protocolos de comunicación:

Los datos enviados desde el controlador al servidor en la nube y viceversa se cifran en un formato binario único para obtener el tamaño de datos más bajo y una mayor seguridad. Cada socio obtiene su propia clave de cifrado única para la autorización del dispositivo, la verificación de la validez de los datos, etc.


Para dispositivos que no sean eHouse / eCity, podemos proporcionar algoritmos de cifrado individuales ( "C" código fuente) para cada socio para que el microprocesador proteja los datos antes de la comunicación.

En este caso, los datos están completamente seguros durante la comunicación bidireccional a través de los medios de comunicación públicos (internet, aire, etc. ).


1.4. Tecnología de comunicación admitida de los dispositivos

La plataforma @City IoT admite:


La plataforma @City IoT está dedicada a dispositivos / nodos:


1.5. @City Cloud Server

El software @City funciona en VPS (Servidor Privado Virtual) basado en Linux o Servidor Dedicado en el lado de Internet, dependiendo del rendimiento solicitado del Servidor (llamado servidor posterior):


Existen varias variantes de VPS dependiendo de:


Existen docenas de servidores dedicados dependiendo de:


La plataforma @City IoT está dedicada a un solo cliente:


Debido a que no es un servidor que se pueda compartir entre clientes, simplifica el acceso a la seguridad y los problemas de rendimiento. Por esta razón, solo el cliente es responsable de la seguridad, estabilidad, eficiencia, rendimiento de datos, etc. En caso de rendimiento insuficiente, el cliente puede comprar un plan superior (VPS o servidor dedicado), más óptimo para la funcionalidad y el rendimiento esperados.

En casos especiales "Cloud to cloud" la comunicación podría implementarse para la globalización y centralización de datos a áreas más grandes en lugar de la nube de múltiples clientes.

1.5.1. Pasarelas de comunicación y servidor

La comunicación de @City Server se realiza en base a una aplicación de bajo nivel para maximizar el rendimiento.

Las principales características de la aplicación @City Server son:

El software @City Server es el mismo para cada usuario y no se puede personalizar para diferentes clientes.

1.5.2 Integración HTTP LoRaWAN

Los controladores LoRaWAN están integrados con la nube @City a través de la interfaz HTTP (webhooks) disponible en la red / servidor de aplicaciones LoRaWAN.

Se admiten varios tipos de servidor de red / aplicaciones:

TTN (tiempo limitado "En el aire" y el número máximo de comandos enviados al controlador y no son compatibles con la actualización del firmware)

LoraWAN-Stack (Requiere alojamiento en un dispositivo físico con acceso a Internet).

LoraServer.Io (Requiere alojamiento en un dispositivo físico con acceso a Internet; solo envía datos al servidor y no admite actualización de firmware)



@City Cloud para controladores LoRaWAN se divide de la misma manera que para otras interfaces. Se trata en el capítulo anterior.

1.5.3. Interfaz de usuario

La interfaz de usuario se realiza con scripts PHP para extraer datos personalizados de @City Cloud Database. Utiliza un mecanismo de búsqueda muy elástico, basado en consultas SQL originales para limitar los datos deseados. La interfaz proporciona los resultados de la consulta en formato JSON para su posterior decodificación y procesamiento por parte de la "aplicación" Web front-end.

La interfaz de usuario original es la misma para cada usuario y no se puede personalizar para diferentes clientes.

La interfaz superpuesta puede ser creada por nuestro personal o en cooperación para asegurar la personalización para el cliente.

1.5.3. Derechos de acceso al servidor

Los derechos de acceso del cliente (al servidor físico) son limitados.

Acceso a archivos solo para el directorio de "plantillas" (archivos de texto nativos: .txt, .js, .css, .html):

Otros derechos de acceso:


iSys, personal de Intelligent Systems, tiene acceso ilimitado a todo el servidor, incluida la cuenta raíz y el acceso completo a la base de datos para el mantenimiento.

Bajo ciertas circunstancias, iSys puede otorgar derechos limitados adicionales al cliente (scripts PHP, archivos) después de verificar el código fuente, ejecutar pruebas, si no afecta la seguridad, estabilidad y rendimiento general del sistema.


1.6. Dispositivos inteligentes

1.6.1. CIoT - dispositivos GSM

Nuestros dispositivos contienen microcontrolador y módulo GSM / GPS / GNSS (2G..4G, NBIoT, CATM1) para la comunicación. El microcontrolador contiene un cargador de arranque encriptado para una actualización segura del firmware OTA. Esto permite crear muchas variantes del sistema basadas en el mismo "Dispositivo inteligente CIoT".


1.6.3. BAS, BMS, IoT: dispositivos Ethernet y WiFi


Los controladores Ethernet y WiFi permiten la comunicación basada en IP con el sistema (sin cobrar por la transferencia de datos al operador GSM). Estos dispositivos también tienen un cargador de arranque encriptado y los dispositivos pueden actualizarse a través de su interfaz nativa. Para WiFi tiene actualización de firmware OTA desde el servidor principal


1.6.2. IoT - Dispositivos LoRaWAN

LoRaWAN permite la transmisión de datos a distancias muy largas (hasta aprox. 15km). Este rango depende de la velocidad de transmisión de datos, la cantidad de datos, la urbanización del área y la eficiencia de las rutas de radio de los dispositivos.

Nuestros dispositivos incluyen un microcontrolador y un módulo LoRaWAN para la comunicación. El microcontrolador contiene un cargador de arranque encriptado para una actualización segura del software OTA. Esto le permite crear múltiples variantes del sistema basadas en el mismo "IoT smart device". Los dispositivos operan en la banda abierta ISM sin tarifas de suscripción adicionales. Es necesario utilizar LoRaWAN Gateways para cubrir toda el área con acceso a Internet. En el caso de puertas LoRaWAN existentes dentro del rango de dispositivos (configuradas para servidor TTN), es posible enviar información a través de ellas. La actualización del firmware requiere un servidor LoRaWAN de aplicación / red propia y un buen alcance para la comunicación.

1.7. Opciones de empresa a empresa (B2B)


Hay varias opciones para negocios y cooperación:

2. @City IoT Funcionalidad de la plataforma

La plataforma @City admite plantillas de front-end personalizables para visualización, consulta, limitación y procesamiento de datos (datos actuales / históricos):


Se puede acceder al Front-End del usuario a través de IP estática o dominio / subdominio / archivo de redirección de DNS, si está disponible.


Instalación ejemplar y de demostración (está habilitada solo para clientes potenciales).

Infórmenos cuando quiera probarlo, para permitir el acceso público a la plataforma.

Podría requerir una IP estática de una computadora remota para permitir la comunicación con la plataforma @City.


3. Pagina principal

La página principal se deja vacía intencionalmente por razones de seguridad: http: //% YourIP% / IoT /

Puede habilitarse y editarse individualmente y contener enlaces a todos los servicios disponibles de @Ciudad IoT Plataforma si es necesario


4. Forma principal

El formulario principal está destinado a crear nuevos ajustes preestablecidos y pestañas: http: //%IP%/IoT/que.php

Esta es la forma inicial para crear resultados, vistas y pestañas para cada configuración.




Descripciones (desde arriba y de izquierda a derecha)

4.1. Encabezamiento

4.1.1. Enlace de inicio - (abre la tabla de resultados reales)

4.1.2. "X" casilla de verificación - abre / cierra el formulario de consulta

4.1.3. "V" casilla de verificación - abre / cierra el formulario de campos

4.1.4. Iconos gráficos - enlaces a los resultados de visualización (editables)


4.2. Formulario:

4.2.1. "X" casilla de verificación: abre / cierra todo el formulario de consulta

4.2.2. CSS - Seleccionar tema de visualización

El archivo CSS Modify Visualization Theme debe existir en "plantillas / css /" directorio - listado automáticamente.

4.2.3 Campos visibles casilla de verificación: muestra / oculta la lista de filtros de campo

4.2.4. Pestaña: Nombre de la pestaña para agregar o eliminar

4.2.5. Agregar eliminar Botones: agregue o elimine pestañas con el nombre en Pestaña campo

4.2.6. Seleccione Core Botón

Seleccione los campos principales visibles en la tabla. Eso está actualizado automáticamente.

4.2.7. Deseleccionar todo Botón

Anule la selección de todos los campos (debe seguirse seleccionando algunos de ellos manualmente)

4.2.7. Seleccionar todo Botón

Seleccionar todos los campos (debe seguirse con anular la selección de algunos de ellos manualmente)

4.2.8. Ocultar filtro - Ocultar formulario completo

Esto es equivalente a todas las casillas de verificación (X)

4.2.9. Ejecutar Botón: cambiar la configuración de los parámetros

4.2.10. "V" casilla de verificación: mostrar / campos de filtro alto.


4.3. Pestañas

Pestañas creadas individualmente con nombres y preajustes (almacenadas en cfg / tabs.cfg expediente).

En realidad, el archivo contiene el nombre y la URL (separados por caracteres de tabulación).


4.4. Contenido de la tabla

Muestra todos los campos limitados por Filtro de campo.


Campos en la tabla:

4.4.1. Correr - vistas tipo de resultado

mapa- resultados del mapeo en el mapa (se puede seleccionar uno o más campos)

historia - gráficos históricos (se pueden seleccionar uno o más campos)

tab - muestra la tabla (se puede seleccionar cualquier combinación de campos)

bar - solo se muestra un campo en el gráfico de barras

Al presionar uno de sus valores, se abrirán nuevos resultados con los campos seleccionados (para la fila actual).


4.4.2. Copiar (+/- Enlaces)

Agregar / eliminar una pestaña con el nombre establecido en Pestaña campo. Utiliza solo campos seleccionados en la misma fila de la tabla.


4.4.3. Enlaces de celda de tabla

Al presionar cualquier otro nombre de campo, se iniciará la visualización de datos del campo seleccionado para la fila seleccionada.


4.5. Orden de datos


El orden de los campos mostrados es como su orden en el formulario de campos (sin embargo tm el campo siempre se envía al final del texto). Este orden solo se puede cambiar con la edición directa de los parámetros de la URL (parte del orden de los campos).


4.6. Ejemplo

Por ejemplo: Pestaña de configuración con Seguimiento de activos nombre y contiene mapa con tiempo y velocidad en el mapa

Toda la descripción se refiere a la fila donde "Map" el texto está en "Correr" columna.

  1. Ingrese su nombre "Seguimiento de activos" en Pestaña campo (sin comillas)

  2. Asegúrese de que todas las columnas no estén seleccionadas en la fila.

  3. Seleccione tm, gps_speed_km solo en la fila

  4. prensa + botón donde en la fila






5. Mapas

Los mapas se pueden iniciar desde MainForm con preconfiguración


5.1. Inicialización del mapa

La inicialización del mapa se realiza manualmente cuando se ejecuta directamente con el enlace: > http: //%IP%/IoT/maps.php


  1. El usuario debe anular la selección de todos los campos (presione Deseleccionar Botón)

  2. Presione alguna casilla de verificación para los campos mostrados (p. Ej. Ain5 (para el nivel de smog) y tm (para fecha / hora de medición)

  3. prensa "V" casilla de verificación para ocultar el formulario de campos

  4. prensa Ejecutar botón para ejecutar la consulta de la base de datos y mostrar la información actual de todos los sensores / dispositivos

  5. El mapa con datos se actualiza después de 30 segundos o más.


5.2. Configuración opcional para consulta

Configuración descrita de izquierda a derecha (en la captura de pantalla anterior).

5.2.1. Modificar la escala de MAP (nivel de zoom)

  1. El nivel de zoom se puede modificar usando los botones (+/-) para la escala (current_scale * 2 o current_scale / 2 respectivamente). Al presionar uno de estos botones se modificará automáticamente la escala.

  2. Otra forma es seleccionar Nivel de zoom en Zoom Campo Cuadro combinado y presione Ejecutar botón. En este caso, toda la Vista / Mapa se recarga y actualiza (lleva un tiempo durante la inicialización).

5.2.2. IMEI (Seleccionar campo de dispositivo)

IMEIEl campo contiene un ID único de dispositivo o un alias único para un dispositivo. La configuración predeterminada es * (asterisco) que muestra los valores más recientes y la geolocalización de cada dispositivo.

Si configura IMEI en cualquier otro valor, se mostrarán los datos históricos del dispositivo seleccionado. Tiene sentido solo para sensores móviles y en movimiento; de lo contrario, los resultados se superpondrán en el mapa en la misma posición.


5.2.3. Lon, Lat (Campos de coordenadas de longitud, latitud)

Establecer la posición central del mapa. Este campo se establece en la posición del cursor cuando se presiona el botón del mouse en el mapa.


5.2.4. Modificar estilo MAP (tema)

El estilo / tema del mapa se puede seleccionar entre Map Campo ComboBox (p. Ej. Oscuro, Gris, Topográfico).

Varios temas de mapa pueden tener diferentes niveles de zoom máximos, por lo que podría aplicar el tema adecuado para aumentar la escala del mapa.


5.2.5. Dónde cláusula

Where Clause se usa para una cadena de consulta adicional {WHERE part} para MySQL / MariaDB.

Esta cláusula se tiene en cuenta para construir una cadena QUERY completa para el resultado de la base de datos. Puede limitar los datos, el tiempo y cualquier otro valor al limitar el recuento de resultados. En este campo se deben utilizar los nombres de campo de la tabla original (no alias). P.ej.

  1. gps_speed_km> 10 // la velocidad es superior a 10 km / h

  2. ain5> 3 // ain5 es mayor que 3 (con conteo de partículas de 2.5um - nivel de smog)

  3. gps_speed_km> 10 y ain6> 5 // la velocidad es superior a 10 km / hy ain6 es superior a 5 (con conteo de partículas de 10um - nivel de smog)


5.2.6. Ejecutar (Botón Ejecutar consulta)

Se requiere presionar este botón para cambiar cualquier configuración, parámetro (excepto presionar +/- botones).

El mapa se carga desde el principio con nuevos ajustes preestablecidos.

El mapa no se carga en absoluto cuando no hay datos disponibles para la consulta actual.

5.2.7. Deseleccionar todo (Eliminar todos los campos de la consulta)

Después de presionar este botón, se debe seleccionar al menos un campo manualmente para mostrar los resultados en el mapa.


5.2.8. "V" Casilla de verificación (formulario de campo Abrir / Cerrar)

Esta casilla de verificación se utiliza para mostrar / ocultar el selector de campos para mostrar.


5.2.9. "X" Casilla de verificación (Mostrar / Ocultar formulario de consulta)

Esta casilla de verificación permite ocultar el formulario completo excepto ( +/- botones)


Los resultados en el mapa se actualizan y actualizan continuamente con nuevos valores.

5.3. Ejemplo

Por ejemplo, resultados de smog (sensor instalado en el automóvil): partículas de nivel de smog 2.5um (Ain5), velocidad (gps_speed_km), fecha / hora (tm), mapa (2 - topográfico), nivel de zoom 16,

Dónde cláusula:

"gps_fix = 3 y tm> "2019-02-18 00:00:00" y tm <"2019-02-19 00:00:00" y gps_speed_km> 0".

// GPS = resultados 3D válidos y fecha = 2019-02-18 y velocidad> 0 km / h



6. Mostrar resultados en la tabla

Muestra los resultados en la tabla.

En "Forma principal" prensa "mesa" elemento, después de seleccionar algunos campos para mostrar la tabla preconfigurada




6.1. Inicialización de tabla

Cuando la mesa está abierta desde el enlace http: //%IP%/IoT/que.php? func = tabs requiere una inicialización previa de la configuración.

Puede seleccionar campos visibles (presionando "Campos visibles" ) casilla de verificación.



  1. Presione todas las casillas de verificación requeridas para los campos mostrados

  2. Presione la casilla de verificación "Campos visibles" para ocultar el formulario de campos

  3. Presione el botón Ejecutar para ejecutar la consulta de la base de datos y mostrar la tabla


6.2. Configuración opcional para consulta

Los ajustes se describen de izquierda a derecha (en la captura de pantalla).

6.2.1. Clasificar - campo de clasificación y orden ascendente / descendente

Ordenar campo es equivalente a presionar el encabezado de columna.

6.2.2. DB / IMEI - Seleccione el dispositivo

IMEIEl campo contiene un ID único de dispositivo o un alias único para un dispositivo. Con valor vacío muestra tabla de valores más recientes.

Si configura IMEI en cualquier otro valor, se mostrarán los datos históricos del dispositivo seleccionado.


6.2.3. CSS - seleccionar estilo (tema de visualización)

6.2.4. Campos visibles - Mostrar / Ocultar formulario de campos

6.2.5. Eliminar vacío - No muestre columnas vacías

6.2.6. "X" Casilla de verificación (Mostrar / Ocultar formulario de consulta)

6.2.7. Dónde Cláusula (por limitación de datos)

Este es un sufijo para la cadena de consulta adicional de MySQL / MariaDB {WHERE part}

Esta cláusula se tiene en cuenta para construir la cadena QUERY completa para el resultado de la base de datos. Puede limitar los datos, el tiempo y cualquier otro valor al limitar el recuento de resultados. En este campo se deben utilizar los nombres de campo de la tabla original (no alias). P.ej.

  1. gps_speed_km> 10 // la velocidad es superior a 10 km / h

  2. ain5> 3 // ain5 es mayor que 3 (con conteo de partículas de 2.5um - nivel de smog)

  3. gps_speed_km> 10 y ain6> 5 // la velocidad es superior a 10 km / hy ain6 es superior a 5 (con conteo de partículas de 10um - nivel de smog)


6.2.8. Seleccione Core Botón (habilitar los campos más comunes)


6.2.9. Deseleccionar todo Botón (Eliminar todos los campos de la consulta)

Después de presionar este botón, se debe seleccionar al menos un campo manualmente para mostrar los resultados en el mapa.


6.2.10. Ejecutar (Botón Ejecutar consulta)

Se requiere presionar este botón para cambiar cualquier configuración, parámetro (excepto presionar +/- botones).

La mesa se recarga desde el principio con nuevos ajustes preestablecidos.



6.2.11. "V" Casilla de verificación (formulario de campo Abrir / Cerrar)

Esta casilla de verificación se utiliza para mostrar / ocultar el selector de campos para mostrar.



Los resultados de la tabla se ordenan según Clasificar ajuste de campo. El orden de clasificación se puede cambiar presionando el encabezado de la fila (una vez para una dirección dos veces para otra dirección).

Algunos resultados en columnas se vinculan a más pantallas de visualización (codificados).


Cuando se muestran datos históricos para el dispositivo, debe limitarse para no mostrar la información completa del historial, ya que puede provocar problemas de rendimiento o falta de memoria.


7. Gráfica de barras.

Los gráficos de barras deben ejecutarse desde el formulario principal presionando un solo campo en la fila "Barra".

Muestra barras ordenadas normalizadas al valor máximo, de mayor a menor orden.

Es útil para comprobar rápidamente resultados extremos y realizar algunas acciones.





El evento Mouse Over mostrará información adicional para el dispositivo.


8. Gráficos históricos.

Los gráficos históricos se pueden iniciar desde MainForm al presionar la columna seleccionada en la fila "Historial" (para un solo campo).

Para varios campos en la fila "Historial", los campos deseados deben estar marcados y el enlace "Historial" debe presionarse en la columna "Ejecutar".

Los resultados históricos están limitados a las últimas 24 horas + las próximas 24 horas (para eventuales gráficos de actualización), cuando no se establecieron límites.

8.1. Inicialización de gráficos históricos


Los gráficos históricos cuando se abren desde el enlace principal requieren inicialización como otros resultados, cuando se abren desde el enlace sin parámetros de preferencias.

Se pueden seleccionar varios campos para mostrar varios elementos. También se puede configurar en Formulario de filtro de campo.




  1. Presione todas las casillas de verificación requeridas para los campos mostrados

  2. Presione la casilla de verificación "Campos visibles" para ocultar el formulario de campos

  3. Presione el botón Ejecutar para ejecutar la consulta DB y mostrar la tabla


8.2. Configuración opcional de gráficos históricos

Elementos descritos de arriba a abajo y de izquierda a derecha (en la captura de pantalla).

8.2.1. IMEI - (Seleccione Dispositivo para mostrar datos históricos)

IMEIEl campo contiene un ID único de dispositivo o un alias único para un dispositivo. Con el valor * (asterix) muestra una tabla de valores más recientes que no tiene sentido.

Si configura IMEI en cualquier otro valor, se mostrarán los datos históricos del dispositivo seleccionado.

8.2.2. Min - limitar el valor mínimo del primer campo

8.2.3. Máx. limitar el valor máximo del primer campo

8.2.4. "V" - Mostrar / Ocultar formulario de campos

8.2.5. De: establecer fecha / hora mínima (*)

8.2.6. A: establecer fecha / hora máxima (*)

8.2.7. "X" Casilla de verificación (Mostrar / Ocultar formulario de consulta)

8.2.8. "Dónde" Cláusula

Cláusula para limitar los resultados de los datos MySQL / MariaDB Cadena de consulta adicional {WHERE part}.

Esta cláusula se tiene en cuenta para construir una cadena QUERY completa para el resultado de la base de datos. Puede limitar los datos, el tiempo y cualquier otro valor al limitar el recuento de resultados. En este campo se deben utilizar los nombres de campo de la tabla original (no alias) y una sintaxis SQL válida. P.ej.

  1. gps_speed_km> 10 // la velocidad es superior a 10 km / h

  2. ain5> 3 // ain5 es mayor que 3 (con conteo de partículas de 2.5um - nivel de smog)

  3. gps_speed_km> 10 y ain6> 5 // la velocidad es superior a 10 km / hy ain6 es superior a 5 (con conteo de partículas de 10um - nivel de smog)


8.2.9. Deseleccionar todo Botón (Eliminar todos los campos de la consulta)

Después de presionar este botón, se debe seleccionar al menos un campo manualmente para mostrar los resultados históricos.


8.2.10. Ejecutar (Botón Ejecutar consulta)

Se requiere presionar este botón para cambiar cualquier configuración, parámetro (excepto mostrar campos o panel de consulta). La mesa se recarga desde el principio con nuevos ajustes preestablecidos.

8.2.11. "V" Casilla de verificación (formulario de campo Abrir / Cerrar)

Esta casilla de verificación se utiliza para mostrar / ocultar el selector de campos para mostrar.


8.3. Barras Variante: (muestra solo los datos disponibles)



8.4. Continuo variante (con los mismos datos):



El puntero del mouse muestra los valores de las mediciones y la fecha / hora.

9. Compatibilidad del navegador web


Función / navegador WWW

Cromo 72

FireFox 65

Borde

Ópera 58

Mapas

+

+

+

+

Histórico

+

+ (*)

+

+

Barras

+

+

+

+

Pestañas

+

+

+

+


* - Firefox no admite el selector de fecha / hora (el campo de texto debe editarse manualmente con el formato de fecha y hora adecuado).

Internet Explorer no es compatible (use Borde en lugar de)

No se probaron otros navegadores web.



10. Personalización de temas

Las páginas web se basan en un archivo de plantilla general ubicado en "plantillas" directorio "* .template".

Además, cada tipo de página contiene:

  1. Archivo "* .head" que almacena el encabezado de la página (enlaces, CSS importado, JavaScript Archivos, etc. )

  2. Archivos "* .foot" que almacenan el pie de página de la página (enlaces, etc. )


El tema de visualización se puede cambiar de acuerdo con las preferencias del usuario haciendo frente y modificando archivos CSS. Los archivos CSS se encuentran en "plantillas / css" directorio. Se pueden usar diferentes temas de páginas web para crear optimizados para, por ejemplo. impresión, SmartPhones, plantillas de PAD.


Pestañale vistas: tiene un campo seleccionable para elegir el archivo CSS para una modificación completa del tema (almacenado en "templates / css / tabs" directorio).




Map puntos de vista - el tema general es seleccionado por "mapa" escriba el cuadro combinado. Además, hay un archivo CSS predeterminado "templates / css / map.css" que contiene algunas funciones adicionales como ocultar / colorear resultados en función de sus valores. El resto de este archivo CSS está prácticamente limitado a formularios de consulta y campo.


La mayoría de @City Platform Se aceptan archivos PHP para visualización cssparámetro con valor de nombre de archivo para el tema (sin extensión). El archivo debe estar ubicado en el directorio "templates / css" y el nombre distingue entre mayúsculas y minúsculas.


Algunos elementos de la visualización del tema se encuentran directamente en el archivo JavaScript ubicado en "plantilla / js" directorio.

Principal @Ciudad texto"@ City.js" se encuentra en el directorio superior. No hay posibilidad de modificación en este ubicación, sin embargo, la secuencia de comandos se puede copiar a "templates / js" directorio y modificado allí. El uso de un script individual requiere actualizar todos los archivos de encabezado.

11. Actualización de algoritmos


Algunos sensores únicos pueden requerir funciones de cálculo dedicadas.

No hay posibilidad de actualizar y mantener múltiples variantes de @City Server Software, Interfaz PHP de front-end, lo que causaría muchos problemas, versiones, errores.

La mejor y más fácil forma de lograrlo es actualizar los archivos de "superposición" para mostrar correctamente el valor / descripción.

Los scripts JS originales son archivos de texto abiertos y pueden adaptarse a las necesidades del cliente. Como se indicó en el capítulo anterior, deben copiarse a "templates / js" directorio donde el cliente tiene derechos de acceso para modificación.


Aspecto técnico sobre programación de @Ciudad El sistema no es un tema de este documento, sin embargo, el desarrollador web con conocimientos básicos de HTML y JS puede personalizar la aplicación web de front-end según las necesidades individuales del cliente.


12. Estructura de la base de datos


@City Base de datos con un nombre "IoT" o "* IoT" se divide en tablas (donde el asterisco es el prefijo según el servidor de alojamiento, si es necesario). La base de datos se puede observar en PHPAdmin (aplicación web) en el enlace http: //% IP% / phpmyadmin




Conjunto de tablas para cada dispositivo (dónde * {asterix} es la dirección IMEI - ID único):

Otras tablas:



12.1. Estructura de las tablas "ithings_" y "*"

12.2. Tabla de cola de comandos de dispositivo (eventos) "* ​​_c" - estructura


Esta tabla es una cola de eventos / comandos para cada dispositivo y tiene la siguiente estructura:



12.3. Acceso a resultados de bases de datos - Nivel medio (lectura de datos)


Se puede acceder a los datos sin la aplicación web front-end. El sistema @City contiene un script con funciones de nivel medio. Los resultados se devuelven en formato JSON.


12.3.1. Obtenga los estados actuales de todos los dispositivos

http: //%IP%/IoT/que.php? func = devsjson


La consulta devuelve todo "_ithings" tabla (estados actuales de todos los dispositivos) en formato JSON:

[{ "país":"", "ciudad":"", "continente":"", "país":"", "región":"", "subregión":"", "subsubregion":"", "ciudad":"", "distrito":"", "calle":"", "street_nr":"", "item_nr":"", "gps_lat":"0000.0000N", "gps_long":"00000.0000E", "tm":"2019-02-10 12:56:23", "creación":"2019-02-09 18:12:38", "último":"0000-00-00 00:00:00", "eventos":"", "usuario":"", "aprobar":"", "imei":"351580051067110", "sn":"", "estado":"73000200000f360033026800240000002c002c002dffffffffffffffff5b63000001c1000001c2000000000000000009250a4f0a760a7a0a750a780a7e0000031d032205fc34029b025c025600460eb305320000", "código hash":"", "addr":"", "fwnr":"", "discapacitado":"", "gsm_nr":"", "vendedor":"", "zona horaria":"", "dst":"", "rssi":"91", "rsrp":"99", "gps_lat":"0000.0000N", "gps_long":"00000.0000E", "gps_hdop":"", "gps_alt":"", "gps_fix":"4", "gps_cog":"", "gps_speed_km":"", "gps_sat":"", "eventos":"", "out1":"0", "out2":"0", "out3":"0", "out4":"0", "out5":"0", "out6":"0", "out7":"0", "out8":"0", "out9":"0", "out10":"1", "out11":"0", "out12":"0", "out13":"0", "out14":"0", "out15":"0", "out16":"0", "En 1":"0", "en 2":"0", "en 3":"0", "in4":"0", "in5":"0", "in6":"0", "in7":"0", "in8":"0", "in9":"0", "in10":"0", "in11":"0", "in12":"0", "in13":"0", "in14":"0", "in15":"0", "in16":"0", "ain1":"3894", "ain2":"51", "ain3":"616", "ain4":"36", "ain5":"0", "ain6":"44", "ain7":"44", "ain8":"45", "sens1":"0", "sens2":"0", "sens3":"0", "sens4":"0", "sens5":"0", "sens6":"0", "sens7":"0", "sens8":"0", "dimm1":"255", "dimm2":"255", "dimm3":"255", "dimm4":"255", "dimm5":"255", "dimm6":"255", "dimm7":"255", "dimm8":"255", "int1":"-16776767", "int2":"450", "int3":"", "int4":"", "int5":"", "int6":"0", "texto 1":"", "texto2":"", "texto3":"", "texto4":"", "texto5":"", "texto6":"" }]

12.3.2. Obtener datos históricos del dispositivo

Consultar datos históricos de un solo dispositivo por IMEI nr:

http: //%IP%/IoT/que.php? func = imeijson & imei = 356345080018095


Debido a que la tabla completa puede contener millones de filas, debe limitarse con la cláusula WHERE para no colgar el servidor.

Parámetros adicionales de URL:

func - imeijson

imei - IMEI del dispositivo

campo - campos que se mostrarán en los resultados (lista separada por coma)

min - valor mínimo para el primer campo de la lista

max - valor máximo para el primer campo de la lista

sot - campo para ordenar

tm - el campo se agrega automáticamente a los resultados.

where - cláusula where para limitar los datos


Ejemplo:

Queremos obtener el siguiente resultado

para dispositivo con imei=356345080018095

mostrar campos: ain5, ain6, gps_lat, gps_long

y limite ain5 en el rango ( 1, 10000 ) - debe ser el primer campo de la lista

y GPS tener datos validos (gps_fix = 3)

y fecha / hora (tm) from2019-02-14 23:00:19 to 2019-02-15 00:00:00


Cadena de URL construida:

http: //%IP%/IoT/que.php? func =imeijson& imei =356345080018095& campo =ain5, ain6, gps_lat, gps_long& min =1& max =1000& donde =gps_fix = 3 y tm> "2019-02-14 23:00:19" y tm <"2019-02-15 00:00:00"


Resultados de la consulta:

[{ "ain5":"66","ain6":"68","gps_lat":"5202.7326N","gps_long":"02115.8073E","tm":"2019-02-14 23:04:31" }, { "ain5":"67","ain6":"76","gps_lat":"5202.7328N","gps_long":"02115.8075E","tm":"2019-02-14 23:05:42" }, { "ain5":"63","ain6":"77","gps_lat":"5202.7328N","gps_long":"02115.8074E","tm":"2019-02-14 23:06:05" }, { "ain5":"58","ain6":"77","gps_lat":"5202.7328N","gps_long":"02115.8075E","tm":"2019-02-14 23:06:32" }, { "ain5":"58","ain6":"68","gps_lat":"5202.7328N","gps_long":"02115.8076E","tm":"2019-02-14 23:06:55" }]

12.3.3. Obtener lista de dispositivos: campo único de los estados actuales con limitación

Esta función devuelve datos limitados de la tabla "_ithings"


http: //%IP%/IoT/que.php? func = fieldjson & field = ain5 & min = 13 & max = 5000



Parámetros:

func - fieldjson

campo - campo que se mostrará en los resultados - imei y tm se agregan automáticamente

min - valor mínimo para el campo

max - valor máximo para el campo


Para la cadena de consulta anterior, devuelve resultados de ain5, imei, tm campos:

Si ain5 está en el rango (13,5000)


Resultados de la consulta:

[{"imei":"353080090069142", "tm":"2019-03-14 11:51:01", "ain5":"14" },

{"imei":"356345080018095", "tm":"2019-02-20 09:13:04", "ain5":"115" },

{"imei":"karczew", "tm":"2019-03-07 13:08:22", "ain5":"103" }]