Eltern Solar Shelly JSON + Demo Data
This commit is contained in:
parent
524d03174a
commit
c781c88147
@ -14,7 +14,6 @@ import de.ph87.data.topic.TimestampType;
|
||||
import de.ph87.data.topic.Topic;
|
||||
import de.ph87.data.topic.TopicRepository;
|
||||
import de.ph87.data.topic.query.TopicQuery;
|
||||
import de.ph87.data.topic.query.TopicQueryFunction;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -83,9 +82,20 @@ public class DemoService {
|
||||
"$.timestamp",
|
||||
"\"1ZPA0020300305\"",
|
||||
new TopicQuery(electricityEnergyPurchase, "$.purchaseWh", 0.001),
|
||||
new TopicQuery(electricityPowerPurchase, "$.powerW", TopicQueryFunction.ONLY_POSITIVE),
|
||||
new TopicQuery(electricityPowerPurchase, "$.powerW", 1, TopicQuery.Function.ONLY_POSITIVE),
|
||||
new TopicQuery(electricityEnergyDelivery, "$.deliveryWh", 0.001),
|
||||
new TopicQuery(electricityPowerDelivery, "$.powerW", TopicQueryFunction.ONLY_NEGATIVE_BUT_NEGATE)
|
||||
new TopicQuery(electricityPowerDelivery, "$.powerW", 1, TopicQuery.Function.ONLY_NEGATIVE_BUT_NEGATE)
|
||||
);
|
||||
|
||||
final Series elternElectricityEnergyProduce = series("eltern/electricity/energy/produce", "kWh", SeriesType.DELTA, 60);
|
||||
final Series elternElectricityPowerProduce = series("eltern/electricity/power/produce", "W", SeriesType.VARYING, 60);
|
||||
topicMeterNumber(
|
||||
"Eltern/Solar/Shelly/status/switch:0",
|
||||
TimestampType.EPOCH_SECONDS,
|
||||
"$.aenergy.minute_ts",
|
||||
"\"2025-10-27-shelly\"",
|
||||
new TopicQuery(elternElectricityEnergyProduce, "$.aenergy.total", 0.001),
|
||||
new TopicQuery(elternElectricityPowerProduce, "$.apower")
|
||||
);
|
||||
|
||||
final Series elternElectricityEnergyPurchase = series("eltern/electricity/energy/purchase", "kWh", SeriesType.DELTA, 10);
|
||||
@ -97,10 +107,10 @@ public class DemoService {
|
||||
TimestampType.ISO_LOCAL_DATE_TIME,
|
||||
"$.Time",
|
||||
"sml_meter_number_raw:$.meter.number",
|
||||
new TopicQuery(elternElectricityEnergyPurchase, "$.meter.energy_purchased_kwh", 1),
|
||||
new TopicQuery(elternElectricityPowerPurchase, "$.meter.power_w", TopicQueryFunction.ONLY_POSITIVE),
|
||||
new TopicQuery(elternElectricityEnergyDelivery, "$.meter.energy_delivered_kwh", 1),
|
||||
new TopicQuery(elternElectricityPowerDelivery, "$.meter.power_w", TopicQueryFunction.ONLY_NEGATIVE_BUT_NEGATE)
|
||||
new TopicQuery(elternElectricityEnergyPurchase, "$.meter.energy_purchased_kwh"),
|
||||
new TopicQuery(elternElectricityPowerPurchase, "$.meter.power_w", 1, TopicQuery.Function.ONLY_POSITIVE),
|
||||
new TopicQuery(elternElectricityEnergyDelivery, "$.meter.energy_delivered_kwh"),
|
||||
new TopicQuery(elternElectricityPowerDelivery, "$.meter.power_w", 1, TopicQuery.Function.ONLY_NEGATIVE_BUT_NEGATE)
|
||||
);
|
||||
|
||||
final Series gardenPressure = series("garden/pressure", "hPa", SeriesType.VARYING, 5);
|
||||
@ -230,7 +240,7 @@ public class DemoService {
|
||||
|
||||
private void eltern() {
|
||||
final Plot plot = plotRepository.save(new Plot(plotRepository.count()));
|
||||
plot.setName("Eltern");
|
||||
plot.setName("Eltern Energie");
|
||||
|
||||
final Axis energy = axisRepository.save(new Axis(plot));
|
||||
plot.addAxis(energy);
|
||||
@ -256,13 +266,13 @@ public class DemoService {
|
||||
electricityEnergyDeliveryGraph.setColor("#FF00FF");
|
||||
energy.addGraph(electricityEnergyDeliveryGraph);
|
||||
|
||||
// final Series electricityEnergyProduce = seriesRepository.findByName("eltern/electricity/energy/produce").orElseThrow();
|
||||
// final Graph electricityEnergyProduceGraph = graphRepository.save(new Graph(energy, electricityEnergyProduce));
|
||||
// electricityEnergyProduceGraph.setName("Produktion");
|
||||
// electricityEnergyProduceGraph.setType(GraphType.BAR);
|
||||
// electricityEnergyProduceGraph.setStack("a");
|
||||
// electricityEnergyProduceGraph.setColor("#0000FF");
|
||||
// energy.addGraph(electricityEnergyProduceGraph);
|
||||
final Series electricityEnergyProduce = seriesRepository.findByName("eltern/electricity/energy/produce").orElseThrow();
|
||||
final Graph electricityEnergyProduceGraph = graphRepository.save(new Graph(energy, electricityEnergyProduce));
|
||||
electricityEnergyProduceGraph.setName("Produktion");
|
||||
electricityEnergyProduceGraph.setType(GraphType.BAR);
|
||||
electricityEnergyProduceGraph.setStack("a");
|
||||
electricityEnergyProduceGraph.setColor("#0000FF");
|
||||
energy.addGraph(electricityEnergyProduceGraph);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
@ -37,28 +37,52 @@ public class TopicQuery {
|
||||
@NonNull
|
||||
@Column(nullable = false)
|
||||
@Enumerated(EnumType.STRING)
|
||||
private TopicQueryFunction function = TopicQueryFunction.NONE;
|
||||
private TopicQuery.Function function = Function.NONE;
|
||||
|
||||
@Column(nullable = false)
|
||||
private double factor;
|
||||
|
||||
public TopicQuery(@Nullable final Series series, @NonNull final String valueQuery) {
|
||||
this(series, valueQuery, "", "", TopicQueryFunction.NONE, 1);
|
||||
public TopicQuery(
|
||||
@Nullable final Series series,
|
||||
@NonNull final String valueQuery
|
||||
) {
|
||||
this(series, valueQuery, "", "");
|
||||
}
|
||||
|
||||
public TopicQuery(@Nullable final Series series, @NonNull final String valueQuery, @NonNull final String beginQuery, @NonNull final String terminatedQuery) {
|
||||
this(series, valueQuery, beginQuery, terminatedQuery, TopicQueryFunction.NONE, 1);
|
||||
public TopicQuery(
|
||||
@Nullable final Series series,
|
||||
@NonNull final String valueQuery,
|
||||
final double factor
|
||||
) {
|
||||
this(series, valueQuery, factor, Function.NONE, "", "");
|
||||
}
|
||||
|
||||
public TopicQuery(@Nullable final Series series, @NonNull final String valueQuery, final double factor) {
|
||||
this(series, valueQuery, "", "", TopicQueryFunction.NONE, factor);
|
||||
public TopicQuery(
|
||||
@Nullable final Series series,
|
||||
@NonNull final String valueQuery,
|
||||
final double factor,
|
||||
@NonNull final TopicQuery.Function function
|
||||
) {
|
||||
this(series, valueQuery, factor, function, "", "");
|
||||
}
|
||||
|
||||
public TopicQuery(@Nullable final Series series, @NonNull final String valueQuery, @NonNull final TopicQueryFunction function) {
|
||||
this(series, valueQuery, "", "", function, 1);
|
||||
public TopicQuery(
|
||||
@Nullable final Series series,
|
||||
@NonNull final String valueQuery,
|
||||
@NonNull final String beginQuery,
|
||||
@NonNull final String terminatedQuery
|
||||
) {
|
||||
this(series, valueQuery, 1, Function.NONE, beginQuery, terminatedQuery);
|
||||
}
|
||||
|
||||
public TopicQuery(@Nullable final Series series, @NonNull final String valueQuery, @NonNull final String beginQuery, @NonNull final String terminatedQuery, @NonNull final TopicQueryFunction function, final double factor) {
|
||||
public TopicQuery(
|
||||
@Nullable final Series series,
|
||||
@NonNull final String valueQuery,
|
||||
final double factor,
|
||||
@NonNull final TopicQuery.Function function,
|
||||
@NonNull final String beginQuery,
|
||||
@NonNull final String terminatedQuery
|
||||
) {
|
||||
this.series = series;
|
||||
this.valueQuery = valueQuery;
|
||||
this.beginQuery = beginQuery;
|
||||
@ -67,4 +91,22 @@ public class TopicQuery {
|
||||
this.factor = factor;
|
||||
}
|
||||
|
||||
public enum Function {
|
||||
NONE(v -> v),
|
||||
ONLY_POSITIVE(v -> v > 0 ? v : 0),
|
||||
ONLY_NEGATIVE_BUT_NEGATE(v -> v < 0 ? -v : 0),
|
||||
;
|
||||
|
||||
private final java.util.function.Function<Double, Double> function;
|
||||
|
||||
Function(@NonNull java.util.function.Function<Double, Double> function) {
|
||||
this.function = function;
|
||||
}
|
||||
|
||||
public double apply(final double value) {
|
||||
return function.apply(value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ public class TopicQueryDto {
|
||||
public final String terminatedQuery;
|
||||
|
||||
@NonNull
|
||||
public final TopicQueryFunction function;
|
||||
public final TopicQuery.Function function;
|
||||
|
||||
public final double factor;
|
||||
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
package de.ph87.data.topic.query;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public enum TopicQueryFunction {
|
||||
NONE(v -> v),
|
||||
ONLY_POSITIVE(v -> v > 0 ? v : 0),
|
||||
ONLY_NEGATIVE_BUT_NEGATE(v -> v < 0 ? -v : 0),
|
||||
;
|
||||
|
||||
private final Function<Double, Double> function;
|
||||
|
||||
TopicQueryFunction(@NonNull Function<Double, Double> function) {
|
||||
this.function = function;
|
||||
}
|
||||
|
||||
public double apply(final double value) {
|
||||
return function.apply(value);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user