Compare commits

...

15 Commits

Author SHA1 Message Date
Robert Borzutzki 0585a3f401 remove not existing method call 2022-01-10 10:04:24 +01:00
Robert Borzutzki 8ea93b3f31 remove change heating profile from readHomematicIP.py 2022-01-03 08:56:15 +01:00
robert 51859d05ef add changeHomematicIP.py to check if a mqtt message is send 2021-12-28 10:21:28 +01:00
Administrator ea95ca8e4f Change Profile to normal 2021-12-25 08:31:24 +00:00
robert 3ee82d9717 change heatingProfile topic 2021-12-20 23:10:18 +01:00
robert 249344158c reformat code 2021-12-20 21:53:56 +01:00
robert 5118791779 add publish heating profiles 2021-12-20 21:51:45 +01:00
robert a9a879dc7c add client id
print group
2021-12-20 20:08:47 +01:00
robert a82ad1a9b5 clean config 2021-12-20 20:02:21 +01:00
robert 06ef95f50e fix config 2021-12-20 20:01:29 +01:00
robert 0d8db4077d clean code 2021-12-20 19:59:44 +01:00
robert 6679f2b22b add heating profiles 2021-12-20 19:39:17 +01:00
robert 363c03ffa2 change to container.logs 2021-12-09 23:18:22 +01:00
Administrator c1ed8fdc68 fix tabs 2021-12-09 18:53:57 +00:00
Administrator 8cbdca0043 Merge branch 'robert-master-patch-22461' into 'master'
fix tabs

See merge request robert/raspberrypi-temp-sensors!1
2021-12-09 18:43:47 +00:00
3 changed files with 115 additions and 72 deletions

68
changeHomematicIP.py Normal file
View File

@ -0,0 +1,68 @@
# Homematic IP
import homematicip
from homematicip.home import Home
from homematicip.device import ShutterContact, WallMountedThermostatPro
# Import MQTT client.
import paho.mqtt.client as paho
# MQTT credentials
# mqtt_username = 'homeassistant' # MQTT client username
# mqtt_password = '3355' # MQTT client password
client_id = 'homematicip-pi' # unique client_id
mqtt_broker = "raspberrypi" # broker address, usually your HASS IP address
# create the MQTT client
client = paho.Client(client_id, 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)
topic = 'weathersensors/'
room = 'Leonie'
#client.subscribe(topic + room + "/setHeatingProfile")
client.subscribe(topic + room + "/activeProfile")
def on_message(client, userdata, msg): # The callback for when a PUBLISH message is received from the server.
global home
home.get_current_state()
for group in home.groups:
if group.label == room:
if group.groupType == "HEATING":
for profile in group.profiles:
if profile.name != "":
client.publish(topic + room + "/activeProfile", group.activeProfile.name)
client.publish(topic + room + "/heatingProfiles/" + profile.index, profile.name)
#print(profile.index + ": " + profile.name)
#print(profile.name)
#print(msg.payload.decode("utf-8"))
if profile.name == msg.payload.decode("utf-8"):
print("msg: " + msg.payload.decode("utf-8"))
print("Profile Index: " + profile.index)
#print(group)
group.set_active_profile(profile.index)
#print("%s %s" % (msg.topic, msg.payload.decode("utf-8")))
def heating_profile(group):
print("Active Heating Profile: " + group.activeProfile.name)
def main():
client.on_message = on_message # Define callback function for receipt of a message
client.loop_forever() # Start networking daemon
if __name__ == "__main__":
main()

View File

@ -29,31 +29,31 @@ docker = docker.from_env()
container = docker.containers.run("rtl_433:inkbird", "-R 42 -R 187 -F json -T 40 -M time:utc:usec", devices={'/dev/bus/usb/001/004:/dev/bus/usb/001/004:rwm'}, remove=True)
for line in container.split('\n'):
for line in container.logs(stream=True):
print("line: " + line)
print("line length: " + str(len(line)))
print("line: " + line)
print("line length: " + str(len(line)))
if len(line) > 0:
jsonData = (json.loads(line))
if len(line) > 0:
jsonData = (json.loads(line))
model = str(jsonData['model'])
if model == "Hideki-TS04":
topic = 'weathersensors/garden'
else:
topic = 'weathersensors/pool'
model = str(jsonData['model'])
if model == "Hideki-TS04":
topic = 'weathersensors/garden'
else:
topic = 'weathersensors/pool'
time = str(jsonData['time'])
if model == "Inkbird ITH-20R":
battery_json_key = "battery"
else:
battery_json_key = "battery_ok"
battery = str(jsonData[battery_json_key])
temperature = str(jsonData['temperature_C'])
humidity = str(jsonData['humidity'])
time = str(jsonData['time'])
if model == "Inkbird ITH-20R":
battery_json_key = "battery"
else:
battery_json_key = "battery_ok"
battery = str(jsonData[battery_json_key])
temperature = str(jsonData['temperature_C'])
humidity = str(jsonData['humidity'])
client.publish(topic + "/time", "" + time)
client.publish(topic + "/battery", "" + battery)
client.publish(topic + "/temperature", "" + temperature)
client.publish(topic + "/humidity", "" + humidity)
client.publish(topic + "/availability", "ON")
client.publish(topic + "/time", "" + time)
client.publish(topic + "/battery", "" + battery)
client.publish(topic + "/temperature", "" + temperature)
client.publish(topic + "/humidity", "" + humidity)
client.publish(topic + "/availability", "ON")

View File

@ -1,86 +1,61 @@
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.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
client_id = 'homematicip-pi' # 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 = paho.Client(client_id, 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
# 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_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 main():
global home
home.get_current_state()
for group in home.groups:
if group.groupType=="META":
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()