diff --git a/Dockerfile b/Dockerfile
index 47331d2..223e9d0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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
+COPY /build /usr/share/nginx/html
\ No newline at end of file
diff --git a/indexV2.html b/indexV2.html
deleted file mode 100644
index 45dc87b..0000000
--- a/indexV2.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
- Adaptive Dashboard
-
-
-
-
-
-
-
-
-
diff --git a/package-lock.json b/package-lock.json
index 3610bee..001a981 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -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"
}
diff --git a/package.json b/package.json
index 76ac48b..af59848 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/src/bin/BinVisualizerV2.tsx b/src/bin/BinVisualizerV2.tsx
index 8eee39e..cd812e6 100644
--- a/src/bin/BinVisualizerV2.tsx
+++ b/src/bin/BinVisualizerV2.tsx
@@ -1539,7 +1539,7 @@ export default function BinVisualizer(props: Props) {
) : (
- fullScreenHandler.enter()}>
+ {fullScreenHandler.enter()}}>
)}
diff --git a/src/pbHelpers/AddressTypes/I2C.ts b/src/pbHelpers/AddressTypes/I2C.ts
index b6bf585..d2f1733 100644
--- a/src/pbHelpers/AddressTypes/I2C.ts
+++ b/src/pbHelpers/AddressTypes/I2C.ts
@@ -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);
diff --git a/src/pbHelpers/ComponentType.tsx b/src/pbHelpers/ComponentType.tsx
index 860e2aa..c030cef 100644
--- a/src/pbHelpers/ComponentType.tsx
+++ b/src/pbHelpers/ComponentType.tsx
@@ -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.COMPONENT_TYPE_INVALID, Invalid],
@@ -98,7 +102,12 @@ const COMPONENT_TYPE_MAP = new Map([
[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 {
diff --git a/src/pbHelpers/ComponentTypes/AmbientI2C.ts b/src/pbHelpers/ComponentTypes/AmbientI2C.ts
new file mode 100644
index 0000000..7a2cbf9
--- /dev/null
+++ b/src/pbHelpers/ComponentTypes/AmbientI2C.ts
@@ -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> {
+ 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;
+ }
+ };
+}
diff --git a/src/pbHelpers/ComponentTypes/AmbientOnewire.ts b/src/pbHelpers/ComponentTypes/AmbientOnewire.ts
new file mode 100644
index 0000000..4fd394a
--- /dev/null
+++ b/src/pbHelpers/ComponentTypes/AmbientOnewire.ts
@@ -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> {
+ 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;
+ }
+ };
+}
diff --git a/src/pbHelpers/ComponentTypes/DragerGasDongle.ts b/src/pbHelpers/ComponentTypes/DragerGasDongle.ts
index 648b01d..1a13bbf 100644
--- a/src/pbHelpers/ComponentTypes/DragerGasDongle.ts
+++ b/src/pbHelpers/ComponentTypes/DragerGasDongle.ts
@@ -226,6 +226,7 @@ export function dragerGasDongle(subtype: number = 0): ComponentTypeExtension {
smoothingAverages,
filters
);
+ console.log(chartData)
}
return chartData;
},
diff --git a/src/pbHelpers/ComponentTypes/Plenum.ts b/src/pbHelpers/ComponentTypes/Plenum.ts
new file mode 100644
index 0000000..687d6fd
--- /dev/null
+++ b/src/pbHelpers/ComponentTypes/Plenum.ts
@@ -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> {
+ 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;
+ }
+ };
+}
diff --git a/src/pbHelpers/ComponentTypes/TempHumidity.ts b/src/pbHelpers/ComponentTypes/TempHumidity.ts
new file mode 100644
index 0000000..50542ed
--- /dev/null
+++ b/src/pbHelpers/ComponentTypes/TempHumidity.ts
@@ -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> {
+ 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;
+ }
+ };
+}
diff --git a/src/pbHelpers/ComponentTypes/index.ts b/src/pbHelpers/ComponentTypes/index.ts
index 39b1560..8bb37ac 100644
--- a/src/pbHelpers/ComponentTypes/index.ts
+++ b/src/pbHelpers/ComponentTypes/index.ts
@@ -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";
diff --git a/src/pbHelpers/DeviceAvailability.ts b/src/pbHelpers/DeviceAvailability.ts
index da39022..ba49393 100644
--- a/src/pbHelpers/DeviceAvailability.ts
+++ b/src/pbHelpers/DeviceAvailability.ts
@@ -65,7 +65,8 @@ const DefaultAvailability: DeviceAvailabilityMap = new Map {
+ console.log(response)
let rUsers: User[] = [];
or(response.data, { users: [] }).users.forEach((user: any) => {
rUsers.push(User.any(user));