#!/usr/bin/env python
# coding=utf-8

# clear && python3 /home/scripts_python/test.py

import os, sys
from PIL import Image
import time
import math

#----------------------------------------------------------------------------------------------
# HR2HA : calcul de l'humidité absolue
#----------------------------------------------------------------------------------------------
def HR2HA(temp, HR, pression) :
	
	ew  = 6.112 * math.exp( ( 17.62 * temp ) / ( 243.12 + temp ) )
	fp  = 1.0016 + 3.15E-6 * pression - (0.074/pression)
	ewp = fp * ew
	
	e   = ewp * HR
	TK  = 273.15 + temp
	HA1 = e / ( 461.5 * TK )
	rho_air_sec = 100 * pression * 0.028966 / ( 8.3144621 * TK )
	absolute_humidity  = HA1 * 1000 / rho_air_sec

	return absolute_humidity

def rgb2hex(color):
    """Converts a list or tuple of color to an RGB string

    Args:
        color (list|tuple): the list or tuple of integers (e.g. (127, 127, 127))

    Returns:
        str:  the rgb string
    """
    return f"#{''.join(f'{hex(c)[2:].upper():0>2}' for c in color)}"


diagramme_T_HR   = Image.open("/home/scripts_python/diagramme_confort_T_HR.bmp")
diagramme_pixels = diagramme_T_HR.load()


#im = Image.open("/home/scripts_python/diagramme_confort_T_HR.bmp")

#print(time.time())
#pix = im.load()
#print(time.time())

'''
x = 20
y = 20
couleur = (pix[x,y])
print(hex(couleur[0]),hex(couleur[1]),hex(couleur[2]))

x = 310
y = 10
couleur = (pix[x,y])
print(hex(couleur[0]),hex(couleur[1]),hex(couleur[2]))

x = 160
y = 333
couleur = (pix[x,y])
print(hex(couleur[0]),hex(couleur[1]),hex(couleur[2]))
'''

AQCM05_TEMP_avec_filtre = 25.0
AQCM05_HUMI_avec_filtre = 40
BME680_PRES_avec_filtre = 950

HA = HR2HA( AQCM05_TEMP_avec_filtre, AQCM05_HUMI_avec_filtre, BME680_PRES_avec_filtre)
print( "HA = " + "%.1f"  % (HA) + " g/kg")

x = int( ( AQCM05_TEMP_avec_filtre - 13.0 ) * 320/16 )
y = int( (25.0 - HA) * 500/25 )
print( "x="+str(x)+" ; y="+str(y))

couleur = diagramme_pixels[x,y]
couleur_str = rgb2hex(couleur)
print(couleur_str)


print(AQCM05_TEMP_avec_filtre, AQCM05_HUMI_avec_filtre, BME680_PRES_avec_filtre, hex(couleur[0]),hex(couleur[1]),hex(couleur[2]))

