Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solvers-acuk-m
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Takhir Fakhrutdinov
solvers-acuk-m
Commits
02bd1f21
Commit
02bd1f21
authored
Oct 13, 2022
by
Takhir Fakhrutdinov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
allsky camera
parent
42c89cd2
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
122 additions
and
5 deletions
+122
-5
allsky.json
fte/lib/libpy/data/allsky.json
+19
-0
fileFactory.py
fte/lib/libpy/fileFactory.py
+49
-1
meteoFile.py
fte/lib/libpy/meteoFile.py
+54
-4
No files found.
fte/lib/libpy/data/allsky.json
0 → 100644
View file @
02bd1f21
This source diff could not be displayed because it is too large. You can
view the blob
instead.
fte/lib/libpy/fileFactory.py
View file @
02bd1f21
...
...
@@ -166,6 +166,10 @@ def _create_m2mFile():
from
.meteoFile
import
eop2mFile
return
eop2mFile
def
_create_allskyFile
():
from
.meteoFile
import
allskyFile
return
allskyFile
def
_create_reqFile
():
from
.reqFile
import
reqFile
return
reqFile
...
...
@@ -485,4 +489,48 @@ meteo = {
}
factory
.
register_file
(
'M2M'
,
_create_m2mFile
,
schema
=
meteo
)
allsky
=
{
"type"
:
"array"
,
"items"
:
{
"allOf"
:
[
{
"type"
:
"object"
,
"required"
:
[
"header"
,
"meteo"
],
"properties"
:
{
"header"
:
{
"type"
:
"object"
,
"required"
:
[
"originator"
,
"message_type"
,
"message_id"
],
"properties"
:
{
"creation_date"
:{
"$ref"
:
"#/$defs/timestamp"
},
"originator"
:
{
"type"
:
"string"
},
"message_type"
:
{
"type"
:
"string"
,
"enum"
:[
"meteo"
]},
"message_id"
:
{
"type"
:
"string"
},
"time_system"
:
{
"type"
:
"string"
,
"enum"
:[
"UTC"
]},
"comment"
:
{
"type"
:
"string"
}
}
},
"meteo"
:{
"type"
:
"object"
,
"required"
:
[
"metadata"
,
"allsky"
],
"properties"
:
{
"allsky"
:{
"$ref"
:
"#/$defs/base64"
},
"metadata"
:{
"type"
:
"object"
,
"required"
:
[
"station"
,
"serial_number"
],
"properties"
:
{
"station"
:
{
"type"
:
"string"
},
"serial_number"
:
{
"type"
:
"string"
}
}
}
}
}
}
}
]
},
"$defs"
:
{
"timestamp"
:
{
"type"
:
"string"
,
"pattern"
:
"^(
\\
d{4})-(
\\
d{2})-(
\\
d{2})([T ](
\\
d{2}):(
\\
d{2})(:(
\\
d{2}(?:
\\
.
\\
d+)?))?)?$"
},
"base64"
:
{
"type"
:
"string"
,
"pattern"
:
"^(?=(.{4})*$)[A-Za-z0-9+
\\
/]*={0,2}$"
}
}
}
factory
.
register_file
(
'ASKY'
,
_create_allskyFile
,
schema
=
allsky
)
fte/lib/libpy/meteoFile.py
View file @
02bd1f21
...
...
@@ -67,12 +67,12 @@ class meteoBaseFile(baseFile):
select a.dev,l.v model
from main.t_devattr a
join main.t_attrtypelist l using(atype)
where atype in (40002,50002)
where atype in (40002,50002
,60002
)
and l.rec = (a.v)::integer
) r0 join (
select a.dev,a.v serial_number
from main.t_devattr a
where atype in (40003,50003)
where atype in (40003,50003
,60003
)
) r1 using(dev)
where model=$1 and serial_number=$2
"""
,
model
,
serial_number
)
...
...
@@ -217,8 +217,6 @@ class eop2mFile(meteoBaseFile):
:linenos:
:caption: load_data
"""
from
collections
import
namedtuple
logger
.
info
(
'Загрузка файла...'
)
await
super
()
.
load
(
fd
,
args
)
data
=
json
.
load
(
fd
)
...
...
@@ -248,3 +246,55 @@ class eop2mFile(meteoBaseFile):
await
self
.
copy_to_table
(
't_devmetrix'
,
source
=
fo
,
schema_name
=
'xd'
,
delimiter
=
'
\t
'
)
class
allskyFile
(
meteoBaseFile
):
""" Загрузка данных ЭОП 2М
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
""" Конструктор.
.. literalinclude:: ../../../../fte/lib/libpy/rrdFile.py
:language: python
:lines: 229,238-240
:linenos:
:caption: __init__
"""
super
()
.
__init__
(
*
args
,
**
kwargs
)
self
.
dbtype
=
'asky'
async
def
load
(
self
,
fd
,
args
):
""" Метод. Загрузка файла.
.. literalinclude:: ../../../../fte/lib/libpy/weaFile.py
:language: python
:lines: 27,36-
:linenos:
:caption: load_data
"""
import
base64
logger
.
info
(
'Загрузка файла...'
)
await
super
()
.
load
(
fd
,
args
)
data
=
json
.
load
(
fd
)
fo
,
devs
=
io
.
BytesIO
(),
set
()
self
.
fid
=
await
self
.
getfid
()
async
with
self
.
transaction
():
for
m
in
data
:
r
=
m
.
get
(
'meteo'
)
if
r
:
crops
=
base64
.
b64decode
(
r
[
'allsky'
])
model
,
serial_number
=
r
[
'metadata'
][
'station'
],
r
[
'metadata'
][
'serial_number'
]
tm
=
datetime
.
fromisoformat
(
m
[
'header'
][
'creation_date'
])
.
replace
(
microsecond
=
0
)
self
.
tbeg
,
self
.
tend
=
min
(
self
.
tbeg
,
tm
),
max
(
self
.
tend
,
tm
)
dev
=
await
self
.
get_device
(
model
,
serial_number
)
await
self
.
check_priv_device
(
dev
)
devs
.
add
(
dev
)
night
=
await
self
.
fetchval
(
"select * from main.devget_night($1,$2)"
,
dev
,
tm
)
await
self
.
execute
(
"select * from template.partition_table('xd.t_allsky'::regclass,$1)"
,
tm
)
await
self
.
execute
(
"insert into xd.t_allsky values($1,$2,$3,$4,$5)"
,
self
.
fid
,
dev
,
tm
,
night
,
crops
)
self
.
fileattr
=
dict
(
devs
=
list
(
devs
))
self
.
create_doc
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment