Skip to content

Instantly share code, notes, and snippets.

@hersche
Last active June 20, 2017 10:16
Show Gist options
  • Save hersche/1848a0552dfce935cf55b169eb01f3d6 to your computer and use it in GitHub Desktop.
Save hersche/1848a0552dfce935cf55b169eb01f3d6 to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
# For ubuntu-desktop
import paho.mqtt.client as paho
broker="...cloudmqtt.com"
port=15
def on_publish(client,userdata,result): #create function for callback
pass
client1= paho.Client("thinkpad") #create client object
client1.username_pw_set('user','pw')
client1.on_publish = on_publish #assign function to callback
client1.connect(broker,port) #establish connection
# percent
batteryPercent = int(open("/sys/class/power_supply/BAT0/capacity", "r").readlines()[0])
ret= client1.publish("thinkpad/battery",'{ "batt":'+str(batteryPercent)+'}')
print("Battery: "+str(batteryPercent)+"%")
# voltage
batteryPercent = float(open("/sys/class/power_supply/BAT0/voltage_now", "r").readlines()[0])/1000000
ret= client1.publish("thinkpad/batteryV",'{ "batt":'+str(batteryPercent)+'}')
print("Battery V: "+str(batteryPercent)+"V")
batteryPercent = float(open("/sys/class/power_supply/BAT0/power_now", "r").readlines()[0])/1000000
ret= client1.publish("thinkpad/batteryW",'{ "batt":'+str(batteryPercent)+'}')
print("Battery W: "+str(batteryPercent)+"W")
batteryPercent = int(open("/sys/class/thermal/thermal_zone0/temp", "r").readlines()[0])/1000
ret= client1.publish("thinkpad/thermalZone0",'{ "batt":'+str(batteryPercent)+'}')
print("CPU 0: "+str(batteryPercent)+"C")
batteryPercent = int(open("/sys/class/thermal/thermal_zone1/temp", "r").readlines()[0])/1000
ret= client1.publish("thinkpad/thermalZone1",'{ "batt":'+str(batteryPercent)+'}')
print("CPU 1: "+str(batteryPercent)+"C")
@hersche
Copy link
Author

hersche commented Jun 20, 2017

  • platform: mqtt
    state_topic: "thinkpad/batteryV"
    name: "Thinkpad V"
    unit_of_measurement: "V"
    value_template: '{{ value_json.batt }}'

  • platform: mqtt
    state_topic: "thinkpad/battery"
    name: "Thinkpad %"
    unit_of_measurement: "Battery %"
    value_template: '{{ value_json.batt }}'

  • platform: mqtt
    state_topic: "thinkpad/batteryW"
    name: "Thinkpad W"
    unit_of_measurement: "W"
    value_template: '{{ value_json.batt }}'

  • platform: mqtt
    state_topic: "thinkpad/thermalZone0"
    name: "Thinkpad CPU 0"
    unit_of_measurement: "C (CPU)"
    value_template: '{{ value_json.batt }}'

  • platform: mqtt
    state_topic: "thinkpad/thermalZone1"
    name: "Thinkpad CPU 1"
    unit_of_measurement: "C (CPU)"
    value_template: '{{ value_json.batt }}'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment