Files
nodemcu-fe/avtomatski.py
kristjan-komlosi 67c0a98ce3 Add files via upload
2017-06-30 08:16:22 +02:00

186 lines
4.0 KiB
Python

import machine
from machine import Pin, ADC
import DS18B20 as dsb
import time
import ne555 as ne
import math
import display
import sys
import network as net
def dane(vpr='Potrdi(d/n)->'):
str=input(vpr)
if str=='d':
return True
else:
return False
try:
display.init()
from display import oled
except:
print('Napaka OLED!')
if dane('Resetiram(d/n)->'):
machine.reset()
oled.text('OLED deluje!',0,0)
oled.show()
#Offline firmware za Vremensko postajo PTIT FE 2017
try:
svet=ADC(0) #svetloba
pin12=tipka=Pin(12, Pin.IN, Pin.PULL_UP) #tipka
pin13=statusled=Pin(13, Pin.OUT) #status LED
pin15=alertled=Pin(15, Pin.OUT ) #alert LED
except:
print('Napaka I/O!')
if dane('Resetiram(d/n)->'):
machine.reset()
oled.text('I/O postavljen!',0,10)
oled.show()
try:
dsb.setup(0)
except:
print('Napaka Temp. senzorja!')
if dane('Resetiram(d/n)->'):
machine.reset()
oled.text('TS postavljen!',0,20)
oled.show()
time.sleep(1)
oled.fill(0)
oled.text('<-------------->', 0, 15)
oled.text('<NodeMCU Senzor>', 0, 25)
oled.text('<-------------->', 0, 35)
oled.text(' !Pozdravljeni! ', 0, 50)
oled.show()
time.sleep_ms(750)
oled.fill(0)
oled.text('Tipka menja',0,0)
oled.text('casovne razmike',0,10)
oled.text('med meritvami',0,20)
oled.text('0.25/0.5/1/2/10s',0,30)
oled.text('7x tipka=izhod',0,40)
oled.show()
time.sleep(4)
oled.fill(0)
oled.show()
statusled.value(1)
alertled.value(0)
def konec(p):
exit=1
sleeptime=15
count=0
vlaga=0
temp=0
svetloba=0
ms=sleeptime*1000
def updatescreen():
global vlaga, temp, svetloba, sleeptime
oled.fill(0)
oled.text('T: ' + str(temp) + 'C',15,10)
oled.text('S: ' + str(svetloba) + ' enot',15,20)
oled.text('RH: ' + str(vlaga) +' Hz', 15, 30)
oled.text('NodeMCU Senzor',0,0)
oled.text('Uptime: ' + str(time.time()) + 's',5,45)
oled.text('S: ' + str(ms/1000) + 's',0,55)
oled.show()
active=0
def carefulsleep():
startticks=time.ticks_ms()
global ms, active, lasttick, firsttick, exit
while time.ticks_diff(time.ticks_ms(), startticks)<ms:
updatescreen()
if not tipka.value():
if firsttick==0:
active=1
firsttick=time.ticks_ms()
lasttick=time.ticks_ms()
if time.ticks_diff(lasttick, firsttick)>3000 and active==1:
print('ttt')
exit=3
active=0
if time.ticks_diff(time.ticks_ms(), lasttick)>60 and active==1:
print("BING!")
lasttick=0
firsttick=0
active=0
setsleep(0)
print(lasttick, firsttick,time.ticks_diff(lasttick, firsttick))
def setsleep(x):
global ms
sleeptime=ms/1000
if sleeptime==15:
sleeptime=0.25
elif sleeptime==0.25:
sleeptime=0.5
elif sleeptime==0.5:
sleeptime=1
elif sleeptime==1:
sleeptime=2
elif sleeptime==2:
sleeptime=15
else:
sleeptime=15
time.sleep_ms(15)
ms=sleeptime*1000
#print('set to', sleeptime)
updatescreen()
#tipka.irq(trigger=Pin.IRQ_FALLING, handler=setsleep)
exit=0
temp=0
svetloba=0
def acq():
oled.text('BUSY...',70,55)
alertled.value(1)
oled.show()
global temp, vlaga, svetloba
try:
temp=dsb.read_temp()
except:
print('Napaka v branju temperature!')
temp='NAPAKA'
try:
svetloba=svet.read()
except:
print('Napaka v branju svetlobe!')
svetloba='NAPAKA'
try:
vlaga=ne.main()
except:
print('Napaka v branju vlage!')
vlaga='NAPAKA'
alertled.value(0)
lasttick=0
firsttick=0
while exit<1:
acq()
updatescreen()
carefulsleep()
oled.fill(0)
oled.text('<-------------->', 0, 15)
oled.text('<NodeMCU Senzor>', 0, 25)
oled.text('<-------------->', 0, 35)
oled.text(' !Nasvidenje! ', 0, 50)
time.sleep(1.5)
oled.show()
oled.fill(0)
oled.show()
oled.poweroff()