Sign inSign up

flythingscrew/flydatasync

By flythingscrew

•Updated 2 months ago

Image
1

1.4K

flythingscrew/flydatasync repository overview

⁠Data Sync System with FlyThings Servers

⁠Technologies

The used technologies are:

  • Python 3.7 or higher
  • FlyThings Server
  • FlyThings PyThon Client

⁠Version Generate

⁠Version file
$> dos2unix README.md
$> VERSION=$(sed -n '0,/### Version/{n;p}' README.md | xargs)
$> echo $VERSION > version
$> cat version
⁠Docker build
  • First generate the version file
  • Remove old builds
$> docker rmi flythingscrew/flydatasync:$VERSION
$> docker rmi flythingscrew/flydatasync:latest
  • Later execute next commands:
$> docker build --rm --no-cache -t flythingscrew/flydatasync:$VERSION .
$> docker tag flythingscrew/flydatasync:$VERSION flythingscrew/flydatasync:latest

⁠Installation

⁠Docker deploy as container
$> docker stop flydatasync && docker rm flydatasync
  • Deploy container
$> docker run -d --name flydatasync -it \
    -v /opt/.installation/env/flydatasync.yml:/etc/flythings/sync.yml \
    flythingscrew/flydatasync:latest
  • Check logs that all its fine
$> docker logs flydatasync -f --tail 20
⁠Deploy as visualcrossing
$> docker run -d --name flydatasync -it \
    -v /opt/.installation/env/flydatasync.yml:/etc/flythings/sync.yml \
    flythingscrew/flydatasync:latest visualcrossing
⁠Deploy as hidroconta
$> docker run -d --name flydatasync -it \
    -v /opt/.installation/env/flydatasync.yml:/etc/flythings/sync.yml \
    flythingscrew/flydatasync:latest hidroconta

⁠Config File

El fichero de configuración se divide en 4 bloques de configuración:

⁠src & dist

Se define la plataforma y el modo de autenticación de donde se extraerán los datos (src) o hacia donde se insertarán (dist)

⁠Propiedades
  • host: define la url completa al api de la plataforma (sin / final)
  • auth: existen 2 modos de autenticación, por token o por usuario/contraseña
    • token: token de acceso al api configurados en la plataforma
    • user: usuario de acceso al api
    • password: contraseña de acceso al api
    • type: en caso de seleccionar usuario/contraseña escoge el tipo de autenticación (DEVICE | USER, por defecto DEVICE)
⁠Ejemplo
host: http://localhost:8090
auth:
    user: admin
    password: admin
host: http://localhost:8090
auth:
    user: admin
    password: admin
    type: USER 
host: http://localhost:8090
auth:
    token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ3b3Jrc3BhY2UvMSIsInNjb3BlcyI6Im9ic2VydmF0aW9uX3dyaXRlLHNlcmllc193cml0ZSxkZXZpY2Vfd3JpdGUsaW5mcmFzdHJ1Y3R1cmVfd3JpdGUsYWN0aW9uX3NvY2tldF93cml0ZSxhbGVydF93cml0ZSxsb2dfd3JpdGUsb2JzZXJ2YXRpb25fcmVhZCxzZXJpZXNfcmVhZCxkZXZpY2VfcmVhZCxpbmZyYXN0cnVjdHVyZV9yZWFkLGFjdGlvbl9zb2NrZXRfcmVhZCxhbGVydF9yZWFkLGxvZ19yZWFkIiwibmFtZSI6InN5bmNfdG9rZW4ifQ.xTyElFRQ0hIClfbNDFh0l5F66JaHVnLsuvXxannlACs 
⁠data

Configuración de los dispositivos y/o series que se quieren sincronizar.

⁠Propiedades de búsqueda

Existen multiples modos de configuración:

  • Sincronización de Series:
    • Por series id: identificador numérico interno de la series
    - src: # Sync series by seriesid
        series_id: <series number id>
    
    • Por identificadores de las series: nombres de inserción de dispositivo, modulo y propiedad
    - src: # Sync series by device, procedure and property identifiers
        device: <device identifier>
        procedure: <procedure identifier>
        property: <property identifier>
    
    • Por identificadores de las series sin dispositivo: nombres de inserción modulo y propiedad (todas las series que se encuentren)
    - src: # Sync series by procedure and property identifier
        procedure: <procedure identifier>
        property: <property identifier>
    
  • Sincronización de Dispositivo: se sincronizarán todas las series del dispositivo
    • Por device id: identificador numérico interno del dispositivo
    - src: # Sync single device by number id
        device_id: <device_number_id>
    
    • Por identificador de dispositivo: nombre de inserción del dispositivo
    - src: # Sync single device by identifier name
        device: <device_identifier>
    
  • Sincronización múltiple de dispositivos:
    • Filtrado por tipo de dispositivos
    - src: # Sync all devices with type specified
        device_type: <device src types to search>
    
    • Todos
    - src: # Sync all devices
        all: true
    
⁠Propiedades de sobreescritura

Por cada modo de sincronización se puede sobreescribir la estructura de los datos a insertar en la plataforma de destino de la siguiente manera:

  • Sincronización de Series:
