Merge branch 'plenum_ambient_component' into dev_environment
This commit is contained in:
commit
6ef69f8b98
66 changed files with 10408 additions and 80 deletions
|
|
@ -65,10 +65,20 @@ export function stringToComponentId(componentIDString: string): quack.ComponentI
|
|||
return componentID;
|
||||
}
|
||||
|
||||
const componentIDFragments = componentIDString.split("-", 3);
|
||||
//first split on a colon to get the mux line seperated
|
||||
const componentSplit = componentIDString.split(":", 2);
|
||||
if(componentSplit[1]){
|
||||
componentID.muxLine = Number(componentSplit[1])
|
||||
}
|
||||
|
||||
const componentIDFragments = componentIDString.split("-", 4);
|
||||
let type: string = quack.ComponentType[Number(componentIDFragments[0])];
|
||||
let addressType: string = quack.AddressType[Number(componentIDFragments[1])];
|
||||
let address: number = Number(componentIDFragments[2]);
|
||||
if(componentIDFragments[3]){
|
||||
componentID.expansionLine = Number(componentIDFragments[3])
|
||||
}
|
||||
|
||||
componentID.type = quack.ComponentType[type as keyof typeof quack.ComponentType];
|
||||
componentID.addressType = quack.AddressType[addressType as keyof typeof quack.AddressType];
|
||||
componentID.address = address;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ import {
|
|||
Weight,
|
||||
CapacitorCable,
|
||||
AnalogPressure
|
||||
Plenum,
|
||||
AmbientOnewire,
|
||||
AmbientI2C
|
||||
} from "pbHelpers/ComponentTypes";
|
||||
//import { multilineGrainCableData } from "pbHelpers/ComponentTypes/GrainCable";
|
||||
//import { multilineCapCableData } from "./ComponentTypes/CapacitorCable";
|
||||
|
|
@ -100,7 +103,11 @@ const COMPONENT_TYPE_MAP = new Map<quack.ComponentType, Function>([
|
|||
[quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE, dragerGasDongle],
|
||||
[quack.ComponentType.COMPONENT_TYPE_AIRFLOW, Airflow],
|
||||
[quack.ComponentType.COMPONENT_TYPE_TEMP_HUMIDITY, TempHumidity],
|
||||
[quack.ComponentType.COMPONENT_TYPE_ANALOG_PRESSURE, AnalogPressure]
|
||||
[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;
|
||||
}
|
||||
};
|
||||
}
|
||||
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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -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]],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue