# Website Overview
###### tags: `SmartBridge`
* Every web page is the **index.\[php|html\]** in roots of documentaries.
* For pages need any kind of graph, **Chart.js** is required and also **Webpack** to bundle up the imported modules.
## Login
In */api/login/*
*Purpose: Enable different view for different users and supervisors*
* Uses new mysqli instead of the old PDO
* Mainly showed pages
* **index.html:** Login page. Login form submit to src/authenticate.php.
* **/src/var.php:** Stores names and urls of each service into an arrays.
* **/src/authenticate.php:**
* Verify the input ID and password.
* If password is successfully verified, begin a new session and redirect.
* **/src/home.php:** Page will redirect here for normal users (root == 0). Here list all available services for the account.
* **/src/superuser.php:** Page will redirect here for superusers. Include functions below:
* In `USER` tab, superusers can modify other accounts' profiles. Including profiles management and the creation of a new user.
* profiles.php, typeManager.php, createUser.php, passManager.php, remark.php(stores notes in profile), delete_UID.php, runtime_log.php
* In `ADD UID` tab, superusers can add UID to corresponded user accounts.
* handle-file.php
* In `IP SERVER` tab, superusers can add IP or domain name, OTA to corresponded user accounts. It is used for classifying China clients and others.
* handle-uid-server.php
### Function Type
This is **type** code for all the website.
* `gw_slip`
* Falldown detection
* **Name:** 跌倒偵測
* `body_temp_{type}`
* **type:** Refer to [link](https://hackmd.io/@lziTWi3qQcCAGYzl1jomhA/Bk9q7bkQK/edit) for more info about each type
* `temp_hum`
* Environment temperature of pig farm
* **Name:** 養豬場溫度與濕度
* `human_detect`
* Human detection
* **Name:** 人員偵測
* `distri_temp`
* distribution box temperature
* **Name:** 電箱溫度
### Database (smarcxvi_customer_login)
* account
* Stores all the account
* **user_id(Primary Key)**
* Unique ID for each user
* **username**
* Unique username for each user
* Only 3 capital letter
* **password**
* Hashed password the password
* **root_access**
* Whether the user have root access
* Information of normal user can be edited by root user
* 0: not root user, 1: root user
* account_info
* Store function availble to that account
* **user_id(Primary Key)**
* Unique ID for each user
* **function_type(Primary Key)**
* Type of function, mentioned above.
* **type(Primary Key)**
* Only for **body_temp** as function type
* Non body_temp will be set to **empty string**
* Refer to [link](https://hackmd.io/@lziTWi3qQcCAGYzl1jomhA/Bk9q7bkQK/edit) for more info about each type
* **max_temperature**
* Only valid for **body_temp** as function type
* **min_temperature**
* Only valid for **body_temp** as function type
## Falldown
### Database (smarcxvi_fall_down)
* heartbeat
* *Record heartbeat send by gateway*
* **uid:** UID of gateway
* **device:** Sensor number
* **timestamp:** Timestamp of upload, provided by the RESTful API. Don't use auto-fill in database.
* room_uid
* *Maps uid to room number*
* **room:** Room name/number
* **uid:** Contain 21 character. First 20 character is gateway UID, and the last character is number of device.
```uid = {gateway's uid}+{device number}```
* slippage_trigger
* *Record falldown trigger send by the sensor*
* **uid:** UID of gateway
* **device:** Sensor number
* **timestamp:** Timestamp of upload, provided by the RESTful API. Don't use auto-fill in database.
* uid_device
* *A record of UID and device that previously uploaded before*
* **uid:** UID of gateway
* **device:** Device number
## Human Temperature Management (not use)
*Purpose: Supposedly being used in a hospital or a nursing home, the purpose is to monitor the temperature of patients*
### Database (smarcxvi_human_management)
* gateway_uid: uid of gateway points to user name
* human_temperature: Store data for each uploaded sensor
* **gateway_uid**: uid of gateway
* **sensor_uid**: (0~7) the number of a sensor on a gateway
* **human_uid**: gateway_uid+sensor_uid
* **ta**: environment temperature
* **tb**: body temperature
* **timestamp**: time
* human_uid(not use)
* room_uid: room name point to human_uid
* temperature_threshold: the threshold of fever or hypothermia
## Human Detection (not use)
*Purpose: Detect human exist in places or not*
### Database (smarcxvi_human_detection)
* heartbeat_human_detect
* *Record sent by heartbeat*
* **uid**: 20 characters of uid
* **device**: device number given by gateway between 0~7
* **maxtemp**: max taget temperature
* **maxlocation**: max environment temperature
* **timestamp**
* rood_uid
* **room**:room name
* **uid**: varchar(21) {uid}+{device}
* triggered_human_detect
* *Data instert to this table when device is triggered (Someone enter or leave. Not update regularly)*
* **uid**:20 characters
* **device**: device number between 0~7
* **triggered**:leave(0), enter(1)
* **maxtemp**
* **maxlocation**
* **timestamp**
* detection_triggered
* Probably not use
## Face Recognition
### Database (smarcxvi_face_recog)
* human_info
* *Record of all the staffs/visitors/strangers/blacklisted that have passed through the gate*
* **human_id:** primary/unique key
* **name:** as defined
* **facename:** the file name of the picture of this person
* **birthday:** as defined
* **gender:** as defined
* **type:** identify whether this person is stranger(0), staff(1), blacklist(2), visitor(3)
* auth
* *Identify the gates a specific person can pass through*
* **human_id:** same with the human_id from `human_info`
* **gate_id:** a string and is updated(appended) when a new door is permitted for a person
* gate_permission
* *(backway) Identify the person with permission to pass through a gate*
* gate_log
* *Record of time when a specific person pass through a gate*
* **temp:** the temperature measured when this person passed through the gate
* **timestamp:** the time when this person passed through the gate
* device_config
* *A reference for calibration need during the update*
* **uid:** gateway uid
* **firmware**
* **gate_enable**
* **temp_calibration**
## Pig Farm Management
*Purpose: Monitor temperature and humidity of pig farms. Smart-plug system control fans in pig farms automatically*
### Database (smarcxvi_pig_temp_humid)
* gateway_uid
* *Record the gateway uid owned by the user*
* **name:** user name
* **uid:** gateway uid
* pig_temperature
* *Record of Temperature and Humidity measured*
* **gateway_uid:** 20 digits
* **sensor_uid:** 1 digit
* **pig_uid:** combination of gateway_uid and sensor_uid
* base_temp
* A control panel and record of what temperature and humidity wanted by the user
* **pig_uid:** combination of gateway_uid and sensor_uid
* **base_temp:** the max temperature wanted
* **smart_plug:** automatically open or turn off the fans
* **Status:** physical control mode(1), auto mode(2), site manual control mode(3)
* **compen_temp:** compensation temperature
* **compen_humid:** compensation humidity
* sensor_uid
* *Record the name of the sensor as desired*
* **sensor:** the name
* **uid:** sensor id
## Pregnant Pig Management
### Database (smarcxvi_pregnant_pig)
* gateway_uid: uid of gateway point to user name
* pig_temperature: Store data for each uploaded sensor
* **gateway_uid**: uid of gateway
* **sensor_uid**: (0~7) the number of a sensor on a gateway
* **pig_uid**: gateway_uid+sensor_uid
* **ta**: environment temperature
* **tb**: pig temperature
* **timestamp**: time
* room_uid: room name point to human_uid
* temperature_threshold: the threshold of fever or hypothermia
## Distribution Box
*Purpose: Monitor temperature of distribution boxes*
### Database (smarcxvi_sensor_temperature)
* gateway_uid: uid of gateway point to user name
* temperature: Store data for each uploaded sensor
* **uid**: uid of gateway (varchar(20))
* **device**: (0~7) the number of a sensor on a gateway
* **value**: the temperature of the distribution box
* **timestamp**: time
* uid_device: List the device numbers owned by the gateway