18.05.2016, 21:18
(Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2016, 21:27 von harryberlin.)
teste das mal in der console.
wenn es läuft, kannst dich wieder melden.
wenn es läuft, kannst dich wieder melden.
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# improved and completed by PiModules Version 1.0 29.08.2015
# picoStatus-v3.py by KTB is based on upisStatus.py by Kyriakos Naziris
# Kyriakos Naziris / University of Portsmouth / kyriakos@naziris.co.uk
import sys
import os
# import xbmc
import smbus
import time
import datetime
# You can install psutil using: sudo pip install psutil
# import psutil
def set_kodi_prop(property, value, id=10000):
xbmc.executebuiltin('SetProperty(%s,%s,%s)' % (property, value, id))
def year():
return i2c.read_byte_data(0x6A, 0x06)[1][2:]
def month():
return i2c.read_byte_data(0x6A, 0x05)[1][2:]
def day():
return i2c.read_byte_data(0x6A, 0x04)[1][2:]
def day_of_week():
days_of_the_week = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
dow = i2c.read_byte_data(0x6A, 0x03)
return days_of_the_week[int(dow[1][3:]) - 1]
def hour():
return i2c.read_byte_data(0x6A, 0x02)[1][2:]
def minute():
return i2c.read_byte_data(0x6A, 0x01)[1][2:]
def seconds():
return i2c.read_byte_data(0x6A, 0x00)[1][2:]
def ccf():
return i2c.read_byte_data(0x6A, 0x07)[1][2:]
def pwr_mode():
data = i2c.read_byte_data(0x69, 0x00)
data = data & ~(1 << 7)
if (data == 1):
return "RPi"
elif (data == 2):
return "BAT"
else:
return "ERR"
def bat_level_2():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x01)
data = format(data, "02x")
return (float(data) / 100)
def bat_level_1():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x02)
data = format(data, "02x")
return (float(data) / 100)
def rpi_level_2():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x03)
data = format(data, "02x")
return (float(data) / 100)
def rpi_level_1():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x04)
data = format(data, "02x")
return (float(data) / 100)
def ad1_read():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x05)
data = format(data, "02x")
return (float(data) / 100)
def ad2_read():
time.sleep(0.1)
data = i2c.read_word_data(0x69, 0x07)
data = format(data, "02x")
return (float(data) / 100)
def temp_celsius():
return i2c.read_word_data(0x69, 0x12)
def sot23_temp():
time.sleep(0.1)
data = i2c.read_byte_data(0x69, 0x0C)
data = format(data, "02x")
return data
def to92_temp():
time.sleep(0.1)
data = i2c.read_byte_data(0x69, 0x0d)
data = format(data, "02x")
return data
def fw_version():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x00)
data = format(data, "02x")
return data
def error_code():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x01)
data = format(data, "02x")
return data
def rpi_serror_2():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x02)
data = format(data, "02x")
return data
def rpi_serror_1():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x03)
data = format(data, "02x")
return data
def bat_serror_2():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x04)
data = format(data, "02x")
return data
def bat_serror_1():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x05)
data = format(data, "02x")
return data
def tmp_serror_2():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x07)
data = format(data, "02x")
return data
def tmp_serror_1():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x06)
data = format(data, "02x")
return data
def sta_counter():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x08)
data = format(data, "02x")
return data
def fssd_batime():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x09)
data = format(data, "02x")
return data
def lprsta():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x10)
data = format(data, "02x")
return data
def btto():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x11)
data = format(data, "02x")
return data
def led_blue():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x12)
data = format(data, "02x")
return data
def led_red():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x13)
data = format(data, "02x")
return data
def buzmode():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x14)
data = format(data, "02x")
return data
def fanmode():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x15)
data = format(data, "02x")
return data
def fanspeed():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x16)
data = format(data, "02x")
return data
def picoxbmc():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x23)
data = format(data, "02x")
return data
def fssd_tout():
time.sleep(0.1)
data = i2c.read_byte_data(0x6b, 0x23)
data = format(data, "02x")
return data
def main():
status = ['OFF', 'ON']
buz_fan_modes = ['Disabled', 'Enabled', 'Automatic']
fan_speeds = ['0', '100', '25', '50', '75']
print " "
print " pico status V1.0"
print "***********************************"
print " ", "UPS PIco Firmware:", fw_version()
print " ", "Powering Mode:", pwr_mode()
print " ", "BAT Volatge:", bat_level(), "V"
print " ", "RPi Voltage:", rpi_level(), "V"
print " ", "SOT23 Temperature:", sot23_temp(), "C"
print " ", "TO-92 Temperature:", to92_temp(), "C"
print " ", "A/D1 Voltage:", ad1_read(), "V"
print " ", "A/D2 Voltage:", ad2_read(), "V"
print "***********************************"
print " "
print "--- RTC data ---"
print year() + "-" + month() + "-" + day() + " " + day_of_week() + " " + hour() + ":" + minute() + ":" + seconds() + " /" + ccf()
print "--- Status registers --- "
print "Mode\t\tBat_lvl\t\tRPi_lvl\t\tTemp"
print '%s \t\t %s \t\t %s \t\t %s' % (pwr_mode(), bat_level_1(), rpi_level_2(), temp_celsius())
print "--- Status commands ---"
print "Firmware: %s" % fw_version()
print "Error code: %s" % '{0:08b}'.format(int(error_code()[1][2:]))
print "rpi_serror: %s" % rpi_serror_1()[1][3:] + "." + rpi_serror_2()[1][2:] + " V"
print "bat_serror: %s" % bat_serror_1()[1][3:] + "." + bat_serror_2()[1][2:] + " V"
print "tmp_serror: %s" % tmp_serror_1()[1][2:] + "." + tmp_serror_2()[1][2:] + " " + unichr(176) + "C"
print "Still Alive Timeout Counter: %d s (255=disabled)" % int(sta_counter()[1], 16)
print "Battery Running Time: %d s (255=disabled)" % int(fssd_batime()[1], 16)
print "Low Power Restart Time: %d s" % int(lprsta()[1], 16)
print "Battery Powering Testing Timeout: %d s" % int(btto()[1], 16)
print "led_blue: %s" % status[int(led_blue()[1][3:])]
print "led_red: %s" % status[int(led_red()[1][3:])]
print "Integrated Buzzer Mode: %s" % buz_fan_modes[int(buzmode()[1][3:])]
print "Integrated Fan Mode: %s" % buz_fan_modes[int(fanmode()[1][3:])]
print "Integrated Fan Speed: %s %%" % fan_speeds[int(fanspeed()[1][3:])]
print "XBMC Mode: %s" % status[int(picoxbmc()[1][3:])]
print "FSSD Timeout: %d s" % int(fssd_tout()[1], 16)
i2c = smbus.SMBus(1)
if __name__ == '__main__':
main()