---
# System prepended metadata

title: Sub Product Vision (Vertical 3 - Camada Edge )

---

# Sub Product Vision (Vertical 3 - Camada Edge ) 


# Entities 

| Entity  | Description | 
| ------  | ----------- | 
| User    | A manufacturing employee | 
| Machine | The entity responsible for changing the product state | 


# Product Backlog

Camada responsável por receber os dados provenientes do modelo. Analisar os dados de forma a perceber se está tudo a correr como é suposto na linha de produção e dar um output.


|   Id   | As a ... | I want to be able to ... | So that ... | Priority |
| ------ | -------- | ------------------------ | ------------| -------- |
| Epic 1 |   User   | predict if a machine needs maintenance | I know that its settings must be changed |  high | 
| E1 US1 |   User   | know the production deficit rate | I can know if the machine should be replaced or if it should be fixed | medium | 
| E1 US2 |   User   | know the rate of products that follows the machine's quality specification | I can know if a component is malfunctioning |  medium | 
| E1 US3 |   User   | visualize the machine statistics |  I can manage the machine's settings,  identifying possible failure or improvement scenarios  | high |
| E1 US4 |  User    | visualize the consumed energy by product | I can tell if the machine should be replaced or fixed | 
| Epic 2 |  Machine | know if I am entering a failure state | I can prevent further damage | medium | 
| E2 US5 |  Machine | know if I am overheating | avoid stopping the production line by decreasing the production rate and reporting the failure to other machines |
 

- taxa de produção 
- temperatura(num dado instante, medida ao longo dia)
- quality inspection
- 
=> Cycle:
- Machine telemetry
- Running status 
- Product/material information 



=> Downtime: What to track
- Start end end of downtime 

=> Defect data model 
- Category
- Type 
- Quantity 



=> Assumir velocidades de consumo 
=> Tipo de produções


# Sprint Backlog

- Criar dados modelo
    - materiais
    - máquinas
    - processos?
- Criar modelo relacional
- Criar base de dados (e como vamos dar merge com o resto?)
- 
- Geração de dados
- Docker Boilerplate
- Modelo para identificação de falhas em python
- Estudo dos dados (nossos dados não são reais?)
- Criar modelo de aprendizagem
- Definição do nosso vertical
    - User stories para o nosso vertical

 


# Dados
## Input
```json=
{
    
    //Unique identifyer of each machine
    "machineID": int,
    //Time of the reading
    "reading-time": datetime(mmhhYYYYMMDD),
    //The information from the machine, ie. not the headings
    "properties": {
        //Is machine up or down
        //1 - Up
        //2 - Down
        "status": 1 | 0,
        //The temperature read from a termomenter
        "temperature": float (celsius),
        //Pieces produced since last reading
        "piecesProduced": int,
        //Voltage consumed in reading moment
        "volt": float (Volts),
        //Avarage vabration since last reading
        "vibration": float (mm/s),
        //Pressure in moment of reading
        "pressure": float (psi),
        //Rotation in moment of reading
        "rotate" : float (Hz)
    }
}
```

## Output
```json=
//null means that the field is optional, 
//may not be present depending on the other fields
//ex.: If the status is ok, there's no error description
{
    //Unique identifyer of each machine
    "machineID": int
    //Danger level
    //OK - No error
    //Warning - Error may occur in the future
    //Critical - An error is about to occur
    //Failed - With the current reading the machine should already have failed 
    "status": "Ok" | "Warning" | "Critical" | "Failed",
    //Estimated time to fail if error is not fixed
    //Null if the current state will not lead to fail
    "time-untill-failure": null | datetime
    //Unique identifier of common errors
    "errorID": int
    //Description
    //Null if status is ok, there's no description needed
    "description": null | string
}
```

| Error ID | Error Description |
| --- | --- |
|  -1 | Unkown Error    |
|  0  |  No error       |
|  1  | Overheat        |
|  2  | Overvoltage     |
| ... | ...             |


## Sprint 3/outros

### Falhas
- Os valores default das máquinas deveriam ser uma range (máximo e mínimo) - mudar em MachineNode e no json do grafo.
- Verificar se o valor do sensor está dentro da range (MachineFailure secalhar deveria ser usado para todos os sensores em vez de usar o TemperatureFailure)
- Adicionar mais sensores: Voltage, Vibration, Pressure, Rotation
- Usar valores anteriores/médios de cada sensor para prever falhas
- Mensagem de output com códigos de erro ou outra alternativa.

### Tracking/Falhas do Produto
- taxa de produção de cada fase e total
- Máquina x faz controlo de qualidade dos produtos, calculando a taxa de produtos bem produzidos.

### Batches
(?)

