# Temperatur_Sender_1.py
# Sensor: LM75BD
# 14.07.2024

#####################################################################################
#                            Import und Instanziierungen                            #
#####################################################################################

from time import sleep     
from machine import UART, SPI, Pin, I2C
import vga1_bold_16x32 as font2
import st7789
import sys
from lora import send_command, read_response, response_to_list, lora_init, send_message

# Display:
spi = SPI(1, baudrate = 20_000_000, polarity = 1, sck = Pin(18), mosi = Pin(19))
display = st7789.ST7789(spi, 135, 240, reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3)
display.init()
display.fill(0) # Display löschen

# UART:
uart1 = UART(1, baudrate = 57600, tx = 12, rx = 13)

# I2C:
i2c = I2C(1, scl = Pin(22), sda = Pin(21), freq = 100_000)  

# LM75BA
def get_temp():
    i2c_addr = 0x48  # HEX-Adresse (7-Bit, also ohne Read/Write-Bit)
    raw_val = i2c.readfrom_mem(i2c_addr, 0, 2)
    temp_val = raw_val[0] + raw_val[1]/256
    return str(temp_val)

#######################################################################################
#                                                                                     #
#                         Hauptprogramm: temperatur_sender_1.py                       #
#                                                                                     #
#######################################################################################

lora_address = lora_init(uart1)
display.text(font2, 'LORA-ADR: ' + lora_address, 5, 10)
if lora_address == '???':
    display.text(font2, 'Resetten!', 5, 80, st7789.RED)
    print('Keine Verbindung zum LORA-Modul!')
    print('RESET-Knopf am TTGO betätigen!')
    sys.exit() # Programm beenden, wenn keine Antwort vom LoRa-Modul

print('Die Sende-Schleife kann mit Strg-C beendet werden')
print()
while True:
    t = get_temp()
    print('jetzt senden: ', t)
    display.text(font2, 'senden: ' + t + '  ', 10, 60)
    send_message(uart1, 123, t)  # Zahl an Addr 123 senden
    print(read_response(uart1))
    sleep(20)  # Wartezeit zwischen zwei Botschaften
    print()

