outside (temperature, humidity relative/absolute)
This commit is contained in:
parent
a96cf9d62c
commit
a3d2a92302
@ -29,6 +29,9 @@ export class Location {
|
|||||||
private _powerPurchase: Series | null,
|
private _powerPurchase: Series | null,
|
||||||
private _powerDeliver: Series | null,
|
private _powerDeliver: Series | null,
|
||||||
private _powerProduce: Series | null,
|
private _powerProduce: Series | null,
|
||||||
|
private _outsideTemperature: Series | null,
|
||||||
|
private _outsideHumidityRelative: Series | null,
|
||||||
|
private _outsideHumidityAbsolute: Series | null,
|
||||||
private _powerConsume: Value = Value.NULL,
|
private _powerConsume: Value = Value.NULL,
|
||||||
) {
|
) {
|
||||||
this.updateConsume();
|
this.updateConsume();
|
||||||
@ -58,17 +61,6 @@ export class Location {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private updateConsume() {
|
|
||||||
this._powerConsume = Value.ZERO.plus(this._powerPurchase?.value, true).plus(this._powerProduce?.value, true).minus(this._powerDeliver?.value, true);
|
|
||||||
this.powerSelf = Value.ZERO.plus(this.powerProduce?.value.minus(this.powerDeliver?.value, true), true);
|
|
||||||
this.powerPurchasePercentConsume = Value.ZERO.plus(this.powerPurchase?.value.percent(this.powerConsume, "%", 0), true);
|
|
||||||
this.powerProducePercentConsume = Value.ZERO.plus(this.powerProduce?.value.percent(this.powerConsume, "%", 0), true);
|
|
||||||
this.powerDeliveryPercentConsume = Value.ZERO.plus(this.powerDeliver?.value.percent(this.powerConsume, "%", 0), true);
|
|
||||||
this.powerDeliveryPercentProduce = Value.ZERO.plus(this.powerDeliver?.value.percent(this.powerProduce?.value, "%", 0), true);
|
|
||||||
this.powerSelfPercentConsume = Value.ZERO.plus(this.powerSelf.percent(this.powerConsume, "%", 0), true);
|
|
||||||
this.powerSelfPercentProduce = Value.ZERO.plus(this.powerSelf.percent(this.powerProduce?.value, "%", 0), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
static fromJson(json: any): Location {
|
static fromJson(json: any): Location {
|
||||||
return new Location(
|
return new Location(
|
||||||
validateNumber(json.id),
|
validateNumber(json.id),
|
||||||
@ -81,9 +73,23 @@ export class Location {
|
|||||||
or(json.powerPurchase, Series.fromJson, null),
|
or(json.powerPurchase, Series.fromJson, null),
|
||||||
or(json.powerDeliver, Series.fromJson, null),
|
or(json.powerDeliver, Series.fromJson, null),
|
||||||
or(json.powerProduce, Series.fromJson, null),
|
or(json.powerProduce, Series.fromJson, null),
|
||||||
|
or(json.outsideTemperature, Series.fromJson, null),
|
||||||
|
or(json.outsideHumidityRelative, Series.fromJson, null),
|
||||||
|
or(json.outsideHumidityAbsolute, Series.fromJson, null),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private updateConsume() {
|
||||||
|
this._powerConsume = Value.ZERO.plus(this._powerPurchase?.value, true).plus(this._powerProduce?.value, true).minus(this._powerDeliver?.value, true);
|
||||||
|
this.powerSelf = Value.ZERO.plus(this.powerProduce?.value.minus(this.powerDeliver?.value, true), true);
|
||||||
|
this.powerPurchasePercentConsume = Value.ZERO.plus(this.powerPurchase?.value.percent(this.powerConsume, "%", 0), true);
|
||||||
|
this.powerProducePercentConsume = Value.ZERO.plus(this.powerProduce?.value.percent(this.powerConsume, "%", 0), true);
|
||||||
|
this.powerDeliveryPercentConsume = Value.ZERO.plus(this.powerDeliver?.value.percent(this.powerConsume, "%", 0), true);
|
||||||
|
this.powerDeliveryPercentProduce = Value.ZERO.plus(this.powerDeliver?.value.percent(this.powerProduce?.value, "%", 0), true);
|
||||||
|
this.powerSelfPercentConsume = Value.ZERO.plus(this.powerSelf.percent(this.powerConsume, "%", 0), true);
|
||||||
|
this.powerSelfPercentProduce = Value.ZERO.plus(this.powerSelf.percent(this.powerProduce?.value, "%", 0), true);
|
||||||
|
}
|
||||||
|
|
||||||
get energyPurchase(): Series | null {
|
get energyPurchase(): Series | null {
|
||||||
return this._energyPurchase;
|
return this._energyPurchase;
|
||||||
}
|
}
|
||||||
@ -112,4 +118,16 @@ export class Location {
|
|||||||
return this._powerConsume;
|
return this._powerConsume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get outsideTemperature(): Series | null {
|
||||||
|
return this._outsideTemperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
get outsideHumidityRelative(): Series | null {
|
||||||
|
return this._outsideHumidityRelative;
|
||||||
|
}
|
||||||
|
|
||||||
|
get outsideHumidityAbsolute(): Series | null {
|
||||||
|
return this._outsideHumidityAbsolute;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,4 +148,44 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="Section">
|
||||||
|
<div class="SectionHeading">
|
||||||
|
<div class="SectionHeadingText">
|
||||||
|
Außen
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="SectionBody">
|
||||||
|
<div class="Section2">
|
||||||
|
<div class="SectionHeading">
|
||||||
|
<div class="SectionHeadingText">
|
||||||
|
Temperatur
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="SectionBody">
|
||||||
|
<app-series-select [initial]="location.outsideTemperature" (onChange)="locationService.outsideTemperature(location, $event)" [filter]="filterTemperature"></app-series-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Section2">
|
||||||
|
<div class="SectionHeading">
|
||||||
|
<div class="SectionHeadingText">
|
||||||
|
Relative Luftfeuchte
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="SectionBody">
|
||||||
|
<app-series-select [initial]="location.outsideHumidityRelative" (onChange)="locationService.outsideHumidityRelative(location, $event)" [filter]="filterHumidityRelative"></app-series-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="Section2">
|
||||||
|
<div class="SectionHeading">
|
||||||
|
<div class="SectionHeadingText">
|
||||||
|
Absolute Luftfeuchte
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="SectionBody">
|
||||||
|
<app-series-select [initial]="location.outsideHumidityAbsolute" (onChange)="locationService.outsideHumidityAbsolute(location, $event)" [filter]="filterHumidityAbsolute"></app-series-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,12 @@ export class LocationDetail implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
protected readonly filterPower = (series: Series) => series.type === SeriesType.VARYING && series.unit === 'W';
|
protected readonly filterPower = (series: Series) => series.type === SeriesType.VARYING && series.unit === 'W';
|
||||||
|
|
||||||
|
protected readonly filterTemperature = (series: Series) => series.type === SeriesType.VARYING && series.unit === '°C';
|
||||||
|
|
||||||
|
protected readonly filterHumidityRelative = (series: Series) => series.type === SeriesType.VARYING && series.unit === '%';
|
||||||
|
|
||||||
|
protected readonly filterHumidityAbsolute = (series: Series) => series.type === SeriesType.VARYING && series.unit === 'g/m³';
|
||||||
|
|
||||||
protected readonly Interval = Interval;
|
protected readonly Interval = Interval;
|
||||||
|
|
||||||
protected readonly Math = Math;
|
protected readonly Math = Math;
|
||||||
|
|||||||
@ -85,4 +85,16 @@ export class LocationService extends CrudService<Location> {
|
|||||||
this.postSingle([location.id, 'powerProduce'], seriesId, next);
|
this.postSingle([location.id, 'powerProduce'], seriesId, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outsideTemperature(location: Location, seriesId: number | null, next?: Next<Location>) {
|
||||||
|
this.postSingle([location.id, 'outsideTemperature'], seriesId, next);
|
||||||
|
}
|
||||||
|
|
||||||
|
outsideHumidityRelative(location: Location, seriesId: number | null, next?: Next<Location>) {
|
||||||
|
this.postSingle([location.id, 'outsideHumidityRelative'], seriesId, next);
|
||||||
|
}
|
||||||
|
|
||||||
|
outsideHumidityAbsolute(location: Location, seriesId: number | null, next?: Next<Location>) {
|
||||||
|
this.postSingle([location.id, 'outsideHumidityAbsolute'], seriesId, next);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,4 +71,19 @@ public class Location {
|
|||||||
@ManyToOne
|
@ManyToOne
|
||||||
private Series powerProduce;
|
private Series powerProduce;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Nullable
|
||||||
|
@ManyToOne
|
||||||
|
private Series outsideTemperature;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Nullable
|
||||||
|
@ManyToOne
|
||||||
|
private Series outsideHumidityRelative;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Nullable
|
||||||
|
@ManyToOne
|
||||||
|
private Series outsideHumidityAbsolute;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,4 +87,19 @@ public class LocationController {
|
|||||||
return locationService.setSeries(id, seriesId, Location::setPowerProduce);
|
return locationService.setSeries(id, seriesId, Location::setPowerProduce);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("{id}/outsideTemperature")
|
||||||
|
public LocationDto outsideTemperature(@PathVariable final long id, @RequestBody(required = false) @Nullable final Long seriesId) {
|
||||||
|
return locationService.setSeries(id, seriesId, Location::setOutsideTemperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("{id}/outsideHumidityRelative")
|
||||||
|
public LocationDto outsideHumidityRelative(@PathVariable final long id, @RequestBody(required = false) @Nullable final Long seriesId) {
|
||||||
|
return locationService.setSeries(id, seriesId, Location::setOutsideHumidityRelative);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("{id}/outsideHumidityAbsolute")
|
||||||
|
public LocationDto outsideHumidityAbsolute(@PathVariable final long id, @RequestBody(required = false) @Nullable final Long seriesId) {
|
||||||
|
return locationService.setSeries(id, seriesId, Location::setOutsideHumidityAbsolute);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,15 @@ public class LocationDto {
|
|||||||
@Nullable
|
@Nullable
|
||||||
public final SeriesDto powerProduce;
|
public final SeriesDto powerProduce;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public final SeriesDto outsideTemperature;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public final SeriesDto outsideHumidityRelative;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public final SeriesDto outsideHumidityAbsolute;
|
||||||
|
|
||||||
public LocationDto(@NonNull final Location location) {
|
public LocationDto(@NonNull final Location location) {
|
||||||
this.id = location.getId();
|
this.id = location.getId();
|
||||||
this.version = location.getVersion();
|
this.version = location.getVersion();
|
||||||
@ -50,6 +59,9 @@ public class LocationDto {
|
|||||||
this.powerPurchase = map(location.getPowerPurchase(), SeriesDto::new);
|
this.powerPurchase = map(location.getPowerPurchase(), SeriesDto::new);
|
||||||
this.powerDeliver = map(location.getPowerDeliver(), SeriesDto::new);
|
this.powerDeliver = map(location.getPowerDeliver(), SeriesDto::new);
|
||||||
this.powerProduce = map(location.getPowerProduce(), SeriesDto::new);
|
this.powerProduce = map(location.getPowerProduce(), SeriesDto::new);
|
||||||
|
this.outsideTemperature = map(location.getOutsideTemperature(), SeriesDto::new);
|
||||||
|
this.outsideHumidityRelative = map(location.getOutsideHumidityRelative(), SeriesDto::new);
|
||||||
|
this.outsideHumidityAbsolute = map(location.getOutsideHumidityAbsolute(), SeriesDto::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user