go-mess provides a rudimentary API for Festo's MES4 by querying directly into its database.
It doesn't work, it seems to race against the MES application in the database, resulting in what appears to be locking errors, but this requires further investigation.
go-mess
takes in database path as its first argument, but will default to FestoMES.accdb
when omitted:
E:\MES4>go-mess.exe
2020/09/01 09:29:17 opening FestoMES.accdb
2020/09/01 09:29:17 listening on :8000
There are three endpoints to this API, active
, previous
and changes
.
/active
This endpoint returns a JSON representation of all ongoing orders in the database:
$ http localhost:8000/active
HTTP/1.1 200 OK
Content-Length: 1123
Content-Type: text/plain; charset=utf-8
Date: Tue, 01 Sep 2020 07:34:00 GMT
[
{
"CNo": 0,
"Enabled": true,
"End": null,
"ONo": 5241,
"PlanedEnd": "2020-08-31T13:15:18+02:00",
"PlanedStart": "2020-08-31T13:14:31+02:00",
"Positions": [
{
"Carrier": null,
"End": null,
"Error": false,
"MainOPos": 0,
"ONo": 5241,
"OPos": 1,
"OpNo": 200,
"PNo": 1211,
"Part": {
"BasePallet": 25,
"Description": "Product No Fuse",
"LotSize": 0,
"MrpType": 1,
"PNo": 1211,
"Picture": "Pictures\\TransferFactory\\TF-Part-no-Fuses-Complete.png",
"SafetyStock": 0,
"Type": 3,
"WPNo": 4
},
"PlanedEnd": "2020-08-31T13:15:18+02:00",
"PlanedStart": "2020-08-31T13:14:31+02:00",
"Resource": {
"Automatic": false,
"DefaultBrowser": true,
"Description": "application module stacking magazine",
"IP": "172.20.3.1",
"ParallelProcessing": false,
"Picture": "Pictures\\TransferFactory\\ModulMagazinNeu2014.png",
"PlcType": 1,
"ResourceID": 65,
"ResourceName": "AM-MAG-IO",
"TopologyType": 1,
"WebPage": "http://192.168.0.6:8080/webvisu.htm"
},
"ResourceID": 65,
"Start": null,
"State": {
"Description": " not started yet",
"Short": "IDLE",
"State": 0
},
"StateID": 0,
"StepNo": 10,
"WONo": 0,
"WPNo": 4
}
],
"Release": "2020-08-31T13:14:58+02:00",
"Start": null,
"State": {
"Description": " not started yet",
"Short": "IDLE",
"State": 0
},
"StateID": 0
}
]
/previous
Requires the user to pass in ID's of the previous orders in question:
$ http "localhost:8000/previous?id=5224&id=5196"
HTTP/1.1 200 OK
Content-Length: 486
Content-Type: text/plain; charset=utf-8
Date: Tue, 01 Sep 2020 07:36:57 GMT
[
{
"CNo": 10004,
"Enabled": true,
"End": "2020-08-26T11:08:11+02:00",
"ONo": 5224,
"PlanedEnd": "2020-08-25T11:35:45+02:00",
"PlanedStart": "2020-08-25T11:35:32+02:00",
"Release": "2020-08-25T11:34:45+02:00",
"Start": "2020-08-26T11:03:50+02:00",
"State": 100
},
{
"CNo": 10001,
"Enabled": true,
"End": "2020-08-25T10:51:05+02:00",
"ONo": 5196,
"PlanedEnd": "2020-08-25T10:29:14+02:00",
"PlanedStart": "2020-08-25T10:27:57+02:00",
"Release": "2020-08-25T10:28:54+02:00",
"Start": "2020-08-25T10:28:49+02:00",
"State": 100
}
]
/changes
This endpoint has not been tested and may not work. It is supposed to accept WebSocket connections and emit changes to the active orders, but your mileage may vary.