<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geekworm.com/index.php?action=history&amp;feed=atom&amp;title=CommentStreams%3A764d7138a34fa5fbf3293982d7ad839b</id>
	<title>CommentStreams:764d7138a34fa5fbf3293982d7ad839b - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geekworm.com/index.php?action=history&amp;feed=atom&amp;title=CommentStreams%3A764d7138a34fa5fbf3293982d7ad839b"/>
	<link rel="alternate" type="text/html" href="https://wiki.geekworm.com/index.php?title=CommentStreams:764d7138a34fa5fbf3293982d7ad839b&amp;action=history"/>
	<updated>2026-07-29T07:28:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geekworm.com/index.php?title=CommentStreams:764d7138a34fa5fbf3293982d7ad839b&amp;diff=31057&amp;oldid=prev</id>
		<title>204.174.159.1: Migrated reply #780</title>
		<link rel="alternate" type="text/html" href="https://wiki.geekworm.com/index.php?title=CommentStreams:764d7138a34fa5fbf3293982d7ad839b&amp;diff=31057&amp;oldid=prev"/>
		<updated>2020-02-22T07:17:14Z</updated>

		<summary type="html">&lt;p&gt;Migrated reply #780&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;sudo raspi-config # Enable Interfacing Options&amp;gt;I2C&lt;br /&gt;
sudo apt-get install i2c-tools # Install i2c-tools&lt;br /&gt;
nano ~/ups.py # Make a new python script&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
import struct&lt;br /&gt;
import smbus&lt;br /&gt;
import sys&lt;br /&gt;
import time&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
lowest = 60&lt;br /&gt;
&lt;br /&gt;
def readVoltage(bus):&lt;br /&gt;
  &amp;quot;This function returns as float the voltage from the Raspi UPS Hat via the provided SMBus object&amp;quot;&lt;br /&gt;
  address = 0x36&lt;br /&gt;
  read = bus.read_word_data(address, 2)&lt;br /&gt;
  swapped = struct.unpack(&amp;quot;&amp;lt;H&amp;quot;, struct.pack(&amp;quot;&amp;gt;H&amp;quot;, read))[0]&lt;br /&gt;
  voltage = swapped * 78.125 /1000000&lt;br /&gt;
  return voltage&lt;br /&gt;
&lt;br /&gt;
def readCapacity(bus):&lt;br /&gt;
  &amp;quot;This function returns as a float the remaining capacity of the battery connected to the Raspi UPS Hat via the provided SMBus object&amp;quot;&lt;br /&gt;
  address = 0x36&lt;br /&gt;
  read = bus.read_word_data(address, 4)&lt;br /&gt;
  swapped = struct.unpack(&amp;quot;&amp;lt;H&amp;quot;, struct.pack(&amp;quot;&amp;gt;H&amp;quot;, read))[0]&lt;br /&gt;
  capacity = swapped/256&lt;br /&gt;
  return capacity&lt;br /&gt;
&lt;br /&gt;
def shutdown():&lt;br /&gt;
  os.system(&amp;quot;sudo shutdown -h now&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
bus = smbus.SMBus(1)  # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)&lt;br /&gt;
print &amp;quot;Voltage:%5.2fV&amp;quot; % readVoltage(bus)&lt;br /&gt;
print &amp;quot;Battery:%5i%%&amp;quot; % readCapacity(bus)&lt;br /&gt;
&lt;br /&gt;
# Only check if we are low&lt;br /&gt;
if readCapacity(bus) &amp;lt;= lowest:&lt;br /&gt;
  first = readCapacity(bus)&lt;br /&gt;
  time.sleep(5)&lt;br /&gt;
  second = readCapacity(bus)&lt;br /&gt;
  # If battery capacity is dropping&lt;br /&gt;
  if first &amp;gt; second:&lt;br /&gt;
    shutdown()&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
crontab -e&lt;br /&gt;
*/5 * * * * python /home/pi/ups.py &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 #Add to crontab. Run script every 5 min.&amp;lt;!-- migrated from Comments; original IP: 204.174.159.1 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>204.174.159.1</name></author>
	</entry>
</feed>