Skip to content

Commit

Permalink
Make it work again!
Browse files Browse the repository at this point in the history
  • Loading branch information
zeekoe committed Jan 23, 2024
1 parent 18078f1 commit 3e88376
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 318 deletions.
21 changes: 1 addition & 20 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>bluebird</groupId>
<artifactId>bluebird</artifactId>
<version>0.1-SNAPSHOT</version>
<version>0.2-SNAPSHOT</version>
<build>
<plugins>
<plugin>
Expand Down Expand Up @@ -62,25 +62,6 @@
<version>2.23</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.nimbusds/oauth2-oidc-sdk -->
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>oauth2-oidc-sdk</artifactId>
<version>11.9.1</version>
</dependency>


<!-- <dependency>-->
<!-- <groupId>org.keycloak</groupId>-->
<!-- <artifactId>keycloak-authz-client</artifactId>-->
<!-- <version>23.0.4</version>-->
<!-- </dependency>-->
<!-- &lt;!&ndash; https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>org.apache.httpcomponents</groupId>-->
<!-- <artifactId>httpclient</artifactId>-->
<!-- <version>4.5.14</version>-->
<!-- </dependency>-->

<dependency>
<groupId>org.junit.jupiter</groupId>
Expand Down
58 changes: 23 additions & 35 deletions src/main/java/com/github/zeekoe/bluebird/heatpump/Auth.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.zeekoe.bluebird.heatpump.model.Token;
import com.github.zeekoe.bluebird.infrastructure.MyHttpClient;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.Properties;

public class Auth {
Expand All @@ -22,17 +19,14 @@ public class Auth {
PASSWORD = properties.getProperty("bluebird.password");
API_KEY = properties.getProperty("bluebird.apikey");
LOG_URL = properties.getProperty("bluebird.logurl");
TOKEN_URL = properties.getProperty("bluebird.tokenurl");
TOKEN_URL = "https://auth.weheat.nl/auth/realms/Weheat/protocol/openid-connect/token";

} catch (IOException e) {
e.printStackTrace();
}
}

private static final HttpClient httpClient = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.connectTimeout(Duration.ofSeconds(10))
.build();
private static final MyHttpClient httpClient = new MyHttpClient();
private Token token = null;

private static String USERNAME;
Expand Down Expand Up @@ -63,33 +57,27 @@ public String getToken() throws IOException, InterruptedException {
}

private String refreshToken() throws IOException, InterruptedException {
String url = TOKEN_URL + "?grant_type=refresh_token";
String request = "{\"refresh_token\":\"" + token.getRefresh_token() + "\"}";
return doRequest(request, url);
return httpClient.post(TOKEN_URL,
Map.of("Content-Type", "application/x-www-form-urlencoded",
"Accept", "application/json"),
Map.of(
"grant_type", "refresh_token",
"scope", "openid",
"client_id", "WeheatCommunityAPI",
"refresh_token", token.getRefresh_token()
));
}

private String doLogin() throws IOException, InterruptedException {
String url = TOKEN_URL + "?grant_type=password";
String request = "{\"email\":\"" + USERNAME + "\",\"password\":\"" + PASSWORD + "\",\"gotrue_meta_security\":{}}";
System.out.print(request);
return doRequest(request, url);
}

private static String doRequest(String requestPayload, String loginUrl) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(requestPayload))
.uri(URI.create(loginUrl))
.setHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0") // add request header
.setHeader("Content-Type", "application/json;charset=UTF-8")
.setHeader("apikey", API_KEY)
.build();

HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

if(response.statusCode() != 200) {
throw new RuntimeException("Incorrect status code in token retrieval " + response);
}

return response.body();
return httpClient.post(TOKEN_URL,
Map.of("Content-Type", "application/x-www-form-urlencoded",
"Accept", "application/json"),
Map.of(
"grant_type", "password",
"scope", "openid",
"client_id", "WeheatCommunityAPI",
"username", USERNAME,
"password", PASSWORD
));
}
}
72 changes: 24 additions & 48 deletions src/main/java/com/github/zeekoe/bluebird/heatpump/Heatpump.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
package com.github.zeekoe.bluebird.heatpump;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.zeekoe.bluebird.heatpump.model.HeatpumpLog;
import com.github.zeekoe.bluebird.influx.Influx;
import com.github.zeekoe.bluebird.infrastructure.MyHttpClient;
import org.influxdb.dto.Point;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.concurrent.TimeUnit;

