Compare commits
94 commits
master
...
dev_enviro
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
462409f2f4 | ||
|
|
48a4750510 | ||
|
|
d213293927 | ||
|
|
9216d5ee27 | ||
|
|
637c0faa35 | ||
|
|
1eb00fd5a1 | ||
|
|
62cc25d775 | ||
|
|
d6603e394e | ||
|
|
840c3b0126 | ||
|
|
2992121744 | ||
|
|
b92768a954 | ||
|
|
e1a4443a38 | ||
|
|
0cc8a7878a | ||
|
|
f99f30a15e | ||
|
|
6ef69f8b98 | ||
|
|
d69d8b38f5 | ||
|
|
935ee2c587 | ||
|
|
376dcff7db | ||
|
|
ca2d1e3331 | ||
|
|
19c4725991 | ||
|
|
572d1001f8 | ||
|
|
1d98035297 | ||
|
|
8c45dbd00e | ||
|
|
6acfa3c365 | ||
|
|
51f86188a3 | ||
|
|
0661ddf4ea | ||
|
|
6991e566c5 | ||
|
|
73ad9c6816 | ||
|
|
6971613105 | ||
|
|
e812c878f2 | ||
|
|
7df21bd9e0 | ||
|
|
72a43c8aa7 | ||
|
|
55a8c12a71 | ||
|
|
c92c4d392d | ||
|
|
473510e205 | ||
|
|
dc8b2617e6 | ||
|
|
8ecb9e0ca0 | ||
|
|
f313979655 | ||
|
|
834bd518c1 | ||
|
|
575c84246c | ||
|
|
62763dd291 | ||
|
|
141ece8a3e | ||
|
|
0f87a0b840 | ||
|
|
b7c2b736f0 | ||
|
|
9e921cb39d | ||
|
|
55ae922e09 | ||
|
|
e5cb66c572 | ||
|
|
06c26f3262 | ||
|
|
f385842208 | ||
|
|
13e2f689e9 | ||
|
|
799b5889ef | ||
|
|
e387ef5aaf | ||
|
|
e7e951dca3 | ||
|
|
98f688673b | ||
|
|
551d9d0810 | ||
|
|
c7c2625347 | ||
|
|
6d85f2462c | ||
|
|
98a28ba30d | ||
|
|
1ad0f26af8 | ||
|
|
da1c7af929 | ||
|
|
971355d424 | ||
|
|
709d86eef1 | ||
|
|
429549a305 | ||
|
|
f3ec3b9402 | ||
|
|
b18b84f83c | ||
|
|
c92311bef6 | ||
|
|
d255f6ada6 | ||
|
|
f9a1329efd | ||
|
|
f1ec343fd2 | ||
|
|
19aefc8774 | ||
|
|
4ffcc06dd6 | ||
|
|
4c5c9ba8be | ||
|
|
25bce682ad | ||
|
|
ff5d90a635 | ||
|
|
b63724fbfd | ||
|
|
b458dea3b1 | ||
|
|
3825d56aff | ||
|
|
de526ddeb4 | ||
|
|
92d4892c65 | ||
|
|
d0f74cbc4e | ||
|
|
deb3fabd45 | ||
|
|
cd95f01142 | ||
|
|
58bbf07690 | ||
|
|
37b1a1fade | ||
|
|
732b3d2ab0 | ||
|
|
78e51ac797 | ||
|
|
a9b9c0c33d | ||
|
|
15aeb887ed | ||
|
|
233150006c | ||
|
|
4115495f65 | ||
|
|
efc6fb4014 | ||
|
|
a1ef6ea89b | ||
|
|
27a8cc35e4 | ||
|
|
5f13300ba6 |
16 changed files with 357 additions and 31 deletions
|
|
@ -1,5 +1,6 @@
|
|||
# Used in the build stage of the pipeline to create a frontend docker image
|
||||
|
||||
FROM nginx:alpine
|
||||
RUN rm /etc/nginx/conf.d/default.conf
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY /build /usr/share/nginx/html
|
||||
20
indexV2.html
20
indexV2.html
|
|
@ -1,20 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/x-icon" id="favicon-link" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title id="title-id">Adaptive Dashboard</title>
|
||||
<link rel="manifest" id="manifest-link" />
|
||||
</head>
|
||||
<script>
|
||||
window.CRISP_RUNTIME_CONFIG = {
|
||||
session_merge: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript">window.$crisp=[];window.CRISP_WEBSITE_ID="80170383-b426-43c0-8f66-8e20a05bcdce";(function(){d=document;s=d.createElement("script");s.src="https://client.crisp.chat/l.js";s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})();</script>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/app/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -46,7 +46,7 @@
|
|||
"mui-tel-input": "^7.0.0",
|
||||
"notistack": "^3.0.1",
|
||||
"openweathermap-ts": "^1.2.10",
|
||||
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#master",
|
||||
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#dev",
|
||||
"query-string": "^9.2.1",
|
||||
"react": "^18.3.1",
|
||||
"react-beautiful-dnd": "^13.1.1",
|
||||
|
|
@ -11830,7 +11830,7 @@
|
|||
},
|
||||
"node_modules/protobuf-ts": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#d6a992e46192a8ab8195235357318dc297738064",
|
||||
"resolved": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#e61049af5dd297179d5a88650cf40edb2eef8b4d",
|
||||
"dependencies": {
|
||||
"protobufjs": "^6.8.8"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
"mui-tel-input": "^7.0.0",
|
||||
"notistack": "^3.0.1",
|
||||
"openweathermap-ts": "^1.2.10",
|
||||
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#master",
|
||||
"protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#dev",
|
||||
"query-string": "^9.2.1",
|
||||
"react": "^18.3.1",
|
||||
"react-beautiful-dnd": "^13.1.1",
|
||||
|
|
|
|||
|
|
@ -1539,7 +1539,7 @@ export default function BinVisualizer(props: Props) {
|
|||
<InfoOutlined />
|
||||
</IconButton>
|
||||
) : (
|
||||
<IconButton size="small" onClick={() => fullScreenHandler.enter()}>
|
||||
<IconButton size="small" onClick={() => {fullScreenHandler.enter()}}>
|
||||
<FullscreenIcon />
|
||||
</IconButton>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@ export const I2C: AddressTypeExtension = {
|
|||
[quack.ComponentType.COMPONENT_TYPE_SEN5X, 0x68],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AIRFLOW, 0x6b],
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, 0x70],
|
||||
[quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE, 0x6c]
|
||||
[quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE, 0x6c],
|
||||
[quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY, 0x43]
|
||||
]);
|
||||
|
||||
const offset = offsets.get(componentType);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@ import {
|
|||
VPD,
|
||||
Weight,
|
||||
CapacitorCable,
|
||||
AnalogPressure
|
||||
AnalogPressure,
|
||||
Plenum,
|
||||
AmbientOnewire,
|
||||
AmbientI2C
|
||||
} from "pbHelpers/ComponentTypes";
|
||||
//import { multilineGrainCableData } from "pbHelpers/ComponentTypes/GrainCable";
|
||||
//import { multilineCapCableData } from "./ComponentTypes/CapacitorCable";
|
||||
|
|
@ -61,6 +64,7 @@ import { LineData, Point } from "charts/measurementCharts/MultiLineGraph";
|
|||
import moment, { Moment } from "moment";
|
||||
import { avg } from "utils";
|
||||
import { Airflow } from "./ComponentTypes/Airflow";
|
||||
import { TempHumidity } from "./ComponentTypes/TempHumidity";
|
||||
|
||||
const COMPONENT_TYPE_MAP = new Map<quack.ComponentType, Function>([
|
||||
[quack.ComponentType.COMPONENT_TYPE_INVALID, Invalid],
|
||||
|
|
@ -98,7 +102,12 @@ const COMPONENT_TYPE_MAP = new Map<quack.ComponentType, Function>([
|
|||
[quack.ComponentType.COMPONENT_TYPE_VIBRATION_CHAIN, VibrationCable],
|
||||
[quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE, dragerGasDongle],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AIRFLOW, Airflow],
|
||||
[quack.ComponentType.COMPONENT_TYPE_ANALOG_PRESSURE, AnalogPressure]
|
||||
[quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY, TempHumidity],
|
||||
[quack.ComponentType.COMPONENT_TYPE_ANALOG_PRESSURE, AnalogPressure],
|
||||
[quack.ComponentType.COMPONENT_TYPE_PLENUM, Plenum],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE, AmbientOnewire],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C, AmbientI2C],
|
||||
|
||||
]);
|
||||
|
||||
export interface Subtype {
|
||||
|
|
|
|||
79
src/pbHelpers/ComponentTypes/AmbientI2C.ts
Normal file
79
src/pbHelpers/ComponentTypes/AmbientI2C.ts
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
import TemperatureHumidityDarkIcon from "assets/components/temperatureHumidityDark.png";
|
||||
import TemperatureHumidityLightIcon from "assets/components/temperatureHumidityLight.png";
|
||||
import { convertedUnitMeasurement } from "models/UnitMeasurement";
|
||||
import {
|
||||
AreaChartData,
|
||||
ComponentTypeExtension,
|
||||
GraphFilters,
|
||||
LineChartData,
|
||||
simpleAreaChartData,
|
||||
simpleLineChartData,
|
||||
simpleMeasurements,
|
||||
simpleSummaries,
|
||||
Summary,
|
||||
unitMeasurementSummaries
|
||||
} from "pbHelpers/ComponentType";
|
||||
import { describeMeasurement } from "pbHelpers/MeasurementDescriber";
|
||||
import { pond } from "protobuf-ts/pond";
|
||||
import { quack } from "protobuf-ts/quack";
|
||||
|
||||
export function AmbientI2C(subtype: number = 0): ComponentTypeExtension {
|
||||
let temperature = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_TEMPERATURE,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C,
|
||||
subtype
|
||||
);
|
||||
let humidity = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_PERCENT,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C,
|
||||
subtype
|
||||
);
|
||||
return {
|
||||
type: quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C,
|
||||
subtypes: [],
|
||||
friendlyName: "Ambient I2C",
|
||||
description: "Measures temperature and humidity",
|
||||
isController: false,
|
||||
isSource: true,
|
||||
isCalibratable: true,
|
||||
addressTypes: [quack.AddressType.ADDRESS_TYPE_I2C],
|
||||
interactionResultTypes: [],
|
||||
states: [],
|
||||
measurements: simpleMeasurements(temperature, humidity),
|
||||
measurementSummary: async function(measurement: quack.Measurement): Promise<Array<Summary>> {
|
||||
return simpleSummaries(measurement, temperature, humidity);
|
||||
},
|
||||
unitMeasurementSummary: (
|
||||
measurements: convertedUnitMeasurement
|
||||
): Summary[] => {
|
||||
return unitMeasurementSummaries(
|
||||
measurements,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C,
|
||||
subtype
|
||||
);
|
||||
},
|
||||
areaChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): AreaChartData => {
|
||||
return simpleAreaChartData(measurement, smoothingAverages, filters);
|
||||
},
|
||||
lineChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): LineChartData => {
|
||||
return simpleLineChartData(
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C,
|
||||
measurement,
|
||||
smoothingAverages,
|
||||
filters
|
||||
);
|
||||
},
|
||||
minMeasurementPeriodMs: 1000,
|
||||
icon: (theme?: "light" | "dark"): string | undefined => {
|
||||
return theme === "light" ? TemperatureHumidityDarkIcon : TemperatureHumidityLightIcon;
|
||||
}
|
||||
};
|
||||
}
|
||||
79
src/pbHelpers/ComponentTypes/AmbientOnewire.ts
Normal file
79
src/pbHelpers/ComponentTypes/AmbientOnewire.ts
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
import TemperatureHumidityDarkIcon from "assets/components/temperatureHumidityDark.png";
|
||||
import TemperatureHumidityLightIcon from "assets/components/temperatureHumidityLight.png";
|
||||
import { convertedUnitMeasurement } from "models/UnitMeasurement";
|
||||
import {
|
||||
AreaChartData,
|
||||
ComponentTypeExtension,
|
||||
GraphFilters,
|
||||
LineChartData,
|
||||
simpleAreaChartData,
|
||||
simpleLineChartData,
|
||||
simpleMeasurements,
|
||||
simpleSummaries,
|
||||
Summary,
|
||||
unitMeasurementSummaries
|
||||
} from "pbHelpers/ComponentType";
|
||||
import { describeMeasurement } from "pbHelpers/MeasurementDescriber";
|
||||
import { pond } from "protobuf-ts/pond";
|
||||
import { quack } from "protobuf-ts/quack";
|
||||
|
||||
export function AmbientOnewire(subtype: number = 0): ComponentTypeExtension {
|
||||
let temperature = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_TEMPERATURE,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE,
|
||||
subtype
|
||||
);
|
||||
let humidity = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_PERCENT,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE,
|
||||
subtype
|
||||
);
|
||||
return {
|
||||
type: quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE,
|
||||
subtypes: [],
|
||||
friendlyName: "Onewire Ambient",
|
||||
description: "Measures temperature and humidity",
|
||||
isController: false,
|
||||
isSource: true,
|
||||
isCalibratable: true,
|
||||
addressTypes: [quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY],
|
||||
interactionResultTypes: [],
|
||||
states: [],
|
||||
measurements: simpleMeasurements(temperature, humidity),
|
||||
measurementSummary: async function(measurement: quack.Measurement): Promise<Array<Summary>> {
|
||||
return simpleSummaries(measurement, temperature, humidity);
|
||||
},
|
||||
unitMeasurementSummary: (
|
||||
measurements: convertedUnitMeasurement
|
||||
): Summary[] => {
|
||||
return unitMeasurementSummaries(
|
||||
measurements,
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE,
|
||||
subtype
|
||||
);
|
||||
},
|
||||
areaChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): AreaChartData => {
|
||||
return simpleAreaChartData(measurement, smoothingAverages, filters);
|
||||
},
|
||||
lineChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): LineChartData => {
|
||||
return simpleLineChartData(
|
||||
quack.ComponentType.COMPONENT_TYPE_AMBIENT_ONEWIRE,
|
||||
measurement,
|
||||
smoothingAverages,
|
||||
filters
|
||||
);
|
||||
},
|
||||
minMeasurementPeriodMs: 1000,
|
||||
icon: (theme?: "light" | "dark"): string | undefined => {
|
||||
return theme === "light" ? TemperatureHumidityDarkIcon : TemperatureHumidityLightIcon;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -226,6 +226,7 @@ export function dragerGasDongle(subtype: number = 0): ComponentTypeExtension {
|
|||
smoothingAverages,
|
||||
filters
|
||||
);
|
||||
console.log(chartData)
|
||||
}
|
||||
return chartData;
|
||||
},
|
||||
|
|
|
|||
84
src/pbHelpers/ComponentTypes/Plenum.ts
Normal file
84
src/pbHelpers/ComponentTypes/Plenum.ts
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
import TemperatureHumidityDarkIcon from "assets/components/temperatureHumidityDark.png";
|
||||
import TemperatureHumidityLightIcon from "assets/components/temperatureHumidityLight.png";
|
||||
import { convertedUnitMeasurement } from "models/UnitMeasurement";
|
||||
import {
|
||||
AreaChartData,
|
||||
ComponentTypeExtension,
|
||||
GraphFilters,
|
||||
LineChartData,
|
||||
simpleAreaChartData,
|
||||
simpleLineChartData,
|
||||
simpleMeasurements,
|
||||
simpleSummaries,
|
||||
Summary,
|
||||
unitMeasurementSummaries
|
||||
} from "pbHelpers/ComponentType";
|
||||
import { describeMeasurement } from "pbHelpers/MeasurementDescriber";
|
||||
import { pond } from "protobuf-ts/pond";
|
||||
import { quack } from "protobuf-ts/quack";
|
||||
|
||||
export function Plenum(subtype: number = 0): ComponentTypeExtension {
|
||||
let temperature = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_TEMPERATURE,
|
||||
quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
subtype
|
||||
);
|
||||
let humidity = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_PERCENT,
|
||||
quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
subtype
|
||||
);
|
||||
let pressure = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_PRESSURE,
|
||||
quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
subtype
|
||||
);
|
||||
return {
|
||||
type: quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
subtypes: [],
|
||||
friendlyName: "Plenum",
|
||||
description: "Measures temperature, humidity and pressure",
|
||||
isController: false,
|
||||
isSource: true,
|
||||
isCalibratable: true,
|
||||
addressTypes: [quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY],
|
||||
interactionResultTypes: [],
|
||||
states: [],
|
||||
measurements: simpleMeasurements(temperature, humidity, pressure),
|
||||
measurementSummary: async function(measurement: quack.Measurement): Promise<Array<Summary>> {
|
||||
return simpleSummaries(measurement, temperature, humidity, pressure);
|
||||
},
|
||||
unitMeasurementSummary: (
|
||||
measurements: convertedUnitMeasurement
|
||||
): Summary[] => {
|
||||
return unitMeasurementSummaries(
|
||||
measurements,
|
||||
quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
subtype
|
||||
);
|
||||
},
|
||||
areaChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): AreaChartData => {
|
||||
return simpleAreaChartData(measurement, smoothingAverages, filters);
|
||||
},
|
||||
lineChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): LineChartData => {
|
||||
return simpleLineChartData(
|
||||
quack.ComponentType.COMPONENT_TYPE_PLENUM,
|
||||
measurement,
|
||||
smoothingAverages,
|
||||
filters
|
||||
);
|
||||
},
|
||||
minMeasurementPeriodMs: 1000,
|
||||
icon: (theme?: "light" | "dark"): string | undefined => {
|
||||
return theme === "light" ? TemperatureHumidityDarkIcon : TemperatureHumidityLightIcon;
|
||||
}
|
||||
};
|
||||
}
|
||||
85
src/pbHelpers/ComponentTypes/TempHumidity.ts
Normal file
85
src/pbHelpers/ComponentTypes/TempHumidity.ts
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import TemperatureHumidityDarkIcon from "assets/components/temperatureHumidityDark.png";
|
||||
import TemperatureHumidityLightIcon from "assets/components/temperatureHumidityLight.png";
|
||||
import { convertedUnitMeasurement } from "models/UnitMeasurement";
|
||||
import {
|
||||
AreaChartData,
|
||||
ComponentTypeExtension,
|
||||
GraphFilters,
|
||||
LineChartData,
|
||||
simpleAreaChartData,
|
||||
simpleLineChartData,
|
||||
simpleMeasurements,
|
||||
simpleSummaries,
|
||||
Summary,
|
||||
unitMeasurementSummaries
|
||||
} from "pbHelpers/ComponentType";
|
||||
import { describeMeasurement } from "pbHelpers/MeasurementDescriber";
|
||||
import { pond } from "protobuf-ts/pond";
|
||||
import { quack } from "protobuf-ts/quack";
|
||||
|
||||
export function TempHumidity(subtype: number = 0): ComponentTypeExtension {
|
||||
let temperature = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_TEMPERATURE,
|
||||
quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY,
|
||||
subtype
|
||||
);
|
||||
let humidity = describeMeasurement(
|
||||
quack.MeasurementType.MEASUREMENT_TYPE_PERCENT,
|
||||
quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY,
|
||||
subtype
|
||||
);
|
||||
return {
|
||||
type: quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY,
|
||||
subtypes: [
|
||||
{
|
||||
key: quack.TempHumiditySubtype.TEMP_HUMIDITY_SUBTYPE_HDC302,
|
||||
value: "TEMP_HUMIDITY_SUBTYPE_HDC302",
|
||||
friendlyName: "HDC302"
|
||||
}
|
||||
],
|
||||
friendlyName: "Temperature/Humidity",
|
||||
description: "Measures the temperature and humidity",
|
||||
isController: false,
|
||||
isSource: true,
|
||||
isCalibratable: true,
|
||||
addressTypes: [quack.AddressType.ADDRESS_TYPE_I2C],
|
||||
interactionResultTypes: [],
|
||||
states: [],
|
||||
measurements: simpleMeasurements(temperature, humidity),
|
||||
measurementSummary: async function(measurement: quack.Measurement): Promise<Array<Summary>> {
|
||||
return simpleSummaries(measurement, temperature, humidity);
|
||||
},
|
||||
unitMeasurementSummary: (
|
||||
measurements: convertedUnitMeasurement
|
||||
): Summary[] => {
|
||||
return unitMeasurementSummaries(
|
||||
measurements,
|
||||
quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY,
|
||||
subtype
|
||||
);
|
||||
},
|
||||
areaChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): AreaChartData => {
|
||||
return simpleAreaChartData(measurement, smoothingAverages, filters);
|
||||
},
|
||||
lineChartData: (
|
||||
measurement: pond.UnitMeasurementsForComponent,
|
||||
smoothingAverages?: number,
|
||||
filters?: GraphFilters
|
||||
): LineChartData => {
|
||||
return simpleLineChartData(
|
||||
quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY,
|
||||
measurement,
|
||||
smoothingAverages,
|
||||
filters
|
||||
);
|
||||
},
|
||||
minMeasurementPeriodMs: 1000,
|
||||
icon: (theme?: "light" | "dark"): string | undefined => {
|
||||
return theme === "light" ? TemperatureHumidityDarkIcon : TemperatureHumidityLightIcon;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -30,3 +30,6 @@ export * from "./VPD";
|
|||
export * from "./Weight";
|
||||
export * from "./CapacitorCable";
|
||||
export * from "./AnalogPressure";
|
||||
export * from "./Plenum";
|
||||
export * from "./AmbientOnewire";
|
||||
export * from "./AmbientI2C";
|
||||
|
|
|
|||
|
|
@ -65,7 +65,8 @@ const DefaultAvailability: DeviceAvailabilityMap = new Map<quack.AddressType, De
|
|||
[quack.ComponentType.COMPONENT_TYPE_AIRFLOW, [0x6c]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, [0x71]], // the address cables will use when they are plugged into the expander with V2 device only
|
||||
[quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE, [0x6d]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_ANALOG_PRESSURE, [0x6e]]
|
||||
[quack.ComponentType.COMPONENT_TYPE_ANALOG_PRESSURE, [0x6e]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C, [0x44]]
|
||||
])
|
||||
],
|
||||
[quack.AddressType.ADDRESS_TYPE_DAC, [0, 1]],
|
||||
|
|
|
|||
|
|
@ -252,7 +252,8 @@ export const BindaptV2MonitorAvailability: DeviceAvailabilityMap = new Map<
|
|||
[quack.ComponentType.COMPONENT_TYPE_LIDAR, [0x62, 0x66, 0x10]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_CO2, [0x61]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_SEN5X, [0x69]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, [0x71]]
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, [0x71]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C, [0x44]]
|
||||
])
|
||||
],
|
||||
[quack.AddressType.ADDRESS_TYPE_POWER, [0]],
|
||||
|
|
@ -285,7 +286,8 @@ export const BindaptV2AutomateAvailability: DeviceAvailabilityMap = new Map<
|
|||
[quack.ComponentType.COMPONENT_TYPE_LIDAR, [0x62, 0x66, 0x10]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_CO2, [0x61]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_SEN5X, [0x69]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, [0x71]]
|
||||
[quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE, [0x71]],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AMBIENT_I2C, [0x44]]
|
||||
])
|
||||
],
|
||||
[quack.AddressType.ADDRESS_TYPE_POWER, [0]],
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ export default function ObjectUsers(props: Props) {
|
|||
userAPI
|
||||
.listObjectUsers(scope)
|
||||
.then((response: any) => {
|
||||
console.log(response)
|
||||
let rUsers: User[] = [];
|
||||
or(response.data, { users: [] }).users.forEach((user: any) => {
|
||||
rUsers.push(User.any(user));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue