Judo water treatment

This is most likely a server-side issue.

And the integration does not filter it out …

I made a template sensor to avoid seeing this in my graphs

{% if float(states(‘sensor.judo_isoftsaveplus_haus_gesamtwasserverbrauch’)) > 10 %}
{{ states(‘sensor.judo_isoftsaveplus_haus_gesamtwasserverbrauch’) }}
{% endif %}

could you finde a solution?

Hi I am new here tow and struggling a little bit where to copy and include your yaml solution. Coud you give me a hint. I add all to the template.yaml besides others and get an error. A wrote a new one and put it to includes and ist doesnt work

You have to put it into the configuration.yaml.

Make sure that you only have one instance of “sensor:” Then you can add as many “- platform: rest” as you like.

Hello, this is an awesome possibility to connect Judo i-Soft Save + to Home Assistant. For me the AppDaemon solution was running for almost half a year without any issues. Since some days I cannot get it back to work. Following errors


Checking the getjudo.py all seems fine and correct.

In my browser I can access the JSON data with the link, of course replacing with correct token. I tried already other python requests. All the same error.
Does anyone have the same issue? Anyone an idea? Thanks in advance for any hints.

Hi,

I have the same problems since some days.

[‘Scriptfehler - Judo-login fehlgeschlagen in Zeile: 294’, JSONDecodeError(‘Expecting value: line 1 column 1 (char 0)’)]

The code seems to working correct. bit the request within phyton leads to a empty return.
login_response = http.request(‘GET’, f"https://www.myjudo.eu/interface/?group=register&command=login&name=login&user={username}&password={pwmd5}&nohash=Service&role=customer")

same request in browser showes the correct json.

Update: I found the solution

The judo-server now needs header information to answer correctly.

In getjudo.py codefile change following code:

add at declaration (beginning):

import requests

def judo_login(username, password):

