# Homematic IP import homematicip from homematicip.home import Home from homematicip.device import ShutterContact, WallMountedThermostatPro # Import MQTT client. # 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 # create the MQTT client client = paho.Client(protocol=paho.MQTTv31) # * set a random string (max 23 chars) # client connection # client.username_pw_set(mqtt_username, mqtt_password) # MQTT server credentials client.connect(mqtt_broker, 1883, 60) # MQTT server address # Homematic IP config = homematicip.find_and_load_config_file() 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_wallmountedthermostatpro(room, device): topic = 'weathersensors/' + room 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}) def heating_profile(group): # heatingGroup=homematicip.group.HeatingGroup(group) # heatingGroup.__init__(home) print("Heating Profiles") print("Group Label: " + group.label) print("Group Type: " + group.groupType) print("Active Heating Profile: " + group.activeProfile.name) for profile in group.profiles: if profile.name != "": print("Group Profile Name: " + profile.name) # print("Profile ID: " + profile.id) # print("Profile Index: " + profile.index) if profile.name == "Home Office": print("Profile Index" + profile.index) print(group) 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": for device in group.devices: if isinstance(device, ShutterContact): write_shutter(group.label, device) elif isinstance(device, WallMountedThermostatPro): write_wallmountedthermostatpro(group.label, device) if __name__ == "__main__": main()