import sys
import time
from pythonnet import load
load("coreclr")
import clr
import keyboard
import time

clr.AddReference('EngineIO64') # Chargement du fichier EngineIO64.DLL

from EngineIO import *

print("Home I/O & Python sont bons amis ! Merci à pythonnet !")

# iniatialisation des capteurs gérant les intrusions
# 46 est le numéro attribué au capteur de température de la pièce G. (cf . https://docs.realgames.co/homeio/fr/memory-addresses/)
temp_pieceG2 = MemoryMap.Instance.GetFloat(46, MemoryType.Input)
# 47 est le numéro attribué à la température désirée pour la pièce G. (cf . https://docs.realgames.co/homeio/fr/memory-addresses/)
but_temp_pieceG2 = MemoryMap.Instance.GetFloat(47, MemoryType.Input)
# 87 est le numéro attribué au radiateur 2 de la pièce G. (cf . https://docs.realgames.co/homeio/fr/memory-addresses/)
# Valeurs booléennes : True si le radiateur est allumé, False sinon.
radiateurG2 = MemoryMap.Instance.GetBit(87, MemoryType.Output)

# Récupération de l'horaire :
instant = MemoryMap.Instance.GetDateTime(0, MemoryType.Input)
print(instant.Value)
horaire = str(instant.Value)
print(horaire)
print(horaire[11:19])
print(horaire[11:13])

while True: # boucle infinie pour que les événements soient pris en compte en continu sans limite de temps.
    # la variable heure stocke l'heure de la journée de la simulation
    instant = MemoryMap.Instance.GetDateTime(0, MemoryType.Input)
    horaire = str(instant.Value)
    heure = ...  # s'aider des affichages obtenues en console lors de l'exécution des lignes 26 à 30
    # cas de la nuit
    if int(...) < ... or int(...) >= ...: # heure est de type chaîne de caractère ; la fonction int sert à transformer cette chaîne en entier.
        if ... > temp_pieceG2.Value:
            radiateurG2.Value = ...  # le booléen radiateurG2.Valeur vaut soit True, soit False
        else:
            radiateurG2.Value = ...
    else:
        if ...:
            radiateurG2.Value = True
        else:
            radiateurG2.Value = False

    # mise à jour de l'état des variables en mémoire
    MemoryMap.Instance.Update()

# Libération des variables en mémoire
MemoryMap.Instance.Dispose()




