Add basic esper status info support

This commit is contained in:
uwap 2018-01-14 01:20:30 +01:00
parent 832ed3d1bf
commit da7105c90b
5 changed files with 51 additions and 6 deletions

View file

@ -7,7 +7,7 @@ const config : Config = {
color: "orange",
mqtt: "ws://map.rzl:1884"
},
topics: {
topics: Object.assign({}, {
led_stahltraeger: {
state: "/service/openhab/out/pca301_ledstrips/state",
command: "/service/openhab/in/pca301_ledstrips/command",
@ -116,8 +116,9 @@ const config : Config = {
command: "/service/openhab/in/pca301_infoscreen/command",
defaultValue: "OFF",
values: { on: "ON", off: "OFF" }
}
},
}},
utils.esper_topics("afba40")
),
controls: {
led_stahltrager: {
name: "LED Stahlträger",
@ -220,14 +221,14 @@ const config : Config = {
position: [450, 590],
icon: "fire",
iconColor: ({flyfry}) => flyfry == "on" ? "#6666FF" : "#000000",
ui: [
ui: utils.esper_statistics("afba40", [
{
type: "toggle",
text: "Fliegenbratgerät",
topic: "flyfry",
icon: "power"
}
]
])
},
artnet: {
name: "Artnet",

View file

@ -2,3 +2,28 @@
export const rainbow = "rgba(200,120,120,0.5);"
+ "--before-background: linear-gradient(40deg, #FF0000 0%, #00FF00 50%, #0000FF 70%, #FFFF00 100%);";
export const esper_topics = (chip_id: string) => ({
[ `esper_${chip_id}_version` ]: {
state: `/service/esper/${chip_id}/info`,
command: "",
defaultValue: "UNKNOWN",
values: {},
parseState: msg => JSON.parse(msg.toString()).version.esper
}
});
export const esper_statistics = (chip_id: string,
prev_ui: Array<ControlUI> = []) => (
prev_ui.concat([
{
type: "section",
text: "Funkdose"
},
{
type: "text",
text: "Version",
topic: `esper_${chip_id}_version`
}
])
);

View file

@ -172,3 +172,12 @@ export class Section extends UiItem<UISection> {
);
}
}
export class Text extends UiItem<UIText> {
render() {
return [
<ListItemText key="label" primary={this.props.item.text} />,
<ListItemText key="val" secondary={this.getValue().internal} />
];
}
}

View file

@ -20,7 +20,7 @@ import Button from "material-ui/Button";
import Slider from "material-ui-old/Slider";
import MuiThemeProvider from "material-ui-old/styles/MuiThemeProvider";
import { Toggle, DropDown, Link, Section } from "./UiItem";
import { Toggle, DropDown, Link, Section, Text } from "./UiItem";
export type UiItemListProps = {
controls: Array<ControlUI>,
@ -78,6 +78,11 @@ export default class UiItemList extends React.Component<UiItemListProps> {
case "slider": {
return this.renderSlider(control);
}
case "text": {
return <Text item={control}
state={this.props.state}
onChangeState={this.props.onChangeState} />;
}
default: {
throw new Error(
`Unknown UI type "${control.type}" for "${control.text}" component`

View file

@ -50,12 +50,17 @@ declare type UILink = {
link: string
} & UIBase;
declare type UIText = {
type: "text"
} & UIBase;
declare type ControlUI =
UIToggle
| UIDropDown
| UISlider
| UISection
| UILink
| UIText
declare type Control = {
name: string,