export of thermostat and windowcontact

This commit is contained in:
Wolfgang Hottgenroth
2018-01-16 21:06:00 +01:00
parent 72731b74b7
commit 1847db3934
4 changed files with 56 additions and 2 deletions

View File

@ -27,6 +27,13 @@ export function SwitchExport(itemId: string, label: string, stateTopic: string,
return { 'homekit': homekitOut, 'openhab': openhabOut }
}
export function ThermostatExport(itemId: string, label: string, temperatureTopic: string, temperatureFeedbackTopic: string) : ExportType {
return {'homekit': ThermostatHomekitExport(itemId, label, temperatureTopic, temperatureFeedbackTopic), 'openhab': ''}
}
export function ContactExport(itemId: string, label: string, status: string) : ExportType {
return {'homekit': ContactHomekitExport(itemId, label, status), 'openhab': ''}
}
function SwitchHomekitBulbExport(id: string, label: string, setOn: string, statusOn: string) : HomekitExportType {
let o : any = {
@ -67,6 +74,36 @@ function SwitchHomekitOutletExport(id: string, label: string, setOn: string, sta
return { 'id': id, 'object': o }
}
function ThermostatHomekitExport(id: string, label: string, setTemperature: string, statusTemperature: string) : HomekitExportType {
let o : any = {
"id": id,
"name": label,
"service": "Thermostat",
"topic": {
"setTargetTemperature": setTemperature,
"statusTargetTemperature": statusTemperature,
"statusCurrentTemperature": statusTemperature
},
"payload": {}
}
return { 'id': id, 'object': o }
}
function ContactHomekitExport(id: string, label: string, status: string) : HomekitExportType {
let o : any = {
"id": id,
"name": label,
"service": "ContactSensor",
"topic": {
"statusContactSensorState": status
},
"payload": {
"onContactDetected": "CLOSED"s
}
}
return { 'id': id, 'object': o }
}
function SwitchOpenHABExport(id: string, label: string, setOn: string, statusOn: string): string {
// Switch windowLightKitchen {mqtt=">[localbroker:nodered/items/windowLightKitchen:command:*:default]", mqtt="<[localbroker:nodered/items/windowLightKitchen/feedback:state:default]"}

View File

@ -3,7 +3,7 @@ import { mqttHandler } from './MqttDispatcher'
import { HasInTopic } from './AItem'
import { AHomematicItem } from './AHomematicItem'
import { MaxWindowContact } from './MaxWindowContact';
// import { SwitchExport, ExportType } from './Export'
import { ThermostatExport, ExportType } from './Export'
const WINDOW_OPEN_TEMPERATURE = 4.5
@ -27,6 +27,10 @@ export class MaxThermostat extends AHomematicItem implements HasInTopic {
return this.temperatureTopic
}
exportItem() : ExportType|null {
return ThermostatExport(this.itemId, this.label, this.temperatureTopic, this.temperatureFeedbackTopic)
}
constructor(floor: string, room: string, item: string, label: string, hmId: number, windowContacts: MaxWindowContact[]) {
super(floor, room, item, label, hmId)
this.temperatureTopic = `${this.topicFirstPart}/temperature`

View File

@ -1,7 +1,7 @@
import * as logger from './log'
import { mqttHandler } from './MqttDispatcher'
import { AHomematicItem } from './AHomematicItem'
// import { SwitchExport, ExportType } from './Export'
import { ContactExport, ExportType } from './Export'
export class MaxWindowContact extends AHomematicItem {
private deviceFeedbackTopic: string
@ -24,6 +24,10 @@ export class MaxWindowContact extends AHomematicItem {
]
}
exportItem() : ExportType|null {
return ContactExport(this.itemId, this.label, this.stateFeedbackTopic)
}
processMessage(topic: string, payload: string) : void {
if (payload == 'true') {
this.state = 'OPEN'

View File

@ -197,9 +197,11 @@ allLabeledItems.push(morningLightScene)
// ----------------------------------------------------------------------------------------------------------
let windowContactBathroomGnd = new MaxWindowContact('Gnd', 'Bathroom', 'WindowContact', 'Fenster Bad unten', 7)
windowContactBathroomGnd.start()
allLabeledItems.push(windowContactBathroomGnd)
let thermostatBathroomGnd = new MaxThermostat('Gnd', 'Bathroom', 'Thermostat', 'Thermostat Bad unten', 4, [windowContactBathroomGnd])
thermostatBathroomGnd.start()
allLabeledItems.push(thermostatBathroomGnd)
let thermostatBathroomGndCron = new Cron('thermostatBathroomGndCron', thermostatBathroomGnd, [
{cronTime: '00 00 06 * * 1-5', output: '21.0'},
@ -213,9 +215,11 @@ thermostatBathroomGndCron.start()
let windowContactBathroom1st = new MaxWindowContact('1st', 'Bathroom', 'WindowContact', 'Fenster Bad oben', 2)
windowContactBathroom1st.start()
allLabeledItems.push(windowContactBathroom1st)
let thermostatBathroom1st = new MaxThermostat('1st', 'Bathroom', 'Thermostat', 'Thermostat Bad oben', 3, [windowContactBathroom1st])
thermostatBathroom1st.start()
allLabeledItems.push(thermostatBathroom1st)
let thermostatBathroom1stCron = new Cron('thermostatBathroom1stCron', thermostatBathroom1st, [
{cronTime: '00 00 06 * * 1-5', output: '21.0'},
@ -230,16 +234,21 @@ thermostatBathroom1stCron.start()
let windowContactKitchen1 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact1', 'Fenster Küche Garten', 11)
windowContactKitchen1.start()
allLabeledItems.push(windowContactKitchen1)
let windowContactKitchen2 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact2', 'Fenster Küche Terassentür Garten', 10)
windowContactKitchen2.start()
allLabeledItems.push(windowContactKitchen2)
let windowContactKitchen3 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact3', 'Fenster Küche Straße 1', 12)
windowContactKitchen3.start()
allLabeledItems.push(windowContactKitchen3)
let windowContactKitchen4 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact4', 'Fenster Küche Straße 2', 13)
windowContactKitchen4.start()
allLabeledItems.push(windowContactKitchen4)
let thermostatKitchen = new MaxThermostat('Gnd', 'Kitchen', 'Thermostat', 'Thermostat Küche', 14, [
windowContactKitchen1, windowContactKitchen2, windowContactKitchen3, windowContactKitchen4])
thermostatKitchen.start()
allLabeledItems.push(thermostatKitchen)
let thermostatKitchenCron = new Cron('thermostatKitchenCron', thermostatKitchen, [
{cronTime: '00 00 06 * * 1-5', output: '21.0'},