Python - Variable message no se borra

 
Vista:
sin imagen de perfil

Variable message no se borra

Publicado por Hercross (2 intervenciones) el 05/11/2021 13:24:57
Hola buenos días, estoy empezando con Python y tengo un problema.

Básicamente tomo el valor de temperatura de un sensor, y mando un email con el valor.

Todo bien, funciona todo, pero cada vez que mando un email, en el campo del mensaje, se me suma lo anterior con lo nuevo, por ejemplo, me manda un email con "La temp = 20ºC", hasta aquí todo bien, después de un tiempo, me vuelve a mandar un email con "La temp=20ºCLa temp=20ºC" y después "La temp=20ºCLa temp=20ºCLa temp=20ºC", no me lo borra sino que lo añade..

Este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
while True:
    try:
        # Print the values to the serial port
        message = " "
        temperature_c = dhtDevice.temperature
        humidity = dhtDevice.humidity
        temp = float("{:.1f}".format(temperature_c))
        print(temp)
        print(
            "Temp: {:.1f} ºC    Humidity: {}% ".format(
                temperature_c, humidity
            )
        )
        if temp == float("20.0"):
            print("Temperatura igual a 20ºC")
            message = "Temperatura de 20ºC"
        elif temp < float("20.0"):
            print("Temperatura inferior a 20ºC")
            message = "Temperatura inferior a 20ºC"
        else:
            print("Temperatura superior a 20ºC")
            message = "Temperatura superior a 20ºC"
 
        msg.attach(MIMEText(message, 'plain'))
 
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()
 
        server.login(msg['From'], password)
        server.sendmail(msg['From'], msg['To'], msg.as_string())
        server.quit()

Que puedo estar haciendo mal?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Variable message no se borra

Publicado por Antoni Masana (67 intervenciones) el 05/11/2021 21:20:26
No acabo de entender de donde sale "La temp = 20ºC" después de darle vueltas supongo que esto:

1
2
3
4
5
print(
            "Temp: {:.1f} ºC    Humidity: {}% ".format(
                temperature_c, humidity
            )
        )

Aunque cualquier parecido es pura coincidencia.

Creo que el problema es que no pones saltos de línea en los print()
En esta línea "Temp: {:.1f} ºC Humidity: {}% ".format( el simbolo % sobra o falta una n para hacer el salto de línea.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Variable message no se borra

Publicado por Hercross (2 intervenciones) el 08/11/2021 13:30:42
Perdón, entre prueba y prueba, al final he subido un ejmplo que no tiene mucho que ver con lo que he dicho..

El problema está aquí:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if temp == float("20.0"):
 
            print("Temperatura igual a 20ºC")
 
            message = "Temperatura de 20ºC"
 
        elif temp < float("20.0"):
 
            print("Temperatura inferior a 20ºC")
 
            message = "Temperatura inferior a 20ºC"
 
        else:
 
            print("Temperatura superior a 20ºC")
 
            message = "Temperatura superior a 20ºC"

msg.attach(MIMEText(message, 'plain'))


server = smtplib.SMTP('smtp.gmail.com:587')

server.starttls()


server.login(msg['From'], password)

server.sendmail(msg['From'], msg['To'], msg.as_string())

server.quit()
[/code]

Me manda el mail correctamente, pero como mensaje me pone "Temperatura de 20ºC", el sieguiente mail me pone "Temperatura de 20ºCTemperatura de 20ºC. me concatena el mensaje, en vez de solo mandarme "Temperatura de 20ºC" o el texto que corresponda...

He probado a una vez mandado el mail a borrar la variable message=" ", pero nada, lo mismo.

También he probado a borralo al principio de la secuencia, un while, para que cada vez que la haga me borre la variable, y nada.

P.D: ese % es parte del string, para mostrar en porcentaje de humedada, pero eso es en el print y ahí no tengo problemas, los tengo en el mail..

No se si ahora me he explicado un poco mejor..

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar