Simulador, feito em Python 3, de um protótipo de climatizador feito enquanto eu estagiava no Hospital Martagão Gesteira, em 2017.
Baixe o script em algum lugar do seu computador.
Eu também empacotei o script e os módulos em um binário para Windows. DOWNLOAD
sudo python3 -m pip install -r requirements
Se vire e dê seus pulos. Você vai precisar importar os seguintes módulos:
Em uma máquina *nix/BSD:
sudo -H python3 -m pip install pySerial simplejson
Pode existir ainda a necessidade de importar o serial.tools.list_ports:
sudo -H python3 -m pip install serial.tools.list_ports
Em uma máquina Windows:
#CMD.exe invocado como administrador e mandar ver:
python3 -m pip install pySerial simplejson
#e o serial.tools.list_ports, caso vocë precise
Caso dê tudo certo: o script vai executar normalmente e você não terá nenhum aviso de erro por falta de módulos não-importados. Caso ocorra algum problema: verifique as issues desse repositório.
Eu desenvolvi esse simulador utilizando o Mac OS X 10.5 com Python 3. A maneira dele tratar a porta serial e o protocolo RFCOMM diferem do Windows. Verifique esta issue caso você esteja tendo problemas.
Eu tive problemas com o pySerial tentando acessar as portas seriais sem os privilégios necessários de usuário. Esse comportamento pode variar. Por isso: recomendo executar o script como super-usuário/administrador/root.
Enviando "{ "t3":23 }" altera o valor de temperatura máxima.
json_main = {
"a":0,
"b":0,
"m":0,
"p":0,
"pd1":1200,
"pd2":1700,
"pl1":700,
"pl2":1300,
"s":0,
"t1":20,
"t2":23,
"t3":25,
"tt":5
}
- "a" é o parâmetro de controle automático;
- "b" é um bit que uso para polling de dados;
- "m" é um valor entre 0 e 127 para máscara de bits de um vetor que representa os 7 dias da semana;
- "p" é o bit que indica presença na sala;
- "pd#" e "pl#" são números inteiros que representam hora (ex: 12:00 = 1200; 5:30 = 530);
- "s" é um bit flag para Status - não lembro exatamente pra quê utilizo;
- "t[1,2,3]" são números inteiros de 2 algarismos que representam temperaturas em graus Celsius - mínima, atual e máxima, respectivamente;
- "tt" é um número que representa os minutos de limiar da operação do climatizador;
É importante usar "\n" no início de cada comando a enviar - pois eu implementei um algoritmo que apenas seleciona o último comando recebido, dentro do espaço de tempo para receber. Isso evita algum travamento lógico ou erro na decodificação do JSON caso hajam vários comandos recebidos rapidamente ainda no buffer.
- Python 3.6 - Linguagem do script
- PyInstaller - Empacotador
Faça o que quiser. Mas leia a licença --> [LICENSE]
- Obrigado StackOverflow - por existir
- Obrigado Miquéias Vasconcelos por me iniciar no mundo do Python.
- Obrigado Victor Ben-Hur pela oportunidade e pelo desafio de testar meus conhecimentos.