NEWS
Objektwerte per python auslesen
-
Hallo,
ich bin gerade dabei mich in iobroker einzuarbeiten.
Derzeit spiele ich ein wenig mit meinem Raspberry 2 und einem LCD1602.
Ich kann per python auf das LCD schreiben und im iobroker habe ich erfolgreich Objekte angelegt.
Als nächstes würde ich gerne in python die Objektwerte auslesen damit ich diese am Display darstellen kann.
Gibt es eine python library die Befehle bereitstellt um das zu bewerkstelligen ? -
Ok, habe es dann doch selber rausgefunden, es geht mit Adapter "simple RESTful API" und ein bisschen Code.
#!/usr/bin/env python3 import LCD1602 import time import requests def pollandwritedata(): api_url = "http://192.168.178.70:8087/getPlainValue/modbus.0.inputRegisters.5016_Total_DC_Power" api_url2 = "http://192.168.178.70:8087/getPlainValue/modbus.0.inputRegisters.13009_Export_power" api_url3 = "http://192.168.178.70:8087/getPlainValue/modbus.0.inputRegisters.13022_Battery_level_" api_url4 = "http://192.168.178.70:8087/getPlainValue/modbus.0.inputRegisters.13007_Load_power_" TDCP = 'I:'+str(requests.get(api_url).json())+'W' EDCP = 'O:'+str(requests.get(api_url2).json())+'W' BP = 'B:'+str(requests.get(api_url3).json())+'%' LP = 'C:'+str(requests.get(api_url4).json())+'W' # print(TDCP) # print(EDCP) # print(BP) # print(LP) LINE1 = TDCP+' '+BP LINE2 = EDCP+' '+LP LCD1602.write(0,0, LINE1) LCD1602.write(0,1, LINE2) def setup(): LCD1602.init(0x27, 1) # init(slave address, background light) LCD1602.write(0, 0, '') LCD1602.write(0, 1, '') time.sleep(2) def destroy(): LCD1602.clear() if __name__ == "__main__": try: setup() while(1): pollandwritedata() time.sleep(2) destroy() except KeyboardInterrupt: destroy()
mit raspi-config muss natürlich der I2C vorher eingeschaltet werden.