@golemio/microclimate 1.0.5-dev.740164088 → 1.0.5-dev.746965867

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,10 +35,10 @@ The APIs may be unstable. Therefore, we recommend to install this module as an e
35
35
 
36
36
  ```bash
37
37
  # Latest version
38
- yarn add --exact @golemio/microclimate@latest
38
+ npm install --save-exact @golemio/microclimate@latest
39
39
 
40
40
  # Development version
41
- yarn add --exact @golemio/microclimate@dev
41
+ npm install --save-exact @golemio/microclimate@dev
42
42
  ```
43
43
 
44
44
  <!-- ## Description -->
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var dbm;
4
+ var type;
5
+ var seed;
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var Promise;
9
+
10
+ /**
11
+ * We receive the dbmigrate dependency from dbmigrate initially.
12
+ * This enables us to not have to rely on NODE_PATH.
13
+ */
14
+ exports.setup = function(options, seedLink) {
15
+ dbm = options.dbmigrate;
16
+ type = dbm.dataType;
17
+ seed = seedLink;
18
+ Promise = options.Promise;
19
+ };
20
+
21
+ exports.up = function(db) {
22
+ var filePath = path.join(__dirname, 'sqls', '20230110142233-fixed_microclimate_measurement-up.sql');
23
+ return new Promise( function( resolve, reject ) {
24
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
25
+ if (err) return reject(err);
26
+ console.log('received data: ' + data);
27
+
28
+ resolve(data);
29
+ });
30
+ })
31
+ .then(function(data) {
32
+ return db.runSql(data);
33
+ });
34
+ };
35
+
36
+ exports.down = function(db) {
37
+ var filePath = path.join(__dirname, 'sqls', '20230110142233-fixed_microclimate_measurement-down.sql');
38
+ return new Promise( function( resolve, reject ) {
39
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
40
+ if (err) return reject(err);
41
+ console.log('received data: ' + data);
42
+
43
+ resolve(data);
44
+ });
45
+ })
46
+ .then(function(data) {
47
+ return db.runSql(data);
48
+ });
49
+ };
50
+
51
+ exports._meta = {
52
+ "version": 1
53
+ };
@@ -0,0 +1,184 @@
1
+ CREATE OR REPLACE VIEW analytic.v_microclimate_measurements_daily
2
+ AS WITH calendar AS (
3
+ SELECT calendar_1.date,
4
+ sensors_1.sensor_id
5
+ FROM ( SELECT generate_series('2022-08-02 00:00:00+02'::timestamp with time zone, CURRENT_DATE::timestamp with time zone, '1 day'::interval)::date AS date) calendar_1
6
+ CROSS JOIN ( SELECT DISTINCT sensor_devices_import.sensor_id
7
+ FROM microclimate.sensor_devices_import) sensors_1
8
+ ), first_measurement_per_hour AS (
9
+ SELECT DISTINCT ON (m.sensor_id, (timezone('CET'::text, m.measured_at)::date), (date_part('hour'::text, timezone('CET'::text, m.measured_at)))) m.sensor_id,
10
+ timezone('CET'::text, m.measured_at) AS measured_at,
11
+ timezone('CET'::text, m.measured_at)::date AS date,
12
+ date_part('hour'::text, timezone('CET'::text, m.measured_at)) AS hour,
13
+ m.air_temp,
14
+ m.air_hum,
15
+ m.pressure,
16
+ m.wind_speed,
17
+ m.water_pot,
18
+ m.soil_temp
19
+ FROM microclimate.measurements m
20
+ WHERE date_part('hour'::text, timezone('CET'::text, m.measured_at)) = ANY (ARRAY[7::double precision, 14::double precision, 21::double precision])
21
+ ORDER BY m.sensor_id, (timezone('CET'::text, m.measured_at)::date), (date_part('hour'::text, timezone('CET'::text, m.measured_at))), m.measured_at
22
+ ), seven AS (
23
+ SELECT first_measurement_per_hour.sensor_id,
24
+ first_measurement_per_hour.measured_at,
25
+ first_measurement_per_hour.date,
26
+ first_measurement_per_hour.hour,
27
+ first_measurement_per_hour.air_temp,
28
+ first_measurement_per_hour.air_hum,
29
+ first_measurement_per_hour.pressure,
30
+ first_measurement_per_hour.wind_speed,
31
+ first_measurement_per_hour.water_pot,
32
+ first_measurement_per_hour.soil_temp
33
+ FROM first_measurement_per_hour
34
+ WHERE first_measurement_per_hour.hour = 7::double precision
35
+ ), two AS (
36
+ SELECT first_measurement_per_hour.sensor_id,
37
+ first_measurement_per_hour.measured_at,
38
+ first_measurement_per_hour.date,
39
+ first_measurement_per_hour.hour,
40
+ first_measurement_per_hour.air_temp,
41
+ first_measurement_per_hour.air_hum,
42
+ first_measurement_per_hour.pressure,
43
+ first_measurement_per_hour.wind_speed,
44
+ first_measurement_per_hour.water_pot,
45
+ first_measurement_per_hour.soil_temp
46
+ FROM first_measurement_per_hour
47
+ WHERE first_measurement_per_hour.hour = 14::double precision
48
+ ), nine AS (
49
+ SELECT first_measurement_per_hour.sensor_id,
50
+ first_measurement_per_hour.measured_at,
51
+ first_measurement_per_hour.date,
52
+ first_measurement_per_hour.hour,
53
+ first_measurement_per_hour.air_temp,
54
+ first_measurement_per_hour.air_hum,
55
+ first_measurement_per_hour.pressure,
56
+ first_measurement_per_hour.wind_speed,
57
+ first_measurement_per_hour.water_pot,
58
+ first_measurement_per_hour.soil_temp
59
+ FROM first_measurement_per_hour
60
+ WHERE first_measurement_per_hour.hour = 21::double precision
61
+ ), wind AS (
62
+ SELECT DISTINCT ON (m.sensor_id, (timezone('CET'::text, m.measured_at)::date)) m.sensor_id,
63
+ timezone('CET'::text, m.measured_at)::date AS date,
64
+ m.wind_speed AS max_wind_speed,
65
+ CASE
66
+ WHEN m.wind_dir::text = 'N'::text THEN 0
67
+ WHEN m.wind_dir::text = 'S'::text THEN 180
68
+ WHEN m.wind_dir::text = 'E'::text THEN 90
69
+ WHEN m.wind_dir::text = 'W'::text THEN 270
70
+ WHEN m.wind_dir::text = 'SW'::text THEN 200
71
+ WHEN m.wind_dir::text = 'NW'::text THEN 320
72
+ WHEN m.wind_dir::text = 'NE'::text THEN 45
73
+ ELSE NULL::integer
74
+ END AS wind_dir_at_max_speed
75
+ FROM microclimate.measurements m
76
+ ORDER BY m.sensor_id, (timezone('CET'::text, m.measured_at)::date), m.wind_speed DESC
77
+ ), min_max_daily_temp AS (
78
+ SELECT m.sensor_id,
79
+ timezone('-04'::text, m.measured_at)::date AS date,
80
+ max(m.air_temp) AS max_temperature,
81
+ min(m.air_temp) AS min_temperature
82
+ FROM microclimate.measurements m
83
+ GROUP BY m.sensor_id, (timezone('-04'::text, m.measured_at)::date)
84
+ ORDER BY m.sensor_id, (timezone('-04'::text, m.measured_at)::date)
85
+ ), precip AS (
86
+ SELECT m.sensor_id,
87
+ timezone('-08'::text, m.measured_at)::date AS date,
88
+ sum(m.precip) AS sum_precip
89
+ FROM microclimate.measurements m
90
+ GROUP BY m.sensor_id, (timezone('-08'::text, m.measured_at)::date)
91
+ ORDER BY m.sensor_id, (timezone('-08'::text, m.measured_at)::date)
92
+ ), calc AS (
93
+ SELECT sensors.address,
94
+ sensors.sensor_position_detail,
95
+ sensors.point_id,
96
+ sensors.air_temp,
97
+ sensors.air_hum,
98
+ sensors.pressure,
99
+ sensors.precip,
100
+ sensors.wind_dir,
101
+ sensors.wind_impact,
102
+ sensors.wind_speed,
103
+ sensors.sun_irr,
104
+ sensors.soil_temp,
105
+ sensors.water_pot,
106
+ sensors.dendro_circ,
107
+ sensors.dendro_gain,
108
+ calendar.date,
109
+ calendar.sensor_id,
110
+ (seven.air_temp + two.air_temp + 2::double precision * nine.air_temp) / 4::double precision AS avg_temperature,
111
+ (seven.air_hum + two.air_hum + nine.air_hum) / 3::double precision AS avg_air_hum,
112
+ (seven.pressure + two.pressure + nine.pressure) / 3 / 100 AS avg_pressure,
113
+ (seven.wind_speed + two.wind_speed + nine.wind_speed) / 3::double precision AS avg_wind_speed,
114
+ (seven.water_pot + two.water_pot + nine.water_pot) / 3::double precision AS avg_water_pot,
115
+ (seven.soil_temp + two.soil_temp + nine.soil_temp) / 3::double precision AS avg_soil_temp,
116
+ wind.max_wind_speed,
117
+ wind.wind_dir_at_max_speed,
118
+ min_max_daily_temp.max_temperature,
119
+ min_max_daily_temp.min_temperature,
120
+ precip.sum_precip
121
+ FROM calendar
122
+ LEFT JOIN seven ON calendar.sensor_id::text = seven.sensor_id::text AND calendar.date = seven.date
123
+ LEFT JOIN two ON calendar.sensor_id::text = two.sensor_id::text AND calendar.date = two.date
124
+ LEFT JOIN nine ON calendar.sensor_id::text = nine.sensor_id::text AND calendar.date = nine.date
125
+ LEFT JOIN wind ON calendar.sensor_id::text = wind.sensor_id::text AND calendar.date = wind.date
126
+ LEFT JOIN min_max_daily_temp ON calendar.sensor_id::text = min_max_daily_temp.sensor_id::text AND calendar.date = min_max_daily_temp.date
127
+ LEFT JOIN precip ON calendar.sensor_id::text = precip.sensor_id::text AND calendar.date = precip.date
128
+ LEFT JOIN microclimate.sensor_devices_import sensors ON calendar.sensor_id::text = sensors.sensor_id::text
129
+ )
130
+ SELECT calc.address,
131
+ calc.sensor_position_detail,
132
+ calc.date,
133
+ calc.sensor_id,
134
+ calc.point_id,
135
+ unpivot.metrika,
136
+ unpivot.value
137
+ FROM calc,
138
+ LATERAL ( VALUES ('avg_temperature'::text,calc.avg_temperature), ('avg_air_hum'::text,calc.avg_air_hum), ('avg_pressure'::text,calc.avg_pressure), ('avg_wind_speed'::text,calc.avg_wind_speed), ('avg_water_pot'::text,calc.avg_water_pot), ('avg_soil_temp'::text,calc.avg_soil_temp), ('max_wind_speed'::text,calc.max_wind_speed), ('max_temperature'::text,calc.max_temperature), ('min_temperature'::text,calc.min_temperature), ('sum_precip'::text,calc.sum_precip), ('wind_dir_at_max_speed'::text,calc.wind_dir_at_max_speed)) unpivot(metrika, value)
139
+ WHERE unpivot.value IS NOT NULL;
140
+
141
+ CREATE OR REPLACE VIEW analytic.v_microclimate_measurements_daily_w_hights
142
+ AS SELECT m.date,
143
+ m.sensor_id,
144
+ m.address,
145
+ m.sensor_position_detail,
146
+ h.measure,
147
+ m.value,
148
+ h.hight_cm,
149
+ CASE
150
+ WHEN h.measure = 'wind_dir_at_max_speed'::text THEN 'Směr maximální rychlosti větru'::text
151
+ WHEN h.measure = 'sum_precip'::text THEN 'Denní úhrn srážek'::text
152
+ WHEN h.measure = 'avg_temperature'::text THEN 'Průměrná denní teplota vzduchu'::text
153
+ WHEN h.measure = 'max_wind_speed'::text THEN 'Maximální rychlost větru'::text
154
+ WHEN h.measure = 'avg_water_pot'::text THEN 'Průměrná denní vlhkost půdy'::text
155
+ WHEN h.measure = 'avg_wind_speed'::text THEN 'Průměrná denní rychlost větru'::text
156
+ WHEN h.measure = 'avg_air_hum'::text THEN 'Průměrná denní relativní vlhkost vzduchu'::text
157
+ WHEN h.measure = 'avg_pressure'::text THEN 'Průměrný denní tlak vzduchu'::text
158
+ WHEN h.measure = 'max_temperature'::text THEN 'Maximální denní teplota vzduchu'::text
159
+ WHEN h.measure = 'avg_soil_temp'::text THEN 'Průměrná denní teplota půdy'::text
160
+ WHEN h.measure = 'min_temperature'::text THEN 'Minimální denní teplota vzduchu'::text
161
+ ELSE NULL::text
162
+ END AS measure_cz,
163
+ CASE
164
+ WHEN h.measure = 'wind_dir_at_max_speed'::text THEN 'm/s'::text
165
+ WHEN h.measure = 'sum_precip'::text THEN 'mm'::text
166
+ WHEN h.measure = 'avg_temperature'::text THEN '°C'::text
167
+ WHEN h.measure = 'max_wind_speed'::text THEN 'm/s'::text
168
+ WHEN h.measure = 'avg_water_pot'::text THEN 'kPa'::text
169
+ WHEN h.measure = 'avg_wind_speed'::text THEN 'm/s'::text
170
+ WHEN h.measure = 'avg_air_hum'::text THEN '%'::text
171
+ WHEN h.measure = 'avg_pressure'::text THEN 'hPa'::text
172
+ WHEN h.measure = 'max_temperature'::text THEN '°C'::text
173
+ WHEN h.measure = 'avg_soil_temp'::text THEN '°C'::text
174
+ WHEN h.measure = 'min_temperature'::text THEN '°C'::text
175
+ ELSE NULL::text
176
+ END AS unit
177
+ FROM analytic.v_microclimate_measurements_daily m
178
+ LEFT JOIN analytic.v_microclimate_measurement_hights h ON m.sensor_id::text = h.sensor_id::text AND m.metrika = h.measure
179
+ ORDER BY m.sensor_id, m.date;
180
+
181
+ DROP VIEW analytic.v_microclimate_wind_dir_at_max_speed;
182
+
183
+
184
+
@@ -0,0 +1,208 @@
1
+ DROP VIEW analytic.v_microclimate_measurements_daily_w_hights;
2
+
3
+ DROP VIEW analytic.v_microclimate_measurements_daily;
4
+
5
+ CREATE OR REPLACE VIEW analytic.v_microclimate_measurements_daily
6
+ AS WITH calendar AS (
7
+ SELECT calendar_1.date,
8
+ sensors_1.sensor_id
9
+ FROM ( SELECT generate_series('2022-08-02 00:00:00+02'::timestamp with time zone, CURRENT_DATE::timestamp with time zone, '1 day'::interval)::date AS date) calendar_1
10
+ CROSS JOIN ( SELECT DISTINCT sensor_devices_import.sensor_id
11
+ FROM microclimate.sensor_devices_import) sensors_1
12
+ ), first_measurement_per_hour AS (
13
+ SELECT DISTINCT ON (m.sensor_id, (timezone('CET'::text, m.measured_at)::date), (date_part('hour'::text, timezone('CET'::text, m.measured_at)))) m.sensor_id,
14
+ timezone('CET'::text, m.measured_at) AS measured_at,
15
+ timezone('CET'::text, m.measured_at)::date AS date,
16
+ date_part('hour'::text, timezone('CET'::text, m.measured_at)) AS hour,
17
+ m.air_temp,
18
+ m.air_hum,
19
+ m.pressure,
20
+ m.wind_speed,
21
+ m.water_pot,
22
+ m.soil_temp
23
+ FROM microclimate.measurements m
24
+ WHERE date_part('hour'::text, timezone('CET'::text, m.measured_at)) = ANY (ARRAY[7::double precision, 14::double precision, 21::double precision])
25
+ ORDER BY m.sensor_id, (timezone('CET'::text, m.measured_at)::date), (date_part('hour'::text, timezone('CET'::text, m.measured_at))), m.measured_at
26
+ ), seven AS (
27
+ SELECT first_measurement_per_hour.sensor_id,
28
+ first_measurement_per_hour.measured_at,
29
+ first_measurement_per_hour.date,
30
+ first_measurement_per_hour.hour,
31
+ first_measurement_per_hour.air_temp,
32
+ first_measurement_per_hour.air_hum,
33
+ first_measurement_per_hour.pressure,
34
+ first_measurement_per_hour.wind_speed,
35
+ first_measurement_per_hour.water_pot,
36
+ first_measurement_per_hour.soil_temp
37
+ FROM first_measurement_per_hour
38
+ WHERE first_measurement_per_hour.hour = 7::double precision
39
+ ), two AS (
40
+ SELECT first_measurement_per_hour.sensor_id,
41
+ first_measurement_per_hour.measured_at,
42
+ first_measurement_per_hour.date,
43
+ first_measurement_per_hour.hour,
44
+ first_measurement_per_hour.air_temp,
45
+ first_measurement_per_hour.air_hum,
46
+ first_measurement_per_hour.pressure,
47
+ first_measurement_per_hour.wind_speed,
48
+ first_measurement_per_hour.water_pot,
49
+ first_measurement_per_hour.soil_temp
50
+ FROM first_measurement_per_hour
51
+ WHERE first_measurement_per_hour.hour = 14::double precision
52
+ ), nine AS (
53
+ SELECT first_measurement_per_hour.sensor_id,
54
+ first_measurement_per_hour.measured_at,
55
+ first_measurement_per_hour.date,
56
+ first_measurement_per_hour.hour,
57
+ first_measurement_per_hour.air_temp,
58
+ first_measurement_per_hour.air_hum,
59
+ first_measurement_per_hour.pressure,
60
+ first_measurement_per_hour.wind_speed,
61
+ first_measurement_per_hour.water_pot,
62
+ first_measurement_per_hour.soil_temp
63
+ FROM first_measurement_per_hour
64
+ WHERE first_measurement_per_hour.hour = 21::double precision
65
+ ), wind AS (
66
+ SELECT DISTINCT ON (m.sensor_id, (timezone('CET'::text, m.measured_at)::date)) m.sensor_id,
67
+ timezone('CET'::text, m.measured_at)::date AS date,
68
+ m.wind_speed AS max_wind_speed,
69
+ CASE
70
+ WHEN m.wind_dir::text = 'N'::text THEN 0
71
+ WHEN m.wind_dir::text = 'S'::text THEN 180
72
+ WHEN m.wind_dir::text = 'E'::text THEN 90
73
+ WHEN m.wind_dir::text = 'W'::text THEN 270
74
+ WHEN m.wind_dir::text = 'SW'::text THEN 200
75
+ WHEN m.wind_dir::text = 'NW'::text THEN 320
76
+ WHEN m.wind_dir::text = 'NE'::text THEN 45
77
+ ELSE NULL::integer
78
+ END AS wind_dir_at_max_speed
79
+ FROM microclimate.measurements m
80
+ ORDER BY m.sensor_id, (timezone('CET'::text, m.measured_at)::date), m.wind_speed DESC
81
+ ), min_max_daily_temp AS (
82
+ SELECT m.sensor_id,
83
+ timezone('-04'::text, m.measured_at)::date AS date,
84
+ max(m.air_temp) AS max_temperature,
85
+ min(m.air_temp) AS min_temperature
86
+ FROM microclimate.measurements m
87
+ GROUP BY m.sensor_id, (timezone('-04'::text, m.measured_at)::date)
88
+ ORDER BY m.sensor_id, (timezone('-04'::text, m.measured_at)::date)
89
+ ), precip AS (
90
+ SELECT m.sensor_id,
91
+ timezone('+06'::text, m.measured_at)::date AS date,
92
+ sum(m.precip) AS sum_precip
93
+ FROM microclimate.measurements m
94
+ GROUP BY m.sensor_id, (timezone('+06'::text, m.measured_at)::date)
95
+ ORDER BY m.sensor_id, (timezone('+06'::text, m.measured_at)::date)
96
+ ), calc AS (
97
+ SELECT sensors.address,
98
+ sensors.sensor_position_detail,
99
+ sensors.point_id,
100
+ sensors.air_temp,
101
+ sensors.air_hum,
102
+ sensors.pressure,
103
+ sensors.precip,
104
+ sensors.wind_dir,
105
+ sensors.wind_impact,
106
+ sensors.wind_speed,
107
+ sensors.sun_irr,
108
+ sensors.soil_temp,
109
+ sensors.water_pot,
110
+ sensors.dendro_circ,
111
+ sensors.dendro_gain,
112
+ calendar.date,
113
+ calendar.sensor_id,
114
+ (seven.air_temp + two.air_temp + 2::double precision * nine.air_temp) / 4::double precision AS avg_temperature,
115
+ (seven.air_hum + two.air_hum + nine.air_hum) / 3::double precision AS avg_air_hum,
116
+ (seven.pressure + two.pressure + nine.pressure) / 3 / 100 AS avg_pressure,
117
+ (seven.wind_speed + two.wind_speed + nine.wind_speed) / 3::double precision AS avg_wind_speed,
118
+ (seven.water_pot + two.water_pot + nine.water_pot) / 3::double precision AS avg_water_pot,
119
+ (seven.soil_temp + two.soil_temp + nine.soil_temp) / 3::double precision AS avg_soil_temp,
120
+ wind.max_wind_speed,
121
+ wind.wind_dir_at_max_speed,
122
+ min_max_daily_temp.max_temperature,
123
+ min_max_daily_temp.min_temperature,
124
+ precip.sum_precip
125
+ FROM calendar
126
+ LEFT JOIN seven ON calendar.sensor_id::text = seven.sensor_id::text AND calendar.date = seven.date
127
+ LEFT JOIN two ON calendar.sensor_id::text = two.sensor_id::text AND calendar.date = two.date
128
+ LEFT JOIN nine ON calendar.sensor_id::text = nine.sensor_id::text AND calendar.date = nine.date
129
+ LEFT JOIN wind ON calendar.sensor_id::text = wind.sensor_id::text AND calendar.date = wind.date
130
+ LEFT JOIN min_max_daily_temp ON calendar.sensor_id::text = min_max_daily_temp.sensor_id::text AND calendar.date = min_max_daily_temp.date
131
+ LEFT JOIN precip ON calendar.sensor_id::text = precip.sensor_id::text AND calendar.date = precip.date
132
+ LEFT JOIN microclimate.sensor_devices_import sensors ON calendar.sensor_id::text = sensors.sensor_id::text
133
+ )
134
+ SELECT calc.address,
135
+ calc.sensor_position_detail,
136
+ calc.date,
137
+ calc.sensor_id,
138
+ calc.point_id,
139
+ unpivot.metrika,
140
+ unpivot.value
141
+ FROM calc,
142
+ LATERAL ( VALUES ('avg_temperature'::text,calc.avg_temperature), ('avg_air_hum'::text,calc.avg_air_hum), ('avg_pressure'::text,calc.avg_pressure), ('avg_wind_speed'::text,calc.avg_wind_speed), ('avg_water_pot'::text,calc.avg_water_pot), ('avg_soil_temp'::text,calc.avg_soil_temp), ('max_wind_speed'::text,calc.max_wind_speed), ('max_temperature'::text,calc.max_temperature), ('min_temperature'::text,calc.min_temperature), ('sum_precip'::text,calc.sum_precip), ('wind_dir_at_max_speed'::text,calc.wind_dir_at_max_speed)) unpivot(metrika, value)
143
+ WHERE unpivot.value IS NOT NULL;
144
+
145
+ CREATE OR REPLACE VIEW analytic.v_microclimate_measurements_daily_w_hights
146
+ AS SELECT m.date,
147
+ m.sensor_id,
148
+ m.address,
149
+ m.sensor_position_detail,
150
+ h.measure,
151
+ m.value,
152
+ h.hight_cm,
153
+ CASE
154
+ WHEN h.measure = 'wind_dir_at_max_speed'::text THEN 'Směr maximální rychlosti větru'::text
155
+ WHEN h.measure = 'sum_precip'::text THEN 'Denní úhrn srážek'::text
156
+ WHEN h.measure = 'avg_temperature'::text THEN 'Průměrná denní teplota vzduchu'::text
157
+ WHEN h.measure = 'max_wind_speed'::text THEN 'Maximální rychlost větru'::text
158
+ WHEN h.measure = 'avg_water_pot'::text THEN 'Průměrná denní vlhkost půdy'::text
159
+ WHEN h.measure = 'avg_wind_speed'::text THEN 'Průměrná denní rychlost větru'::text
160
+ WHEN h.measure = 'avg_air_hum'::text THEN 'Průměrná denní relativní vlhkost vzduchu'::text
161
+ WHEN h.measure = 'avg_pressure'::text THEN 'Průměrný denní tlak vzduchu'::text
162
+ WHEN h.measure = 'max_temperature'::text THEN 'Maximální denní teplota vzduchu'::text
163
+ WHEN h.measure = 'avg_soil_temp'::text THEN 'Průměrná denní teplota půdy'::text
164
+ WHEN h.measure = 'min_temperature'::text THEN 'Minimální denní teplota vzduchu'::text
165
+ ELSE NULL::text
166
+ END AS measure_cz,
167
+ CASE
168
+ WHEN h.measure = 'wind_dir_at_max_speed'::text THEN 'm/s'::text
169
+ WHEN h.measure = 'sum_precip'::text THEN 'mm'::text
170
+ WHEN h.measure = 'avg_temperature'::text THEN '°C'::text
171
+ WHEN h.measure = 'max_wind_speed'::text THEN 'm/s'::text
172
+ WHEN h.measure = 'avg_water_pot'::text THEN 'kPa'::text
173
+ WHEN h.measure = 'avg_wind_speed'::text THEN 'm/s'::text
174
+ WHEN h.measure = 'avg_air_hum'::text THEN '%'::text
175
+ WHEN h.measure = 'avg_pressure'::text THEN 'hPa'::text
176
+ WHEN h.measure = 'max_temperature'::text THEN '°C'::text
177
+ WHEN h.measure = 'avg_soil_temp'::text THEN '°C'::text
178
+ WHEN h.measure = 'min_temperature'::text THEN '°C'::text
179
+ ELSE NULL::text
180
+ END AS unit
181
+ FROM analytic.v_microclimate_measurements_daily m
182
+ LEFT JOIN analytic.v_microclimate_measurement_hights h ON m.sensor_id::text = h.sensor_id::text AND m.metrika = h.measure
183
+ ORDER BY m.sensor_id, m.date;
184
+
185
+ CREATE OR REPLACE VIEW analytic.v_microclimate_wind_dir_at_max_speed
186
+ AS WITH max_wind_speed AS (
187
+ SELECT DISTINCT ON (v_microclimate_measurements_daily_w_hights.sensor_id, (date_trunc('month'::text, v_microclimate_measurements_daily_w_hights.date::timestamp with time zone))) v_microclimate_measurements_daily_w_hights.date,
188
+ v_microclimate_measurements_daily_w_hights.sensor_id,
189
+ v_microclimate_measurements_daily_w_hights.value AS wind_speed
190
+ FROM analytic.v_microclimate_measurements_daily_w_hights
191
+ WHERE v_microclimate_measurements_daily_w_hights.measure = 'max_wind_speed'::text
192
+ ORDER BY v_microclimate_measurements_daily_w_hights.sensor_id, (date_trunc('month'::text, v_microclimate_measurements_daily_w_hights.date::timestamp with time zone)), v_microclimate_measurements_daily_w_hights.value DESC
193
+ ), dir_wind_speed AS (
194
+ SELECT vmma.date,
195
+ vmma.sensor_id,
196
+ vmma.value AS wind_dir
197
+ FROM analytic.v_microclimate_measurements_daily_w_hights vmma
198
+ WHERE vmma.measure = 'wind_dir_at_max_speed'::text AND vmma.value IS NOT NULL
199
+ )
200
+ SELECT max_wind_speed.date,
201
+ max_wind_speed.wind_speed,
202
+ max_wind_speed.sensor_id,
203
+ dir_wind_speed.wind_dir AS dir
204
+ FROM max_wind_speed
205
+ JOIN dir_wind_speed ON max_wind_speed.sensor_id::text = dir_wind_speed.sensor_id::text AND max_wind_speed.date = dir_wind_speed.date
206
+ ORDER BY max_wind_speed.date;
207
+
208
+
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@golemio/microclimate",
3
- "version": "1.0.5-dev.740164088",
3
+ "version": "1.0.5-dev.746965867",
4
4
  "description": "Golemio Microclimate Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
