# EInk service - 1.0
EInk service contains function to work with hardware screens, displaying images, rendering and dithering.
## Configuration
Some configuration may be defined on this service :
| Environment variable | Description | Additional informations |
| -------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| SCREEN_WIDTH | screen width | if not specified, 3200 by default |
| SCREEN_HEIGHT | screen height | if not specified 1800 by default |
| SCREEN_DISPLAY_POSITION | display position (integer) | encoded values:
0 : Horizontal
1 : Horizontal flipped
2: Vertical
3: Vertical flipped |
| SCREEN_PALETTE | used palette (integer) | encoded values:
0 : 25 inch eink display |
| UNFITTED_IMAGE_DISPOSITION | in case the image does not properly fit in the screen, this define the position in the screen | 0: TopLeft
1: Centered |
| BACKGROUND_COLOR | color background for images that are not fitting the whole screen (default to white) | |
| EINK_DEVICE | Eink screen driver | 0: T1000
1: T2000
2 :T2000 pipelined display as eink suggest |
RQ : on cloud the given orientation is tooked :
https://github.com/GHA-Group/e-tabelone/issues/122
Note , GPIO command, used for triggering the power on and off for the display. This can be configured on the command line.
| Env Variable | description | |
| ----------------- | ------------------------------------------------------------ | --------------------------------- |
| GPIO_MODE | define the usage of gpio in the display | 0 => no gpio, 1 => gpio activated |
| GPIO_PIN_NUMBER | mode 1 : gpio pin number | |
| GPIO_DELAY_BEFORE | mode 1: gpio delay in ms to want before sending the display action | |
| GPIO_DELAY_AFTER | mode 1 : gpio delay after the display to switch off the display using the gpio | |
## Detailed commands
### eink_display_draw
this function handle some image composition and additional drawing,
| Parameter | Description | |
| ------------------ | ------------------------------------------------------------ | ---- |
| DRAWINGINSTRUCTION | this is a json encoded string containing the drawing commands | |
| OUTPUTFile | the generated output file (in .eink file format) | |
Drawing instruction has the following structure :
```json
{
"base_eink_image": null,
"empty_eink_image_configuration": {
"width": 3200,
"height": 1800
},
"instructions": []
}
```
instructions contains commands for drawing, these are described below
#### Drawing introduction
the encoded string start with a specific header telling if the drawing start from a file, or an empty white screen, with the proper width and height
one of the two `base_eink_image` or `empty_eink_image_configuration` property has to be populated.
#### Drawing instructions
in the instructions array, one can put several instructions to make images:
| Drawing instruction | | example |
| ------------------- | ----------------------------------------- | ------------------------------------------------------------ |
| DrawText | draw a text at the specific location | {
"DrawText": {
"text": "Hello, world!",
"color": [
255,
0,
0
],
"x": 300,
"y": 0,
"font_size": 35,
"width": 500,
"height": 35
}
}, |
| DrawQrCode | draw a qrcode, at a specific location, | {
"DrawQrCode": {
"qrcode": "QRCode value",
"x": 300,
"y": 400,
"width": 100,
"height": 100
}
} |
| DrawImage | draw a file at a specific location | |
| DrawSvg | draw a svg content at a specific location | |
example :
```
{
"base_eink_image": null,
"empty_eink_image_configuration": {
"width": 3200,
"height": 1800
},
"instructions": [
{
"DrawText": {
"text": "Hello, world!",
"color": [
255,
0,
0
],
"x": 300,
"y": 0,
"font_size": 35,
"width": 500,
"height": 35
}
},
{
"DrawText": {
"text": "Hello, world!",
"color": [
0,
0,
0
],
"x": 300,
"y": 700,
"font_size": 35,
"width": 500,
"height": 35
}
},
{
"DrawQrCode": {
"qrcode": "QRCode value",
"x": 300,
"y": 400,
"width": 100,
"height": 100
}
}
]
}
```
### Sample for using the eink service using the admincli / admin_web commands
#### Redefine the screen orientation
Once the eink service is deployed, one can stop the service and reconfigure it, to change the orientation, for example :
```
stop_app('eink-1.0')
activate_app('eink-1.0', { "SCREEN_DISPLAY_POSITION":"2" })
start_app('eink-1.0')
```
this will configure the screen in a vertical position
To check if the new parameters are properly tooked, Go to the admin_web page, and look in the deployed_applications if the parameters are correctly positionned along the "eink" application