diff --git a/readHomematicIP.py b/readHomematicIP.py index 48c3cf6..e094327 100755 --- a/readHomematicIP.py +++ b/readHomematicIP.py @@ -1,24 +1,18 @@ -import json -import sys -import os - # Homematic IP import homematicip from homematicip.home import Home -from homematicip.device import ShutterContact,HeatingThermostat,PlugableSwitchMeasuring,WallMountedThermostatPro -from homematicip.group import HeatingCoolingProfile,HeatingGroup +from homematicip.device import ShutterContact, WallMountedThermostatPro # Import MQTT client. -import paho.mqtt.publish as publish +# import paho.mqtt.publish as publish import paho.mqtt.client as paho # MQTT credentials # mqtt_username = 'homeassistant' # MQTT client username # mqtt_password = '3355' # MQTT client password # client_id = 'temperature' # unique client_id -mqtt_broker = "raspberrypi" # broker address, usually your HASS IP address +mqtt_broker = "raspberrypi" # broker address, usually your HASS IP address # create the MQTT client -global client client = paho.Client(protocol=paho.MQTTv31) # * set a random string (max 23 chars) # client connection @@ -32,44 +26,29 @@ home = Home() home.set_auth_token(config.auth_token) home.init(config.access_point) -def write_shutter(room,device): - print(room, " ", device.label, " ", device.lastStatusUpdate, " ", device.windowState) - #print(device) -def write_plugableswitchmeasuring(room,device): - print(room, " ", device.label, " ", device.lastStatusUpdate, " ", device.currentPowerConsumption, " ", device.energyCounter) +def write_shutter(room, device): + print(room, " ", device.label, " ", device.lastStatusUpdate, " ", device.windowState) + # print(device) -def write_heatingthermostat(room,device): - print(room, " ", device.label, " ", device.lastStatusUpdate) -def write_wallmountedthermostatpro(room,device): - global time - global deviceName - global actualTemperature - global setPointTemperature - global humidity +def write_wallmountedthermostatpro(room, device): + topic = 'weathersensors/' + room - time = device.lastStatusUpdate - deviceName = device.label - actualTemperature = device.actualTemperature - setPointTemperature = device.setPointTemperature - humidity = device.humidity - - topic = 'weathersensors/'+room - - #print(topic) - - client.publish(topic + "/time", "" + str(time)) - client.publish(topic + "/actualTemperature", "" + str(actualTemperature)) - client.publish(topic + "/setPointTemperature", "" + str(setPointTemperature)) - client.publish(topic + "/humidity", "" + str(humidity)) + client.publish(topic + "/time", "" + str(device.lastStatusUpdate)) + client.publish(topic + "/actualTemperature", "" + str(device.actualTemperature)) + client.publish(topic + "/setPointTemperature", "" + str(device.setPointTemperature)) + client.publish(topic + "/humidity", "" + str(device.humidity)) client.publish(topic + "/availability", "ON") - print({"Room":room, "Device Name":device.label, "Last Status Update" : device.lastStatusUpdate, "Actual Temperature":device.actualTemperature, "Set Point Temperature":device.setPointTemperature,"Humidity":device.humidity}) + print({"Room": room, "Device Name": device.label, "Last Status Update": device.lastStatusUpdate, + "Actual Temperature": device.actualTemperature, "Set Point Temperature": device.setPointTemperature, + "Humidity": device.humidity}) + def heating_profile(group): - #heatingGroup=homematicip.group.HeatingGroup(group) - #heatingGroup.__init__(home) + # heatingGroup=homematicip.group.HeatingGroup(group) + # heatingGroup.__init__(home) print("Heating Profiles") print("Group Label: " + group.label) print("Group Type: " + group.groupType) @@ -77,31 +56,27 @@ def heating_profile(group): for profile in group.profiles: if profile.name != "": print("Group Profile Name: " + profile.name) - #print("Profile ID: " + profile.id) - #print("Profile Index: " + profile.index) + # print("Profile ID: " + profile.id) + # print("Profile Index: " + profile.index) if profile.name == "Home Office": print("Profile Index" + profile.index) print(group) - heatingGroup=HeatingGroup(group) -# print(heatingGroup.profiles[0]) group.set_active_profile(profile.index) + def main(): global home home.get_current_state() for group in home.groups: -# if group.groupType=="HEATING": -# heating_profile(group) - if group.groupType=="META": + # if group.groupType=="HEATING": + # heating_profile(group) + if group.groupType == "META": for device in group.devices: - if isinstance(device,ShutterContact): - write_shutter(group.label,device) - elif isinstance(device,HeatingThermostat): - write_heatingthermostat(group.label,device) - elif isinstance(device,PlugableSwitchMeasuring): - write_plugableswitchmeasuring(group.label,device) - elif isinstance(device,WallMountedThermostatPro): - write_wallmountedthermostatpro(group.label,device) + if isinstance(device, ShutterContact): + write_shutter(group.label, device) + elif isinstance(device, WallMountedThermostatPro): + write_wallmountedthermostatpro(group.label, device) + if __name__ == "__main__": main()