Code Monkey home page Code Monkey logo

Comments (18)

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024 1

Your tearing the device down! ;-)
Hope you can get something out of it!

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024 1

@jasperslits
My intention is to control the summer bypass manually and have a proper status feedback on it.
the automatic bypass behavior hasn't been optimal so far - in summer it tends to by activated even during a hot day and most importantly - I've experienced at least 2 times that it was left activated even when the outside temperature dropped below 14°C in Sept/Oct with some cold days forecast ahead.
This might have been caused by some bug in the original fw.
I have no intention to mess with negative-values position, which is a freeze protection tho.

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

the value is taken from the itho firmware itself. If a refresh of the value does not alter the result, then probably the value is not really stored in the itho firmware.
Could you post the command result of the same command but then posted through the debug page?

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

unfortunately, my Debug page stopped working - can't get it to work even after trying to reset and reflash the firmware. I'll look deeper into this and post the logs if I manage to get some.

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

so, just for the record:
index: 47
Result: 80 82 A4 10 01 13 00 00 00 00 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0C
Current: 0
Minimum value: -800
Maximum value: 800

now, setting this to any non-negative integer (incl. 0):

Sent command: 82 80 24 10 06 13 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 81
Result: confirmed
Warning!!

querying returns the correct (set) value.

now, with negative integers, the confirmation fails (probably because sets the value to the maximum integer value and decrements from it):
setting to -1

Sent command: 82 80 24 10 06 13 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 86
Result: confirmation failed
Warning!!

query:

Result: 80 82 A4 10 01 13 00 00 FF FF FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0E
Current: 65535
Minimum value: -800
Maximum value: 800

Itho status keeps reporting 0 for both cases

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

looking at: 82 80 24 10 06 13 FF FF FF FF
FF FF FF FF would in 32 bit int be -1 so that is correct

The query result is 00 00 FF FF, which is in 32 bit int indeed 65535

Looking at this it seems that the itho is only accepting a 16 bit wide integers value whereas in other situations it accepts 32 bit wide integers

I'm now wondering if 90 before the 2F at the end determines this. For another int values I see A0, 10, 00, which feels a lot like the scheme which is used for the status format.

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

@arjenhiemstra ,

I'm now wondering if 90 before the 2F at the end determines this. For another int values I see A0, 10, 00, which feels a lot like the scheme which is used for the status format.

I tested this on various values on interval <-800, 800> (see table below) and I see the FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D pattern in all of them.
I think it simply boils down to a rule - if req < 0 then res = res_val-65536

value sent command result
-800 82 80 24 10 06 13 FF FF FC E0 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 A8 80 82 A4 10 01 13 00 00 FC E0 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 30
-400 82 80 24 10 06 13 FF FF FE 70 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 16 80 82 A4 10 01 13 00 00 FE 70 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 9E
-200 82 80 24 10 06 13 FF FF FF 38 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 4D 80 82 A4 10 01 13 00 00 FF 38 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D D5
-100 82 80 24 10 06 13 FF FF FF 9C 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 E9 80 82 A4 10 01 13 00 00 FF 9C FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 71
-50 82 80 24 10 06 13 FF FF FF CE 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 B7 80 82 A4 10 01 13 00 00 FF CE FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 3F
-25 82 80 24 10 06 13 FF FF FF E7 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 9E 80 82 A4 10 01 13 00 00 FF E7 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 26
-10 82 80 24 10 06 13 FF FF FF F6 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 8F 80 82 A4 10 01 13 00 00 FF F6 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 17
-5 82 80 24 10 06 13 FF FF FF FB 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 8A 80 82 A4 10 01 13 00 00 FF FB FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 12
-4 82 80 24 10 06 13 FF FF FF FC 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 89 80 82 A4 10 01 13 00 00 FF FC FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 11
-3 82 80 24 10 06 13 FF FF FF FD 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 88 80 82 A4 10 01 13 00 00 FF FD FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 10
-2 82 80 24 10 06 13 FF FF FF FE 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 87 80 82 A4 10 01 13 00 00 FF FE FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0F
-1 82 80 24 10 06 13 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 86 80 82 A4 10 01 13 00 00 FF FF FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0E
0 82 80 24 10 06 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 82 80 82 A4 10 01 13 00 00 00 00 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0C
1 82 80 24 10 06 13 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 81 80 82 A4 10 01 13 00 00 00 01 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0B
2 82 80 24 10 06 13 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 80 80 82 A4 10 01 13 00 00 00 02 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 0A
3 82 80 24 10 06 13 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 7F 80 82 A4 10 01 13 00 00 00 03 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 09
4 82 80 24 10 06 13 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 7E 80 82 A4 10 01 13 00 00 00 04 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 08
5 82 80 24 10 06 13 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 7D 80 82 A4 10 01 13 00 00 00 05 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 07
10 82 80 24 10 06 13 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 78 80 82 A4 10 01 13 00 00 00 0A FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 02
25 82 80 24 10 06 13 00 00 00 19 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 69 80 82 A4 10 01 13 00 00 00 19 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D F3
50 82 80 24 10 06 13 00 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 50 80 82 A4 10 01 13 00 00 00 32 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D DA
100 82 80 24 10 06 13 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 1E 80 82 A4 10 01 13 00 00 00 64 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D A8
200 82 80 24 10 06 13 00 00 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 BA 80 82 A4 10 01 13 00 00 00 C8 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 44
400 82 80 24 10 06 13 00 00 01 90 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 F1 80 82 A4 10 01 13 00 00 01 90 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D 7B
800 82 80 24 10 06 13 00 00 03 20 00 00 00 00 00 00 00 00 00 00 00 00 00 2F 00 5F 80 82 A4 10 01 13 00 00 03 20 FF FF FC E0 00 00 03 20 00 00 00 01 90 2F 6D E9

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