dist:
  device_name: <device name to override>
  device: <device identifier to override>
  procedure: <procedure identifier to override>
  property: <property identifier to override>
  unit: <unit to override>
  • Sincronización de Dispositivo o Dispositivos:
dist:
  device_name: <device name to override>
  device_type: <device type to override>
  device: <device identifier to override>
⁠Ejemplos
  - src:
      series_id: 4019
  - src:
      device: 0348JVJ
      procedure: Default
      property: Neto
  - src:
      procedure: Default
      property: Neto
  - src:
      series_id: 4019
    dist:
      device_name: Camion 0348JVJ
      device: 0348JVJ-modificado
      procedure: Defecto
      property: Super Peso
      unit: gramos
  - src:
      device: 0348JVJ
      procedure: Default
      property: Neto
    dist:
      device_name: Camion 0348JVJ
      device: 0348JVJ-modificado
      procedure: Defecto
      property: Super Neto
      unit: gramos
  - src:
      device_type: MILKCHAIN_FARM_ENVIRONMENTAL
    dist:
      device_type: FARM_ENVIRONMENTAL
  - src:
      device: 0413FMK
  - src:
      device_id: 1955
    dist:
      device_name: Camion 9937HLF
⁠config

Configuraciones generales de ejecución del sistema.

⁠Propiedades
  • num_samples: número de muestras a enviar entre peticiones de observaciones (Por defecto: 1000)
  • sync_infrastructures: activa la sincronización de infraestructuras y sus metadatos (Por defecto: False)
  • sync_from_date: timestamp desde cuando se quiere ejecutar la sincronización (Por defecto: None)
  • sync_full_observations: activa la búsqueda completa de muestras (Por defecto: False)
  • enable_cron: activa el cron de integración periodica de datos (Por defecto: False)
  • interval_cron: periodicidad en segundos de ejecución del cron (Por defecto: 3600)
  • flythings_timeout: timeout para las peticiones de FlyThings (Por defecto: 1000)
  • sync_device_name: activa la sincronización del nombre de dispositivos desde src hacia dist (Por defecto: True)
⁠Ejemplos
  sync_metadata: false
  sync_infrastructures: false
  sync_metadata: false
  sync_infrastructures: false
  num_samples: 1000
⁠visualcrossing

Sistema de integración con el API de VisualCrossing

⁠Propiedades
  • dist: es necesaria la configuración de dist, comentada anteriormente
  • config: de las propiedades de configuración global se utilizan: flythings_timeout y enable_cron
  • visualcrossing: listado de integraciones de visualcrossing, donde se añade como clave el nombre del Foi/estación meteorológica y como valor la Url de integración de dicha estación.
⁠Ejemplos
dist:
  host: http://localhost:8090
  auth:
    token: 
    
config:
  flythings_timeout: 60
  enable_cron: false

visualcrossing:
  Manzaneda Weather: https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/42.2713889%2C-7.291758333333333?unitGroup=metric&include=hours%2Ccurrent&key=ZMM2U9XUSJ6UV37L4L49NQACY&contentType=json
⁠hidroconta

Sistema de integración con el API de hidroconta

⁠Propiedades
  • dist: es necesaria la configuración de dist, comentada anteriormente
  • config: de las propiedades de configuración global se utilizan: flythings_timeout, enable_cron y sync_from_date
  • username: nombre de usuario para la integración con hidroconta
  • password: contraseña de usuario para la integración con hidroconta
⁠Ejemplos
dist:
  host: http://localhost:8090
  auth:
    token: 
    
config:
  flythings_timeout: 60
  enable_cron: false
  sync_from_date: 1669849200000

hidroconta:
  username: Espina-Delfin
  password: Vilagarcia
⁠Estructura completa
src:
  host: <host>
  auth:
    token: <token>
    user: <user>
    password: <password>
dist:
  host: <host>
  auth:
    token: <token>
    user: <user>
    password: <password>

config:
  sync_infrastructures: <enable infrastructures synchronization/ Default False>
  sync_from_date: <optional/ timestamp from sync data>
  sync_full_observations: <enable full observations sync/ Default False>
  num_samples: <optional/ number of samples to send by insertion request>

data:
  - src: # Sync all devices
      all: true
  - src: # Sync all devices with type specified
      device_type: <device src types to search>
    dist:
      device_type: <device type to override>
  - src: # Sync single device by identifier name
      device: <device_identifier>
  - src: # Sync single device by number id
      device_id: <device_number_id>
    dist:
      device_name: <optional / device name to override>
      device_type: <optional / device type to override>
      device: <optional / device identifier to override>
  - src: # Sync series by device procedure and property names
      device: <device identifier>
      procedure: <procedure identifier>
      property: <property identifier>
    dist:
      device_name: <device name to override>
      device: <device identifier to override>
      procedure: <procedure identifier to override>
      property: <property identifier to override>
      unit: <unit to override>
  - src: # Sync series by seriesid
      series_id: <series number id>
    dist:
      device_name: <device name to override>
      device: <device identifier to override>
      procedure: <procedure identifier to override>
      property: <property identifier to override>
      unit: <unit to override>

Tag summary

Content type

Image

Digest

sha256:d1162cc3d…

Size

146.7 MB

Last updated

9 months ago

docker pull flythingscrew/flydatasync