9
- "build-minimal": "run-s 'build --sourceMap false --declaration false'",
10
- "build-watch": "run-s 'build --watch --preserveWatchOutput'",
9
+ "build-minimal": "run-s 'build -- --sourceMap false --declaration false'",
10
+ "build-watch": "run-s 'build -- --watch --preserveWatchOutput'",
11
11
  "migrate-db": "golemio migrate-db up --postgres",
12
12
  "pretest": "golemio import-db-data --postgres",
13
13
  "test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
14
- "test-debug": "run-s 'test --inspect-brk=9230'",
15
- "code-coverage": "nyc run-s 'test -r source-map-support/register'",
14
+ "test-debug": "run-s 'test -- --inspect-brk=9230'",
15
+ "code-coverage": "nyc run-s 'test -- -r source-map-support/register'",
16
16
  "generate-docs": "typedoc --out docs/typedoc src",
17
17
  "lint": "eslint \"{src,test}/**/*.ts\""
18
18
  },
@@ -25,6 +25,11 @@
25
25
  "type": "git",
26
26
  "url": "https://gitlab.com/operator-ict/golemio/code/modules/microclimate"
27
27
  },
28
+ "engines": {
29
+ "node": ">=16.0.0",
30
+ "npm": ">=8.0.0",
31
+ "yarn": "Use npm!"
32
+ },
28
33
  "devDependencies": {
29
34
  "@commitlint/cli": "^11.0.0",
30
35
  "@commitlint/config-conventional": "^11.0.0",
@@ -44,12 +49,12 @@
44
49
  "chai-as-promised": "7.1.1",
45
50
  "cross-env": "^7.0.3",
46
51
  "dotenv": "^8.2.0",
47
- "eslint": "^7.17.0",
52
+ "eslint": "^8.1.1",
48
53
  "husky": "^4.3.7",
49
54
  "mocha": "^8.2.1",
50
55
  "npm-run-all": "^4.1.5",
51
56
  "nyc": "^15.1.0",
52
- "prettier": "^2.2.1",
57
+ "prettier": "^2.5.1",
53
58
  "pretty-quick": "^3.1.0",
54
59
  "rimraf": "^3.0.2",
55
60
  "sinon": "^9.2.3",