I'm afraid (quite sure now) it is not that simple. Maybe in this specific case it is but it is more complicated than that to make it work universal:

looking at the last part 90 2F 6D 30
90 in bits = 1001 0000
This falls apart in three sections
1 (or 0) 1 = signed, 0 = unsigned
001 (or 000, 010, 100) 000 = 1 byte wide, 001 = 2 byte wide, 010 = 4 byte wide
0000 (or 0001 etc.) is the divider

This is exact the same as I parse here for the itho status values:

ithoStatus.back().divider = 0;
if ((i2cbuf[6 + i] & 0x07) == 0) { //integer value
if ((i2cbuf[6 + i] & 0x80) == 1) { //signed value
ithoStatus.back().type = ithoDeviceStatus::is_int;
}
else {
ithoStatus.back().type = ithoDeviceStatus::is_uint;
}
}
else {
ithoStatus.back().type = ithoDeviceStatus::is_float;
ithoStatus.back().divider = quick_pow10((i2cbuf[6 + i] & 0x07));
}
if (((i2cbuf[6 + i] >> 3) & 0x07) == 0) {
ithoStatus.back().length = 1;
}
else {
ithoStatus.back().length = (i2cbuf[6 + i] >> 3) & 0x07;
}
//special cases
if (i2cbuf[6 + i] == 0x0C || i2cbuf[6 + i] == 0x6C) {
ithoStatus.back().type = ithoDeviceStatus::is_byte;
ithoStatus.back().length = 1;
}
if (i2cbuf[6 + i] == 0x0F) {
ithoStatus.back().type = ithoDeviceStatus::is_float;
ithoStatus.back().length = 1;
ithoStatus.back().divider = 2;
}
if (i2cbuf[6 + i] == 0x5B) {
ithoStatus.back().type = ithoDeviceStatus::is_uint;
ithoStatus.back().length = 2;
}

Apparently in the itho firmware this system is also being used for settings values

I manually tested with some other settings on my CVE, and the above describe system works flawless for all those settings.

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

nrgitho-hw2-v2.3-beta4.bin.zip

[edit: removed bin, still found some issues]
[edit2: added new bin to test]
[edit3: added bin for HW rev 2]
Could you test this patch?
It is not fixed completely yet, values larger than int32 (which actually should be uint32) are not handled correctly yet.

from ithowifi.

jasperslits avatar jasperslits commented on May 27, 2024

@rplevka : I have the HRU-350 as well but what is your use-case for (trying to) change the valve position? Like what is supposed to control? I don't dare to change it unless I know what benefits it has of doing this via manual control.

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

fixed with a985ad0

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

@arjenhiemstra, i'm not sure the original problem statement was clear enough as I can't see 2.3-beta4 version addressing the issue at all -
the valve position is still reported as 0 at Itho status page, after enabling the manual operation and setting the valve to any, non-zero position, making the reported status not correct.

from ithowifi.

jasperslits avatar jasperslits commented on May 27, 2024

the valve position is still reported as 0 at Itho status page, after enabling the manual operation and setting the valve to any, non-zero position, making the reported status not correct.

I guess it's difficult to confirm if the valve mechanically moved after changing the values?

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

the valve position is still reported as 0 at Itho status page, after enabling the manual operation and setting the valve to any, non-zero position, making the reported status not correct.

I guess it's difficult to confirm if the valve mechanically moved after changing the values?

It sure is. I'm after the value the Itho unit reports back via I2C on the Itho setting page. But i need it accessible via MQTT

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

"however the value is not reflected in Itho settings."
This was what directed me to the itho settings, not realising that the set value is also not represented on the itho status page. No idea what the issue there could be. Could you share what is visible on the status page?

I've borrowed the itho service tool out to someone, when I have it back I can compare the add-on result with the service tool figures. If there is a difference there will be something to dig into

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

I'm terribly sorry, I confused those two.

Status page:

Label Value
temp 0
hum 0
ppmw 0
ReqFanspeed 6552.6
Balance 0
supply_fan_requested 1080
supply_fan_actual 1077
exhaust_fan_requested 1070
exhaust_fan_actual 1073
supplyTemp 22.09
exhaustTemp 9.22
status 5
RoomTemp 22.09
OutdoorTemp 9.22
Valve_position 0
Bypass_position 0
Summercounter 0
Summerday 0
FrostTimer 0
BoilTimer 177
StartCounter 80
CurPosition 0
VKKswitch 0
GroundHeatExchangerSwitch 0
AirCounter 2173
Global_fault_code 0
Actual_Mode 1
pir_fan_speed_level -1
Highest_received_CO2_value 32767
Highest_received_RH_value 239
Air_Quality 119.5
Remaining_override_timer 0
Fallback_speed_timer 0
Exhaust_Constant_Ca0 0

from ithowifi.

arjenhiemstra avatar arjenhiemstra commented on May 27, 2024

Could you test if this is still relevant?
https://github.com/arjenhiemstra/ithowifi/releases/tag/Version-2.3.0

from ithowifi.

rplevka avatar rplevka commented on May 27, 2024

Hi,
tested, and figured out it's not the Valve_position that reflect the position of the bypass/antifreeze protection valve, but Current Position - this metric updates accordingly. I'm not sure if this was working in the older fw versions

from ithowifi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.