headers = {
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
login_response = requests.get(f"https://www.myjudo.eu/interface/?group=register&command=login&name=login&user={username}&password={pwmd5}&nohash=Service&role=customer", headers=headers)
#login_response = http.request('GET', f"https://www.myjudo.eu/interface/?group=register&command=login&name=login&user={username}&password={pwmd5}&nohash=Service&role=customer")
#login_response_json = json.loads(login_response.data)
login_response_json = login_response.json()

def send_command(index, data):

headers = {
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
cmd_response = requests.get(f"https://www.myjudo.eu/interface/?group=register&command=login&name=login&user={username}&password={pwmd5}&nohash=Service&role=customer", headers=headers)
cmd_response_json = cmd_response.json()
#cmd_response = http.request('GET', f"https://www.myjudo.eu/interface/?token={mydata.token}&group=register&command=write%20data&serial_number={mydata.serial}&dt={mydata.dt}&index={index}&data={data}&da={mydata.da}&role=customer")
#cmd_response_json = json.loads(cmd_response.data)

def main():

headers = {
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
response = requests.get(f"https://www.myjudo.eu/interface/?token={mydata.token}&group=register&command=get%20device%20data", headers=headers)
response_json = response.json()
#response = http.request('GET',f"https://www.myjudo.eu/interface/?token={mydata.token}&group=register&command=get%20device%20data")
#response_json = json.loads(response.data)
headers = {
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
error_response = requests.get(f"https://myjudo.eu/interface/?token={mydata.token}&group=register&command=get%20error%20messages", headers=headers)
error_response_json = error_response.json()
#error_response = http.request('GET',f"https://myjudo.eu/interface/?token={mydata.token}&group=register&command=get%20error%20messages")
#error_response_json = json.loads(error_response.data)

Dear Stefan,

do you have (maybe) a copy-paste mistake in the above def send_command(index, data)?

Should your

cmd_response = requests.get(f"https://www.myjudo.eu/interface/?group=register&command=login&name=login&user={username}&password={pwmd5}&nohash=Service&role=customer", headers=headers)

not rather read

cmd_response = requests.get(f"https://www.myjudo.eu/interface/?token={mydata.token}&group=register&command=write%20data&serial_number={mydata.serial}&dt={mydata.dt}&index={index}&data={data}&da={mydata.da}&role=customer", headers=headers)

There was also a “false” blank in the line. With the suggested change implemented it is working again.

Thank you for the support
Andreas

1 Like

Dear Andreas,
Dear Stefan,

I hope you can help me. I’m trying to get this to work. I’ve come very close :wink: in the section "def send_command(index,data) in the request get are data which I’ve to put in. I’m clear with “my token” and mydata.serial. But I’ve no clue where I can find “mydata.dt”, “data” and “mydata.da”

Thanks for your support.

PS.: I’m afraid, I think in the meantime I meesed it up completely … if someone could share a woriking getjudo.py … I’d highly appreciate. Thanks

One more … I’m getting the following error messages in the log:
1 (char 0)')]
[‘Scriptfehler - Fehler beim Auswerten des Fehlerspeichers in Zeile: 523’, JSONDecodeError(‘Expecting value: line 1 column 1 (char 0)’)]
[‘Scriptfehler - Fehler beim Holen und Auswerten der Gerätedaten in Zeile: 402’, JSONDecodeError('Expecting value: line 1 column

402: is in def:main, response = http.request Get …
523: error_response = http.request Get …

putting these 2 in the browser, both are working and delivering information from Judo.

And a warning in the log: 2024-09-27 14:57:29.771782 WARNING AppDaemon: No app description found for: getjudo - ignoring

I hope someone understands this errors and can help. Thanks

Hello Pelle2011,

is it possible to post the complete getjudo.py

i do not know exactly which part i have to change or add.

Thanks,
Fabian

Hi Fabian,

did you get it to work? If so, could you send me the working getjudo.py? I myself I cannot fix it … unfortunately.

Br

here you can find the changes of the the getjudo.py file.

3 Likes

with help of @deluxestyle it works

Hi,

I am trying to get my Judo integrated into Home Assistant. I am currently getting the following error messages in AppDaemon. Anyone an idea how I could solve it?

[‘Scriptfehler - Fehler beim Auswerten des Fehlerspeichers in Zeile: 523’, JSONDecodeError(‘Expecting value: line 1 column 1 (char 0)’)]
[‘Scriptfehler - Fehler beim Holen und Auswerten der Gerätedaten in Zeile: 402’, JSONDecodeError(‘Expecting value: line 1 column 1 (char 0)’)]

In the Home Assitant journal appear messages like this:

Received message on illegal discovery topic ‘homeassistant/switch/Keller/SOFTwell P_Regeneration/config’. The topic contains not allowed characters. For more information see MQTT - Home Assistant

I have tried the changes in the last posting of Deluxestyle, but doesn’t seem to work

Hi,
just recognized that my Judo integration is offline. It seems that Judo again has something changed with the login.
Someone else is having the similar problem?

Mine is still working

Hi, yes it’s up again … don’t now why?

Another small issue, since a couple of days 3 sensors are missing:

Consumption yesterday (Wasserverbrauch gestern)
Consumption today (Wasserverbrauch heute)
Throughput (Durchfluss)

Is anyone having a hint how to fix it?

Best

thanks so much! works like a charm again.

Hello, i got my judo i-safe system installed last week. Now I have tried to integrate it into HA. The installation of AD is new in version 0.16.7. Apart from that I have tried to set up everything according to the instructions. The judo files are stored under appdaemon/apps/main. Unfortunately I get the error when starting AD:

2024-12-08 10:53:42.823177 INFO AppDaemon: Calling initialize() for main_app

Lade gespeicherte Variablen


[‘Scriptfehler - Laden der Variablen aus Datei fehlgeschlagen in Zeile: 357’, FileNotFoundError(2, ‘No such file or directory’)]

[‘Beende Script. Schwerwiegender Fehler in Zeile: 376’, FileNotFoundError(2, ‘No such file or directory’)]

Verbunden mit MQTT Broker…

Topics wurden abonniert…

Autoconfigs wurden gesendet…

[10:53:45] INFO: Service AppDaemon exited with code 0 (by signal 0)

[10:53:46] INFO: Starting AppDaemon…

I have already tried to find the error myself by reading all possible posts about AD, but I can’t get any further. Do any of you have an idea where I can get the app to work? Thanks in advance

Did you adjust the path in the last lines of config_getjudy.py

# for Appdaemon the whole path is required "/config/appdaemon/apps/main/temp_getjudo.pkl", otherwise "temp_getjudo.pkl"
if RUN_IN_APPDEAMON == True:
    TEMP_FILE = "/config/apps/main/temp_getjudo.pkl"
else:
    TEMP_FILE = "temp_getjudo.pkl"

?

Hello everyone, I’ve been trying for hours to get the addon to work and I’ve now gotten to the point where it logs in successfully and also sends data to mqtt. Unfortunately, the status is “ok”. No other data comes. I get the following error message from Appdaemon.

 Add-on: AppDaemon
 Python Apps and Dashboard using AppDaemon 4.x for Home Assistant
-----------------------------------------------------------
 Add-on version: 0.16.7
 You are running the latest version of this add-on.
 System: Home Assistant OS 14.0  (amd64 / qemux86-64)
 Home Assistant Core: 2024.12.3
 Home Assistant Supervisor: 2024.12.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service init-appdaemon: starting
Looking in indexes: https://pypi.org/simple, https://wheels.home-assistant.io/musllinux-index/
Requirement already satisfied: paho-mqtt in /usr/lib/python3.11/site-packages (1.6.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
s6-rc: info: service init-appdaemon successfully started
s6-rc: info: service appdaemon: starting
s6-rc: info: service appdaemon successfully started
s6-rc: info: service legacy-services: starting
[12:36:33] INFO: Starting AppDaemon...
s6-rc: info: service legacy-services successfully started
2024-12-16 12:36:34.432278 INFO AppDaemon: AppDaemon Version 4.4.2 starting
2024-12-16 12:36:34.432337 INFO AppDaemon: Python version is 3.11.10
2024-12-16 12:36:34.432367 INFO AppDaemon: Configuration read from: /config/appdaemon.yaml
2024-12-16 12:36:34.432391 INFO AppDaemon: Added log: AppDaemon
2024-12-16 12:36:34.432416 INFO AppDaemon: Added log: Error
2024-12-16 12:36:34.432435 INFO AppDaemon: Added log: Access
2024-12-16 12:36:34.432454 INFO AppDaemon: Added log: Diag
2024-12-16 12:36:34.479807 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
2024-12-16 12:36:34.528032 INFO HASS: HASS Plugin Initializing
2024-12-16 12:36:34.528090 WARNING HASS: ha_url not found in HASS configuration - module not initialized
2024-12-16 12:36:34.528123 INFO HASS: HASS Plugin initialization complete
2024-12-16 12:36:34.528213 INFO AppDaemon: Initializing HTTP
2024-12-16 12:36:34.528279 INFO AppDaemon: Using 'ws' for event stream
2024-12-16 12:36:34.528985 INFO AppDaemon: Starting API
2024-12-16 12:36:34.529502 INFO AppDaemon: Starting Admin Interface
2024-12-16 12:36:34.529577 INFO AppDaemon: Starting Dashboards
2024-12-16 12:36:34.533095 INFO HASS: Connected to Home Assistant 2024.12.3
2024-12-16 12:36:34.536853 INFO AppDaemon: App 'main_app' added
2024-12-16 12:36:34.537062 INFO AppDaemon: Found 1 active apps
2024-12-16 12:36:34.537103 INFO AppDaemon: Found 0 inactive apps
2024-12-16 12:36:34.537138 INFO AppDaemon: Found 0 global libraries
2024-12-16 12:36:34.537174 INFO AppDaemon: Starting Apps with 1 workers and 1 pins
2024-12-16 12:36:34.537390 INFO AppDaemon: Running on port 5050
2024-12-16 12:36:34.549904 INFO HASS: Evaluating startup conditions
2024-12-16 12:36:34.551807 INFO HASS: Startup condition met: hass state=RUNNING
2024-12-16 12:36:34.551953 INFO HASS: All startup conditions met
2024-12-16 12:36:34.579642 INFO AppDaemon: Got initial state from namespace default
2024-12-16 12:36:36.540028 INFO AppDaemon: Scheduler running in realtime
2024-12-16 12:36:36.540961 INFO AppDaemon: Adding /config/apps to module import path
2024-12-16 12:36:36.541052 INFO AppDaemon: Adding /config/apps/main to module import path
2024-12-16 12:36:36.541685 WARNING AppDaemon: No app description found for: /config/apps/main/getjudo.py - ignoring
2024-12-16 12:36:36.541867 WARNING AppDaemon: No app description found for: /config/apps/main/messages_getjudo.py - ignoring
2024-12-16 12:36:36.542096 INFO AppDaemon: Loading App Module: /config/apps/main/main_entity.py
2024-12-16 12:36:36.551092 WARNING AppDaemon: No app description found for: /config/apps/main/config_getjudo.py - ignoring
2024-12-16 12:36:36.551286 INFO AppDaemon: Loading app main_app using class main_loop from module main_entity
2024-12-16 12:36:36.551637 INFO AppDaemon: Calling initialize() for main_app
Lade gespeicherte Variablen
----------------------
Letzte Fehler-ID: 631346
Wasserverbrauch gestern: 0
Offset für heutigen Wasserverbrauch: 0
Letzte Ausführung des Scripts: 0
da: 0x1
dt: 0x58
serial: 594XXXXXXX
token: XXXXXXXXXXXXXXX
avergage regeneration interval: 0h
counter for avg-calc: 1
last regenerations count: 0
timestamp of last regeneration: 0s
Softwater prop. since Regeneration: 0LVerbunden mit MQTT Broker...
Topics wurden abonniert...
Autoconfigs wurden gesendet...
Hardwater prop. since Regeneration: 0L
Initialisierung erfolgreich!
2024-12-16 12:36:36.582367 INFO AppDaemon: App initialization complete
['Scriptfehler - Fehler beim Holen und Auswerten der Gerätedaten in Zeile: 415', KeyError('9')]

I have a Judo Isoft Pro system. I would be very happy if someone can help me or has an idea where the error is.
Thank you!