diff --git a/admin/views/settings/datasource/datasource.html b/admin/views/settings/datasource/datasource.html
index e83bb3d4..b4583f82 100644
--- a/admin/views/settings/datasource/datasource.html
+++ b/admin/views/settings/datasource/datasource.html
@@ -28,7 +28,7 @@
{{ datasource.gateway.name }} |
{{ datasource.protocol }} |
{{ datasource.connection }} |
- {{ datasource.last_seen_datetime | date:'yyyy-MM-dd HH:mm:ss'}} |
+ {{ datasource.last_seen_datetime }} |
{{'SETTING.EDIT' | translate}}
diff --git a/myems-api/README.md b/myems-api/README.md
index 1053428b..ee33ecef 100644
--- a/myems-api/README.md
+++ b/myems-api/README.md
@@ -312,7 +312,7 @@ Result in JSON
| uuid | string | Data Source UUID |
| protocol | string | Protocol Type Supported: 'modbus-tcp', 'modbus-rtu', 'bacnet-ip', 's7', 'profibus', 'profinet', 'opc-ua', 'lora', 'simulation', 'controllogix', 'weather', 'mysql', 'sqlserver', 'postgresql', 'oracle', 'mongodb', 'influxdb' |
| connection | json | Connection data in JSON. BACnet/IP example: {"host":"10.1.2.88"}, Modbus TCP example: {"host":"10.1.2.88", "port":502}, S7 example: {"host":"10.1.2.202", "port":102, "rack": 0, "slot": 2}, ControlLogix example: {"host":"10.1.2.88","port":44818,"processorslot":3} OPC UA example: {"url":"opc.tcp://10.1.2.5:49320/OPCUA/SimulationServer/"} |
-| last_seen_datetime| float | Indicates the last time when the data source was seen in a number of milliseconds since January 1, 1970, 00:00:00, universal time |
+| last_seen_datetime| string | Indicates the last time when the data source was seen in local timezone |
| status | string | 'online' or 'offline' determined by last seen datetime|
* GET all Data Sources
diff --git a/myems-api/core/datasource.py b/myems-api/core/datasource.py
index 54d5961c..836bf888 100644
--- a/myems-api/core/datasource.py
+++ b/myems-api/core/datasource.py
@@ -3,7 +3,7 @@ import simplejson as json
import mysql.connector
import config
import uuid
-from datetime import datetime, timezone
+from datetime import datetime, timezone, timedelta
from core.userlogger import user_logger
@@ -41,18 +41,26 @@ class DataSourceCollection:
cursor.close()
cnx.disconnect()
+ timezone_offset = int(config.utc_offset[1:3]) * 60 + int(config.utc_offset[4:6])
+ if config.utc_offset[0] == '-':
+ timezone_offset = -timezone_offset
+
result = list()
if rows is not None and len(rows) > 0:
for row in rows:
+ if isinstance(row['last_seen_datetime_utc'], datetime):
+ last_seen_datetime_local = row['last_seen_datetime_utc'].replace(tzinfo=timezone.utc) + \
+ timedelta(minutes=timezone_offset)
+ last_seen_datetime = last_seen_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
+ else:
+ last_seen_datetime = None
meta_result = {"id": row['id'],
"name": row['name'],
"uuid": row['uuid'],
"gateway": gateway_dict.get(row['gateway_id']),
"protocol": row['protocol'],
"connection": row['connection'],
- "last_seen_datetime":
- row['last_seen_datetime_utc'].replace(tzinfo=timezone.utc).timestamp()*1000
- if isinstance(row['last_seen_datetime_utc'], datetime) else None
+ "last_seen_datetime": last_seen_datetime
}
result.append(meta_result)
@@ -192,15 +200,24 @@ class DataSourceItem:
raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND',
description='API.DATA_SOURCE_NOT_FOUND')
+ timezone_offset = int(config.utc_offset[1:3]) * 60 + int(config.utc_offset[4:6])
+ if config.utc_offset[0] == '-':
+ timezone_offset = -timezone_offset
+
+ if isinstance(row['last_seen_datetime_utc'], datetime):
+ last_seen_datetime_local = row['last_seen_datetime_utc'].replace(tzinfo=timezone.utc) + \
+ timedelta(minutes=timezone_offset)
+ last_seen_datetime = last_seen_datetime_local.strftime('%Y-%m-%dT%H:%M:%S')
+ else:
+ last_seen_datetime = None
+
result = {"id": row['id'],
"name": row['name'],
"uuid": row['uuid'],
"gateway": gateway_dict.get(row['gateway_id']),
"protocol": row['protocol'],
"connection": row['connection'],
- "last_seen_datetime":
- row['last_seen_datetime_utc'].replace(tzinfo=timezone.utc).timestamp()*1000
- if isinstance(row['last_seen_datetime_utc'], datetime) else None
+ "last_seen_datetime": last_seen_datetime
}
resp.body = json.dumps(result)
|