Files
nodemcu-fe/avtomatski.py
kristjan-komlosi 0eda62ae31 Add files via upload
2017-06-30 16:45:37 +02:00

187 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)
sleeptime=15
count=0
vlaga=0
temp=0
svetloba=0
ms=sleeptime*1000
exitf=0
def exit():
oled.fill(0)
oled.text('<-------------->', 0, 15)
oled.text('<NodeMCU Senzor>', 0, 25)
oled.text('<-------------->', 0, 35)
oled.text(' !Nasvidenje! ', 0, 50)
oled.show()
time.sleep(1.5)
oled.fill(0)
oled.show()
oled.poweroff()
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, exitf
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')
exitf=3
active=0
exit()
if time.ticks_diff(time.ticks_ms(), lasttick) > 60 and active==1:
#print("BING!")
lasttick=0
firsttick=0
active=0
setsleep()
#print(lasttick, firsttick,time.ticks_diff(lasttick, firsttick))
def setsleep():
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)
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 exitf<1:
acq()
updatescreen()
carefulsleep()