---
# System prepended metadata

title: retrobox overlay

---

# retrobox overlay

## cahier des charges

l'overlay permetera de :

- savoir la liste des jeux installé
- installer un jeu
- enlever un jeu
- changer la langue
- changer des paramètres divers
- récupérer la santé du client (température, CPU, RAM, Espace Disque etc)
- récupérer la mémoire restante et totale
- récupérer le uptime
- récupérer l'usage cpu et ram
- récupérer l'IP de l'utilisateur
- récupérer le nom du réseau WIFI auquel la console est connecté
- récupérer le theme installé
- rajouter un theme :+1: 
- changer rapidement de thème
- rajouter des bios (se fera automatiquement lors de l'ajout d'un jeu :+1:) 
- pouvoir modifier le fichier wifikeyfile.txt, a partir de l'application
- Savoir si la console est sur l'écran HDMI ou le LCD
- Savoir quel périphériques est connectés sur la console (manettes, USB etc)
 
 Attention la console doit pouvoir rester fonctionnelle hors connexion pour cela il faut que le nodejs, en cas de déconnexion, retente toute les 1 min ou autre échelle de temps
 

## numéro de série

le numéro de série sera alors composé de 5 caractères possibilités 36 : `ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789` ce qui fait 36^5 possibilités soit plus de 60 millions de possibilitées

ex: A5V8D

ex: qr code

![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAE4UlEQVR4Xu2dwY7jMAxD2///6C6wt2aAPBCUM2vvm6sUWyJFWUnTzvvz+Xxe/h2DwFtCj+HybyISehafEnoYnxIqoachcFg+nqESehgCh6WjQiX0MAQOS0eFSuhhCByWjgqV0MMQOCwdFSqhhyFwWDq1Qt/v96OQtB/fUrzX9cl/Ovk6v/bz0O0ShgKUUBU6KlIVGsJJHUWFXhTaVtiVnysBtP60f7peWF+v6fXHhyICfHXCKUDkT/Y0n7ZgaT8JhQ4jocNvhaaATvun65GCtlcoDSHXBGkoIXsK6NP7U/ztkbW85Urod8lIaHjGqdBS43TGqFAV+oVAWjBpfbbrry7YtOMcd4ZKaIrApWTSCqeKS4cG2p/2o+tTO+2X5kfr/bgNmv60hQKmAOn61E77pYTR/rQfXV/qq/9uSwrIdMK0P93Iex+6eculISZVEK3XFgwJ4L9vuUSAhA7f+LeA0hkkoaD59AyLW8hmBTOdX7ze6ik3DYiGGFIw7UfXp3baj+zTglj+YIESIjslTC20HUpof4qf7NPrS2jY0umMJgLTDhSvN91y0wBS/7QlkgJSexpv6t8WzLhC0wRSfwm9R0xCw5abFmDqr0JDQlqFpwSl/r9OaBrwtD+dgTSE0BQ8He/q9eqWuzpAWl9CvxGS0EvFtC2PCnC1XUIl9CLxcChpK5QU1LZgGppWx9+uXyuUAEwfzVFCEvrwfehvVzgVGE29vx0/FTTZVeg/dmQQYWQfJ/Tp+7pUkalCW3+6fhovCQ2/sDxdQBJ6QWAa4OmhS4XSISGhtwj9cy03vc1JFUUtLlX8av+wvudftCbAKEAJJYQevg+V0Pt/VJUqOqXXlnv5TYgU8NX+jxPaTnEtINQR0vUJwOkjgfZL7bVCJfQechraUsLIX0IJIbhNosslFH7niFoePVxvAab96QigAmjttULpjEoBaBNKr28LgPKj9acLQEKHp1wiKC2AtEAlVEK/a8aWe/8T7du13LQlTPunLYz8KT4aqtL1aT2K58dtY/tlpXTDaX8CMFUIxUcEUDx0xtL+ZK/PUNpgtZ0AlNDVDAyvL6GXmaZtuQToMH8vannpfu1Q18ZD+8f5SOj3lJq2aAlNS+7i3wL4YyosX+Ns41GhD/+mPR0pxxPaJtgqiPYngqiBtOtTS6f1Kb76tmW6ZUjo/SssEnpBQIVCSajQ+2fb9GRoGr/lLTdVRHrGECCtPT0CqCWutkvow99tkdDwPnFa4SoUPjCmCp0mxJZLiMPUSITQ8nQ92WkIaRVHBUL5rbYfd4ZKaPlogir26SlXQiX0qwYIDirg1S2V1j++5RIAdCa3BD9dABI6/BpnWyBUgGSXUAm9f3ZJFUoVRteTndanoSltkeRP9jRe8l+uUAqA7CkgNFXTmZjG0xZImh/GN/1OUQvY9I0/AU4AUTy0PhFG9jg+Cc0gSzsAEUb2LLrX/K+gqNDvNw6IMLL/OqFpAKl/OhSRf2qnFtyul+LxI57pltsGRNcTYE+faaQwslO+qX18yk0DSP0l9B4xCfXBQqop/Z9EoFbok8G6FyMgoYzRVh4SuhVdHKyEMkZbeUjoVnRxsBLKGG3lIaFb0cXBSihjtJWHhG5FFwcroYzRVh4SuhVdHKyEMkZbeUjoVnRxsBLKGG3lIaFb0cXB/gE2az8OaO2QeAAAAABJRU5ErkJggg==)

## installation

A sh script is runned to install dependency and run deamon:

- nodejs & npm
- pm2 for deamon
- npm install
- pm2 start `index.js`

## actions

pour communiquer avec le server websocket le client et le serveur utilisent des actions un peut comme des routes http
une action est caractérisé par une route et un sens
chaque action est accompagné de paramètres lors de l'envoie et d'un corps lors du retour

liste des actions:

- first_start : CONSOLE > SERVER : Permet de signaler au serveur un nouveau client
- update_status : CONSOLE > SERVER : Permet de signaler au serveur un changement de status de la console, lors d'un démarrage par exemple
- check_status : CONSOLE > SERVER : toutes les 5 min cette action permet de s'assurer que la console est toujours allumé
- get_status : SERVEUR > CONSOLE : Récupérer le status de la console
- get_uptime: SERVEUR > CONSOLE
- get_healt: SERVEUR > CONSOLE : obtenir la température
- install_game : SERVEUR > CONSOLE
 
 ### exemple
 
 Le serveur envoie cette requête à l'overlay: 
 ```json
 {
     "auth": "JWT_TOKEN",
	 "type": "request",     
	 "action_name": "install_game",
	 "params": {
		 "game_id": "EPdQyyCiPs"		
	 }
 }
 ```
 
 Le client répond: 
 
 ```json
 {
	 "type": "response",
	 "action_name": "install_game",
	 "body": {
		 "success": true
	 }
 }
 ```


## Initialisation

Quand le nodejs démarre pour la première fois, le deamon envoie une requeste avec l'action `first_start` avec l'id de la console [WIP]