лучшие парсеры типа " l xml" из beautifulsoup4 могут облегчить работу. предполагая, что опрос инвертора происходит через фиксированные промежутки времени, и вы периодически получаете данные в файле xml, вы можете сначала установить l xml и красивый суп с помощью следующей комбинированной команды:
python3 -m pip install l xml bs4 beautifulsoup4
теперь, что бы у вас ни было xml с любыми атрибутами и дочерними тегами, вы можете сделать следующий метод, используя beautifulsoup4, чтобы получить значение атрибута.
from bs4 import BeautifulSoup as soup
import requests
import lxml
def read_ac_power(file_name):
data=open(file_name, 'r').read()
variabul=soup(data,'lxml')
val=variabul.findAll('measurement')[2]
return val['value']
AC_Power=float(read_ac_power('inverter'))
print(AC_Power)
#compare the variable and send to server , use POST [or your preferred] method
Если вы не хотите хранить файл, удалите метод open (имя_файла, 'r'). Read () и подключите данные напрямую.
Пояснение
суть float () , которая явно преобразует строку из xml do c в float .
val=variabul.findAll('measurement')[2] #AC_power is stored as 3rd item...
return val['value'] #returns a string & need conversion