Skip to content

Commit

Permalink
#3 fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
comtel2000 committed Apr 23, 2017
1 parent 563ab8f commit e191749
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 34 deletions.
23 changes: 11 additions & 12 deletions src/main/java/org/comtel2000/fritzhome/FritzUtils.java
Expand Up @@ -8,11 +8,11 @@
import org.comtel2000.fritzhome.SwitchDevice.State;

/**
*
*
* Fritz utilities
*
*
* @author comtel
*
*
* @see <a href=
* "https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_Technical_Note_-_Session_ID.pdf">AVM_Technical_Note_-_Session_ID.pdf</a>
*/
Expand Down Expand Up @@ -82,17 +82,16 @@ public static String getState(Locale locale, State state) {

/**
* Formated current power output (sample: 10.22 W)
*
*
* @param locale Locale
* @param power value in 0,01 W (current power output, refresh interval 2 minutes)
* @param power value in 0.001 W (current power output, refresh interval 2 minutes)
* @return power in W or kW
*/
public static String getPower(Locale locale, int power) {
if (power < 1) {
return "0 Watt";
}
double watt = Math.floor(power) * 0.01d;

double watt = Math.floor(power) * 0.001d;
if (watt < 1000) {
return String.format(locale, "%.1f Watt", watt);
}
Expand All @@ -101,9 +100,9 @@ public static String getPower(Locale locale, int power) {

/**
* Formated total energy consumption since start (sample: 12.1 Wh)
*
*
* @param locale Locale
* @param energy vlaue in 1.0 Wh (total energy consumption since start)
* @param energy value in 1.0 Wh (total energy consumption since start)
* @return energy in Wh or kWh
*/
public static String getEnergy(Locale locale, int energy) {
Expand All @@ -118,7 +117,7 @@ public static String getEnergy(Locale locale, int energy) {

/**
* Formated temperature output (sample: 24.1°C)
*
*
* @param locale Locale
* @param celsius in 0,1°C, negative or positive value
* @return temperature
Expand All @@ -133,7 +132,7 @@ public static String getTemperature(Locale locale, int celsius) {

/**
* Formated temperature output (sample: 64.1°F)
*
*
* @param locale Locale
* @param celsius in 0,1°C, negative or positive value
* @return temperature in fahrenheit
Expand All @@ -146,7 +145,7 @@ public static String getTemperatureF(Locale locale, int celsius) {
/**
* XXtemperatur in 0,5°C, Values: 0x10 – 0x38 16 – 56 (8 to 28°C), 16 <= 8°C, 17 = 8,5°C...... 56
* >= 28°C, 254 = ON , 253 = OFF
*
*
* @param locale Locale
* @param value
* @return (8°C to 28°C), ON, OFF, < 8°C, > 28°C
Expand Down
Expand Up @@ -172,7 +172,7 @@ private SpeechletResponse getDeviceEnergy(final Intent intent, final Locale loca
return newResponse(String.format("%s %s hat keine Energieverbauchswerte", toGroupName(device), deviceSlot.getValue()));
}
StringBuilder sb = new StringBuilder();
sb.append("Der aktuelle Energieverbrauch von ").append(deviceSlot.getValue()).append(" ist ")
sb.append("Der aktuelle Energie Verbrauch von ").append(deviceSlot.getValue()).append(" ist ")
.append(FritzUtils.getPower(locale, device.getPower()));
if (device.getEnergy() > 0) {
sb.append(" mit einem Gesamtverbrauch von ").append(FritzUtils.getEnergy(locale, device.getEnergy()));
Expand All @@ -182,7 +182,7 @@ private SpeechletResponse getDeviceEnergy(final Intent intent, final Locale loca
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return newResponse("Es ist ein Fehler beim Lesen des Energieverbrauches aufgetreten");
return newResponse("Es ist ein Fehler beim Lesen des Energie Verbrauches aufgetreten");
}

private Optional<SwitchDevice> findDevice(String name) throws Exception {
Expand Down
46 changes: 26 additions & 20 deletions src/test/java/org/comtel2000/fritzhome/FritzUtilsTest.java
Expand Up @@ -19,31 +19,37 @@ public void testChallengeResponse() throws UnsupportedEncodingException, NoSuchA

@Test
public void testGetPower() {
assertEquals("0 Watt", FritzUtils.getPower(Locale.getDefault(), 0));
assertEquals(String.format("%.1f Watt", 1.0), FritzUtils.getPower(Locale.getDefault(), 100));
assertEquals(String.format("%.2f kW", 1.0), FritzUtils.getPower(Locale.getDefault(), 100000));
assertEquals("0 Watt", FritzUtils.getPower(new Locale("DE", "de"), 0));
assertEquals(String.format("%.1f Watt", .1), FritzUtils.getPower(new Locale("DE", "de"), 100));
assertEquals(String.format("%.1f Watt", 1.57), FritzUtils.getPower(new Locale("DE", "de"), 1570));
assertEquals(String.format("%.2f kW", 1.11), FritzUtils.getPower(new Locale("DE", "de"), 1111190));
}

@Test
public void testGetEnergy() {
assertEquals("0 Wh", FritzUtils.getEnergy(Locale.getDefault(), 0));
assertEquals(String.format("%.1f Wh", 100.0), FritzUtils.getEnergy(Locale.getDefault(), 100));
assertEquals(String.format("%.1f kWh", 100.0), FritzUtils.getEnergy(Locale.getDefault(), 100000));
assertEquals("0 Wh", FritzUtils.getEnergy(new Locale("DE", "de"), 0));
assertEquals(String.format("%.1f Wh", 100.0), FritzUtils.getEnergy(new Locale("DE", "de"), 100));
assertEquals(String.format("%.1f kWh", 100.0), FritzUtils.getEnergy(new Locale("DE", "de"), 100000));
}

@Test
public void testGetTemperature() {
assertEquals(String.format("%.1f°C", 1.0), FritzUtils.getTemperature(Locale.getDefault(), 10));
assertEquals(String.format("%.1f°C", 10.0), FritzUtils.getTemperature(Locale.getDefault(), 100));
assertEquals(String.format("%.1f°C", -1.0), FritzUtils.getTemperature(Locale.getDefault(), -10));
assertEquals(String.format("%.1f°C", 1.0), FritzUtils.getTemperature(new Locale("DE", "de"), 10));
assertEquals(String.format("%.1f°C", 10.0), FritzUtils.getTemperature(new Locale("DE", "de"), 100));
assertEquals(String.format("%.1f°C", -1.0), FritzUtils.getTemperature(new Locale("DE", "de"), -10));

assertEquals(String.format(new Locale("US", "us"), "%.1f°F", 33.8), FritzUtils.getTemperature(new Locale("US", "us"), 10));
assertEquals(String.format(new Locale("US", "us"), "%.1f°F", 50.0), FritzUtils.getTemperature(new Locale("US", "us"), 100));
assertEquals(String.format(new Locale("US", "us"), "%.1f°F", 30.2), FritzUtils.getTemperature(new Locale("US", "us"), -10));

}


@Test
public void testGetTemperatureF() {
assertEquals(String.format("%.1f°F", 33.8), FritzUtils.getTemperatureF(Locale.getDefault(), 10));
assertEquals(String.format("%.1f°F", 50.0), FritzUtils.getTemperatureF(Locale.getDefault(), 100));
assertEquals(String.format("%.1f°F", 30.2), FritzUtils.getTemperatureF(Locale.getDefault(), -10));
assertEquals(String.format("%.1f°F", 33.8), FritzUtils.getTemperatureF(new Locale("DE", "de"), 10));
assertEquals(String.format("%.1f°F", 50.0), FritzUtils.getTemperatureF(new Locale("DE", "de"), 100));
assertEquals(String.format("%.1f°F", 30.2), FritzUtils.getTemperatureF(new Locale("DE", "de"), -10));
}

@Test
Expand Down Expand Up @@ -75,15 +81,15 @@ public void testDeviceType() {
@Test
public void testGetHkrTemperature() {

assertEquals("ON", FritzUtils.getHkrTemperature(Locale.getDefault(), 254));
assertEquals("OFF", FritzUtils.getHkrTemperature(Locale.getDefault(), 253));
assertEquals(String.format("< %.1f°C", 8.0), FritzUtils.getHkrTemperature(Locale.getDefault(), 15));
assertEquals(String.format("> %.1f°C", 28.0), FritzUtils.getHkrTemperature(Locale.getDefault(), 57));
assertEquals("ON", FritzUtils.getHkrTemperature(new Locale("DE", "de"), 254));
assertEquals("OFF", FritzUtils.getHkrTemperature(new Locale("DE", "de"), 253));
assertEquals(String.format("< %.1f°C", 8.0), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 15));
assertEquals(String.format("> %.1f°C", 28.0), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 57));

assertEquals(String.format("%.1f°C", 8.0), FritzUtils.getHkrTemperature(Locale.getDefault(), 16));
assertEquals(String.format("%.1f°C", 8.5), FritzUtils.getHkrTemperature(Locale.getDefault(), 17));
assertEquals(String.format("%.1f°C", 27.5), FritzUtils.getHkrTemperature(Locale.getDefault(), 55));
assertEquals(String.format("%.1f°C", 28.0), FritzUtils.getHkrTemperature(Locale.getDefault(), 56));
assertEquals(String.format("%.1f°C", 8.0), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 16));
assertEquals(String.format("%.1f°C", 8.5), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 17));
assertEquals(String.format("%.1f°C", 27.5), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 55));
assertEquals(String.format("%.1f°C", 28.0), FritzUtils.getHkrTemperature(new Locale("DE", "de"), 56));
}


Expand Down

0 comments on commit e191749

Please sign in to comment.