Hi @Eber , sure I can do :
#!/usr/bin/python3
import json
import requests
# curl -X POST -i 'http://192.168.24.80/mux_http' --data 'id=670&show=D_A_1_1|D_A_1_2|D_A_2_2|D_A_3_1|D_A_3_2|D_Y_1|D_A_1_3|D_A_2_3|D_Y_5|D_A_2_1~'
url = "http://192.168.24.80/mux_http"
data="id=670&show=D_A_1_1|D_A_1_2|D_A_2_2|D_A_3_1|D_A_3_2|D_Y_1|D_A_1_3|D_A_2_3|D_Y_5|D_A_2_1~"
content="<data><code>nok</code><D_A_1_1>0.00</D_A_1_1><D_A_1_2>0.00</D_A_1_2><D_A_2_2>000</D_A_2_2><D_A_3_1> 0</D_A_3_1><D_A_3_2>000</D_A_3_2><D_Y_1>000</D_Y_1><D_A_1_3>0.0</D_A_1_3><D_A_2_3>00</D_A_2_3><D_Y_5>0</D_Y_5><D_A_2_1>0.0</D_A_2_1></data>"
try:
resp = requests.get(url,data=data)
#print(resp.status_code)
#print(resp.text)
#print(resp)
except BaseException as err:
# Log out the error to the openHAB console for better investigation
print("GrĂŒnbeck:", "POST request failed: {0}".format(err))
#content="<data><code>ok</code><D_A_1_1>0.00</D_A_1_1><D_A_1_2>0.28</D_A_1_2><D_A_2_2>000</D_A_2_2><D_A_3_1> 8</D_A_3_1><D_A_3_2>100</D_A_3_2><D_Y_1>309</D_Y_1><D_A_1_3>6.1</D_A_1_3><D_A_2_3>99</D_A_2_3><D_Y_5>0</D_Y_5><D_A_2_1>0.0</D_A_2_1></data>"
else:
content=resp.text
import re
#print("resp=",resp.text)
#print("content=",content)
code = re.findall(r'<code>(\w+)<\/code>',content)[0]
da11 = re.findall(r'<D_A_1_1>([0-9\.]+)<\/D_A_1_1>',content)[0] # aktueller Durchfluss (m3/h)
da12 = re.findall(r'<D_A_1_2>([0-9\.]+)<\/D_A_1_2>',content)[0] # RestkapazitÀt (m3)
da22 = 0#re.findall(r'<D_A_2_2>([0-9\.]+)<\/D_A_2_2>',content)[0] # Restdauer Wartungsintervall (d)
da31 = re.findall(r'<D_A_3_1> *([0-9\.]+)<\/D_A_3_1>',content)[0] # Zeit seit letzer Regeneration (h)
da32 = re.findall(r'<D_A_3_2>([0-9\.]+)<\/D_A_3_2>',content)[0] # Protzentsatz der laufenden Regeneration (%)
dy1 = re.findall(r'<D_Y_1>([0-9\.]+)<\/D_Y_1>',content)[0] # wasserverbrauch pro Tag (l)
da13 = re.findall(r'<D_A_1_3>([0-9\.]+)<\/D_A_1_3>',content)[0] # AnlagenkapazitÀt
da23 = re.findall(r'<D_A_2_3>([0-9\.]+)<\/D_A_2_3>',content)[0] # Salzreichweite (nur bei SC23)
dy5 = re.findall(r'<D_Y_5>([0-9\.]+)<\/D_Y_5>',content)[0] # Aktueller Regenerationsschritt (0,1-5)
da21 = re.findall(r'<D_A_2_1>([0-9\.]+)<\/D_A_2_1>',content)[0] # # Restdauer oder Restmenge aktueller Regenerationsschritt
#print(code,da11,da12,da22,da31,da32,dy1,da13,da23,dy5,da21)
print(f'{{"code":"{code}","durchfluss":{da11},"restkapazitaet":{da12},"restdauer_wartungsintervall":{da22},"seit_regeneration":{da31},"regeneration_progress":{da32},"wasserverbrauch":{dy1},"anlagenkapazitaet":{da13},"salzreichweite":{da23},"aktueller_regenerationsschritt":{dy5},"restdauer_regeneration":{da21} }}')
and then in configuration.yaml :
template:
- sensor:
- name: "GrĂŒnbeck Durchfluss"
unit_of_measurement: "l"
state: "{{ state_attr('sensor.gruenbeck', 'durchfluss') }} "
- name: "GrĂŒnbeck RestkapazitĂ€t"
unit_of_measurement: "mÂł"
state: "{{ state_attr('sensor.gruenbeck', 'restkapazitaet') }} "
- name: "GrĂŒnbeck Zeit seit Regeneration"
unit_of_measurement: "h"
state: "{{ state_attr('sensor.gruenbeck', 'seit_regeneration') }} "
- name: "GrĂŒnbeck Protzentsatz Regeneration"
unit_of_measurement: "%"
state: "{{ state_attr('sensor.gruenbeck', 'regeneration_progress') }} "
- name: "GrĂŒnbeck Wasserverbrauch pro Tag"
unit_of_measurement: "l/d"
state: "{{ state_attr('sensor.gruenbeck', 'wasserverbrauch') }} "
- name: "GrĂŒnbeck AnlagenkapazitĂ€t"
unit_of_measurement: "mÂł"
state: "{{ state_attr('sensor.gruenbeck', 'anlagenkapazitaet') }} "
- name: "GrĂŒnbeck aktueller Regenerationsschritt"
state: "{{ state_attr('sensor.gruenbeck', 'aktueller_regenerationsschritt') }} "
- name: "GrĂŒnbeck Restdauer Regeneration"
unit_of_measurement: "min"
state: "{{ state_attr('sensor.gruenbeck', 'restdauer_regeneration') }} "
hope that helps, this is what it looks like in the GUI then