Device.java
/**
* A Java API for managing FritzBox HomeAutomation
* Copyright (C) 2017 Christoph Pirkl <christoph at users.sourceforge.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.github.kaklakariada.fritzbox.model.homeautomation;
import java.util.List;
import java.util.Optional;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
@Root(name = "device")
public class Device {
@Attribute(name = "identifier", required = true)
private String identifier;
@Attribute(name = "id")
private String id;
@Attribute(name = "functionbitmask")
private int functionBitmask;
@Attribute(name = "fwversion")
private String firmwareVersion;
@Attribute(name = "manufacturer")
private String manufacturer;
@Attribute(name = "productname")
private String productName;
@Element(name = "present")
private String present;
@Element(name = "txbusy", required = false)
private String txbusy;
@Element(name = "name")
private String name;
@Element(name = "batterylow", required = false)
private Integer batterylow;
@Element(name = "battery", required = false)
private Integer battery;
@Element(name = "switch", required = false)
private SwitchState switchState;
@Element(name = "simpleonoff", required = false)
private SimpleOnOffState simpleOnOff;
@Element(name = "powermeter", required = false)
private PowerMeter powerMeter;
@Element(name = "temperature", required = false)
private Temperature temperature;
@Element(name = "hkr", required = false)
private Hkr hkr;
@Element(name = "levelcontrol", required = false)
private LevelControl levelControl;
@Element(name = "colorcontrol", required = false)
private ColorControl colorControl;
@Element(name = "etsiunitinfo", required = false)
private EtsiUnitInfo etsiUnitInfo;
@ElementList(name = "buttons", required = false, inline = true)
private List<Button> buttons;
@Element(name = "humidity", required = false)
private Humidity humidity;
@Element(name = "blind", required = false)
private Blind blind;
@Element(name = "alert", required = false)
private Alert alert;
public String getIdentifier() {
return identifier;
}
public String getId() {
return id;
}
public int getFunctionBitmask() {
return functionBitmask;
}
public String getFirmwareVersion() {
return firmwareVersion;
}
public String getManufacturer() {
return manufacturer;
}
public String getProductName() {
return productName;
}
public boolean isPresent() {
return "1".equals(present);
}
public boolean isTxBusy() {
return "1".equals(txbusy);
}
public String getName() {
return name;
}
public Optional<Boolean> isBatterylow() {
return Optional.ofNullable(batterylow).map(value -> 1 == value);
}
public Optional<Integer> getBattery() {
return Optional.ofNullable(battery);
}
public SwitchState getSwitchState() {
return switchState == null || switchState.isNull() ? null : switchState;
}
public PowerMeter getPowerMeter() {
return powerMeter;
}
public Temperature getTemperature() {
return temperature;
}
public Hkr getHkr() {
return hkr;
}
public Blind getBlind() {
return blind;
}
public Alert getAlert() {
return alert;
}
public SimpleOnOffState getSimpleOnOff() {
return simpleOnOff;
}
public LevelControl getLevelControl() {
return levelControl;
}
public ColorControl getColorControl() {
return colorControl;
}
public EtsiUnitInfo getEtsiUnitInfo() {
return etsiUnitInfo;
}
public List<Button> getButtons() {
return buttons;
}
public String getPresent() {
return present;
}
public String getTxbusy() {
return txbusy;
}
public Integer getBatterylow() {
return batterylow;
}
public Humidity getHumidity() {
return humidity;
}
@Override
public String toString() {
return "Device [identifier=" + identifier + ", id=" + id + ", functionBitmask=" + functionBitmask
+ ", firmwareVersion=" + firmwareVersion + ", manufacturer=" + manufacturer + ", productName="
+ productName + ", present=" + present + ", txbusy=" + txbusy + ", name=" + name + ", batterylow="
+ batterylow + ", battery=" + battery + ", switchState=" + switchState + ", simpleOnOff=" + simpleOnOff
+ ", powerMeter=" + powerMeter + ", temperature=" + temperature + ", hkr=" + hkr + "]";
}
}