# Banc ECS Diehl

Banc d'enregistrement des mesures faites avec un "[Compteur Energie Thermique DIEHL SHARKY 774 compact](https://www.compteur-energie.com/compteur-energie-thermique-clim-sharky-775.htm)" (Diehl - SHARKY 774 BI)

Ce banc est plus qu'inspiré du [banc-tempsurf-ds18b20](https://gitlab.lowtech.fr/pdm/projets/labo/pub/banc-tempsurf-ds18b20/) lui même plus qu'inspiré de [PvMonit](https://pvmonit.zici.fr/)

* [Mode d'emploi](doc/Mode d'emploi banc ECS.pdf) pour ce banc ECS Diehl

![a3a1401b60afc6e646c95d4f9fb0d76016d6d8c3](doc/a3a1401b60afc6e646c95d4f9fb0d76016d6d8c3.jpeg)

## Pré-requis

* Un raspberry pi (0 ici mais un 2, 3, 4 fonctionnera) avec : 
  * [Raspbian](https://raspberry-pi.fr/telechargements/) installé
  * Interface 1 Wire active (raspi-config) pour les sondes ds18b20
  * Interface SPI active (raspi-config) pour les amplificateurs thermocouples
* [Compteur Energie Thermique DIEHL SHARKY 774 compact](https://www.compteur-energie.com/compteur-energie-thermique-clim-sharky-775.htm)"
* [M-Bus Master Hat](https://www.packom.net/m-bus-master-hat/) (pour la communication entre le raspberry pi et le compteur d'énergie)

## Carte SD prêt à l'emploi

Une carte SD prêt à l'emploi [contactez nous](https://www.afpma.pro/contacts/).

La notice pour l'usage de cette carte SD est dans le fichier **[doc/Deployer_image_carte_SD.md](doc/Deployer_image_carte_SD.md)**

## Sinon : installation

### Dépendance

```bash
apt install python3 python3-pip
```

Lib Python ds18b20 : https://github.com/rgbkrk/ds18b20

```bash
pip3 install ds18b20 ConfigParser
```

Lib Python pour thermocouple MAX31855 : https://github.com/adafruit/Adafruit_CircuitPython_MAX31855

```bash
pip3 install adafruit-circuitpython-max31855
```

### Récupération des sources

Récupération du code source :

```bash
cd /opt/
git clone https://gitlab.lowtech.fr/pdm/projets/labo/bancs-acqusition/banc-mesure-temp-surface-DS18B20.git
cd banc-mesure-temp-surface-DS18B20
```

### Installation de l'interface web (option)

Option pratique pour les "non geek"

![doc/screenshot-interface.png](README.assets/screenshot-interface.png "Screenshot")

Rendre le fichier de configuration accessible en écriture pour l'interface web : 

```bash
chmod 777 /opt/banc/config.ini
chmod 777 /opt/banc/releves -R
# ou 
chown www-data:www-data /opt/banc/config.ini
chown www-data:www-data /opt/banc/releves -R
```

Installation des dépendances :

```
aptitude install lighttpd php-cgi  php-xml php7.3-json
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
```

On change la configuration de lighttpd :

```
service lighttpd stop
```

Configuration du serveur http, avec le fichier  /etc/lighttpd/lighttpd.conf :

```diff
- server.document-root        = "/var/www/html/"
+ server.document-root        = "/opt/banc/"
```

On applique la configuration :

```
service lighttpd start
```

Télécharger la dernière version de [ttyd](https://github.com/tsl0922/ttyd/releases) (pour un raspberry pi c'est la version ARM) pour la placer dans le /opt :

```bash
wget -O /opt/ttyd https://github.com/tsl0922/ttyd/releases/download/1.7.2/ttyd.arm
chmod +x /opt/ttyd
```

Dans le fichier rc.local il faut ensuite ajouter le ttyd au démarrage du raspberry pi. Ajouter ceci avant "exit 0" :

```
/opt/ttyd -p 8022 /opt/banc/start-menu.sh > /tmp/ttyd.log 2>/tmp/ttyd-error.log &
```

C'est prêt, rdv sur http://IPdeVotrePi ou http://pi.local

## Configuration

Toute la configuration se trouve dans le fichier config.ini

### Général

Configuration général dans le fichier config.ini : 

```ini
[general]
# Répertoire de stockage des relevés (en csv)
csv_dir="releves"
# Temps entre 2 mesures (en minute)
delai=5
# Nombre de messure
nb_mesure=500
# Note : la durée du test est donc = delai * nb_mesure
```

## Test des sondes

Des scripts de tests se trouvent dans le répertoire "tools" vous pouvez lancer : 

* ds18b20-list.sh : pour lister les sondes avec leur ID + affichage de la température
* test-max31855.py : pour tester la présence de thermocouple (attention il faut éditer le script et le code n'est plus identique à celui de l’acquisition, à prendre donc avec de la distance...)

## Lancement de l’acquisition

### Depuis l'interface web

/!\ il y a certaines difficultés sur Firefox, vous pouvez essayer sur Chromium ou Chrome si la mention "press < to reconnect" persiste... 

Choix 1

Pour stopper : CTRL + C

### En ligne de commande

Pour lancer l’acquisition : 

```
python3 aquisition.py 
```

On peut stopper l’acquisition par un CTRL + C au besoin

Les résultats (sauf modification) sont à récupérer dans le dossier "releves"

Exemple : 

```
#############################################################################
######## Banc de test / Aquisition des mesures
#############################################################################

La configuration (config.ini) détermine : 
 * que le fichier csv de relevé est :  releves/2021-02-15_11-26.csv
 * qu'il y aura  500  messures
 * que l'interval entre 2 mesures sera de  5 minutes
Le script d'aquisition est donc partie pour tourner  41.666666666666664 heures

Messure N° 0
"tparoi 1" = 20.1
t1 = 31.937
t2 = 29.312
"Vitre" = 33.0
t4 = 30.187
t5 = 27.375
t6 = 30.125
t7 = 32.0
t8 = 29.562
t9 = 30.187
t10 = 31.312
t11 = 29.375
t12 = 28.875
t13 = 30.187
t14 = 27.062
t15 = 30.0
t16 = 31.375
t17 = 30.375
t18 = 31.125
t19 = 28.562
t20 = 29.687
"Plancha" = 33.75
"Foyer" = 45.75
"Evac" = 32.75
"tparoi 2" = 19.9
"tair" = 20.4
Fin de la mesure, on patiente 300 s
-
```

Vous devriez obtenir un fichier CSV de ce type : 

> "temps_min",0,5
>
> "temps_sec",0,319
>
> "tparoi 1",20.1,20.1
>
> "t1",31.937,31.812
>
> "t2",29.312,29.187
>
> "t3",33.0,33.0
>
> "t4",30.187,30.062
>
> "t5",27.375,27.25
>
> "t6",30.125,30.062
>
> "t7",32.0,31.937
>
> "t8",29.562,29.437
>
> "t9",30.187,30.125
>
> "t10",31.312,31.187
>
> "t11",29.375,29.312
>
> "t12",28.875,28.812
>
> "t13",30.187,30.062
>
> ...

## Exemple

Exemple de graphique qu'il est possible de générer avec ces données : 

![336c3a9fe39ea4e0ad5d6c3d7c6459fa2193e2fa](doc/336c3a9fe39ea4e0ad5d6c3d7c6459fa2193e2fa.png)

## Auteur

Association [AFPMA](https://www.afpma.pro/)

* [David Mercereau](https://david.mercereau.info/contact/) pour la partie développement logiciel
* Damien Lehman pour la conception, test, documentation

## Licence AGPL v3

https://www.gnu.org/licenses/agpl-3.0.fr.htmlgnouse
