pommi / python-itho-wpu

Pyhon library/toolset to communicate over I2C with an Itho WPU
14 stars 4 forks source link

Different data fields #2

Open WouterJN opened 3 years ago

WouterJN commented 3 years ago

For my Itho WPU data type for field 0 (Buitentemperatuur) till field 26 (Stroom trafo 2 (A)” are correct. After that the datatypes of my heat pump are different. Do you have any idea how I can find out the meaning of each field?

Datatypes: DEBUG: Response: ['0x82', '0xa4', '0x0', '0x1', '0x5c', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0x92', '0xc', '0xc', '0xc', '0x10', '0x10', '0xc', '0x0', '0x0', '0x0', '0x10', '0x10', '0xc', '0xc', '0xc', '0xc', '0xc', '0x10', '0x92', '0x92', '0x0', '0x0', '0x0', '0x0', '0x92', '0x92', '0x0', '0x0', '0x10', '0xc', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x10', '0x0', '0x20', '0x0', '0x0', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0xc', '0x0', '0x0', '0x79']

Datalog: 
 Response: ['0x82', '0xa4', '0x1', '0x1', '0x88', '0xfc', '0x18', '0x6', '0xa4', '0x11', '0x5d', '0x5', '0x95', '0x4', '0x66', '0xf', '0xa8', '0xa', '0x3b', '0x4', '0x45', '0x3', '0x50', '0x9', '0xa9', '0xb', '0xa8', '0x0', '0x96', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x2', '0xd5', '0x2', '0xd5', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x8', '0x22', '0x8', '0x2', '0x2a', '0x1', '0xff', '0x0', '0x5', '0x95', '0xb', '0x31', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xba', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x16', '0xcc', '0x0', '0x0', '0x0', '0x0', '0x14', '0x91', '0x8f', '0x2d', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x2a']

Screenshot 2020-12-09 at 22 58 42
ootjersb commented 3 years ago

@WouterJN What I would need is what is called getnodeid in this Python implementation. In my C variant it is called GetRegelaar. The returns gives the product version and list version. Those can be used to determine the exact model you have and the parsing of the fields.

WouterJN commented 3 years ago

Is the following sufficient for you, to find out the parsing of the fields? Are you getting the information regarding the parsing of the fields from the original Itho software?

2020-12-12 13:43:15,434 DEBUG: set_callback()
2020-12-12 13:43:15,435 DEBUG: Executing action: getnodeid
2020-12-12 13:43:15,446 DEBUG: callback(31, 1874828365)
2020-12-12 13:43:15,448 DEBUG: Received 13 bytes! Status 18
2020-12-12 13:43:15,449 DEBUG: Callback Response: ['0x82', '0x90', '0xe0', '0x1', '0x7', '0x0', '0x1', '0x0', '0xd', '0x14', '0x9', '0x0', '0x5b']
2020-12-12 13:43:15,647 DEBUG: Queue size: 1
2020-12-12 13:43:15,648 DEBUG: Response: ['0x82', '0x90', '0xe0', '0x1', '0x7', '0x0', '0x1', '0x0', '0xd', '0x14', '0x9', '0x0', '0x5b']
2020-12-12 13:43:15,648 INFO: ManufacturerGroup: 1, Manufacturer: HCCP, HardwareType: WPU, ProductVersion: 20, ListVersion: 9
pommi commented 3 years ago

Yes, this is great!

I've got ProductVersion: 25, ListVersion: 11 (both @ootjersb and I have this ListVersion) You've got ProductVersion: 20, ListVersion: 9

The Itho Service tool has a MS Access database (file: $_parameters_HeatPump.par). You could export this database using mdbtools. This database contains a table VersieBeheer. From this table you can map your ListVersion (VersieNummer column in VersieBeheer table) to a DataLabel version.

For me this is: ListVersion: 11, DataLabel 11 For you this is: ListVersion: 9, DataLabel 8

There should be another table in the MS Access database called Datalabel_V8 for your WPU version. This table contains the data representation for your WPU for the --getdatalog call.

Now --getdatatype returns a list of bytes. The 1st 5 bytes are header bytes. After that it's describing the data type of each entry in the Datalabel_V8 table (eg. 0x0 = 1 byte integer, 0xc = 1 byte integer, 0x10 = 2 bytes integer, 0x92 = 2 bytes 2 decimal signed float).

Based on all this information you could adjust this datalog/field list (see below) to make it work for your WPU version. The "Field" index number in my code is the byte number (minus the 5 header bytes). Because for example "Buitentemperatuur" is datatype 0x92, its represented as 2 bytes in the --getdatalog call the next data entry ("Boiler laag") starts at index 2 (instead of 1). https://github.com/pommi/python-itho-wpu/blob/e05f25077e520aad8d63d70492f0c725cb5a0e52/itho-wpu.py#L221-L251

WouterJN commented 3 years ago

Yes, this is great!

I've got ProductVersion: 25, ListVersion: 11 (both @ootjersb and I have this ListVersion) You've got ProductVersion: 20, ListVersion: 9

The Itho Service tool has a MS Access database (file: $_parameters_HeatPump.par). You could export this database using mdbtools. This database contains a table VersieBeheer. From this table you can map your ListVersion (VersieNummer column in VersieBeheer table) to a DataLabel version.

For me this is: ListVersion: 11, DataLabel 11 For you this is: ListVersion: 9, DataLabel 8

There should be another table in the MS Access database called Datalabel_V8 for your WPU version. This table contains the data representation for your WPU for the --getdatalog call.

Now --getdatatype returns a list of bytes. The 1st 5 bytes are header bytes. After that it's describing the data type of each entry in the Datalabel_V8 table (eg. 0x0 = 1 byte integer, 0xc = 1 byte integer, 0x10 = 2 bytes integer, 0x92 = 2 bytes 2 decimal signed float).

Based on all this information you could adjust this datalog/field list (see below) to make it work for your WPU version. The "Field" index number in my code is the byte number (minus the 5 header bytes). Because for example "Buitentemperatuur" is datatype 0x92, its represented as 2 bytes in the --getdatalog call the next data entry ("Boiler laag") starts at index 2 (instead of 1).

https://github.com/pommi/python-itho-wpu/blob/e05f25077e520aad8d63d70492f0c725cb5a0e52/itho-wpu.py#L221-L251

Thanks, this is great. I will create the datalog/field list for my WPU during the holiday season.

WouterJN commented 3 years ago

Thnx! 👍 , it is working.

unfortunately I still have some problems with the 0xc fields;

This is my raw data: ['0x82', '0xa4', '0x1', '0x1', '0x88', '0xfc', '0x18', '0xf', '0xe0', '0x17', '0x10', '0x0', '0xa3', '0x3', '0x2a', '0x11', '0x7a', '0x9', '0x10', '0x2', '0xc7', '0x3', '0x50', '0xa', '0x6a', '0x9', '0x47', '0x0', '0xb8', '0x0', '0xfb', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x3', '0x8d', '0x0', '0x64', '0x64', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x1', '0x0', '0x0', '0x94', '0x8', '0x2a', '0x8', '0x2', '0x1c', '0x2', '0x6', '0x0', '0x0', '0xa3', '0x9', '0xf0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xb', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x9', '0x83', '0x0', '0x0', '0x24', '0x42', '0x30', '0x2d', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x57']

However all the 0xc fields give 36 as output. Later this week I will try to debug this.

For other people with production version 20 here is my table;

Field(0, 0x92, "t_out", "Buitentemp"), Field(2, 0x92, "t_boildwn", "Boiler laag"), Field(4, 0x92, "t_boiltop", "Boiler hoog"), Field(6, 0x92, "t_evap", "Verdamper temp"), Field(8, 0x92, "t_suct", "Zuiggas temp"), Field(10, 0x92, "t_disc", "Persgas temp"), Field(12, 0x92, "t_cond", "Vloeistof temp"), Field(14, 0x92, "t_source_r", "naar bron"), Field(16, 0x92, "t_source_s", "van bron"), Field(18, 0x92, "t_ch_supp", "CV aanvoer"), Field(20, 0x92, "t_ch_ret", "CV retour"), Field(22, 0x92, "p_sens", "druksensor"), Field(24, 0x92, "i_tr1", "stroomtrafo 1"), Field(26, 0x92, "i_tr2", "stroomtrafo 2"), Field(28, 0xc, "in_p_switch", "drukschakelaar"), Field(29, 0xc, "in_hl", "hoog / laag"), Field(30, 0xc, "in_cond", "condens beveiliging"), Field(31, 0x10, "in_count", "pulsteller"), Field(33, 0x10, "in_flow", "flowsensor"), Field(35, 0xc, "in_phase", "fase detectie"), Field(36, 0x0, "out_ch", "cv pomp"), Field(37, 0x0, "out_src", "bron pomp"), Field(38, 0x0, "out_dhw", "boiler pomp"), Field(39, 0x10, "out_fc_valve", "vrijkoelklep"), Field(41, 0x10, "out_ch_valve", "cv klep"), Field(43, 0xc, "out_c1", "compressor"), Field(44, 0xc, "out_ele", "element"), Field(45, 0xc, "out_trickle", "Trickle heating"), Field(46, 0xc, "out_fault", "Fout"), Field(47, 0xc, "out_fc", "Vrijkoel"), Field(48, 0x10, "out_ev", "expansieventiel"), Field(50, 0x92, "ot_room", "kamertemp"), Field(52, 0x92, "ot_setp", "gevr temp"), Field(54, 0x0, "ot_mod", "vraag"), Field(55, 0x0, "state", "State"), Field(56, 0x0, "sub_state", "Sub_status"), Field(57, 0x0, "ot_vrij", "Blokkade"), Field(58, 0x92, "c_sh_evap", "berekende verdampings temp"), Field(60, 0x92, "c_sh_con", "berekende condensatie temp"), Field(62, 0x0, "fault_reported", "fout_gevonden"), Field(63, 0x0, "fault_retrying", "fout_retry"), Field(64, 0x10, "task_active", "taak aktief"), Field(66, 0xc, "c_hand", "Handbediening"), Field(67, 0x10, "tr_compr", "compr blok"), Field(69, 0x10, "tr_eblock", "Elek blok"), Field(71, 0x10, "tr_cv", "cv voor / nadraai"), Field(73, 0x10, "tr_src", "bron voor / nadraai"), Field(75, 0x10, "tr_dhw", "boiler voor / nadraai"), Field(77, 0x10, "tr_elek", "delay elektr"), Field(79, 0x10, "tr_press", "min draaitijd compr"), Field(81, 0x10, "tr_mincompr", "afpomp tijd"), Field(83, 0x10, "tr_ev_bal", "EV drukvereffenen"), Field(85, 0x10, "tr_ev_verstel", "EV verstellen"), Field(87, 0x10, "tr_fc", "vrijkoel interval"), Field(89, 0x10, "tr_hand", "handbediening"), Field(91, 0x10, "tr_ld", "lage druk timer"), Field(93, 0x10, "tr_strtcompr", "compressor start"), Field(95, 0x10, "compr_powondelay", "compr power on delay"), Field(97, 0x10, "delaybefstartch", "Vertraging cv start"), Field(99, 0x10, "delaybefstopch", "Vertraging cv stop"), Field(101, 0x0, "hipriorfault", "Fout hoogste prioriteit"), Field(102, 0x20, "utc_time", "UTC tijd"), Field(102, 0x0, "maxcvtemp", "Max cv retour temp"), Field(103, 0x0, "bronpompspeed", "Bronpomp snelheid vrijkoel mode"), Field(104, 0xc, "comprch", "Compressor in Cv mode"), Field(105, 0xc, "comprdhw", "Compressor in boiler mode"), Field(106, 0xc, "elemch", "Element in cv mode"), Field(107, 0xc, "elemdhw", "Element in boiler mode"), Field(108, 0xc, "chmodeblocked", "Cv mode geblokkeerd"), Field(109, 0xc, "dhwmodeblocked", "Boiler mode geblokkeerd"), Field(110, 0xc, "fcmodeblocked", "Vrijkoel mode geblokkeerd"), Field(111, 0xc, "ventmodeblocked", "Ontlucht mode geblokkeerd"), Field(112, 0xc, "elblocked", "elektr element geblokkeerd"), Field(113, 0xc, "comprblocked", "Compressor geblokkeerd"), Field(114, 0xc, "offmode", "Off mode aktief"), Field(115, 0xc, "chmode", "CV mode aktief"), Field(116, 0xc, "dhwmode", "Boiler mode aktief"), Field(117, 0xc, "fcmode", "Vrijkoel mode aktief"), Field(118, 0xc, "chpmpprerun", "Cv pomp voordraaien"), Field(119, 0xc, "srcpmpprerun", "Bron pomp voordraaien"), Field(120, 0xc, "elreluser", "Element vrijgegeven door gebruiker"), Field(121, 0xc, "fclowrel", "vrijgave extra koelen"), Field(122, 0xc, "chrel", "Cv vrijgegeven"), Field(123, 0xc, "fcrel", "Vrijkoel vrijgegeven"), Field(124, 0xc, "lttherm", "Tarief laag vanuit thermostaat"), Field(125, 0xc, "venttherm", "Ontluchten vanuit thermostaat"), Field(126, 0xc, "ecotherm", "Eco geselecteerd op thermostaat"), Field(127, 0xc, "comftherm", "Comfort geselecteerd op thermostaat"), Field(128, 0xc, "dhwthermblocked", "Boiler blokkade vanuit thermostaat"), Field(129, 0xc, "dhwthermboost", "Boiler boost vanuit thermostaat"), Field(130, 0x0, "utctimevalid", "UTC tijd :"), Field(131, 0x0, "elementalleenvoordhw", "Element alleen voor DHW vrijgegeven"),

WouterJN commented 3 years ago

I changed the original code and it is working;

for d in datalog: if d.type == 0x0 or d.type == 0x12 or d.type == 0xc : m = message[d.index:d.index+1] num = int(m[0], 0)

pommi commented 3 years ago

Nice to see you made it work! Thanks for https://github.com/pommi/python-itho-wpu/pull/3 as well. In the meantime I'm working on a more generic solution to support all WPUs.

Jeroenve commented 3 years ago

I'm trying to get both solution (@ootjersb and @pommi) to work as well. After replacing a very long cable with a shorter one, I have got the tools working.

pi@raspberrypi:~/python-itho-wpu $ python3 itho-wpu.py --loglevel debug --action getnodeid
2021-01-12 11:30:26,316 DEBUG: set_callback()
2021-01-12 11:30:26,328 DEBUG: Executing action: getnodeid
2021-01-12 11:30:26,344 DEBUG: callback(31, 1541906531)
2021-01-12 11:30:26,355 DEBUG: Received 13 bytes! Status 18
2021-01-12 11:30:26,361 DEBUG: Callback Response: ['0x82', '0x90', '0xe0', '0x1', '0x7', '0x0', '0x1', '0x0', '0xd', '0x3a', '0x1f', '0x0', '0x1f']
2021-01-12 11:30:26,367 DEBUG: callback(31, 1541908157)
2021-01-12 11:30:26,375 DEBUG: Received number of bytes was 0
2021-01-12 11:30:26,545 DEBUG: Queue size: 1
2021-01-12 11:30:26,550 DEBUG: Response: ['0x82', '0x90', '0xe0', '0x1', '0x7', '0x0', '0x1', '0x0', '0xd', '0x3a', '0x1f', '0x0', '0x1f']
2021-01-12 11:30:26,556 INFO: ManufacturerGroup: 1, Manufacturer: HCCP, HardwareType: WPU, ProductVersion: 58, ListVersion: 31

Next thing will be getting the datalog tool to work. Since with the tool of @ootjersb I was able to read the Outside temperature.

pommi commented 3 years ago

@WouterJN commit 96f91cb adds support for all WPU versions. You should be able to run python-itho-wpu without modifications. Follow the installation instructions to make it work :wink:

Could you share your experience after trying it? Thanks!

EJhagenaar commented 3 years ago

@pommi & @ootjersb First of thanks for the project!

I followed the guide

pi@raspberrypi:~/python-itho-wpu $ ./itho-wpu.py --action getnodeid
ManufacturerGroup: 1, Manufacturer: HCCP, HardwareType: WPU, ProductVersion: 58, ListVersion: 31

but when i execute "./itho-wpu.py --action getdatalog" i get the following:

pi@raspberrypi:~/python-itho-wpu $ ./itho-wpu.py --action getdatalog
Unknown data type for label UtcOffset: 0x90
Buitentemp (°C) (t_out): -30.0
Boilertemp Onder (°C) (t_boildwn): 48.16
Boilertemp Boven (°C) (t_boiltop): 48.07
Verdamper Temp (°C) (t_evap): 8.16
Zuiggas Temp (°C) (t_suct): 13.44
Persgas Temp (°C) (t_disc): 68.11
Vloeistof Temp (°C) (t_cond): 50.26
Temp Naar Bron (°C) (t_source_r): 10.51
Temp Uit Bron (°C) (t_source_s): 12.2
Cv Aanvoertemp (°C) (t_ch_supp): 20.21
Cv Retourtemp (°C) (t_ch_ret): 23.66
Cv-Druk (Bar) (p_sens): 1.95
Stroom Compressor (A) (i_tr1): 5.93
Stroom E-Element (A) (i_tr2): 0.0
Drukschakelaar (in_p_switch): 0
Tarief (in_hl): 0
Condensbeveiliging (in_cond): 0
Spare Ingang (sparein): 0
Reserve (reserve): 0
Flowsensor (lt/hr) (in_flow): 1220
Fasedetectie (in_phase): 0
Cv Pomp (%) (out_ch): 0
Bron Pomp (%) (out_src): 75
Boiler Pomp (%) (out_dhw): 100
Vrijkoelklep (%) (out_fc_valve): 100
Cv/Dhw Of Koeltemp Klep (%) (out_ch_valve): 100
Compressor (out_c1): 1
Element (out_ele): 0
Trickle Heating (out_trickle): 0
Fout (out_fault): 1
Vrijkoelen (out_fc): 1
Expansieventiel (pls) (out_ev): 500
Kamertemp (°C) (ot_room): 23.72
Gevr Kamertemp (°C sp) (ot_setp): 22.0
Warmtevraag Thermostaat (%) (ot_mod): 0
Status (state): 3
Sub Status (sub_state): 7
Blokkade (ot_vrij): 0
Berekende Verdampings Temp Cv (°C) (c_sh_evap): 7.16
Berekende Condensatie Temp Cv (°C) (c_sh_con): 54.52
Berekende Verdampings Temp Dhw (°C) (c_sh_evap_dhw): 7.16
Berekende Condensatie Temp Dhw (°C) (c_sh_con_dhw): 54.52
Fout Gevonden (fault_reported): 0
Fout Opnieuw Proberen (fault_retrying): 0
Taak Actief (task_active): 0
Handbediening (c_hand): 0
Compr Blok (sec) (tr_compr): 0
Elek Blok (sec) (tr_eblock): 0
Cv Voor / Nadraai (sec) (tr_cv): 0
Bron Voor / Nadraai (sec) (tr_src): 0
Boiler Voor / Nadraai (sec) (tr_dhw): 0
Vertraging Elektr (sec) (tr_elek): 0
Min Draaitijd Compr (sec) (tr_mincompr): 0
Afpomp Tijd (sec) (tr_press): 0
Ev Drukvereffenen (sec) (tr_ev_bal): 0
Ev Verstellen (sec) (tr_ev_verstel): 19
Vrijkoel Interval (sec) (tr_fc): 0
Handbediening (sec) (tr_hand): 0
Lage Druk Timer (sec) (tr_ld): 0
Compressor Start (sec) (tr_strtcompr): 0
Compr Power On Delay (sec) (compr_powondelay): 0
Vertraging Cv Start (sec) (delaybefstartch): 0
Vertraging Cv Stop (sec) (delaybefstopch): 0
Adaptief Timer (sec) (tr_adaptief): 0
Adaptief Oververhitting (K) (t_adoverheating): 512.68
Adaptief Fifo Index (adfifoindex): 28
Fout Hoogste Prioriteit (hipriorfault): 0
Utc Tijd (utc_time): 1623087724
Max Cv Retour Temp (°C) (maxcvtemp): 45
Bronpomp Snelheid Vrijkoel Mode (bronpompspeed): 0
Compressor In Cv Mode (comprch): 0
Compressor In Boiler Mode (comprdhw): 1
Element In Cv Mode (elemch): 0
Element In Boiler Mode (elemdhw): 0
Cv Mode Geblokkeerd (chmodeblocked): 0
Boiler Mode Geblokkeerd (dhwmodeblocked): 0
Vrijkoel Mode Geblokkeerd (fcmodeblocked): 0
Ontlucht Mode Geblokkeerd (ventmodeblocked): 0
Elektr Element Geblokkeerd (elblocked): 0
Elektr Element Dhw Geblokkeerd (eldhwblocked): 0
Compressor Geblokkeerd (comprblocked): 0
Off Mode Actief (offmode): 0
Cv Mode Actief (chmode): 0
Boiler Mode Actief (dhwmode): 1
Vrijkoel Mode Actief (fcmode): 0
Cv Pomp Voordraaien (chpmpprerun): 0
Bron Pomp Voordraaien (srcpmpprerun): 0
Element Vrijgegeven Door Gebruiker (elreluser): 0
Vrijgave Extra Koelen (fclowrel): 0
Cv Vrijgegeven (chrel): 0
Vrijkoel Vrijgegeven (fcrel): 1
Tarief Laag Vanuit Thermostaat (lttherm): 0
Ontluchten Vanuit Thermostaat (venttherm): 0
Eco Geselecteerd Op Thermostaat (ecotherm): 0
Comfort Geselecteerd Op Thermostaat (comftherm): 1
Boiler Blokkade Vanuit Thermostaat (dhwthermblocked): 0
Boiler Boost Vanuit Thermostaat (dhwthermboost): 0
Warmtevraag Totaal (%) (maxrmod): 0
E-Verbuik Tijdens Stand-By (kWh) (kwhstandby): 0
E-Verbuik Tijdens Verwarmen (kWh) (kwhch): 0
E-Verbuik Tijdens Dhw (kWh) (kwhdhw): 0
E-Verbuik Tijdens Koelen (kWh) (kwhcooling): 0
Voorverwarmen Tapwater (dlpreheatdhwmodeactive): 0
Element Alleen Voor Dhw Vrijgegeven (elementalleenvoordhw): 1
Pi Fout Bronflow (pibron): 0.0
Actuele Bronklepstand (%) (kleppos): 0
Traceback (most recent call last):
  File "./itho-wpu.py", line 299, in <module>
    process_response(args.action, response, args, wpu)
  File "./itho-wpu.py", line 216, in process_response
    measurements = process_datalog(response, wpu)
  File "./itho-wpu.py", line 279, in process_datalog
    logger.error(f"Unknown message type for datalog {d.name}: {d.type}")
AttributeError: 'Field' object has no attribute 'name'

any suggestions?

edit: added:

elif d.type == 0x90: m = message[d.index : d.index] num = 65536 so it just fills a value image

pommi commented 3 years ago

Thanks @EJhagenaar. Support for 0x90 is added in 370209603b70a464

starob01 commented 3 years ago

After trying for quite a while now I haven't been able to get some sensible information from my WPU. For some reason there is no (apparent) communication, although i2cdetect does give feedback. Could anyone confirm that this is a proper response? snip3

Search results are pushing me towards a hardware issue, so things I tried to solve this:

I've ordered a second level shifter to exclude a faulty levelshifter issue. Does anyone have any suggestion (hardware/software) I can try that I may have overlooked upon?

And great work guys! I've been meaning to extract the data from the heat pump for some time now, and I'm really hoping that it will work soon.

ootjersb commented 3 years ago

I am suspecting something in hardware area (wiring/level shifter). Especially the responses on address 10 till 1f are strange to me. If I look at my output I only see response on 40 and 41.

pommi commented 3 years ago

Could anyone confirm that this is a proper response?

Like @ootjersb said, it's not a proper response. I had exactly the same thing with a lever shifter from Hackerstore. After replacing it with a an AdaFruit BSS138 it worked.

starob01 commented 2 years ago

Thanks for the respons @pommi and @ootjersb . Although I already used a BSS138, after replacing I got it working! It's properly running on a Pi Zero 2 and feeding it to an InfluxDB on a separate machine.

Some small issues I encountered (in case anyone tries to replicate the software install.)

Many, many thanks for putting this together, really cool stuff. :)

pommi commented 2 years ago

Thanks for your feedback @starob01

For the unknown data types I've just pushed a commit that I prepared some months ago.