public class Heatpump implements Runnable {

private static final HttpClient httpClient = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.connectTimeout(Duration.ofSeconds(10))
.build();
public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.registerModule(new JavaTimeModule());
private static final MyHttpClient httpClient = new MyHttpClient();

private final Auth auth;

Expand All @@ -36,10 +32,8 @@ public void run() {

final String heatpumpLogString = responseBody.replace("[", "").replace("]", "");

ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
final HeatpumpLog heatpumpLog = objectMapper.readValue(heatpumpLogString, HeatpumpLog.class);
System.out.print(heatpumpLog.getT_room() + " ");
final HeatpumpLog heatpumpLog = OBJECT_MAPPER.readValue(heatpumpLogString, HeatpumpLog.class);
System.out.print(heatpumpLog.gettRoom() + " ");
influx(heatpumpLog);
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
Expand All @@ -51,29 +45,29 @@ private void influx(HeatpumpLog heatpumpLog) {
final Point point = Point.measurement(influx.getMeasurementIdentifier())
.time(LocalDateTime.now().atZone(ZoneId.systemDefault()).toEpochSecond(), TimeUnit.SECONDS)
.addField("state", heatpumpLog.getState())
.addField("t_1", heatpumpLog.getT_1())
.addField("t_2", heatpumpLog.getT_2())
.addField("fan_power", heatpumpLog.getFan_power())
.addField("t_compressor_in", heatpumpLog.getT_compressor_in())
.addField("t_compressor_in_transient", heatpumpLog.getT_compressor_in_transient())
.addField("t_compressor_out", heatpumpLog.getT_compressor_out())
.addField("t_air_in", heatpumpLog.getT_air_in())
.addField("t_air_out", heatpumpLog.getT_air_out())
.addField("t_water_in", heatpumpLog.getT_water_in())
.addField("t_water_out", heatpumpLog.getT_water_out())
.addField("t_1", heatpumpLog.getT1())
.addField("t_2", heatpumpLog.getT2())
.addField("fan_power", heatpumpLog.getFanPower())
.addField("t_compressor_in", heatpumpLog.gettCompressorIn())
.addField("t_compressor_in_transient", heatpumpLog.gettCompressorInTransient())
.addField("t_compressor_out", heatpumpLog.gettCompressorOut())
.addField("t_air_in", heatpumpLog.gettAirIn())
.addField("t_air_out", heatpumpLog.gettAirOut())
.addField("t_water_in", heatpumpLog.gettWaterIn())
.addField("t_water_out", heatpumpLog.gettWaterOut())
.addField("t_compressor_out_transient", heatpumpLog.getT_compressor_out_transient())
.addField("p_compressor_in", heatpumpLog.getP_compressor_in())
.addField("p_compressor_out", heatpumpLog.getP_compressor_out())
.addField("rpm", heatpumpLog.getRpm())
.addField("fan", heatpumpLog.getFan())
.addField("t_inverter", heatpumpLog.getT_inverter())
.addField("compressor_power_low_accuracy", heatpumpLog.getCompressor_power_low_accuracy())
.addField("t_room", heatpumpLog.getT_room())
.addField("t_room_target", heatpumpLog.getT_room_target())
.addField("t_thermostat_setpoint", heatpumpLog.getT_thermostat_setpoint())
.addField("cm_mass_power_in", heatpumpLog.getCm_mass_power_in())
.addField("cm_mass_power_out", heatpumpLog.getCm_mass_power_out())
.addField("t_water_house_in", heatpumpLog.getT_water_house_in())
.addField("t_room", heatpumpLog.gettRoom())
.addField("t_room_target", heatpumpLog.gettRoom_target())
.addField("t_thermostat_setpoint", heatpumpLog.gettThermostatSetpoint())
.addField("cm_mass_power_in", heatpumpLog.getCmMassPowerIn())
.addField("cm_mass_power_out", heatpumpLog.getCmMassPowerOut())
.addField("t_water_house_in", heatpumpLog.gettWaterHouseIn())
.addField("cm_mass_flow", heatpumpLog.getCm_mass_flow())
.addField("ot_boiler_feed_temperature", heatpumpLog.getOt_boiler_feed_temperature())
.addField("ot_boiler_return_temperature", heatpumpLog.getOt_boiler_return_temperature())
Expand All @@ -82,24 +76,6 @@ private void influx(HeatpumpLog heatpumpLog) {
}

private String doHeatpumpRequest() throws IOException, InterruptedException {
final String url = auth.getLogurl();
final String apiKey = auth.getApikey();
final String authorization = "Bearer " + auth.getToken();

HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(URI.create(url))
.setHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0") // add request header
.setHeader("apikey", apiKey)
.setHeader("authorization", authorization)
.build();

HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

if (response.statusCode() != 200) {
throw new RuntimeException("Incorrect response: " + response);
}

return response.body();
return httpClient.get(auth.getLogurl(), auth.getToken());
}
}
105 changes: 0 additions & 105 deletions src/main/java/com/github/zeekoe/bluebird/heatpump/NimbusAuth.java

This file was deleted.

Loading

0 comments on commit 3e88376

Please sign in to comment.