raspberrypi-temp-sensor/readHomematicIP.py

87 lines
3.0 KiB
Python
Raw Normal View History

import json
import sys
import os
# Homematic IP
import homematicip
from homematicip.home import Home
from homematicip.device import ShutterContact,HeatingThermostat,PlugableSwitchMeasuring,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
global 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_plugableswitchmeasuring(room,device):
print(room, " ", device.label, " ", device.lastStatusUpdate, " ", device.currentPowerConsumption, " ", device.energyCounter)
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
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))
2021-10-19 14:36:45 +00:00
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 main():
global home
home.get_current_state()
for group in home.groups:
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 __name__ == "__main__":
2021-10-19 14:36:45 +00:00
main()