2021-02-01 05:59:33 +00:00
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 ) )
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-02-05 15:51:53 +00:00
main ( )