diff --git a/1ano/2semestre/labi/tema01/src/cipher_ARC4.py b/1ano/2semestre/labi/tema01/src/cipher_ARC4.py new file mode 100644 index 0000000..c4df5d4 --- /dev/null +++ b/1ano/2semestre/labi/tema01/src/cipher_ARC4.py @@ -0,0 +1,32 @@ +import sys +import hashlib +from Crypto.Cipher import ARC4 + + +def generate_key(key): + if len(key) < 5: + # Gerar uma síntese de chave com SHA-256 + key = hashlib.sha256(key.encode('utf-8')).digest() + elif len(key) > 256: + # Usar apenas os primeiros 256 octetos + key = key[:256].encode('utf-8') + else: + key = key.encode('utf-8') + return key + + +def encrypt_file(file_path, key): + with open(file_path, 'rb') as file: + data = file.read() + cipher = ARC4.new(generate_key(key)) + ciphertext = cipher.encrypt(data) + sys.stdout.buffer.write(ciphertext) + + +if __name__ == '__main__': + if len(sys.argv) != 3: + print('Usage: python3 Ex4.py file key > file_to_send_encriptation', file=sys.stderr) + sys.exit(1) + file_path = sys.argv[1] + key = sys.argv[2] + encrypt_file(file_path, key) diff --git a/1ano/2semestre/labi/tema01/src/encrypt_decrypt_RSA.py b/1ano/2semestre/labi/tema01/src/encrypt_decrypt_RSA.py new file mode 100644 index 0000000..a788416 --- /dev/null +++ b/1ano/2semestre/labi/tema01/src/encrypt_decrypt_RSA.py @@ -0,0 +1,97 @@ +import os +import sys +import hashlib +from Crypto.Cipher import AES, PKCS1_OAEP +from Crypto.PublicKey import RSA + +BLOCK_SIZE = 16 + + +def generate_key(key): + if len(key) < BLOCK_SIZE: + # Gerar uma síntese de chave com SHA-256 + key = hashlib.sha256(key.encode('utf-8')).digest() + else: + # Usar apenas os primeiros 256 octetos + key = key[:BLOCK_SIZE].encode('utf-8') + return key + + +def pad_data(data): + pad_len = BLOCK_SIZE - (len(data) % BLOCK_SIZE) + padding = bytes([pad_len] * pad_len) + return data + padding + + +def unpad_data(data): + pad_len = data[-1] + return data[:-pad_len] + + +def encrypt_file(file_path, key, output_path): + with open(file_path, 'rb') as file: + data = file.read() + + # Gerar chave simétrica aleatória + symmetric_key = os.urandom(BLOCK_SIZE) + + # Cifrar dados do arquivo + cipher = AES.new(symmetric_key, AES.MODE_EAX) + ciphertext, tag = cipher.encrypt_and_digest(pad_data(data)) + + # Cifrar chave simétrica com chave pública RSA + with open(key, 'rb') as key_file: + recipient_key = RSA.import_key(key_file.read()) + cipher_rsa = PKCS1_OAEP.new(recipient_key) + encrypted_symmetric_key = cipher_rsa.encrypt(symmetric_key) + + # Concatenar nonce, tag, chave cifrada e dados cifrados em um único arquivo + with open(output_path, 'wb') as output_file: + output_file.write(cipher.nonce) + output_file.write(tag) + output_file.write(encrypted_symmetric_key) + output_file.write(ciphertext) + + +def decrypt_file(file_path, key, output_path): + with open(file_path, 'rb') as file: + data = file.read() + + # Separar nonce, tag, chave cifrada e dados cifrados + nonce = data[:16] + tag = data[16:32] + encrypted_symmetric_key = data[32:288] + ciphertext = data[288:] + + # Decifrar chave simétrica com chave privada RSA + with open(key, 'rb') as key_file: + private_key = RSA.import_key(key_file.read(), passphrase=input("Enter passphrase for private key: ")) + cipher_rsa = PKCS1_OAEP.new(private_key) + symmetric_key = cipher_rsa.decrypt(encrypted_symmetric_key) + + # Descriptografar arquivo + cipher = AES.new(symmetric_key, AES.MODE_EAX, nonce=nonce) + plaintext = cipher.decrypt_and_verify(ciphertext, tag) + + # Remover padding + plaintext = unpad_data(plaintext) + + # Escrever arquivo decifrado + with open(output_path, 'wb') as output_file: + output_file.write(plaintext) + + +if __name__ == '__main__': + if len(sys.argv) != 5: + print('Usage: python3 encrypt_decrypt_file.py encrypt|decrypt file key output_file', file=sys.stderr) + sys.exit(1) + + action = sys.argv[1] + file_path = sys.argv[2] + key = sys.argv[3] + output_path = sys.argv[4] + + if action == 'encrypt': + encrypt_file(file_path, key, output_path) + elif action == 'decrypt': + decrypt_file(file_path, key, output_path) diff --git a/1ano/2semestre/labi/tema01/src/hash_lib.py b/1ano/2semestre/labi/tema01/src/hash_sha1.py similarity index 100% rename from 1ano/2semestre/labi/tema01/src/hash_lib.py rename to 1ano/2semestre/labi/tema01/src/hash_sha1.py diff --git a/1ano/2semestre/labi/tema01/src/pycrypto.py b/1ano/2semestre/labi/tema01/src/hash_sha256.py similarity index 100% rename from 1ano/2semestre/labi/tema01/src/pycrypto.py rename to 1ano/2semestre/labi/tema01/src/hash_sha256.py diff --git a/1ano/2semestre/labi/tema01/src/publicKey_RSA.py b/1ano/2semestre/labi/tema01/src/publicKey_RSA.py new file mode 100644 index 0000000..f5fbed7 --- /dev/null +++ b/1ano/2semestre/labi/tema01/src/publicKey_RSA.py @@ -0,0 +1,23 @@ +from Crypto.PublicKey import RSA + + +def generate_key_pair(file_name, encryption_key, key_size): + # Generate the RSA key pair + key = RSA.generate(key_size) + + # Write the private key to a file + private_key = key.exportKey("PEM", encryption_key ) + with open(file_name + '_private.pem', 'wb') as f: + f.write(private_key) + + # Write the public key to a file + public_key = key.publickey().exportKey() + with open(file_name + '_public.pem', 'wb') as f: + f.write(public_key) + + +if __name__ == '__main__': + file_name = input('Enter file name to save the key pair: ') + encryption_key = input('Enter encryption key for the private key (press enter for no encryption): ') + key_size = int(input('Enter the key size (in bits): ')) + generate_key_pair(file_name, encryption_key, key_size) diff --git a/1ano/2semestre/labi/tema02/src/Calculater/aritmetica.py b/1ano/2semestre/labi/tema02/src/Calculater/aritmetica.py new file mode 100644 index 0000000..fe78c46 --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/Calculater/aritmetica.py @@ -0,0 +1,25 @@ +import math + +def soma(a, b): + return round(a + b, 2) + +def subtracao(a, b): + return round(a - b, 2) + +def multiplicacao(a, b): + return round(a * b, 2) + +def divisao(a, b): + if b == 0: + raise ZeroDivisionError("Não é possível dividir por zero.") + return round(a / b, 2) + +def resto_divisao_inteira(a, b): + if b == 0: + raise ZeroDivisionError("Não é possível dividir por zero.") + return round(a % b, 2) + +def raiz_quadrada(a): + if a < 0: + raise ValueError("Não é possível calcular a raiz quadrada de um número negativo.") + return round(math.sqrt(a), 2) diff --git a/1ano/2semestre/labi/tema02/src/Calculater/calculadora.py b/1ano/2semestre/labi/tema02/src/Calculater/calculadora.py new file mode 100644 index 0000000..0f6f95d --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/Calculater/calculadora.py @@ -0,0 +1,138 @@ +import pytest +import aritmetica + + + +def main(): + print("Welcome to the Calculator!") + + while True: + print("Please choose an operation:") + print("1. Addition (+)") + print("2. Subtraction (-)") + print("3. Multiplication (*)") + print("4. Division (/)") + print("5. Resto (%)") + print("6. Square Root (sqrt)") + print("7. Exit") + + choice = input("Enter your choice (1-6): ") + + if choice == '7': + print("Goodbye!") + break + elif choice == '1': + while True: + try: + num1 = float(input("Enter the first number: ")) + num2 = float(input("Enter the second number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.soma(num1, num2) + + print(f"{num1} + {num2} = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + elif choice == '2': + while True: + try: + num1 = float(input("Enter the first number: ")) + num2 = float(input("Enter the second number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.subtracao(num1, num2) + + print(f"{num1} - {num2} = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + elif choice == '3': + while True: + try: + num1 = float(input("Enter the first number: ")) + num2 = float(input("Enter the second number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.multiplicacao(num1, num2) + + print(f"{num1} * {num2} = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + elif choice == '4': + while True: + try: + num1 = float(input("Enter the first number: ")) + num2 = float(input("Enter the second number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.divisao(num1, num2) + + print(f"{num1} / {num2} = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + elif choice == '5' : + while True: + try: + num1 = float(input("Enter the first number: ")) + num2 = float(input("Enter the second number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.resto_divisao_inteira(num1, num2) + + print(f"{num1} % {num2} = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + elif choice == '6': + while True: + try: + num1 = float(input("Enter the first number: ")) + except ValueError as e: + print("Invalid input. Please enter a number.") + print("Error: ", e.__doc__) + continue + + result = aritmetica.raiz_quadrada(num1) + + print(f"sqrt({num1}) = {result}") + + exit = input('To continue operation press ( y ) ?') + + if exit.upper() != 'Y': + break + else: + print("Invalid input. Please enter a number between 1 and 6.") + + +if __name__ == "__main__": + pytest.main(['-x', 'test_unitarios.py']) + pytest.main(['-x', 'test_funcionais.py']) + main() \ No newline at end of file diff --git a/1ano/2semestre/labi/tema02/src/Calculater/test_funcionais.py b/1ano/2semestre/labi/tema02/src/Calculater/test_funcionais.py new file mode 100644 index 0000000..62afb32 --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/Calculater/test_funcionais.py @@ -0,0 +1,114 @@ +import unittest +from aritmetica import soma, subtracao, multiplicacao, divisao, raiz_quadrada, resto_divisao_inteira + +class TestCalculadora(unittest.TestCase): + + def test_soma_numeros_validos(self): + self.assertEqual(soma(2, 3), 5) + self.assertEqual(soma(-2.5, 3.5), 1) + self.assertEqual(soma(0, 0), 0) + self.assertEqual(soma(0.1, 0.2), 0.3) + + def test_soma_argumentos_invalidos(self): + with self.assertRaises(TypeError): + soma("2", 3) + with self.assertRaises(TypeError): + soma(2, "3") + with self.assertRaises(TypeError): + soma("2", "3") + with self.assertRaises(TypeError): + soma(2) + with self.assertRaises(TypeError): + soma() + + def test_subtracao_numeros_validos(self): + self.assertEqual(subtracao(5, 3), 2) + self.assertEqual(subtracao(3, 5), -2) + self.assertEqual(subtracao(-2.5, 3.5), -6) + self.assertEqual(subtracao(0, 0), 0) + self.assertEqual(subtracao(0.1, 0.2), -0.1) + + def test_subtracao_argumentos_invalidos(self): + with self.assertRaises(TypeError): + subtracao("2", 3) + with self.assertRaises(TypeError): + subtracao(2, "3") + with self.assertRaises(TypeError): + subtracao("2", "3") + with self.assertRaises(TypeError): + subtracao(2) + with self.assertRaises(TypeError): + subtracao() + + def test_multiplicacao_numeros_validos(self): + self.assertEqual(multiplicacao(2, 3), 6) + self.assertEqual(multiplicacao(-2.5, 3.5), -8.75) + self.assertEqual(multiplicacao(0, 0), 0) + self.assertEqual(multiplicacao(0.1, 0.2), 0.02) + + def test_multiplicacao_argumentos_invalidos(self): + with self.assertRaises(TypeError): + multiplicacao("2", 3) + with self.assertRaises(TypeError): + multiplicacao(2, "3") + with self.assertRaises(TypeError): + multiplicacao("2", "3") + with self.assertRaises(TypeError): + multiplicacao(2) + with self.assertRaises(TypeError): + multiplicacao() + + def test_divisao_numeros_validos(self): + self.assertEqual(divisao(4, 2), 2) + self.assertEqual(divisao(3, 5), 0.6) + self.assertEqual(divisao(-10, 2), -5) + self.assertEqual(divisao(0, 5), 0) + + def test_divisao_argumentos_invalidos(self): + with self.assertRaises(TypeError): + divisao("2", 3) + with self.assertRaises(TypeError): + divisao(2, "3") + with self.assertRaises(TypeError): + divisao("2", "3") + with self.assertRaises(TypeError): + divisao(2) + with self.assertRaises(TypeError): + divisao() + with self.assertRaises(ZeroDivisionError): + divisao(5, 0) + + def test_resto_divisao_inteira_numeros_validos(self): + self.assertEqual(resto_divisao_inteira(7, 3), 1) + self.assertEqual(resto_divisao_inteira(10, 2), 0) + self.assertEqual(resto_divisao_inteira(-7, 3), 2) + self.assertEqual(resto_divisao_inteira(0, 5), 0) + + def test_resto_divisao_inteira_argumentos_invalidos(self): + with self.assertRaises(TypeError): + resto_divisao_inteira("2", 3) + with self.assertRaises(TypeError): + resto_divisao_inteira(2, "3") + with self.assertRaises(TypeError): + resto_divisao_inteira("2", "3") + with self.assertRaises(TypeError): + resto_divisao_inteira(2) + with self.assertRaises(TypeError): + resto_divisao_inteira() + + def test_raiz_quadrada_numeros_validos(self): + self.assertAlmostEqual(raiz_quadrada(4), 2) + self.assertAlmostEqual(raiz_quadrada(9), 3) + self.assertAlmostEqual(raiz_quadrada(2), 1.41) + self.assertAlmostEqual(raiz_quadrada(0), 0) + + def test_raiz_quadrada_argumentos_invalidos(self): + with self.assertRaises(ValueError): + raiz_quadrada(-4) + with self.assertRaises(TypeError): + raiz_quadrada("2") + with self.assertRaises(TypeError): + raiz_quadrada() + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/1ano/2semestre/labi/tema02/src/Calculater/test_unitarios.py b/1ano/2semestre/labi/tema02/src/Calculater/test_unitarios.py new file mode 100644 index 0000000..0368e99 --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/Calculater/test_unitarios.py @@ -0,0 +1,37 @@ +import unittest +import aritmetica + +class TestAritmetica(unittest.TestCase): + + def test_soma(self): + self.assertEqual(aritmetica.soma(2, 3), 5) + self.assertEqual(aritmetica.soma(-2, 3), 1) + self.assertEqual(aritmetica.soma(2.5, 3.7), 6.2) + + def test_subtracao(self): + self.assertEqual(aritmetica.subtracao(2, 3), -1) + self.assertEqual(aritmetica.subtracao(-2, 3), -5) + self.assertEqual(aritmetica.subtracao(2.5, 3.7), -1.2) + + def test_multiplicacao(self): + self.assertEqual(aritmetica.multiplicacao(2, 3), 6) + self.assertEqual(aritmetica.multiplicacao(-2, 3), -6) + self.assertEqual(aritmetica.multiplicacao(2.5, 3.7), 9.25) + + def test_divisao(self): + self.assertEqual(aritmetica.divisao(6, 3), 2) + self.assertEqual(aritmetica.divisao(7, 3), 2.33) + self.assertRaises(ZeroDivisionError, aritmetica.divisao, 6, 0) + + def test_resto_divisao_inteira(self): + self.assertEqual(aritmetica.resto_divisao_inteira(7, 3), 1) + self.assertEqual(aritmetica.resto_divisao_inteira(10, 4), 2) + self.assertEqual(aritmetica.resto_divisao_inteira(15, 5), 0) + + def test_raiz_quadrada(self): + self.assertEqual(aritmetica.raiz_quadrada(9), 3) + self.assertEqual(aritmetica.raiz_quadrada(16), 4) + self.assertEqual(aritmetica.raiz_quadrada(25), 5) + +if __name__ == '__main__': + unittest.main() diff --git a/1ano/2semestre/labi/tema02/src/cmd_comand.py b/1ano/2semestre/labi/tema02/src/cmd_comand.py new file mode 100644 index 0000000..8981dcd --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/cmd_comand.py @@ -0,0 +1,18 @@ +import subprocess +import sys + +if len(sys.argv) < 3: + print("Usage: python Ex3.py ") + sys.exit(1) + +directory_path = sys.argv[1] +ignore_term = sys.argv[2] + +try: + output = subprocess.check_output(["ls", "-la", directory_path], universal_newlines=True) + lines = output.split("\n") + filtered_lines = [line for line in lines if ignore_term not in line] + print("\n".join(filtered_lines)) +except subprocess.CalledProcessError: + print("Error: could not list directory.") + sys.exit(1) diff --git a/1ano/2semestre/labi/tema02/src/fibonacci.py b/1ano/2semestre/labi/tema02/src/fibonacci.py new file mode 100644 index 0000000..e48db47 --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/fibonacci.py @@ -0,0 +1,30 @@ +import pytest + + +def fibonacci(n): + res = [] + + if n < 0: + return res + elif n == 0: + res.append(n) + return res + elif n == 1: + res = [0, 1] + return res + else: + res = [0, 1] + for i in range(2, n + 1): + x = res[i - 1] + res[i - 2] + res.append(x) + return res + + +def test_inferior_1(): + print("Testa comportamento com n < 1") + + assert fibonacci(-1) == [] + assert fibonacci(0) == [0] + assert fibonacci(1) == [0, 1] + assert fibonacci(2) == [0, 1, 1] + assert fibonacci(5) == [0, 1, 1, 2, 3, 5] diff --git a/1ano/2semestre/labi/tema02/src/functional_tests.py b/1ano/2semestre/labi/tema02/src/functional_tests.py new file mode 100644 index 0000000..8fd6e2a --- /dev/null +++ b/1ano/2semestre/labi/tema02/src/functional_tests.py @@ -0,0 +1,29 @@ +import os +import subprocess + + +def test_invalid_arguments(): + result = subprocess.run(["python", "listdir.py", "invalid", "invalid"], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + assert result.returncode == 1 + assert b"Usage: python listdir.py " in result.stdout + + +def test_nonexistent_directory(): + result = subprocess.run(["python", "listdir.py", "nonexistent", "invalid"], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + assert result.returncode == 1 + + assert b"Error: could not list directory." in result.stdout + + +def test_ignore_term(): + with open("test.txt", "w") as f: + f.write("file1\nfile2\nignoreme.txt\n") + + result = subprocess.run(["python", "listdir.py", ".", "ignoreme"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + assert result.returncode == 0 + assert b"ignoreme.txt" not in result.stdout + assert b"file1\nfile2" in result.stdout + + os.remove("test.txt") diff --git a/1ano/2semestre/labi/tema04/datafiles/rand.csv b/1ano/2semestre/labi/tema04/datafiles/rand.csv new file mode 100644 index 0000000..9aaeb18 --- /dev/null +++ b/1ano/2semestre/labi/tema04/datafiles/rand.csv @@ -0,0 +1,10 @@ +time;value +1;41 +2;37 +3;3 +4;3 +5;37 +6;22 +7;91 +8;7 +9;25 diff --git a/1ano/2semestre/labi/tema04/datafiles/weather.csv b/1ano/2semestre/labi/tema04/datafiles/weather.csv new file mode 100644 index 0000000..4bc6836 --- /dev/null +++ b/1ano/2semestre/labi/tema04/datafiles/weather.csv @@ -0,0 +1,676 @@ +IndoorTemperature,2015-12-02T11:59:52.599762Z,24.100000 +Pressure,2015-12-02T11:59:52.714401Z,102393 +Humidity,2015-12-02T11:59:55.874667Z,41 +Temperature,2015-12-02T11:59:55.875369Z,28.400000 +Temperature,2015-12-02T12:59:25.970184Z,27.600000 +Humidity,2015-12-02T12:59:25.970996Z,41 +IndoorTemperature,2015-12-02T12:59:52.213238Z,24.200000 +Pressure,2015-12-02T12:59:52.329609Z,102310 +Temperature,2015-12-02T13:59:31.059481Z,27.400000 +Humidity,2015-12-02T13:59:31.060347Z,36 +IndoorTemperature,2015-12-02T13:59:52.193529Z,24.200000 +Pressure,2015-12-02T13:59:52.309869Z,102234 +Temperature,2015-12-02T14:59:36.180066Z,29.100000 +Humidity,2015-12-02T14:59:36.180119Z,34 +IndoorTemperature,2015-12-02T14:59:51.643875Z,24.100000 +Pressure,2015-12-02T14:59:51.758017Z,102191 +Humidity,2015-12-02T15:59:41.148304Z,36 +Temperature,2015-12-02T15:59:41.148376Z,27.200000 +IndoorTemperature,2015-12-02T15:59:51.714701Z,23.600000 +Pressure,2015-12-02T15:59:51.825494Z,102149 +Temperature,2015-12-02T16:59:46.329292Z,23.100000 +Humidity,2015-12-02T16:59:46.329397Z,39 +IndoorTemperature,2015-12-02T16:59:51.503146Z,23.300000 +Pressure,2015-12-02T16:59:51.613691Z,102148 +IndoorTemperature,2015-12-02T17:59:50.988721Z,23.100000 +Pressure,2015-12-02T17:59:51.000291Z,102200 +Temperature,2015-12-02T17:59:51.351472Z,20.400000 +Humidity,2015-12-02T17:59:51.353334Z,45 +IndoorTemperature,2015-12-02T18:59:50.138467Z,23.000000 +Pressure,2015-12-02T18:59:50.293472Z,102224 +Temperature,2015-12-02T18:59:56.503691Z,19.400000 +Humidity,2015-12-02T18:59:56.504143Z,54 +Temperature,2015-12-02T19:59:26.578559Z,18.300000 +Humidity,2015-12-02T19:59:26.578767Z,57 +IndoorTemperature,2015-12-02T19:59:48.487121Z,23.000000 +Pressure,2015-12-02T19:59:48.636168Z,102208 +Temperature,2015-12-02T20:59:31.691953Z,17.900000 +Humidity,2015-12-02T20:59:31.692788Z,59 +IndoorTemperature,2015-12-02T20:59:47.659282Z,23.400000 +Pressure,2015-12-02T20:59:47.812169Z,102205 +Temperature,2015-12-02T21:59:36.803376Z,17.300000 +Humidity,2015-12-02T21:59:36.803430Z,58 +IndoorTemperature,2015-12-02T21:59:47.718255Z,23.400000 +Pressure,2015-12-02T21:59:47.831629Z,102194 +Temperature,2015-12-02T22:59:41.900910Z,16.700000 +Humidity,2015-12-02T22:59:41.901680Z,56 +IndoorTemperature,2015-12-02T22:59:47.294454Z,23.400000 +Pressure,2015-12-02T22:59:47.499785Z,102144 +Temperature,2015-12-02T23:59:46.896174Z,16.200000 +Humidity,2015-12-02T23:59:47.013486Z,58 +IndoorTemperature,2015-12-02T23:59:47.212708Z,23.500000 +Pressure,2015-12-02T23:59:47.329098Z,102146 +IndoorTemperature,2015-12-03T00:59:46.834060Z,23.200000 +Pressure,2015-12-03T00:59:46.990632Z,102090 +Temperature,2015-12-03T00:59:52.416115Z,15.800000 +Humidity,2015-12-03T00:59:52.481738Z,59 +IndoorTemperature,2015-12-03T01:59:48.561895Z,23.200000 +Pressure,2015-12-03T01:59:48.715514Z,102070 +Humidity,2015-12-03T01:59:57.209084Z,59 +Temperature,2015-12-03T01:59:57.210335Z,15.200000 +Humidity,2015-12-03T02:59:27.284557Z,59 +Temperature,2015-12-03T02:59:27.284704Z,14.600000 +IndoorTemperature,2015-12-03T02:59:48.024529Z,23.200000 +Pressure,2015-12-03T02:59:48.175658Z,102106 +Temperature,2015-12-03T03:59:32.368359Z,14.000000 +Humidity,2015-12-03T03:59:32.368989Z,63 +IndoorTemperature,2015-12-03T03:59:47.684275Z,23.200000 +Pressure,2015-12-03T03:59:47.803178Z,102088 +Temperature,2015-12-03T04:59:37.495996Z,14.100000 +Humidity,2015-12-03T04:59:37.496064Z,61 +IndoorTemperature,2015-12-03T04:59:46.076044Z,23.100000 +Pressure,2015-12-03T04:59:46.189667Z,102034 +Temperature,2015-12-03T05:59:42.596485Z,14.100000 +Humidity,2015-12-03T05:59:42.596539Z,61 +IndoorTemperature,2015-12-03T05:59:45.291802Z,23.100000 +Pressure,2015-12-03T05:59:45.406735Z,102049 +IndoorTemperature,2015-12-03T06:59:43.998243Z,23.100000 +Pressure,2015-12-03T06:59:44.276539Z,102064 +Humidity,2015-12-03T06:59:47.654376Z,59 +Temperature,2015-12-03T06:59:47.655116Z,14.100000 +IndoorTemperature,2015-12-03T07:59:42.672436Z,23.200000 +Pressure,2015-12-03T07:59:42.810645Z,102087 +Temperature,2015-12-03T07:59:53.635546Z,13.900000 +Humidity,2015-12-03T07:59:53.653378Z,61 +IndoorTemperature,2015-12-03T08:59:41.994004Z,23.600000 +Pressure,2015-12-03T08:59:42.147733Z,102138 +Humidity,2015-12-03T08:59:57.912294Z,57 +Temperature,2015-12-03T08:59:57.912350Z,15.600000 +Humidity,2015-12-03T09:59:27.971236Z,57 +Temperature,2015-12-03T09:59:27.971293Z,16.400000 +IndoorTemperature,2015-12-03T09:59:41.122360Z,23.300000 +Pressure,2015-12-03T09:59:41.272674Z,102193 +Temperature,2015-12-03T10:59:33.112917Z,21.100000 +Humidity,2015-12-03T10:59:33.112972Z,46 +IndoorTemperature,2015-12-03T10:59:40.612379Z,23.800000 +Pressure,2015-12-03T10:59:40.727096Z,102163 +Temperature,2015-12-03T11:59:38.168937Z,21.900000 +Humidity,2015-12-03T11:59:38.169505Z,41 +IndoorTemperature,2015-12-03T11:59:40.613268Z,23.600000 +Pressure,2015-12-03T11:59:40.725885Z,102145 +IndoorTemperature,2015-12-03T12:59:40.507237Z,24.000000 +Pressure,2015-12-03T12:59:40.656065Z,102096 +Temperature,2015-12-03T12:59:43.215086Z,23.600000 +Humidity,2015-12-03T12:59:43.215921Z,39 +IndoorTemperature,2015-12-03T13:59:40.238957Z,23.900000 +Pressure,2015-12-03T13:59:40.389248Z,102077 +Temperature,2015-12-03T13:59:48.315607Z,24.200000 +Humidity,2015-12-03T13:59:48.316645Z,38 +IndoorTemperature,2015-12-03T14:59:39.812839Z,23.700000 +Pressure,2015-12-03T14:59:39.964806Z,102086 +Temperature,2015-12-03T14:59:53.345834Z,24.000000 +Humidity,2015-12-03T14:59:53.346066Z,37 +IndoorTemperature,2015-12-03T15:59:39.131430Z,23.500000 +Pressure,2015-12-03T15:59:39.284519Z,102131 +Humidity,2015-12-03T15:59:58.467023Z,39 +Temperature,2015-12-03T15:59:58.468564Z,23.700000 +Temperature,2015-12-03T16:59:28.549611Z,21.900000 +Humidity,2015-12-03T16:59:28.550174Z,41 +IndoorTemperature,2015-12-03T16:59:38.793620Z,23.300000 +Pressure,2015-12-03T16:59:38.947084Z,102231 +Humidity,2015-12-03T17:59:33.638722Z,50 +Temperature,2015-12-03T17:59:33.638935Z,20.000000 +IndoorTemperature,2015-12-03T17:59:38.227735Z,23.100000 +Pressure,2015-12-03T17:59:38.341198Z,102299 +Pressure,2015-12-03T18:59:38.191221Z,102406 +IndoorTemperature,2015-12-03T18:59:38.191291Z,23.100000 +Temperature,2015-12-03T18:59:38.775528Z,19.300000 +Humidity,2015-12-03T18:59:38.776116Z,55 +IndoorTemperature,2015-12-03T19:59:37.906850Z,23.100000 +Pressure,2015-12-03T19:59:38.018607Z,102453 +Temperature,2015-12-03T19:59:43.863236Z,18.800000 +Humidity,2015-12-03T19:59:43.863291Z,59 +IndoorTemperature,2015-12-03T20:59:37.996598Z,23.100000 +Pressure,2015-12-03T20:59:38.152994Z,102481 +Temperature,2015-12-03T20:59:48.801978Z,18.300000 +Humidity,2015-12-03T20:59:48.802729Z,59 +IndoorTemperature,2015-12-03T21:59:37.783983Z,23.200000 +Pressure,2015-12-03T21:59:37.934051Z,102530 +Temperature,2015-12-03T21:59:53.996922Z,17.900000 +Humidity,2015-12-03T21:59:53.998272Z,59 +IndoorTemperature,2015-12-03T22:59:37.604676Z,23.500000 +Pressure,2015-12-03T22:59:37.756900Z,102546 +Temperature,2015-12-03T22:59:59.089468Z,17.500000 +Humidity,2015-12-03T22:59:59.091319Z,58 +Temperature,2015-12-03T23:59:29.177244Z,17.500000 +Humidity,2015-12-03T23:59:29.179289Z,58 +IndoorTemperature,2015-12-03T23:59:37.638215Z,23.600000 +Pressure,2015-12-03T23:59:37.792446Z,102601 +Temperature,2015-12-04T00:59:34.315829Z,17.200000 +Humidity,2015-12-04T00:59:34.316407Z,59 +IndoorTemperature,2015-12-04T00:59:37.879094Z,23.600000 +Pressure,2015-12-04T00:59:37.881512Z,102578 +IndoorTemperature,2015-12-04T01:59:38.617129Z,23.500000 +Pressure,2015-12-04T01:59:38.772698Z,102588 +Temperature,2015-12-04T01:59:39.298623Z,17.100000 +Humidity,2015-12-04T01:59:39.298798Z,63 +IndoorTemperature,2015-12-04T02:59:38.667448Z,23.500000 +Pressure,2015-12-04T02:59:38.818690Z,102619 +Temperature,2015-12-04T02:59:44.942076Z,16.500000 +Humidity,2015-12-04T02:59:44.945353Z,69 +IndoorTemperature,2015-12-04T03:59:38.619131Z,23.500000 +Pressure,2015-12-04T03:59:38.768524Z,102627 +Temperature,2015-12-04T03:59:49.542919Z,16.400000 +Humidity,2015-12-04T03:59:49.542972Z,69 +IndoorTemperature,2015-12-04T04:59:38.563915Z,23.500000 +Pressure,2015-12-04T04:59:38.722456Z,102628 +Temperature,2015-12-04T04:59:54.657682Z,15.800000 +Humidity,2015-12-04T04:59:54.657820Z,67 +Temperature,2015-12-04T05:59:24.737500Z,15.300000 +Humidity,2015-12-04T05:59:24.782887Z,65 +IndoorTemperature,2015-12-04T05:59:38.269650Z,23.400000 +Pressure,2015-12-04T05:59:38.422359Z,102634 +Humidity,2015-12-04T06:59:29.823128Z,65 +Temperature,2015-12-04T06:59:29.823224Z,14.900000 +IndoorTemperature,2015-12-04T06:59:37.089866Z,23.400000 +Pressure,2015-12-04T06:59:37.242374Z,102702 +Temperature,2015-12-04T07:59:34.848725Z,14.500000 +Humidity,2015-12-04T07:59:34.848884Z,66 +IndoorTemperature,2015-12-04T07:59:36.636488Z,23.400000 +Pressure,2015-12-04T07:59:36.749478Z,102762 +IndoorTemperature,2015-12-04T08:59:36.223291Z,23.400000 +Pressure,2015-12-04T08:59:36.294436Z,102816 +Temperature,2015-12-04T08:59:40.026999Z,15.000000 +Humidity,2015-12-04T08:59:40.027140Z,67 +IndoorTemperature,2015-12-04T09:59:36.373356Z,23.500000 +Pressure,2015-12-04T09:59:36.524452Z,102843 +Humidity,2015-12-04T09:59:45.189395Z,67 +Temperature,2015-12-04T09:59:45.189492Z,15.400000 +IndoorTemperature,2015-12-04T10:59:34.679598Z,23.500000 +Pressure,2015-12-04T10:59:34.833375Z,102828 +Temperature,2015-12-04T10:59:50.613572Z,16.800000 +Humidity,2015-12-04T10:59:50.618450Z,64 +IndoorTemperature,2015-12-04T11:59:35.827212Z,23.800000 +Pressure,2015-12-04T11:59:35.983665Z,102780 +Humidity,2015-12-04T11:59:55.326075Z,52 +Temperature,2015-12-04T11:59:55.326659Z,22.700000 +IndoorTemperature,2015-12-04T12:59:34.140587Z,24.400000 +Pressure,2015-12-04T12:59:34.292730Z,102722 +Humidity,2015-12-04T12:59:59.952908Z,54 +Temperature,2015-12-04T12:59:59.952961Z,22.000000 +Temperature,2015-12-04T13:59:30.546346Z,21.700000 +Humidity,2015-12-04T13:59:30.601180Z,57 +IndoorTemperature,2015-12-04T13:59:35.017394Z,23.900000 +Pressure,2015-12-04T13:59:35.171713Z,102672 +IndoorTemperature,2015-12-04T14:59:34.818860Z,23.800000 +Pressure,2015-12-04T14:59:34.971594Z,102657 +Temperature,2015-12-04T14:59:35.546261Z,23.100000 +Humidity,2015-12-04T14:59:35.546845Z,53 +IndoorTemperature,2015-12-04T15:59:33.129187Z,23.500000 +Pressure,2015-12-04T15:59:33.281896Z,102677 +Temperature,2015-12-04T15:59:40.664640Z,19.600000 +Humidity,2015-12-04T15:59:40.664933Z,60 +IndoorTemperature,2015-12-04T16:59:34.222278Z,23.300000 +Pressure,2015-12-04T16:59:34.373844Z,102688 +Humidity,2015-12-04T16:59:45.728898Z,64 +Temperature,2015-12-04T16:59:45.729409Z,18.100000 +IndoorTemperature,2015-12-04T17:59:34.249187Z,23.200000 +Pressure,2015-12-04T17:59:34.403796Z,102679 +Humidity,2015-12-04T17:59:50.842584Z,69 +Temperature,2015-12-04T17:59:50.842715Z,17.200000 +IndoorTemperature,2015-12-04T18:59:34.000567Z,23.200000 +Pressure,2015-12-04T18:59:34.156285Z,102697 +Humidity,2015-12-04T18:59:55.923885Z,69 +Temperature,2015-12-04T18:59:55.938045Z,17.000000 +Temperature,2015-12-04T19:59:26.038531Z,16.500000 +Humidity,2015-12-04T19:59:26.039173Z,71 +IndoorTemperature,2015-12-04T19:59:32.423088Z,23.100000 +Pressure,2015-12-04T19:59:32.474454Z,102705 +Humidity,2015-12-04T20:59:31.133859Z,71 +Temperature,2015-12-04T20:59:31.133915Z,16.200000 +IndoorTemperature,2015-12-04T20:59:31.766299Z,23.000000 +Pressure,2015-12-04T20:59:31.880958Z,102730 +IndoorTemperature,2015-12-04T21:59:31.657665Z,22.900000 +Pressure,2015-12-04T21:59:31.773646Z,102725 +Temperature,2015-12-04T21:59:36.282389Z,15.700000 +Humidity,2015-12-04T21:59:36.283174Z,71 +IndoorTemperature,2015-12-04T22:59:31.511973Z,22.900000 +Pressure,2015-12-04T22:59:31.625764Z,102713 +Temperature,2015-12-04T22:59:41.344088Z,15.200000 +Humidity,2015-12-04T22:59:41.344170Z,72 +IndoorTemperature,2015-12-04T23:59:32.508250Z,22.900000 +Pressure,2015-12-04T23:59:32.657389Z,102657 +Temperature,2015-12-04T23:59:46.400563Z,14.600000 +Humidity,2015-12-04T23:59:46.402402Z,74 +IndoorTemperature,2015-12-05T00:59:32.161525Z,22.900000 +Pressure,2015-12-05T00:59:32.276491Z,102631 +Temperature,2015-12-05T00:59:51.457821Z,14.400000 +Humidity,2015-12-05T00:59:51.458422Z,74 +IndoorTemperature,2015-12-05T01:59:33.934098Z,22.800000 +Pressure,2015-12-05T01:59:34.084868Z,102605 +Temperature,2015-12-05T01:59:56.517833Z,14.100000 +Humidity,2015-12-05T01:59:56.650732Z,72 +Temperature,2015-12-05T02:59:26.723111Z,13.700000 +Humidity,2015-12-05T02:59:26.724033Z,71 +IndoorTemperature,2015-12-05T02:59:33.742245Z,22.700000 +Pressure,2015-12-05T02:59:33.897805Z,102582 +Temperature,2015-12-05T03:59:31.841593Z,13.300000 +Humidity,2015-12-05T03:59:31.841650Z,71 +IndoorTemperature,2015-12-05T03:59:33.786538Z,22.600000 +Pressure,2015-12-05T03:59:33.938559Z,102545 +IndoorTemperature,2015-12-05T04:59:33.809087Z,22.500000 +Pressure,2015-12-05T04:59:33.965645Z,102517 +Temperature,2015-12-05T04:59:36.956383Z,13.000000 +Humidity,2015-12-05T04:59:36.959050Z,70 +IndoorTemperature,2015-12-05T05:59:33.471695Z,22.400000 +Pressure,2015-12-05T05:59:33.622416Z,102525 +Humidity,2015-12-05T05:59:42.037496Z,68 +Temperature,2015-12-05T05:59:42.037560Z,12.700000 +IndoorTemperature,2015-12-05T06:59:31.706946Z,22.400000 +Pressure,2015-12-05T06:59:31.820118Z,102504 +Temperature,2015-12-05T06:59:47.201498Z,12.200000 +Humidity,2015-12-05T06:59:47.201558Z,68 +IndoorTemperature,2015-12-05T07:59:30.983191Z,22.400000 +Pressure,2015-12-05T07:59:31.093999Z,102506 +Humidity,2015-12-05T07:59:52.313911Z,67 +Temperature,2015-12-05T07:59:52.320207Z,12.300000 +IndoorTemperature,2015-12-05T08:59:30.893625Z,22.700000 +Pressure,2015-12-05T08:59:31.007267Z,102545 +Temperature,2015-12-05T08:59:57.412472Z,14.500000 +Humidity,2015-12-05T08:59:57.414169Z,62 +Humidity,2015-12-05T09:59:27.522192Z,56 +Temperature,2015-12-05T09:59:27.523418Z,17.900000 +IndoorTemperature,2015-12-05T09:59:30.319663Z,23.400000 +Pressure,2015-12-05T09:59:30.442476Z,102542 +IndoorTemperature,2015-12-05T10:59:29.808927Z,24.000000 +Pressure,2015-12-05T10:59:29.922337Z,102508 +Humidity,2015-12-05T10:59:32.598840Z,49 +Temperature,2015-12-05T10:59:32.598958Z,22.600000 +Humidity,2015-12-05T11:59:37.719873Z,39 +Temperature,2015-12-05T11:59:37.720298Z,30.600000 +IndoorTemperature,2015-12-05T11:59:59.736702Z,24.200000 +Pressure,2015-12-05T11:59:59.853620Z,102442 +Temperature,2015-12-05T12:59:42.701035Z,30.400000 +Humidity,2015-12-05T12:59:42.816139Z,40 +IndoorTemperature,2015-12-05T12:59:59.772423Z,24.300000 +Pressure,2015-12-05T12:59:59.888242Z,102351 +Temperature,2015-12-05T13:59:47.933198Z,29.500000 +Humidity,2015-12-05T13:59:47.934863Z,37 +IndoorTemperature,2015-12-05T13:59:59.253892Z,24.300000 +Pressure,2015-12-05T13:59:59.368206Z,102257 +Temperature,2015-12-05T14:59:52.888041Z,29.600000 +Humidity,2015-12-05T14:59:52.888094Z,35 +IndoorTemperature,2015-12-05T14:59:58.887664Z,24.200000 +Pressure,2015-12-05T14:59:59.004040Z,102256 +Temperature,2015-12-05T15:59:57.974107Z,30.400000 +Humidity,2015-12-05T15:59:57.974161Z,35 +IndoorTemperature,2015-12-05T15:59:58.089348Z,24.000000 +Pressure,2015-12-05T15:59:58.089404Z,102247 +Temperature,2015-12-05T16:59:28.123291Z,23.100000 +Humidity,2015-12-05T16:59:28.123346Z,45 +IndoorTemperature,2015-12-05T16:59:56.632325Z,23.800000 +Pressure,2015-12-05T16:59:56.781860Z,102271 +Temperature,2015-12-05T17:59:33.669747Z,20.300000 +Humidity,2015-12-05T17:59:33.677228Z,53 +IndoorTemperature,2015-12-05T17:59:55.972247Z,23.600000 +Pressure,2015-12-05T17:59:55.988640Z,102279 +Humidity,2015-12-05T18:59:38.261873Z,55 +Temperature,2015-12-05T18:59:38.261981Z,19.100000 +IndoorTemperature,2015-12-05T18:59:55.622443Z,23.500000 +Pressure,2015-12-05T18:59:55.733834Z,102285 +Temperature,2015-12-05T19:59:43.354988Z,18.400000 +Humidity,2015-12-05T19:59:43.468943Z,57 +IndoorTemperature,2015-12-05T19:59:55.167378Z,23.300000 +Pressure,2015-12-05T19:59:55.281103Z,102296 +Temperature,2015-12-05T20:59:48.553917Z,17.600000 +Humidity,2015-12-05T20:59:48.554211Z,59 +IndoorTemperature,2015-12-05T20:59:54.946808Z,23.100000 +Pressure,2015-12-05T20:59:55.062788Z,102289 +Temperature,2015-12-05T21:59:53.604268Z,16.400000 +Humidity,2015-12-05T21:59:53.605413Z,63 +IndoorTemperature,2015-12-05T21:59:54.681669Z,23.100000 +Pressure,2015-12-05T21:59:54.823909Z,102275 +IndoorTemperature,2015-12-05T22:59:54.330032Z,23.100000 +Pressure,2015-12-05T22:59:54.443520Z,102259 +Humidity,2015-12-05T22:59:58.691498Z,63 +Temperature,2015-12-05T22:59:58.692618Z,16.100000 +Temperature,2015-12-05T23:59:28.821715Z,15.600000 +Humidity,2015-12-05T23:59:28.822033Z,62 +IndoorTemperature,2015-12-05T23:59:53.467562Z,23.100000 +Pressure,2015-12-05T23:59:53.619552Z,102269 +Temperature,2015-12-06T00:59:33.975069Z,15.100000 +Humidity,2015-12-06T00:59:33.975216Z,62 +IndoorTemperature,2015-12-06T00:59:53.214581Z,23.100000 +Pressure,2015-12-06T00:59:53.333614Z,102231 +Pressure,2015-12-06T01:59:32.157279Z,102199 +IndoorTemperature,2015-12-06T01:59:32.157808Z,23.000000 +Temperature,2015-12-06T01:59:38.873833Z,14.200000 +Humidity,2015-12-06T01:59:38.926835Z,64 +Temperature,2015-12-06T02:59:59.274438Z,14.100000 +Humidity,2015-12-06T02:59:59.301213Z,64 +IndoorTemperature,2015-12-06T02:59:59.323731Z,22.900000 +Pressure,2015-12-06T02:59:59.324550Z,102179 +Temperature,2015-12-06T03:59:54.811670Z,13.500000 +Humidity,2015-12-06T03:59:54.829073Z,64 +IndoorTemperature,2015-12-06T03:59:54.863214Z,22.800000 +Pressure,2015-12-06T03:59:54.894142Z,102121 +IndoorTemperature,2015-12-06T04:59:51.962835Z,22.700000 +Pressure,2015-12-06T04:59:52.077700Z,102074 +Temperature,2015-12-06T04:59:54.290210Z,13.200000 +Humidity,2015-12-06T04:59:54.290709Z,66 +Temperature,2015-12-06T05:59:24.420438Z,12.400000 +Humidity,2015-12-06T05:59:24.420781Z,67 +IndoorTemperature,2015-12-06T05:59:50.265382Z,22.600000 +Pressure,2015-12-06T05:59:50.381374Z,102072 +Temperature,2015-12-06T06:59:42.131874Z,12.300000 +Humidity,2015-12-06T06:59:42.172018Z,67 +IndoorTemperature,2015-12-06T06:59:48.498582Z,22.600000 +Pressure,2015-12-06T06:59:48.611294Z,102113 +Temperature,2015-12-06T07:59:37.816807Z,12.300000 +Humidity,2015-12-06T07:59:37.818509Z,67 +IndoorTemperature,2015-12-06T07:59:46.738553Z,22.500000 +Pressure,2015-12-06T07:59:46.852865Z,102179 +IndoorTemperature,2015-12-06T08:59:33.275308Z,22.800000 +Pressure,2015-12-06T08:59:33.389703Z,102222 +Humidity,2015-12-06T08:59:39.721248Z,64 +Temperature,2015-12-06T08:59:39.721666Z,13.800000 +Temperature,2015-12-06T09:59:29.241022Z,16.200000 +Humidity,2015-12-06T09:59:29.287120Z,60 +Pressure,2015-12-06T09:59:29.300752Z,102255 +IndoorTemperature,2015-12-06T09:59:29.300804Z,23.200000 +Pressure,2015-12-06T10:59:55.870554Z,102220 +IndoorTemperature,2015-12-06T10:59:55.871430Z,23.900000 +Temperature,2015-12-06T10:59:56.015202Z,21.600000 +Humidity,2015-12-06T10:59:56.031989Z,51 +IndoorTemperature,2015-12-06T11:59:51.607766Z,24.000000 +Pressure,2015-12-06T11:59:51.608351Z,102160 +Temperature,2015-12-06T11:59:55.127225Z,28.300000 +Humidity,2015-12-06T11:59:55.133241Z,41 +Humidity,2015-12-06T12:59:25.108844Z,42 +Temperature,2015-12-06T12:59:30.114268Z,26.100000 +IndoorTemperature,2015-12-06T12:59:47.172009Z,23.900000 +Pressure,2015-12-06T12:59:47.285965Z,102073 +Temperature,2015-12-06T13:59:43.788895Z,25.200000 +Humidity,2015-12-06T13:59:43.822231Z,41 +IndoorTemperature,2015-12-06T13:59:43.828028Z,23.800000 +Pressure,2015-12-06T13:59:43.900852Z,101996 +Temperature,2015-12-06T14:59:38.932354Z,26.200000 +Humidity,2015-12-06T14:59:38.937761Z,40 +IndoorTemperature,2015-12-06T14:59:42.488003Z,23.800000 +Pressure,2015-12-06T14:59:42.613159Z,101914 +Temperature,2015-12-06T15:59:40.356515Z,27.100000 +IndoorTemperature,2015-12-06T15:59:42.252735Z,23.500000 +Pressure,2015-12-06T15:59:42.367414Z,101909 +Humidity,2015-12-06T15:59:44.779399Z,40 +Pressure,2015-12-06T16:59:30.340728Z,101931 +Temperature,2015-12-06T16:59:30.354392Z,21.600000 +Humidity,2015-12-06T16:59:30.354438Z,44 +IndoorTemperature,2015-12-06T16:59:30.354488Z,23.200000 +IndoorTemperature,2015-12-06T17:59:57.594836Z,23.100000 +Pressure,2015-12-06T17:59:57.603300Z,101944 +Temperature,2015-12-06T17:59:58.208803Z,19.500000 +Humidity,2015-12-06T17:59:58.237405Z,52 +Pressure,2015-12-06T18:59:52.835161Z,101996 +IndoorTemperature,2015-12-06T18:59:52.835218Z,23.100000 +Temperature,2015-12-06T18:59:55.627460Z,18.400000 +Humidity,2015-12-06T18:59:55.671721Z,56 +Temperature,2015-12-06T19:59:25.713880Z,17.600000 +Humidity,2015-12-06T19:59:25.714035Z,58 +IndoorTemperature,2015-12-06T19:59:48.374901Z,23.100000 +Pressure,2015-12-06T19:59:48.489912Z,102008 +Temperature,2015-12-06T20:59:30.837761Z,16.700000 +Humidity,2015-12-06T20:59:30.838895Z,61 +IndoorTemperature,2015-12-06T20:59:38.768785Z,23.200000 +Pressure,2015-12-06T20:59:38.913701Z,101992 +Temperature,2015-12-06T21:59:35.937464Z,15.500000 +Humidity,2015-12-06T21:59:35.938207Z,65 +IndoorTemperature,2015-12-06T21:59:37.803108Z,23.200000 +Pressure,2015-12-06T21:59:37.918576Z,102025 +IndoorTemperature,2015-12-06T22:59:37.655271Z,23.200000 +Pressure,2015-12-06T22:59:37.805187Z,102017 +Temperature,2015-12-06T22:59:40.977854Z,15.300000 +Humidity,2015-12-06T22:59:40.979056Z,64 +IndoorTemperature,2015-12-06T23:59:37.138246Z,23.300000 +Pressure,2015-12-06T23:59:37.292858Z,101993 +Temperature,2015-12-06T23:59:46.073147Z,14.600000 +Humidity,2015-12-06T23:59:46.073217Z,66 +IndoorTemperature,2015-12-07T00:59:36.381762Z,23.300000 +Pressure,2015-12-07T00:59:36.536191Z,101958 +Temperature,2015-12-07T00:59:51.273201Z,14.500000 +Humidity,2015-12-07T00:59:51.274525Z,66 +IndoorTemperature,2015-12-07T01:59:37.486040Z,23.100000 +Pressure,2015-12-07T01:59:37.550799Z,101888 +Humidity,2015-12-07T01:59:56.285154Z,67 +Temperature,2015-12-07T01:59:56.286235Z,14.400000 +Temperature,2015-12-07T02:59:26.401779Z,14.000000 +Humidity,2015-12-07T02:59:26.401916Z,67 +IndoorTemperature,2015-12-07T02:59:36.958978Z,22.900000 +Pressure,2015-12-07T02:59:37.112061Z,101895 +Humidity,2015-12-07T03:59:31.486268Z,71 +Temperature,2015-12-07T03:59:35.814992Z,14.100000 +IndoorTemperature,2015-12-07T03:59:36.111525Z,22.900000 +Pressure,2015-12-07T03:59:36.265693Z,101839 +IndoorTemperature,2015-12-07T04:59:35.876889Z,22.800000 +Pressure,2015-12-07T04:59:36.029729Z,101841 +Humidity,2015-12-07T04:59:36.602888Z,72 +Temperature,2015-12-07T04:59:36.604528Z,13.700000 +IndoorTemperature,2015-12-07T05:59:34.129852Z,22.800000 +Pressure,2015-12-07T05:59:34.241726Z,101877 +Temperature,2015-12-07T05:59:41.694430Z,13.600000 +Humidity,2015-12-07T05:59:41.708490Z,72 +IndoorTemperature,2015-12-07T06:59:32.375225Z,22.700000 +Pressure,2015-12-07T06:59:32.526562Z,101937 +Humidity,2015-12-07T06:59:46.801003Z,72 +Temperature,2015-12-07T06:59:46.806549Z,13.500000 +IndoorTemperature,2015-12-07T07:59:30.701435Z,22.700000 +Pressure,2015-12-07T07:59:30.814359Z,101941 +Humidity,2015-12-07T07:59:51.967249Z,74 +Temperature,2015-12-07T07:59:51.967358Z,13.700000 +IndoorTemperature,2015-12-07T08:59:30.555850Z,22.600000 +Pressure,2015-12-07T08:59:30.669531Z,102011 +Temperature,2015-12-07T08:59:57.034965Z,14.000000 +Humidity,2015-12-07T08:59:57.035570Z,72 +Humidity,2015-12-07T09:59:27.032937Z,74 +IndoorTemperature,2015-12-07T09:59:30.902186Z,22.800000 +Pressure,2015-12-07T09:59:30.950915Z,102076 +Temperature,2015-12-07T09:59:32.035958Z,14.400000 +IndoorTemperature,2015-12-07T10:59:29.892846Z,23.100000 +Pressure,2015-12-07T10:59:30.008039Z,102079 +Temperature,2015-12-07T10:59:32.256117Z,15.500000 +Humidity,2015-12-07T10:59:32.257086Z,73 +Humidity,2015-12-07T11:59:37.245612Z,74 +Temperature,2015-12-07T11:59:37.246174Z,16.000000 +IndoorTemperature,2015-12-07T11:59:59.322210Z,23.000000 +Pressure,2015-12-07T11:59:59.437624Z,102057 +Temperature,2015-12-07T12:59:42.352483Z,16.100000 +Humidity,2015-12-07T12:59:42.467338Z,73 +IndoorTemperature,2015-12-07T12:59:57.657574Z,23.000000 +Pressure,2015-12-07T12:59:57.764841Z,102031 +Humidity,2015-12-07T13:59:47.589291Z,71 +Temperature,2015-12-07T13:59:47.589837Z,16.900000 +IndoorTemperature,2015-12-07T13:59:57.477425Z,23.000000 +Pressure,2015-12-07T13:59:57.591609Z,101999 +Temperature,2015-12-07T14:59:52.541433Z,17.400000 +Humidity,2015-12-07T14:59:52.655699Z,64 +IndoorTemperature,2015-12-07T14:59:56.709324Z,23.300000 +Pressure,2015-12-07T14:59:56.823283Z,101978 +IndoorTemperature,2015-12-07T15:59:56.763025Z,23.300000 +Pressure,2015-12-07T15:59:56.914810Z,102024 +Humidity,2015-12-07T15:59:57.714780Z,66 +Temperature,2015-12-07T15:59:57.715254Z,16.800000 +Temperature,2015-12-07T16:59:27.796346Z,16.500000 +Humidity,2015-12-07T16:59:27.796851Z,66 +IndoorTemperature,2015-12-07T16:59:56.107198Z,23.300000 +Pressure,2015-12-07T16:59:56.257810Z,102097 +Humidity,2015-12-07T17:59:32.914287Z,63 +Temperature,2015-12-07T17:59:32.914563Z,16.300000 +IndoorTemperature,2015-12-07T17:59:56.164745Z,23.400000 +Pressure,2015-12-07T17:59:56.279614Z,102137 +Humidity,2015-12-07T18:59:38.004805Z,68 +Temperature,2015-12-07T18:59:38.005363Z,15.700000 +IndoorTemperature,2015-12-07T18:59:55.585627Z,23.300000 +Pressure,2015-12-07T18:59:55.737809Z,102156 +Humidity,2015-12-07T19:59:43.030787Z,72 +Temperature,2015-12-07T19:59:43.031835Z,15.300000 +IndoorTemperature,2015-12-07T19:59:55.148587Z,23.300000 +Pressure,2015-12-07T19:59:55.263424Z,102128 +Humidity,2015-12-07T20:59:48.233988Z,73 +Temperature,2015-12-07T20:59:48.234458Z,15.000000 +IndoorTemperature,2015-12-07T20:59:55.175766Z,23.300000 +Pressure,2015-12-07T20:59:55.298590Z,102176 +Humidity,2015-12-07T21:59:53.330020Z,73 +Temperature,2015-12-07T21:59:53.330480Z,14.700000 +IndoorTemperature,2015-12-07T21:59:55.219012Z,23.400000 +Pressure,2015-12-07T21:59:55.333685Z,102171 +IndoorTemperature,2015-12-07T22:59:54.606854Z,23.200000 +Pressure,2015-12-07T22:59:54.759312Z,102256 +Temperature,2015-12-07T22:59:58.397722Z,14.900000 +Humidity,2015-12-07T22:59:58.397791Z,73 +Humidity,2015-12-07T23:59:28.491983Z,73 +Temperature,2015-12-07T23:59:28.492229Z,14.800000 +IndoorTemperature,2015-12-07T23:59:54.203913Z,23.100000 +Pressure,2015-12-07T23:59:54.355056Z,102278 +Humidity,2015-12-08T00:59:33.644148Z,75 +Temperature,2015-12-08T00:59:33.644866Z,14.700000 +IndoorTemperature,2015-12-08T00:59:58.508929Z,23.000000 +Pressure,2015-12-08T00:59:58.621479Z,102285 +Temperature,2015-12-08T01:59:38.730065Z,14.700000 +Humidity,2015-12-08T01:59:38.730699Z,75 +IndoorTemperature,2015-12-08T01:59:54.210003Z,22.900000 +Pressure,2015-12-08T01:59:54.324969Z,102258 +Humidity,2015-12-08T02:59:43.840394Z,75 +Temperature,2015-12-08T02:59:43.840995Z,14.800000 +IndoorTemperature,2015-12-08T02:59:53.874697Z,22.800000 +Pressure,2015-12-08T02:59:53.988220Z,102322 +Temperature,2015-12-08T03:59:48.937853Z,14.500000 +Humidity,2015-12-08T03:59:48.938865Z,77 +IndoorTemperature,2015-12-08T03:59:53.223620Z,22.700000 +Pressure,2015-12-08T03:59:53.337100Z,102366 +IndoorTemperature,2015-12-08T04:59:53.269898Z,22.600000 +Pressure,2015-12-08T04:59:53.423759Z,102407 +Humidity,2015-12-08T04:59:53.999500Z,80 +Temperature,2015-12-08T04:59:53.999566Z,14.200000 +Humidity,2015-12-08T05:59:24.121832Z,84 +Temperature,2015-12-08T05:59:24.121883Z,13.800000 +IndoorTemperature,2015-12-08T05:59:52.848510Z,22.600000 +Pressure,2015-12-08T05:59:52.998684Z,102458 +Temperature,2015-12-08T06:59:29.234020Z,13.700000 +Humidity,2015-12-08T06:59:29.234091Z,84 +IndoorTemperature,2015-12-08T06:59:52.677269Z,22.500000 +Pressure,2015-12-08T06:59:52.831524Z,102537 +Temperature,2015-12-08T07:59:34.257908Z,13.800000 +Humidity,2015-12-08T07:59:34.373662Z,84 +IndoorTemperature,2015-12-08T07:59:51.692236Z,22.500000 +Pressure,2015-12-08T07:59:51.812903Z,102618 +Temperature,2015-12-08T08:59:39.495752Z,14.100000 +Humidity,2015-12-08T08:59:39.496280Z,83 +IndoorTemperature,2015-12-08T08:59:50.948081Z,22.500000 +Pressure,2015-12-08T08:59:51.062541Z,102677 +Temperature,2015-12-08T09:59:44.453809Z,14.400000 +Humidity,2015-12-08T09:59:44.569662Z,83 +IndoorTemperature,2015-12-08T09:59:50.831305Z,22.600000 +Pressure,2015-12-08T09:59:50.946493Z,102722 +Humidity,2015-12-08T10:59:49.691130Z,81 +Temperature,2015-12-08T10:59:49.691211Z,15.600000 +IndoorTemperature,2015-12-08T10:59:50.671265Z,22.700000 +Pressure,2015-12-08T10:59:50.785679Z,102737 +IndoorTemperature,2015-12-08T11:59:50.084953Z,23.600000 +Pressure,2015-12-08T11:59:50.239833Z,102726 +Temperature,2015-12-08T11:59:54.733837Z,24.900000 +Humidity,2015-12-08T11:59:54.734302Z,60 +IndoorTemperature,2015-12-08T12:59:49.459018Z,23.000000 +Pressure,2015-12-08T12:59:49.612719Z,102716 +Humidity,2015-12-08T12:59:59.831068Z,68 +Temperature,2015-12-08T12:59:59.831646Z,18.700000 +Temperature,2015-12-08T13:59:29.899905Z,18.000000 +Humidity,2015-12-08T13:59:29.900403Z,73 +IndoorTemperature,2015-12-08T13:59:49.074255Z,23.000000 +Pressure,2015-12-08T13:59:49.226156Z,102696 +Humidity,2015-12-08T14:59:35.055414Z,75 +Temperature,2015-12-08T14:59:35.055489Z,17.300000 +IndoorTemperature,2015-12-08T14:59:48.993709Z,23.000000 +Pressure,2015-12-08T14:59:49.110625Z,102703 +Temperature,2015-12-08T15:59:40.281849Z,17.700000 +Humidity,2015-12-08T15:59:40.291901Z,75 +IndoorTemperature,2015-12-08T15:59:48.596093Z,23.100000 +Pressure,2015-12-08T15:59:48.709881Z,102755 +Temperature,2015-12-08T16:59:45.042153Z,16.400000 +Humidity,2015-12-08T16:59:45.118757Z,77 +IndoorTemperature,2015-12-08T16:59:48.504521Z,23.200000 +Pressure,2015-12-08T16:59:48.617861Z,102775 +IndoorTemperature,2015-12-08T17:59:48.383457Z,23.300000 +Pressure,2015-12-08T17:59:48.552329Z,102800 +Temperature,2015-12-08T17:59:50.210960Z,15.400000 +Humidity,2015-12-08T17:59:50.323219Z,80 +IndoorTemperature,2015-12-08T18:59:48.418047Z,23.200000 +Pressure,2015-12-08T18:59:48.572935Z,102847 +Humidity,2015-12-08T18:59:55.389754Z,80 +Temperature,2015-12-08T18:59:55.390779Z,14.900000 +IndoorTemperature,2015-12-08T19:59:47.141447Z,23.200000 +Pressure,2015-12-08T19:59:47.296239Z,102886 +Temperature,2015-12-08T19:59:59.799638Z,14.500000 +Humidity,2015-12-08T19:59:59.914296Z,80 +Temperature,2015-12-08T20:59:30.663120Z,14.500000 +Humidity,2015-12-08T20:59:30.716549Z,78 +IndoorTemperature,2015-12-08T20:59:45.659516Z,23.100000 +Pressure,2015-12-08T20:59:45.811761Z,102926 +Temperature,2015-12-08T21:59:35.689027Z,14.200000 +Humidity,2015-12-08T21:59:35.689670Z,79 +IndoorTemperature,2015-12-08T21:59:45.461773Z,23.300000 +Pressure,2015-12-08T21:59:45.576135Z,102933 +Humidity,2015-12-08T22:59:40.782940Z,79 +Temperature,2015-12-08T22:59:40.783815Z,13.600000 +IndoorTemperature,2015-12-08T22:59:45.333767Z,23.400000 +Pressure,2015-12-08T22:59:45.447400Z,102936 +IndoorTemperature,2015-12-08T23:59:44.684094Z,23.400000 +Pressure,2015-12-08T23:59:44.796254Z,102934 +Humidity,2015-12-08T23:59:45.916250Z,77 +Temperature,2015-12-08T23:59:45.918576Z,13.100000 +IndoorTemperature,2015-12-09T00:59:44.331725Z,23.900000 +Pressure,2015-12-09T00:59:44.445605Z,102896 +Temperature,2015-12-09T00:59:51.054913Z,13.000000 +Humidity,2015-12-09T00:59:51.096294Z,79 +IndoorTemperature,2015-12-09T01:59:44.489395Z,23.700000 +Pressure,2015-12-09T01:59:44.604458Z,102873 +Humidity,2015-12-09T01:59:56.150796Z,78 +Temperature,2015-12-09T01:59:56.151126Z,12.600000 +Temperature,2015-12-09T02:59:26.254111Z,12.200000 +Humidity,2015-12-09T02:59:26.254195Z,78 +IndoorTemperature,2015-12-09T02:59:44.906294Z,23.600000 +Pressure,2015-12-09T02:59:45.008033Z,102852 +Temperature,2015-12-09T03:59:31.369384Z,11.900000 +Humidity,2015-12-09T03:59:31.370476Z,78 +IndoorTemperature,2015-12-09T03:59:43.999270Z,23.600000 +Pressure,2015-12-09T03:59:44.114243Z,102842 +Temperature,2015-12-09T04:59:36.522686Z,11.700000 +Humidity,2015-12-09T04:59:36.542219Z,77 +IndoorTemperature,2015-12-09T04:59:43.259998Z,23.500000 +Pressure,2015-12-09T04:59:43.335317Z,102833 +Humidity,2015-12-09T05:59:41.622977Z,77 +Temperature,2015-12-09T05:59:41.623113Z,11.600000 +IndoorTemperature,2015-12-09T05:59:42.614104Z,23.500000 +Pressure,2015-12-09T05:59:42.727897Z,102805 +IndoorTemperature,2015-12-09T06:59:42.258358Z,23.400000 +Pressure,2015-12-09T06:59:42.410064Z,102820 +Temperature,2015-12-09T06:59:46.691715Z,11.600000 +Humidity,2015-12-09T06:59:46.692042Z,77 +IndoorTemperature,2015-12-09T07:59:42.148421Z,23.400000 +Pressure,2015-12-09T07:59:42.154172Z,102860 +Humidity,2015-12-09T07:59:51.846813Z,77 +Temperature,2015-12-09T07:59:51.846871Z,11.800000 +IndoorTemperature,2015-12-09T08:59:41.895315Z,23.500000 +Pressure,2015-12-09T08:59:42.049035Z,102919 +Temperature,2015-12-09T08:59:56.927970Z,13.200000 +Humidity,2015-12-09T08:59:56.928510Z,76 +Humidity,2015-12-09T09:59:27.037415Z,71 +Temperature,2015-12-09T09:59:27.037721Z,15.700000 +IndoorTemperature,2015-12-09T09:59:41.645729Z,23.500000 +Pressure,2015-12-09T09:59:41.797469Z,102950 +Temperature,2015-12-09T10:59:32.117957Z,17.500000 +Humidity,2015-12-09T10:59:32.119852Z,67 +IndoorTemperature,2015-12-09T10:59:40.816243Z,23.500000 +Pressure,2015-12-09T10:59:40.966119Z,102982 +Temperature,2015-12-09T11:44:27.071814Z,19.900000 +Humidity,2015-12-09T11:44:27.072453Z,68 +IndoorTemperature,2015-12-09T11:44:32.017952Z,23.400000 +Pressure,2015-12-09T11:44:32.019197Z,102923 diff --git a/1ano/2semestre/labi/tema04/src/csv_writer.py b/1ano/2semestre/labi/tema04/src/csv_writer.py new file mode 100644 index 0000000..12743d1 --- /dev/null +++ b/1ano/2semestre/labi/tema04/src/csv_writer.py @@ -0,0 +1,16 @@ +import csv +import random + + +def main(): + fout = open("rand.csv", "w", newline='') + writer = csv.DictWriter(fout, fieldnames=["time", "value"], delimiter=';') + writer.writeheader() + + for i in range(1, 10): + writer.writerow({"time": i, "value": random.randint(1, 100)}) + + fout.close() + + +main() diff --git a/1ano/2semestre/labi/tema04/src/temperature.py b/1ano/2semestre/labi/tema04/src/temperature.py new file mode 100644 index 0000000..7806424 --- /dev/null +++ b/1ano/2semestre/labi/tema04/src/temperature.py @@ -0,0 +1,21 @@ +import csv + +temperaturas = [] # lista vazia para armazenar as temperaturas + +# leitura do arquivo CSV +with open('weather.csv', newline='') as csvfile: + reader = csv.reader(csvfile, delimiter=',', quotechar='"') + next(reader) # pula a primeira linha (cabeçalho) + for row in reader: + temperatura = float(row[2]) + temperaturas.append(temperatura) + +# cálculo do máximo, mínimo e médio +maximo = max(temperaturas) +minimo = min(temperaturas) +media = sum(temperaturas) / len(temperaturas) + +# exibição dos resultados +print(f"Máximo: {maximo}") +print(f"Mínimo: {minimo}") +print(f"Média: {media}")