iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Dat zal wel lukken dat zoekenChatslet schreef op vrijdag 6 oktober 2023 @ 08:06:
@JoepW bij MHI-AC-CTRL staat dat in MHI-AC-Ctrl-core.h of dat ook zo is bij de ESPhome versie weet ik niet. Kwestie van zoeken.
Heb je enig idee welke waarde ik zou moeten proberen?
En een vraag door groot gebrek aan kennis op dit gebied: Kan ik schade veroorzaken met een veel te lage of hoge waarde?
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Edit: Je hebt niet toevallig problemen met wifi daar? https://github.com/absalom-muc/MHI-AC-Ctrl/issues/144
[ Voor 12% gewijzigd door Chatslet op 06-10-2023 09:30 ]
Dat zeker niet. Ik heb een zeer goed dekkend wifi netwerk (ook op de locatie van deze unit) met door het hele huis wired access points.Chatslet schreef op vrijdag 6 oktober 2023 @ 09:13:
@JoepWEdit: Je hebt niet toevallig problemen met wifi daar? https://github.com/absalom-muc/MHI-AC-Ctrl/issues/144
Ik heb net de waarde 800 geprobeerd.Chatslet schreef op vrijdag 6 oktober 2023 @ 09:13:
@JoepW Die 400 staat voor het aantal frames dat er op de airco wordt gewacht om data te verwerken. 20 frames duurt 1 seconde dus die 400 staat voor 20 seconden. Ik zou zeggen hoog eens met 20 seconden op en kijk eens wat er gebeurt. Als het dan werkt zou je het in stapjes kunnen verlagen totdat je op het punt zit dat het nog net werkt. Schade kun je er verder niet mee doen. Het is gewoon een time-out.
Effect is nog steeds af en toe "[W] [mhi_ac_ctrl:145] mhi_ac_ctrl_core.loop error: -2" en nu ook af en toe "[W] [mhi_ac_ctrl:145] mhi_ac_ctrl_core.loop error: -1"
Zie daar dus geen echte verbetering.
Wel reageert de unit met vertraging op input vanuit de web interface.
Ik moet nu op pad. Vanmiddag ga ik wat verder testen.
(Ik zal ook eens de module herpositioneren in de airco)
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Dat is zinloos. Die waarde aanpassen gaat het niet oplossen. Mooi op de standaard waarde laten staan.JoepW schreef op vrijdag 6 oktober 2023 @ 09:53:
Ik heb net de waarde 800 geprobeerd.
Probeer ook eens alleen de esp te verwisselen met degene die deze fouten niet geeft. Zal ook wel niet helpen maar wie weet.
Gaat checksum fouten niet oplossenChatslet schreef op vrijdag 6 oktober 2023 @ 00:38:
Bij sommige binnen units moet je onderstaande waarde iets ophogen:
#define NoFramesPerOpDataCycle 400
Je hebt idd gelijk.jobr schreef op vrijdag 6 oktober 2023 @ 16:08:
[...]
Dat is zinloos. Die waarde aanpassen gaat het niet oplossen. Mooi op de standaard waarde laten staan.
Probeer ook eens alleen de esp te verwisselen met degene die deze fouten niet geeft. Zal ook wel niet helpen maar wie weet.
En een foutloze module (van een hangende airco) in staande unit geeft dezelfde foutmelding.
Dus…. Het ligt dus aan de unit.
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Ik heb sinds een aantal dagen de SRF35ZS-W, kan je samenvatten welk probleem je tegenaan loopt? Dan kan ik het hier checken.JoepW schreef op vrijdag 6 oktober 2023 @ 17:25:
[...]
Je hebt idd gelijk.
En een foutloze module (van een hangende airco) in staande unit geeft dezelfde foutmelding.
Dus…. Het ligt dus aan de unit.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Ok, ik ben op dit moment bezig een HA OS versie te installeren ipv de HA Docker versie, met als doel de Esphome firmware & MHI_AC_CTRL naar de nieuwste versie te kunnen updaten, maar met de huidige versie werkt aansturen via HA prima op de SRF35ZS-W:JoepW schreef op vrijdag 6 oktober 2023 @ 21:59:
@Taro Deze post geeft het probleem aan met de nieuwe fw en geeft ook een foutmelding weer die ik altijd al heb met deze unit met de ‘oudere fw’s: JoepW in "Het MHI L/L warmtepomp/airco topic"
:fill(white):strip_exif()/f/image/DHTz64I2U547ux4nIefEmv75.png?f=user_large)
De buitenunit gaat aan en de binnenunit gaat ook aan de slag.
Helaas is de webinterface gedisabled sinds ik ze aan HA heb gekoppeld, dus kan nu lastig iets aanpassen, maar hopelijk morgen wel.
Huidige versie:
ESPHome: 2023.4.4 Sep 1 2023
MHI_AC_CTRL: Versie van 01-09-2023
Ik heb daarnaast 3x SRK20ZS-W2,0 die prima werken, maar een SRK60ZSX-W6,0 in de woonkamer die steeds errorcode 1 (=True of code 1?) geeft:
:fill(white):strip_exif()/f/image/1yaIe7CCa02d5MxmdOqTS3bP.png?f=user_large)
Enig idee wat dat kan zijn? Ben dus nu bezig met HA OS, dan kan ik ook ESPHome en firmware updaten, mogelijk lost dat het al op.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Bij mij werken alle airco’s prima en ik stuur ze al ruim een jaar aan via HA tbv koelen en verwarmen.Taro schreef op vrijdag 6 oktober 2023 @ 22:21:
[...]
Ok, ik ben op dit moment bezig een HA OS versie te installeren ipv de HA Docker versie, met als doel de Esphome firmware & MHI_AC_CTRL naar de nieuwste versie te kunnen updaten, maar met de huidige versie werkt aansturen via HA prima op de SRF35ZS-W:
[Afbeelding]
De buitenunit gaat aan en de binnenunit gaat ook aan de slag.
Helaas is de webinterface gedisabled sinds ik ze aan HA heb gekoppeld, dus kan nu lastig iets aanpassen, maar hopelijk morgen wel.
Huidige versie:
ESPHome: 2023.4.4 Sep 1 2023
MHI_AC_CTRL: Versie van 01-09-2023
Ik heb daarnaast 3x SRK20ZS-W2,0 die prima werken, maar een SRK60ZSX-W6,0 in de woonkamer die steeds errorcode 1 (=True of code 1?) geeft:
[Afbeelding]
Enig idee wat dat kan zijn? Ben dus nu bezig met HA OS, dan kan ik ook ESPHome en firmware updaten, mogelijk lost dat het al op.
Enige is die error (iets met timing) met het staande model. Maar ook die werkt prima met FW release zonder de l/r aanpassing.
Dus voor mij is op dit moment conclusie qua versies:
- De l/r versie op de 3 hangende units
- De versie zonder l/r op de staande unit, en daar die timing error accepteren.
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
web_server:Taro schreef op vrijdag 6 oktober 2023 @ 22:21:
[...]
Ok, ik ben op dit moment bezig een HA OS versie te installeren ipv de HA Docker versie, met als doel de Esphome firmware & MHI_AC_CTRL naar de nieuwste versie te kunnen updaten, maar met de huidige versie werkt aansturen via HA prima op de SRF35ZS-W:
[Afbeelding]
De buitenunit gaat aan en de binnenunit gaat ook aan de slag.
Helaas is de webinterface gedisabled sinds ik ze aan HA heb gekoppeld, dus kan nu lastig iets aanpassen, maar hopelijk morgen wel.
port: 80
Toevoegen aan je esphome yaml file zou dit moeten fixen
4 maanden geleden heb ik Protection error state toegevoegd die een text sensor toevoegt aan de esphome versie, daar krijg je een text waarde van de foutmelding. Ik denk dat je error "Discharge pipe temperature protection control" is, als de foutmelding daadwerkelijk 1 is. Wat je hier verder mee kan weet ik dan weer niet, maar je zou de grafieken van de temperaturen kunnen vergelijken met je andere units om te zien of daar iets vreemds aan de hand is.Huidige versie:
ESPHome: 2023.4.4 Sep 1 2023
MHI_AC_CTRL: Versie van 01-09-2023
Ik heb daarnaast 3x SRK20ZS-W2,0 die prima werken, maar een SRK60ZSX-W6,0 in de woonkamer die steeds errorcode 1 (=True of code 1?) geeft:
[Afbeelding]
Enig idee wat dat kan zijn? Ben dus nu bezig met HA OS, dan kan ik ook ESPHome en firmware updaten, mogelijk lost dat het al op.
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Klopt, maar ik kan er op het moment nog niet bij, tenzij ik ze fysiek aansluitLinuZZ schreef op zaterdag 7 oktober 2023 @ 05:10:
[...]
web_server:
port: 80
Toevoegen aan je esphome yaml file zou dit moeten fixen
Ik heb ze allemaal pas sinds woensdagmiddag hangen en nog niet in gebruik, dus vergelijken lukt nog niet. Op 8 november komt Liander langs voor een meterkast verzwaring, dan krijgen ze allemaal een eigen aansluiting in de meterkast, nu liggen er als tijdelijke oplossing 3 losse stekkers in de garage die ik kan rouleren4 maanden geleden heb ik Protection error state toegevoegd die een text sensor toevoegt aan de esphome versie, daar krijg je een text waarde van de foutmelding. Ik denk dat je error "Discharge pipe temperature protection control" is, als de foutmelding daadwerkelijk 1 is. Wat je hier verder mee kan weet ik dan weer niet, maar je zou de grafieken van de temperaturen kunnen vergelijken met je andere units om te zien of daar iets vreemds aan de hand is.
Vandaag kom ik hopelijk weer een stapje verder, maar ik zie dat de HA import nog steeds bezig is, dus maar even wat anders proberen.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
De unit gaat uit, geen knipperende lampjes. Vermoed dat de unit zelf in orde is, maar dat er met de custom module wat aan de hand is.Willempie27 schreef op zaterdag 7 oktober 2023 @ 09:20:
@Taro Is er niet daadwerkelijk een error? Knippert het lampje op de unit?
Maar ik sta nog in de debug stand, HA OS import inmiddels bezig, zal als hopelijk later vandaag alles van een update is voorzien even de balans opmaken en delen.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
:fill(white):strip_exif()/f/image/G7OV3ZBRIqN1GCDf4H4hO6c5.png?f=user_large)
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Kun je de esphome yaml file delen? Eventueel samen met de inhoud van de mhi-ac-ctrl.h fileTaro schreef op zaterdag 7 oktober 2023 @ 19:41:
Vandaag een ESPHome update doorgevoerd en nu zijn de states/sensors leeg bij 1 van de units, daarom nog niet bij de anderen doorgevoerd, enig idee?
[Afbeelding]
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
De yaml voor deze unit:LinuZZ schreef op zaterdag 7 oktober 2023 @ 20:03:
[...]
Kun je de esphome yaml file delen? Eventueel samen met de inhoud van de mhi-ac-ctrl.h file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
| ## Code from https://github.com/ginkage/MHI-AC-Ctrl-ESPHome/blob/master/lr_mhi_ac_ctrl.yaml @ 01-09-2023 ## Small modifications done: # Added webserver, fallback password and captive portal substitutions: # Unique device ID in HA deviceid: "mhi_woonkamer" # Unique device name in HA (sensor names will be prefixed by this name) devicename: "MHI Woonkamer" esphome: name: "mhi-woonkamer" platform: ESP8266 board: d1_mini platformio_options: # Run CPU at 160Mhz to fix mhi_ac_ctrl_core.loop error: -2 board_build.f_cpu: 160000000L includes: - mhi_ac_ctrl.h - MHI-AC-Ctrl-core.h - MHI-AC-Ctrl-core.cpp wifi: ssid: !secret wifi_ssid_iot password: !secret wifi_password_iot fast_connect: on # WiFi fallback hotspot configuration when configured WiFi network is not available ap: ssid: "${devicename} - Fallback AP" # password: "" # Enable Web server web_server: port: 80 # Enable captive portal functionality in fallback hotspot mode captive_portal: logger: level: DEBUG baud_rate: 0 globals: - id: room_temp_api_timeout type: int restore_value: no initial_value: '120' ota: climate: - platform: custom lambda: |- auto mhi_ac_ctrl = new MhiAcCtrl(); App.register_component(mhi_ac_ctrl); return {mhi_ac_ctrl}; climates: - name: "${devicename}" id: ${deviceid} api: reboot_timeout: 0s services: # Call the set_api_room_temperature service from HA to override the room temperature # If a new value has not been received after room_temp_api_timeout seconds, it will fall back to internal sensor - service: set_api_room_temperature variables: value: float then: - lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value); # Call the set_vanes service from HA to set the vane position # Needed because the ESPHome Climate class does not support this natively # Possible values: 1-4: static positions, 5: swing, 0: unknown - service: set_vanes variables: value: int then: - lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value); sensor: - platform: uptime name: ${devicename} Uptime - platform: wifi_signal name: ${devicename} WiFi Signal update_interval: 60s - platform: custom lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->get_sensors(); # Sensor names in HA, you can change these if you want # Don't delete them or change their position in the list sensors: - name: ${devicename} error code - name: ${devicename} outdoor temperature - name: ${devicename} return air temperature - name: ${devicename} outdoor unit fan speed - name: ${devicename} indoor unit fan speed - name: ${devicename} current power device_class: "current" state_class: "measurement" - name: ${devicename} compressor frequency - name: ${devicename} indoor unit total run time - name: ${devicename} compressor total run time - name: ${devicename} vanes - name: ${devicename} energy used - name: ${devicename} Indoor (U-bend) HE temp 1 - name: ${devicename} Indoor (capillary) HE temp 2 - name: ${devicename} Indoor (suction header) HE temp 3 - name: ${devicename} Outdoor HE temp - name: ${devicename} Outdoor unit exp. valve - name: ${devicename} Outdoor unit discharge pipe - name: ${devicename} Outdoor unit discharge pipe super heat - name: ${devicename} Protection error state binary_sensor: - platform: custom lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->get_binary_sensors(); binary_sensors: - name: ${devicename} defrost text_sensor: - platform: version name: ${devicename} ESPHome Version - platform: wifi_info ip_address: name: ${devicename} IP ssid: name: ${devicename} SSID bssid: name: ${devicename} BSSID |
En mhi-ac-ctrl.h:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
| #include "MHI-AC-Ctrl-core.h" #define ROOM_TEMP_MQTT 1 #include <vector> #include <string> static const std::vector<std::string> protection_states = { "Normal", "Discharge pipe temperature protection control", "Discharge pipe temperature anomaly", "Current safe control of inverter primary current", "High pressure protection control", "High pressure anomaly", "Low pressure protection control", "Low pressure anomaly", "Anti-frost prevention control", "Current cut", "Power transistor protection control", "Power transistor anomaly (Overheat)", "Compression ratio control", "-", "Condensation prevention control", "Current safe control of inverter secondary current", "Stop by compressor rotor lock", "Stop by compressor startup failure" }; static const char* TAG = "mhi_ac_ctrl"; unsigned long room_temp_api_timeout_ms = millis(); class MhiAcCtrl : public climate::Climate, public Component, public CallbackInterface_Status { public: void setup() override { this->power_ = power_off; this->current_temperature = NAN; // restore set points auto restore = this->restore_state_(); if (restore.has_value()) { restore->apply(this); } else { // restore from defaults this->mode = climate::CLIMATE_MODE_OFF; // initialize target temperature to some value so that it's not NAN this->target_temperature = roundf(clamp( this->current_temperature, this->minimum_temperature_, this->maximum_temperature_)); this->fan_mode = climate::CLIMATE_FAN_AUTO; this->swing_mode = climate::CLIMATE_SWING_OFF; } // Never send nan to HA if (isnan(this->target_temperature)) this->target_temperature = 20; error_code_.set_icon("mdi:alert-circle"); outdoor_temperature_.set_icon("mdi:thermometer"); outdoor_temperature_.set_unit_of_measurement("°C"); outdoor_temperature_.set_accuracy_decimals(2); return_air_temperature_.set_icon("mdi:thermometer"); return_air_temperature_.set_unit_of_measurement("°C"); return_air_temperature_.set_accuracy_decimals(2); outdoor_unit_fan_speed_.set_icon("mdi:fan"); indoor_unit_fan_speed_.set_icon("mdi:fan"); compressor_frequency_.set_icon("mdi:sine-wave"); compressor_frequency_.set_unit_of_measurement("Hz"); compressor_frequency_.set_accuracy_decimals(1); indoor_unit_total_run_time_.set_icon("mdi:clock"); indoor_unit_total_run_time_.set_unit_of_measurement("h"); compressor_total_run_time_.set_icon("mdi:clock"); compressor_total_run_time_.set_unit_of_measurement("h"); current_power_.set_icon("mdi:current-ac"); current_power_.set_unit_of_measurement("A"); current_power_.set_accuracy_decimals(2); defrost_.set_icon("mdi:snowflake-melt"); vanes_pos_.set_icon("mdi:air-filter"); indoor_unit_thi_r1_.set_icon("mdi:thermometer"); indoor_unit_thi_r1_.set_unit_of_measurement("°C"); indoor_unit_thi_r1_.set_accuracy_decimals(2); indoor_unit_thi_r2_.set_icon("mdi:thermometer"); indoor_unit_thi_r2_.set_unit_of_measurement("°C"); indoor_unit_thi_r2_.set_accuracy_decimals(2); indoor_unit_thi_r3_.set_icon("mdi:thermometer"); indoor_unit_thi_r3_.set_unit_of_measurement("°C"); indoor_unit_thi_r3_.set_accuracy_decimals(2); outdoor_unit_tho_r1_.set_icon("mdi:thermometer"); outdoor_unit_tho_r1_.set_unit_of_measurement("°C"); outdoor_unit_tho_r1_.set_accuracy_decimals(2); outdoor_unit_expansion_valve_.set_icon("mdi:valve"); outdoor_unit_expansion_valve_.set_unit_of_measurement("pulse"); outdoor_unit_expansion_valve_.set_accuracy_decimals(0); outdoor_unit_discharge_pipe_.set_icon("mdi:thermometer"); outdoor_unit_discharge_pipe_.set_unit_of_measurement("°C"); outdoor_unit_discharge_pipe_.set_accuracy_decimals(1); outdoor_unit_discharge_pipe_super_heat_.set_icon("mdi:thermometer"); outdoor_unit_discharge_pipe_super_heat_.set_unit_of_measurement("°C"); outdoor_unit_discharge_pipe_super_heat_.set_accuracy_decimals(1); protection_state_.set_icon("mdi:shield-alert-outline"); protection_state_number_.set_icon("mdi:shield-alert-outline"); energy_used_.set_icon("mdi:lightning-bolt"); energy_used_.set_unit_of_measurement("kWh"); energy_used_.set_accuracy_decimals(2); mhi_ac_ctrl_core.MHIAcCtrlStatus(this); mhi_ac_ctrl_core.init(); } void loop() override { if(millis() - room_temp_api_timeout_ms >= id(room_temp_api_timeout)*1000) { mhi_ac_ctrl_core.set_troom(0xff); // use IU temperature sensor room_temp_api_timeout_ms = millis(); ESP_LOGD("mhi_ac_ctrl", "did not receive a room_temp_api value, using IU temperature sensor"); } int ret = mhi_ac_ctrl_core.loop(100); if (ret < 0) ESP_LOGW("mhi_ac_ctrl", "mhi_ac_ctrl_core.loop error: %i", ret); } void dump_config() override { LOG_CLIMATE("", "MHI-AC-Ctrl Climate", this); ESP_LOGCONFIG(TAG, " Min. Temperature: %.1f°C", this->minimum_temperature_); ESP_LOGCONFIG(TAG, " Max. Temperature: %.1f°C", this->maximum_temperature_); ESP_LOGCONFIG(TAG, " Supports HEAT: %s", YESNO(true)); ESP_LOGCONFIG(TAG, " Supports COOL: %s", YESNO(true)); } void cbiStatusFunction(ACStatus status, int value) override { static int mode_tmp = 0xff; ESP_LOGD("mhi_ac_ctrl", "received status=%i value=%i power=%i", status, value, this->power_); if (this->power_ == power_off) { // Workaround for status after reboot this->mode = climate::CLIMATE_MODE_OFF; this->publish_state(); } switch (status) { case status_power: if (value == power_on) { this->power_ = power_on; // output_P(status, (TOPIC_POWER), PSTR(PAYLOAD_POWER_ON)); cbiStatusFunction(status_mode, mode_tmp); } else { // output_P(status, (TOPIC_POWER), (PAYLOAD_POWER_OFF)); // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_OFF)); this->power_ = power_off; this->mode = climate::CLIMATE_MODE_OFF; this->publish_state(); } break; case status_mode: mode_tmp = value; case opdata_mode: case erropdata_mode: switch (value) { case mode_auto: // if (status != erropdata_mode) // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_AUTO)); // else // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_STOP)); // break; if (status != erropdata_mode && this->power_ > 0) { this->mode = climate::CLIMATE_MODE_HEAT_COOL; } else { this->mode = climate::CLIMATE_MODE_OFF; } break; case mode_dry: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_DRY)); this->mode = climate::CLIMATE_MODE_DRY; break; case mode_cool: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_COOL)); this->mode = climate::CLIMATE_MODE_COOL; break; case mode_fan: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_FAN)); this->mode = climate::CLIMATE_MODE_FAN_ONLY; break; case mode_heat: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_HEAT)); this->mode = climate::CLIMATE_MODE_HEAT; break; default: ESP_LOGD("mhi_ac_ctrl", "unknown status mode value %i", value); } this->publish_state(); break; case status_fan: switch (value) { case 0: this->fan_mode = climate::CLIMATE_FAN_LOW; break; case 1: this->fan_mode = climate::CLIMATE_FAN_MEDIUM; break; case 2: this->fan_mode = climate::CLIMATE_FAN_HIGH; break; case 6: this->fan_mode = climate::CLIMATE_FAN_DIFFUSE; break; case 7: this->fan_mode = climate::CLIMATE_FAN_AUTO; break; } this->publish_state(); break; case status_vanes: switch (value) { case vanes_unknown: this->swing_mode = climate::CLIMATE_SWING_OFF; break; case vanes_1: this->swing_mode = climate::CLIMATE_SWING_HORIZONTAL; break; case vanes_2: this->swing_mode = climate::CLIMATE_SWING_HORIZONTAL; break; case vanes_3: this->swing_mode = climate::CLIMATE_SWING_OFF; break; case vanes_4: this->swing_mode = climate::CLIMATE_SWING_VERTICAL; break; case vanes_swing: this->swing_mode = climate::CLIMATE_SWING_BOTH; break; } this->publish_state(); break; case status_troom: // dtostrf((value - 61) / 4.0, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_TROOM), strtmp); this->current_temperature = (value - 61) / 4.0; this->publish_state(); break; case status_tsetpoint: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_TSETPOINT), strtmp); this->target_temperature = (value & 0x7f)/ 2.0; this->publish_state(); break; case status_errorcode: case erropdata_errorcode: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_ERRORCODE), strtmp); error_code_.publish_state(value); break; case opdata_return_air: case erropdata_return_air: // dtostrf(value * 0.25f - 15, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_RETURNAIR), strtmp); return_air_temperature_.publish_state(value * 0.25f - 15); break; case opdata_thi_r1: // Indoor Heat exchanger temperature 1 (U-bend) indoor_unit_thi_r1_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r1: // itoa(0.327f * value - 11.4f, strtmp, 10); // only rough approximation // output_P(status, PSTR(TOPIC_THI_R1), strtmp); break; case opdata_thi_r2: // Indoor Heat exchanger temperature 2 (capillary) indoor_unit_thi_r2_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r2: // itoa(0.327f * value - 11.4f, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_THI_R2), strtmp); break; case opdata_thi_r3: // Indoor Heat exchanger temperature 3 (suction header) indoor_unit_thi_r3_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r3: // itoa(0.327f * value - 11.4f, strtmp, 10); // only rough approximation // output_P(status, PSTR(TOPIC_THI_R3), strtmp); break; case opdata_iu_fanspeed: case erropdata_iu_fanspeed: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_IU_FANSPEED), strtmp); indoor_unit_fan_speed_.publish_state(value); break; case opdata_total_iu_run: case erropdata_total_iu_run: // itoa(value * 100, strtmp, 10); // output_P(status, PSTR(TOPIC_TOTAL_IU_RUN), strtmp); indoor_unit_total_run_time_.publish_state(value * 100); break; case erropdata_outdoor: case opdata_outdoor: // dtostrf((value - 94) * 0.25f, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_OUTDOOR), strtmp); outdoor_temperature_.publish_state((value - 94) * 0.25f); break; case opdata_tho_r1: // Indoor Heat exchanger temperature 3 (suction header) outdoor_unit_tho_r1_.publish_state(0.327f * value - 11.4f); break; case erropdata_tho_r1: // itoa(0.327f * value - 11.4f, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_THO_R1), strtmp); break; case opdata_comp: case erropdata_comp: // dtostrf( // highByte(value) * 25.6f + 0.1f * lowByte(value), 0, 2, strtmp); // to be confirmed // output_P(status, PSTR(TOPIC_COMP), strtmp); compressor_frequency_.publish_state(highByte(value) * 25.6f + 0.1f * lowByte(value)); break; case erropdata_td: case opdata_td: if (value < 0x2) outdoor_unit_discharge_pipe_.publish_state(30); else outdoor_unit_discharge_pipe_.publish_state(value / 2 + 32); break; case opdata_ct: case erropdata_ct: // dtostrf(value * 14 / 51.0f, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_CT), strtmp); current_power_.publish_state(value * 14 / 51.0f); break; case opdata_tdsh: outdoor_unit_discharge_pipe_super_heat_.publish_state(value); // itoa(value, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_TDSH), strtmp); break; case opdata_protection_no: if (value < protection_states.size()) protection_state_.publish_state(protection_states[value]); protection_state_number_.publish_state(value); // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_PROTECTION_NO), strtmp); break; case opdata_ou_fanspeed: case erropdata_ou_fanspeed: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_OU_FANSPEED), strtmp); outdoor_unit_fan_speed_.publish_state(value); break; case opdata_defrost: // if (value) // output_P(status, PSTR(TOPIC_DEFROST), PSTR(PAYLOAD_OP_DEFROST_ON)); // else // output_P(status, PSTR(TOPIC_DEFROST), PSTR(PAYLOAD_OP_DEFROST_OFF)); defrost_.publish_state(value != 0); break; case opdata_total_comp_run: case erropdata_total_comp_run: // itoa(value * 100, strtmp, 10); // output_P(status, PSTR(TOPIC_TOTAL_COMP_RUN), strtmp); compressor_total_run_time_.publish_state(value * 100); break; case opdata_ou_eev1: outdoor_unit_expansion_valve_.publish_state(value); break; case erropdata_ou_eev1: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_OU_EEV1), strtmp); break; case opdata_tsetpoint: case erropdata_tsetpoint: break; case opdata_kwh: // https://github.com/absalom-muc/MHI-AC-Ctrl/pull/135 // This item is counting the kWh from the point where the AC is powered On energy_used_.publish_state(value * 0.25); break; case opdata_unknown: // skip these values as they are not used currently break; } } std::vector<Sensor *> get_sensors() { return { &error_code_, &outdoor_temperature_, &return_air_temperature_, &outdoor_unit_fan_speed_, &indoor_unit_fan_speed_, ¤t_power_, &compressor_frequency_, &indoor_unit_total_run_time_, &compressor_total_run_time_, &vanes_pos_, &energy_used_, &indoor_unit_thi_r1_, &indoor_unit_thi_r2_, &indoor_unit_thi_r3_, &outdoor_unit_tho_r1_, &outdoor_unit_expansion_valve_, &outdoor_unit_discharge_pipe_, &outdoor_unit_discharge_pipe_super_heat_, &protection_state_number_ }; } std::vector<TextSensor *> get_text_sensors() { return { &protection_state_ }; } std::vector<BinarySensor *> get_binary_sensors() { return { &defrost_ }; } void set_room_temperature(float value) { if ((value > -10) & (value < 48)) { room_temp_api_timeout_ms = millis(); // reset timeout byte tmp = value*4+61; mhi_ac_ctrl_core.set_troom(value*4+61); ESP_LOGD("mhi_ac_ctrl", "set room_temp_api: %f %i %i", value, (byte)(value*4+61), (byte)tmp); } } void set_vanes(int value) { mhi_ac_ctrl_core.set_vanes(value); ESP_LOGD("mhi_ac_ctrl", "set vanes: %i", value); } protected: /// Transmit the state of this climate controller. void control(const climate::ClimateCall& call) override { if (call.get_mode().has_value()) { this->mode = *call.get_mode(); power_ = power_on; switch (this->mode) { case climate::CLIMATE_MODE_OFF: power_ = power_off; break; case climate::CLIMATE_MODE_COOL: mode_ = mode_cool; break; case climate::CLIMATE_MODE_HEAT: mode_ = mode_heat; break; case climate::CLIMATE_MODE_DRY: mode_ = mode_dry; break; case climate::CLIMATE_MODE_FAN_ONLY: mode_ = mode_fan; break; case climate::CLIMATE_MODE_HEAT_COOL: default: mode_ = mode_auto; break; } mhi_ac_ctrl_core.set_power(power_); mhi_ac_ctrl_core.set_mode(mode_); } if (call.get_target_temperature().has_value()) { this->target_temperature = *call.get_target_temperature(); tsetpoint_ = clamp(this->target_temperature, minimum_temperature_, maximum_temperature_); mhi_ac_ctrl_core.set_tsetpoint((byte)(2 * tsetpoint_)); } if (call.get_fan_mode().has_value()) { this->fan_mode = *call.get_fan_mode(); switch (*this->fan_mode) { case climate::CLIMATE_FAN_LOW: fan_ = 0; break; case climate::CLIMATE_FAN_MEDIUM: fan_ = 1; break; case climate::CLIMATE_FAN_HIGH: fan_ = 2; break; case climate::CLIMATE_FAN_DIFFUSE: fan_ = 6; break; case climate::CLIMATE_FAN_AUTO: default: fan_ = 7; break; } mhi_ac_ctrl_core.set_fan(fan_); } if (call.get_swing_mode().has_value()) { this->swing_mode = *call.get_swing_mode(); switch (this->swing_mode) { case climate::CLIMATE_SWING_BOTH: vanes_ = vanes_swing; break; case climate::CLIMATE_SWING_VERTICAL: vanes_ = vanes_4; break; case climate::CLIMATE_SWING_HORIZONTAL: vanes_ = vanes_1; break; default: case climate::CLIMATE_SWING_OFF: vanes_ = vanes_3; break; } mhi_ac_ctrl_core.set_vanes(vanes_); } this->publish_state(); } /// Return the traits of this controller. climate::ClimateTraits traits() override { auto traits = climate::ClimateTraits(); traits.set_supports_current_temperature(true); traits.set_supported_modes({ CLIMATE_MODE_OFF, CLIMATE_MODE_HEAT_COOL, CLIMATE_MODE_COOL, CLIMATE_MODE_HEAT, CLIMATE_MODE_DRY, CLIMATE_MODE_FAN_ONLY }); traits.set_supports_two_point_target_temperature(false); traits.set_visual_min_temperature(this->minimum_temperature_); traits.set_visual_max_temperature(this->maximum_temperature_); traits.set_visual_temperature_step(this->temperature_step_); traits.set_supported_fan_modes({ CLIMATE_FAN_AUTO, CLIMATE_FAN_LOW, CLIMATE_FAN_MEDIUM, CLIMATE_FAN_HIGH, CLIMATE_FAN_DIFFUSE }); traits.set_supported_swing_modes({ CLIMATE_SWING_OFF, CLIMATE_SWING_BOTH, CLIMATE_SWING_VERTICAL, CLIMATE_SWING_HORIZONTAL }); return traits; } float minimum_temperature_ { 18.0f }; float maximum_temperature_ { 30.0f }; float temperature_step_ { 0.5f }; ACPower power_; ACMode mode_; float tsetpoint_; uint fan_; ACVanes vanes_; MHI_AC_Ctrl_Core mhi_ac_ctrl_core; Sensor error_code_; Sensor outdoor_temperature_; Sensor return_air_temperature_; Sensor outdoor_unit_fan_speed_; Sensor indoor_unit_fan_speed_; Sensor compressor_frequency_; Sensor indoor_unit_total_run_time_; Sensor compressor_total_run_time_; Sensor current_power_; BinarySensor defrost_; Sensor vanes_pos_; Sensor energy_used_; Sensor indoor_unit_thi_r1_; Sensor indoor_unit_thi_r2_; Sensor indoor_unit_thi_r3_; Sensor outdoor_unit_tho_r1_; Sensor outdoor_unit_expansion_valve_; Sensor outdoor_unit_discharge_pipe_; Sensor outdoor_unit_discharge_pipe_super_heat_; Sensor protection_state_number_; TextSensor protection_state_; }; |
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Die horen netjes bij elkaar, dus dat ziet er op het eerste gezicht goed uit. Ik zie dat je debug logging aan heb staan, wat geeft die?Taro schreef op zaterdag 7 oktober 2023 @ 20:11:
[...]
De yaml voor deze unit:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 ## Code from https://github.com/ginkage/MHI-AC-Ctrl-ESPHome/blob/master/lr_mhi_ac_ctrl.yaml @ 01-09-2023 ## Small modifications done: # Added webserver, fallback password and captive portal substitutions: # Unique device ID in HA deviceid: "mhi_woonkamer" # Unique device name in HA (sensor names will be prefixed by this name) devicename: "MHI Woonkamer" esphome: name: "mhi-woonkamer" platform: ESP8266 board: d1_mini platformio_options: # Run CPU at 160Mhz to fix mhi_ac_ctrl_core.loop error: -2 board_build.f_cpu: 160000000L includes: - mhi_ac_ctrl.h - MHI-AC-Ctrl-core.h - MHI-AC-Ctrl-core.cpp wifi: ssid: !secret wifi_ssid_iot password: !secret wifi_password_iot fast_connect: on # WiFi fallback hotspot configuration when configured WiFi network is not available ap: ssid: "${devicename} - Fallback AP" # password: "" # Enable Web server web_server: port: 80 # Enable captive portal functionality in fallback hotspot mode captive_portal: logger: level: DEBUG baud_rate: 0 globals: - id: room_temp_api_timeout type: int restore_value: no initial_value: '120' ota: climate: - platform: custom lambda: |- auto mhi_ac_ctrl = new MhiAcCtrl(); App.register_component(mhi_ac_ctrl); return {mhi_ac_ctrl}; climates: - name: "${devicename}" id: ${deviceid} api: reboot_timeout: 0s services: # Call the set_api_room_temperature service from HA to override the room temperature # If a new value has not been received after room_temp_api_timeout seconds, it will fall back to internal sensor - service: set_api_room_temperature variables: value: float then: - lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value); # Call the set_vanes service from HA to set the vane position # Needed because the ESPHome Climate class does not support this natively # Possible values: 1-4: static positions, 5: swing, 0: unknown - service: set_vanes variables: value: int then: - lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value); sensor: - platform: uptime name: ${devicename} Uptime - platform: wifi_signal name: ${devicename} WiFi Signal update_interval: 60s - platform: custom lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->get_sensors(); # Sensor names in HA, you can change these if you want # Don't delete them or change their position in the list sensors: - name: ${devicename} error code - name: ${devicename} outdoor temperature - name: ${devicename} return air temperature - name: ${devicename} outdoor unit fan speed - name: ${devicename} indoor unit fan speed - name: ${devicename} current power device_class: "current" state_class: "measurement" - name: ${devicename} compressor frequency - name: ${devicename} indoor unit total run time - name: ${devicename} compressor total run time - name: ${devicename} vanes - name: ${devicename} energy used - name: ${devicename} Indoor (U-bend) HE temp 1 - name: ${devicename} Indoor (capillary) HE temp 2 - name: ${devicename} Indoor (suction header) HE temp 3 - name: ${devicename} Outdoor HE temp - name: ${devicename} Outdoor unit exp. valve - name: ${devicename} Outdoor unit discharge pipe - name: ${devicename} Outdoor unit discharge pipe super heat - name: ${devicename} Protection error state binary_sensor: - platform: custom lambda: |- return ((MhiAcCtrl*)id(${deviceid}))->get_binary_sensors(); binary_sensors: - name: ${devicename} defrost text_sensor: - platform: version name: ${devicename} ESPHome Version - platform: wifi_info ip_address: name: ${devicename} IP ssid: name: ${devicename} SSID bssid: name: ${devicename} BSSID
En mhi-ac-ctrl.h:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 #include "MHI-AC-Ctrl-core.h" #define ROOM_TEMP_MQTT 1 #include <vector> #include <string> static const std::vector<std::string> protection_states = { "Normal", "Discharge pipe temperature protection control", "Discharge pipe temperature anomaly", "Current safe control of inverter primary current", "High pressure protection control", "High pressure anomaly", "Low pressure protection control", "Low pressure anomaly", "Anti-frost prevention control", "Current cut", "Power transistor protection control", "Power transistor anomaly (Overheat)", "Compression ratio control", "-", "Condensation prevention control", "Current safe control of inverter secondary current", "Stop by compressor rotor lock", "Stop by compressor startup failure" }; static const char* TAG = "mhi_ac_ctrl"; unsigned long room_temp_api_timeout_ms = millis(); class MhiAcCtrl : public climate::Climate, public Component, public CallbackInterface_Status { public: void setup() override { this->power_ = power_off; this->current_temperature = NAN; // restore set points auto restore = this->restore_state_(); if (restore.has_value()) { restore->apply(this); } else { // restore from defaults this->mode = climate::CLIMATE_MODE_OFF; // initialize target temperature to some value so that it's not NAN this->target_temperature = roundf(clamp( this->current_temperature, this->minimum_temperature_, this->maximum_temperature_)); this->fan_mode = climate::CLIMATE_FAN_AUTO; this->swing_mode = climate::CLIMATE_SWING_OFF; } // Never send nan to HA if (isnan(this->target_temperature)) this->target_temperature = 20; error_code_.set_icon("mdi:alert-circle"); outdoor_temperature_.set_icon("mdi:thermometer"); outdoor_temperature_.set_unit_of_measurement("°C"); outdoor_temperature_.set_accuracy_decimals(2); return_air_temperature_.set_icon("mdi:thermometer"); return_air_temperature_.set_unit_of_measurement("°C"); return_air_temperature_.set_accuracy_decimals(2); outdoor_unit_fan_speed_.set_icon("mdi:fan"); indoor_unit_fan_speed_.set_icon("mdi:fan"); compressor_frequency_.set_icon("mdi:sine-wave"); compressor_frequency_.set_unit_of_measurement("Hz"); compressor_frequency_.set_accuracy_decimals(1); indoor_unit_total_run_time_.set_icon("mdi:clock"); indoor_unit_total_run_time_.set_unit_of_measurement("h"); compressor_total_run_time_.set_icon("mdi:clock"); compressor_total_run_time_.set_unit_of_measurement("h"); current_power_.set_icon("mdi:current-ac"); current_power_.set_unit_of_measurement("A"); current_power_.set_accuracy_decimals(2); defrost_.set_icon("mdi:snowflake-melt"); vanes_pos_.set_icon("mdi:air-filter"); indoor_unit_thi_r1_.set_icon("mdi:thermometer"); indoor_unit_thi_r1_.set_unit_of_measurement("°C"); indoor_unit_thi_r1_.set_accuracy_decimals(2); indoor_unit_thi_r2_.set_icon("mdi:thermometer"); indoor_unit_thi_r2_.set_unit_of_measurement("°C"); indoor_unit_thi_r2_.set_accuracy_decimals(2); indoor_unit_thi_r3_.set_icon("mdi:thermometer"); indoor_unit_thi_r3_.set_unit_of_measurement("°C"); indoor_unit_thi_r3_.set_accuracy_decimals(2); outdoor_unit_tho_r1_.set_icon("mdi:thermometer"); outdoor_unit_tho_r1_.set_unit_of_measurement("°C"); outdoor_unit_tho_r1_.set_accuracy_decimals(2); outdoor_unit_expansion_valve_.set_icon("mdi:valve"); outdoor_unit_expansion_valve_.set_unit_of_measurement("pulse"); outdoor_unit_expansion_valve_.set_accuracy_decimals(0); outdoor_unit_discharge_pipe_.set_icon("mdi:thermometer"); outdoor_unit_discharge_pipe_.set_unit_of_measurement("°C"); outdoor_unit_discharge_pipe_.set_accuracy_decimals(1); outdoor_unit_discharge_pipe_super_heat_.set_icon("mdi:thermometer"); outdoor_unit_discharge_pipe_super_heat_.set_unit_of_measurement("°C"); outdoor_unit_discharge_pipe_super_heat_.set_accuracy_decimals(1); protection_state_.set_icon("mdi:shield-alert-outline"); protection_state_number_.set_icon("mdi:shield-alert-outline"); energy_used_.set_icon("mdi:lightning-bolt"); energy_used_.set_unit_of_measurement("kWh"); energy_used_.set_accuracy_decimals(2); mhi_ac_ctrl_core.MHIAcCtrlStatus(this); mhi_ac_ctrl_core.init(); } void loop() override { if(millis() - room_temp_api_timeout_ms >= id(room_temp_api_timeout)*1000) { mhi_ac_ctrl_core.set_troom(0xff); // use IU temperature sensor room_temp_api_timeout_ms = millis(); ESP_LOGD("mhi_ac_ctrl", "did not receive a room_temp_api value, using IU temperature sensor"); } int ret = mhi_ac_ctrl_core.loop(100); if (ret < 0) ESP_LOGW("mhi_ac_ctrl", "mhi_ac_ctrl_core.loop error: %i", ret); } void dump_config() override { LOG_CLIMATE("", "MHI-AC-Ctrl Climate", this); ESP_LOGCONFIG(TAG, " Min. Temperature: %.1f°C", this->minimum_temperature_); ESP_LOGCONFIG(TAG, " Max. Temperature: %.1f°C", this->maximum_temperature_); ESP_LOGCONFIG(TAG, " Supports HEAT: %s", YESNO(true)); ESP_LOGCONFIG(TAG, " Supports COOL: %s", YESNO(true)); } void cbiStatusFunction(ACStatus status, int value) override { static int mode_tmp = 0xff; ESP_LOGD("mhi_ac_ctrl", "received status=%i value=%i power=%i", status, value, this->power_); if (this->power_ == power_off) { // Workaround for status after reboot this->mode = climate::CLIMATE_MODE_OFF; this->publish_state(); } switch (status) { case status_power: if (value == power_on) { this->power_ = power_on; // output_P(status, (TOPIC_POWER), PSTR(PAYLOAD_POWER_ON)); cbiStatusFunction(status_mode, mode_tmp); } else { // output_P(status, (TOPIC_POWER), (PAYLOAD_POWER_OFF)); // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_OFF)); this->power_ = power_off; this->mode = climate::CLIMATE_MODE_OFF; this->publish_state(); } break; case status_mode: mode_tmp = value; case opdata_mode: case erropdata_mode: switch (value) { case mode_auto: // if (status != erropdata_mode) // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_AUTO)); // else // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_STOP)); // break; if (status != erropdata_mode && this->power_ > 0) { this->mode = climate::CLIMATE_MODE_HEAT_COOL; } else { this->mode = climate::CLIMATE_MODE_OFF; } break; case mode_dry: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_DRY)); this->mode = climate::CLIMATE_MODE_DRY; break; case mode_cool: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_COOL)); this->mode = climate::CLIMATE_MODE_COOL; break; case mode_fan: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_FAN)); this->mode = climate::CLIMATE_MODE_FAN_ONLY; break; case mode_heat: // output_P(status, PSTR(TOPIC_MODE), PSTR(PAYLOAD_MODE_HEAT)); this->mode = climate::CLIMATE_MODE_HEAT; break; default: ESP_LOGD("mhi_ac_ctrl", "unknown status mode value %i", value); } this->publish_state(); break; case status_fan: switch (value) { case 0: this->fan_mode = climate::CLIMATE_FAN_LOW; break; case 1: this->fan_mode = climate::CLIMATE_FAN_MEDIUM; break; case 2: this->fan_mode = climate::CLIMATE_FAN_HIGH; break; case 6: this->fan_mode = climate::CLIMATE_FAN_DIFFUSE; break; case 7: this->fan_mode = climate::CLIMATE_FAN_AUTO; break; } this->publish_state(); break; case status_vanes: switch (value) { case vanes_unknown: this->swing_mode = climate::CLIMATE_SWING_OFF; break; case vanes_1: this->swing_mode = climate::CLIMATE_SWING_HORIZONTAL; break; case vanes_2: this->swing_mode = climate::CLIMATE_SWING_HORIZONTAL; break; case vanes_3: this->swing_mode = climate::CLIMATE_SWING_OFF; break; case vanes_4: this->swing_mode = climate::CLIMATE_SWING_VERTICAL; break; case vanes_swing: this->swing_mode = climate::CLIMATE_SWING_BOTH; break; } this->publish_state(); break; case status_troom: // dtostrf((value - 61) / 4.0, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_TROOM), strtmp); this->current_temperature = (value - 61) / 4.0; this->publish_state(); break; case status_tsetpoint: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_TSETPOINT), strtmp); this->target_temperature = (value & 0x7f)/ 2.0; this->publish_state(); break; case status_errorcode: case erropdata_errorcode: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_ERRORCODE), strtmp); error_code_.publish_state(value); break; case opdata_return_air: case erropdata_return_air: // dtostrf(value * 0.25f - 15, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_RETURNAIR), strtmp); return_air_temperature_.publish_state(value * 0.25f - 15); break; case opdata_thi_r1: // Indoor Heat exchanger temperature 1 (U-bend) indoor_unit_thi_r1_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r1: // itoa(0.327f * value - 11.4f, strtmp, 10); // only rough approximation // output_P(status, PSTR(TOPIC_THI_R1), strtmp); break; case opdata_thi_r2: // Indoor Heat exchanger temperature 2 (capillary) indoor_unit_thi_r2_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r2: // itoa(0.327f * value - 11.4f, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_THI_R2), strtmp); break; case opdata_thi_r3: // Indoor Heat exchanger temperature 3 (suction header) indoor_unit_thi_r3_.publish_state(0.327f * value - 11.4f); break; case erropdata_thi_r3: // itoa(0.327f * value - 11.4f, strtmp, 10); // only rough approximation // output_P(status, PSTR(TOPIC_THI_R3), strtmp); break; case opdata_iu_fanspeed: case erropdata_iu_fanspeed: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_IU_FANSPEED), strtmp); indoor_unit_fan_speed_.publish_state(value); break; case opdata_total_iu_run: case erropdata_total_iu_run: // itoa(value * 100, strtmp, 10); // output_P(status, PSTR(TOPIC_TOTAL_IU_RUN), strtmp); indoor_unit_total_run_time_.publish_state(value * 100); break; case erropdata_outdoor: case opdata_outdoor: // dtostrf((value - 94) * 0.25f, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_OUTDOOR), strtmp); outdoor_temperature_.publish_state((value - 94) * 0.25f); break; case opdata_tho_r1: // Indoor Heat exchanger temperature 3 (suction header) outdoor_unit_tho_r1_.publish_state(0.327f * value - 11.4f); break; case erropdata_tho_r1: // itoa(0.327f * value - 11.4f, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_THO_R1), strtmp); break; case opdata_comp: case erropdata_comp: // dtostrf( // highByte(value) * 25.6f + 0.1f * lowByte(value), 0, 2, strtmp); // to be confirmed // output_P(status, PSTR(TOPIC_COMP), strtmp); compressor_frequency_.publish_state(highByte(value) * 25.6f + 0.1f * lowByte(value)); break; case erropdata_td: case opdata_td: if (value < 0x2) outdoor_unit_discharge_pipe_.publish_state(30); else outdoor_unit_discharge_pipe_.publish_state(value / 2 + 32); break; case opdata_ct: case erropdata_ct: // dtostrf(value * 14 / 51.0f, 0, 2, strtmp); // output_P(status, PSTR(TOPIC_CT), strtmp); current_power_.publish_state(value * 14 / 51.0f); break; case opdata_tdsh: outdoor_unit_discharge_pipe_super_heat_.publish_state(value); // itoa(value, strtmp, 10); // formula for calculation not known // output_P(status, PSTR(TOPIC_TDSH), strtmp); break; case opdata_protection_no: if (value < protection_states.size()) protection_state_.publish_state(protection_states[value]); protection_state_number_.publish_state(value); // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_PROTECTION_NO), strtmp); break; case opdata_ou_fanspeed: case erropdata_ou_fanspeed: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_OU_FANSPEED), strtmp); outdoor_unit_fan_speed_.publish_state(value); break; case opdata_defrost: // if (value) // output_P(status, PSTR(TOPIC_DEFROST), PSTR(PAYLOAD_OP_DEFROST_ON)); // else // output_P(status, PSTR(TOPIC_DEFROST), PSTR(PAYLOAD_OP_DEFROST_OFF)); defrost_.publish_state(value != 0); break; case opdata_total_comp_run: case erropdata_total_comp_run: // itoa(value * 100, strtmp, 10); // output_P(status, PSTR(TOPIC_TOTAL_COMP_RUN), strtmp); compressor_total_run_time_.publish_state(value * 100); break; case opdata_ou_eev1: outdoor_unit_expansion_valve_.publish_state(value); break; case erropdata_ou_eev1: // itoa(value, strtmp, 10); // output_P(status, PSTR(TOPIC_OU_EEV1), strtmp); break; case opdata_tsetpoint: case erropdata_tsetpoint: break; case opdata_kwh: // https://github.com/absalom-muc/MHI-AC-Ctrl/pull/135 // This item is counting the kWh from the point where the AC is powered On energy_used_.publish_state(value * 0.25); break; case opdata_unknown: // skip these values as they are not used currently break; } } std::vector<Sensor *> get_sensors() { return { &error_code_, &outdoor_temperature_, &return_air_temperature_, &outdoor_unit_fan_speed_, &indoor_unit_fan_speed_, ¤t_power_, &compressor_frequency_, &indoor_unit_total_run_time_, &compressor_total_run_time_, &vanes_pos_, &energy_used_, &indoor_unit_thi_r1_, &indoor_unit_thi_r2_, &indoor_unit_thi_r3_, &outdoor_unit_tho_r1_, &outdoor_unit_expansion_valve_, &outdoor_unit_discharge_pipe_, &outdoor_unit_discharge_pipe_super_heat_, &protection_state_number_ }; } std::vector<TextSensor *> get_text_sensors() { return { &protection_state_ }; } std::vector<BinarySensor *> get_binary_sensors() { return { &defrost_ }; } void set_room_temperature(float value) { if ((value > -10) & (value < 48)) { room_temp_api_timeout_ms = millis(); // reset timeout byte tmp = value*4+61; mhi_ac_ctrl_core.set_troom(value*4+61); ESP_LOGD("mhi_ac_ctrl", "set room_temp_api: %f %i %i", value, (byte)(value*4+61), (byte)tmp); } } void set_vanes(int value) { mhi_ac_ctrl_core.set_vanes(value); ESP_LOGD("mhi_ac_ctrl", "set vanes: %i", value); } protected: /// Transmit the state of this climate controller. void control(const climate::ClimateCall& call) override { if (call.get_mode().has_value()) { this->mode = *call.get_mode(); power_ = power_on; switch (this->mode) { case climate::CLIMATE_MODE_OFF: power_ = power_off; break; case climate::CLIMATE_MODE_COOL: mode_ = mode_cool; break; case climate::CLIMATE_MODE_HEAT: mode_ = mode_heat; break; case climate::CLIMATE_MODE_DRY: mode_ = mode_dry; break; case climate::CLIMATE_MODE_FAN_ONLY: mode_ = mode_fan; break; case climate::CLIMATE_MODE_HEAT_COOL: default: mode_ = mode_auto; break; } mhi_ac_ctrl_core.set_power(power_); mhi_ac_ctrl_core.set_mode(mode_); } if (call.get_target_temperature().has_value()) { this->target_temperature = *call.get_target_temperature(); tsetpoint_ = clamp(this->target_temperature, minimum_temperature_, maximum_temperature_); mhi_ac_ctrl_core.set_tsetpoint((byte)(2 * tsetpoint_)); } if (call.get_fan_mode().has_value()) { this->fan_mode = *call.get_fan_mode(); switch (*this->fan_mode) { case climate::CLIMATE_FAN_LOW: fan_ = 0; break; case climate::CLIMATE_FAN_MEDIUM: fan_ = 1; break; case climate::CLIMATE_FAN_HIGH: fan_ = 2; break; case climate::CLIMATE_FAN_DIFFUSE: fan_ = 6; break; case climate::CLIMATE_FAN_AUTO: default: fan_ = 7; break; } mhi_ac_ctrl_core.set_fan(fan_); } if (call.get_swing_mode().has_value()) { this->swing_mode = *call.get_swing_mode(); switch (this->swing_mode) { case climate::CLIMATE_SWING_BOTH: vanes_ = vanes_swing; break; case climate::CLIMATE_SWING_VERTICAL: vanes_ = vanes_4; break; case climate::CLIMATE_SWING_HORIZONTAL: vanes_ = vanes_1; break; default: case climate::CLIMATE_SWING_OFF: vanes_ = vanes_3; break; } mhi_ac_ctrl_core.set_vanes(vanes_); } this->publish_state(); } /// Return the traits of this controller. climate::ClimateTraits traits() override { auto traits = climate::ClimateTraits(); traits.set_supports_current_temperature(true); traits.set_supported_modes({ CLIMATE_MODE_OFF, CLIMATE_MODE_HEAT_COOL, CLIMATE_MODE_COOL, CLIMATE_MODE_HEAT, CLIMATE_MODE_DRY, CLIMATE_MODE_FAN_ONLY }); traits.set_supports_two_point_target_temperature(false); traits.set_visual_min_temperature(this->minimum_temperature_); traits.set_visual_max_temperature(this->maximum_temperature_); traits.set_visual_temperature_step(this->temperature_step_); traits.set_supported_fan_modes({ CLIMATE_FAN_AUTO, CLIMATE_FAN_LOW, CLIMATE_FAN_MEDIUM, CLIMATE_FAN_HIGH, CLIMATE_FAN_DIFFUSE }); traits.set_supported_swing_modes({ CLIMATE_SWING_OFF, CLIMATE_SWING_BOTH, CLIMATE_SWING_VERTICAL, CLIMATE_SWING_HORIZONTAL }); return traits; } float minimum_temperature_ { 18.0f }; float maximum_temperature_ { 30.0f }; float temperature_step_ { 0.5f }; ACPower power_; ACMode mode_; float tsetpoint_; uint fan_; ACVanes vanes_; MHI_AC_Ctrl_Core mhi_ac_ctrl_core; Sensor error_code_; Sensor outdoor_temperature_; Sensor return_air_temperature_; Sensor outdoor_unit_fan_speed_; Sensor indoor_unit_fan_speed_; Sensor compressor_frequency_; Sensor indoor_unit_total_run_time_; Sensor compressor_total_run_time_; Sensor current_power_; BinarySensor defrost_; Sensor vanes_pos_; Sensor energy_used_; Sensor indoor_unit_thi_r1_; Sensor indoor_unit_thi_r2_; Sensor indoor_unit_thi_r3_; Sensor outdoor_unit_tho_r1_; Sensor outdoor_unit_expansion_valve_; Sensor outdoor_unit_discharge_pipe_; Sensor outdoor_unit_discharge_pipe_super_heat_; Sensor protection_state_number_; TextSensor protection_state_; };
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Die geeft netjes updates over uptime, wifi status en evt. instellingen die ik via HA aanpas, maar geen feedback over sensoren/states (weet ook niet of dat zichtbaar is?), de unit reageert er echter niet op. Via de AB werkt alles prima, maar aansturen via HA doet niets. Soms dus wel errorcode 1.LinuZZ schreef op zaterdag 7 oktober 2023 @ 21:24:
[...]
Die horen netjes bij elkaar, dus dat ziet er op het eerste gezicht goed uit. Ik zie dat je debug logging aan heb staan, wat geeft die?
Specifieke zaken uit de logging die je zou willen zien?
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Kun je bij die vloermodellen überhaupt wel naar links of rechts uitblazen? Wat de nieuwe firmware namelijk doet is eerst een bepaald commando naar de AC sturen waardoor hij langere commando’s accepteert. Vervolgens blijft hij de lange commando’s sturen en verwacht hij ook lange responses terug. Als zo’n vloermodel dat niet ondersteund is het natuurlijk niet zo gek dat je foutmeldingen krijgt.JoepW schreef op vrijdag 6 oktober 2023 @ 22:53:
[...]
Bij mij werken alle airco’s prima en ik stuur ze al ruim een jaar aan via HA tbv koelen en verwarmen.
Enige is die error (iets met timing) met het staande model. Maar ook die werkt prima met FW release zonder de l/r aanpassing.
Dus voor mij is op dit moment conclusie qua versies:
- De l/r versie op de 3 hangende units
- De versie zonder l/r op de staande unit, en daar die timing error accepteren.
Bij de nieuwe firmware kun je overigens ook het L/R deel uitschakelen. Dan zou je in ieder geval met gelijke versies kunnen werken.
[ Voor 6% gewijzigd door Chatslet op 07-10-2023 23:43 ]
Precies dat is het probleem, idd. DeChatslet schreef op zaterdag 7 oktober 2023 @ 23:42:
[...]
Kun je bij die vloermodellen überhaupt wel naar links of rechts uitblazen? Wat de nieuwe firmware namelijk doet is eerst een bepaald commando naar de AC sturen waardoor hij langere commando’s accepteert. Vervolgens blijft hij de lange commando’s sturen en verwacht hij ook lange responses terug. Als zo’n vloermodel dat niet ondersteund is het natuurlijk niet zo gek dat je foutmeldingen krijgt.
Bij de nieuwe firmware kun je overigens ook het L/R deel uitschakelen. Dan zou je in ieder geval met gelijke versies kunnen werken.
Unit heeft geen l/r.
Hoe schakel ik l/r uit in de fw als ik vragen mag?
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
https://github.com/RobertJansen1/MHI-AC-Ctrl-ESPHome
Heeft er iemand een idee waar dat aan kan liggen? Anderen ook last van? (op meerdere MHI units geprobeerd en foutmelding blijft)
1
2
3
4
| 12:57:08 [W] [component:204] Component <unknown> took a long time for an operation (0.07 s). 12:57:08 [W] [component:205] Components should block for at most 20-30ms. |
![]() |
Dit komt door nieuwe ESPhome: https://github.com/ginkag...1#issuecomment-1742806365 deze meldingen krijg ik ook (ook met de oude firmware zonder de 33 byte frames)AUijtdehaag schreef op zondag 8 oktober 2023 @ 13:03:
Heb toch nog wel regelmatig deze foutmelding als ik deze inlaad:
https://github.com/RobertJansen1/MHI-AC-Ctrl-ESPHome
Heeft er iemand een idee waar dat aan kan liggen? Anderen ook last van? (op meerdere MHI units geprobeerd en foutmelding blijft)
code:
1 2 3 4 12:57:08 [W] [component:204] Component <unknown> took a long time for an operation (0.07 s). 12:57:08 [W] [component:205] Components should block for at most 20-30ms.
[Afbeelding]
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Helaas nog geen verbeteringen dus in de verdere esphome versies
Ik zit nog op 2023.8.3 ivm verwijderde verborgen directory welke ik nodig heb voor mijn verschillende github configuraties goed te kunnen laden.
Die vloerunit ondersteund een WF-Rac module dus de nieuwe FW moet ook werken. Dat doet ie ook want anders krijg je continue errors. Alleen faalt de checksum regelmatig, wat ook al het geval is met de vorige versie. Alleen nu veel vaker, omdat er nu 2 checksums aanwezig zijn. Of de timing van de unit is niet helemaal lekker of er wordt storing opgepikt.Chatslet schreef op zaterdag 7 oktober 2023 @ 23:42:
Kun je bij die vloermodellen überhaupt wel naar links of rechts uitblazen? Wat de nieuwe firmware namelijk doet is eerst een bepaald commando naar de AC sturen waardoor hij langere commando’s accepteert. Vervolgens blijft hij de lange commando’s sturen en verwacht hij ook lange responses terug. Als zo’n vloermodel dat niet ondersteund is het natuurlijk niet zo gek dat je foutmeldingen krijgt.
Bij de nieuwe firmware kun je overigens ook het L/R deel uitschakelen. Dan zou je in ieder geval met gelijke versies kunnen werken.
Ik heb deze melding ook. Alles lijkt verder te werkenAUijtdehaag schreef op zondag 8 oktober 2023 @ 13:03:
Heb toch nog wel regelmatig deze foutmelding als ik deze inlaad:
https://github.com/RobertJansen1/MHI-AC-Ctrl-ESPHome
Heeft er iemand een idee waar dat aan kan liggen? Anderen ook last van? (op meerdere MHI units geprobeerd en foutmelding blijft)
code:
1 2 3 4 12:57:08 [W] [component:204] Component <unknown> took a long time for an operation (0.07 s). 12:57:08 [W] [component:205] Components should block for at most 20-30ms.
[Afbeelding]
[ Voor 98% gewijzigd door Willempie27 op 08-10-2023 20:56 ]
Bij de vloermodellen kan je wel naar L/R uitblazen, maar dit wordt geregeld door handmatig een linker- en rechtergedeelte een kant op te richten.Chatslet schreef op zaterdag 7 oktober 2023 @ 23:42:
[...]
Kun je bij die vloermodellen überhaupt wel naar links of rechts uitblazen?
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Support.hJoepW schreef op zondag 8 oktober 2023 @ 06:23:
[...]
Precies dat is het probleem, idd. De
Unit heeft geen l/r.
Hoe schakel ik l/r uit in de fw als ik vragen mag?
define USE_EXTENDED_FRAME_SIZE van true naar false veranderen
De kans bestaat natuurlijk dat die WF-Rac modules aan de response van de unit kunnen zien of die extended frame size wel of niet wordt ondersteund. De MHI-AC-CTRL stuurt er gewoon extended frames heen ongeacht het antwoord van de unit. Storing oid kan natuurlijk ook maar omdat hij de wifi module (en kabel?) heeft omgewisseld vanuit een airco waar het allemaal wel werkt twijfel ik daar een beetje over. Een slecht signaal wordt daardoor toch wat onwaarschijnlijker. Misschien slechte aarde oid?jobr schreef op zondag 8 oktober 2023 @ 18:44:
[...]
Die vloerunit ondersteund een WF-Rac module dus de nieuwe FW moet ook werken. Dat doet ie ook want anders krijg je continue errors. Alleen faalt de checksum regelmatig, wat ook al het geval is met de vorige versie. Alleen nu veel vaker, omdat er nu 2 checksums aanwezig zijn. Of de timing van de unit is niet helemaal lekker of er wordt storing opgepikt.
[ Voor 0% gewijzigd door Chatslet op 09-10-2023 09:09 . Reden: typo's ]
Heb jij die vloermodellen met MHI-AC-CTRL werkend? En zie je daar in beperkingen in functionaliteit tov de afstandsbediening? Hier komen er eind van de maand 3 boven dus ik ben erg benieuwd.Taro schreef op zondag 8 oktober 2023 @ 20:36:
[...]
Bij de vloermodellen kan je wel naar L/R uitblazen, maar dit wordt geregeld door handmatig een linker- en rechtergedeelte een kant op te richten.
Support.h kan ik btw nergens vinden in mijn config/ESPHome directory.Chatslet schreef op zondag 8 oktober 2023 @ 23:57:
[...]
Support.h
define USE_EXTENDED_FRAME_SIZE van true naar false veranderen
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Ja, heb er één op zolder en die werkt prima. Kan de verschillende functies gebruiken en zie ook alle states/sensoren.Chatslet schreef op maandag 9 oktober 2023 @ 00:05:
[...]
Heb jij die vloermodellen met MHI-AC-CTRL werkend? En zie je daar in beperkingen in functionaliteit tov de afstandsbediening? Hier komen er eind van de maand 3 boven dus ik ben erg benieuwd.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Maar dan zal ik denk ik elke module moeten uitbouwen om fysiek te flashen, toch?
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Volgens mij kan je in Arduino of een ander flash programma naar een .bin flashen en activeer daar ook OTA (op youtube video's genoeg).JoepW schreef op maandag 9 oktober 2023 @ 09:27:
Misschien moet ik eens overwegen om van ESPHome over te gaan naar de MQTT variant. Dichter op de ontwikkeling.
Maar dan zal ik denk ik elke module moeten uitbouwen om fysiek te flashen, toch?
In ESPhome de webserver aanzetten in de yaml file als die nog niet aan staan. Daarna naar het ipadres en onderaan kan je de bin file uploaden om te flashen.
Nee hoor, zo werkt het niet. De unit bepaald de frame size. MHI-AC-CTRL volgt de unit.Chatslet schreef op maandag 9 oktober 2023 @ 00:03:
De MHI-AC-CTRL stuurt er gewoon extended frames heen ongeacht het antwoord van de unit.
Alleen zul je wel continue fouten krijgen aangezien er wel 33 bytes worden verwacht (ik heb dat in MHI-AC-CTR niet dynamisch gemaakt). Maar dat zijn geen checksum fouten.
Als de unit 20 bytes stuurt en de MHI-AC-CTR staat in extended frame mode, dan is er communicatie helemaal niet mogelijk. De unit zal dan na circa 120s uitschakelen.
Moet je in mhi_ac_ctrl.h de mhi_ac_ctrl_core.set_frame_size(33); veranderen in mhi_ac_ctrl_core.set_frame_size(20); of de regel weghalen.LinuZZ schreef op maandag 9 oktober 2023 @ 09:19:
de esphome code heeft (nog?) geen mogelijkheid om de grotere framesize uit te zetten.
Je hebt dan nog wel de 3D auto en vanes L/R sensoren maar die doen dan niets.
Nee, de regel uit commentariëren !Chatslet schreef op zondag 8 oktober 2023 @ 23:57:
Support.h
define USE_EXTENDED_FRAME_SIZE van true naar false veranderen
Je zou eens kunnen proberen met je vloerunit maar ik verwacht dat je nog steeds die checksum errors krijgt. Maar wie weetJoepW schreef op maandag 9 oktober 2023 @ 09:27:
Misschien moet ik eens overwegen om van ESPHome over te gaan naar de MQTT variant.
(denk aan compileren voor 160Mhz.
Dat zal ik morgen eens proberen.jobr schreef op maandag 9 oktober 2023 @ 18:39:
[...]
Moet je in mhi_ac_ctrl.h de mhi_ac_ctrl_core.set_frame_size(33); veranderen in mhi_ac_ctrl_core.set_frame_size(20); of de regel weghalen.
Je hebt dan nog wel de 3D auto en vanes L/R sensoren maar die doen dan niets.
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
De dingen die er nu allemaal inzitten zijn dmv een logic analyser of MHI-AC-Trace bepaald met een device aangesloten zoals een WF-RAC module met de app (of de wired remote control).Chatslet schreef op woensdag 11 oktober 2023 @ 08:07:
Denk je dat het ook mogelijk is om dingen als silent mode voor de buitenunit aan te zetten?
Je hebt dus een device op de CNS poort nodig die de betreffende functie kan schakelen waardoor je de positie (en waarden) in het frame kan bepalen.
Silent mode is niet beschikbaar op een ander device. (net zoals bijv ECO mode)
Dus zodra er iets nieuws in bijv de MHI app beschikbaar komt kunnen we dat afkijken en implementeren.
Zo heb ik ook de 3D auto en vanes L/R afgekeken en geïmplementeerd.
Zojuist alle apparaten van een update voorzien en alleen het vloermodel geeft nu ook iedere paar seconden deze melding:Willempie27 schreef op zondag 8 oktober 2023 @ 20:05:
[...]
Ik heb deze melding ook. Alles lijkt verder te werken
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:58][W][component:204]: Component <unknown> took a long time for an operation (0.06 s).
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:59][W][component:204]: Component <unknown> took a long time for an operation (0.06 s)
Kwestie van wachten op een nieuwe update?
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Helaas heb ik die ook en daarom het level van loggen naar error gezet.Taro schreef op woensdag 11 oktober 2023 @ 19:10:
Vorige week woensdag 5 units in gebruik genomen, 1 ervan kon ik wel benaderen, maar niet bedienen via HA. Nieuwe custom wifi module binnengekregen en gemonteerd, nu doen ze het gelukkig allemaal. Eindelijk aan de slag met automatiseringen
[...]
Zojuist alle apparaten van een update voorzien en alleen het vloermodel geeft nu ook iedere paar seconden deze melding:
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:58][W][component:204]: Component <unknown> took a long time for an operation (0.06 s).
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:59][W][component:204]: Component <unknown> took a long time for an operation (0.06 s)
Kwestie van wachten op een nieuwe update?
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
https://github.com/ginkage/MHI-AC-Ctrl-ESPHome/issues/61Taro schreef op woensdag 11 oktober 2023 @ 19:10:
Zojuist alle apparaten van een update voorzien en alleen het vloermodel geeft nu ook iedere paar seconden deze melding:
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:58][W][component:204]: Component <unknown> took a long time for an operation (0.06 s).
[19:01:58][W][component:205]: Components should block for at most 20-30ms.
[19:01:59][W][component:204]: Component <unknown> took a long time for an operation (0.06 s)
Kwestie van wachten op een nieuwe update?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| select: - unique_id: "AC-Keuken-LR" name: "AC-Keuken LR Vanes" command_topic: "AC-Keuken/set/VanesLR" state_topic: "AC-Keuken/VanesLR" options: - "1" - "2" - "3" - "4" - "5" - "6" - "7" - "swing" - unique_id: "AC-Woonkamer-LR" name: "AC-Woonkamer LR Vanes" command_topic: "AC-Woonkamer/set/VanesLR" state_topic: "AC-Woonkamer/VanesLR" options: - "1" - "2" - "3" - "4" - "5" - "6" - "7" - "swing" switch: - unique_id: "AC-Keuken-3Dauto" name: "AC-Keuken 3D Auto" command_topic: "AC-Keuken/set/3Dauto" state_topic: "AC-Keuken/3Dauto" payload_on: "on" payload_off: "off" - unique_id: "AC-Woonkamer-3Dauto" name: "AC-Woonkamer 3D Auto" command_topic: "AC-Woonkamer/set/3Dauto" state_topic: "AC-Woonkamer/3Dauto" payload_on: "on" payload_off: "off" |
[ Voor 67% gewijzigd door Chatslet op 13-10-2023 22:33 ]
Zelf zit ik sowieso aan een schema per dag te denken, die mits we niet op bijv. vakantie zijn, op verschillende momenten op de dag de gewenste temperatuur iets bijstelt per ruimte. Maar ik wil deze ook koppelen aan dynamische tarieven. Zo is het stroomtarief de komende 1,5 uur nog 17 cent/kWh en om 20:00 39 cent/kWh, je kunt dus nu al beter starten met (voor)verwarmen dan om bijv. 20:00 alles snel van 19.5 graden naar 20.5 graden te verwarmen.
Wat ik zou willen realiseren is dat bij een hoger tarief er iets wordt getriggerd (bijv. ECO-mode aan, minder hard blazen, silent modus, kleinere delta met huidige temperatuur instellen, etc.) waardoor je optimaal gebruikmaakt van de fluctuering in dynamische tarieven. Ik wil nadrukkelijk niet bij een hoge prijs alles uitzetten en bij een lage prijs alles aanslingeren, het verschil moet subtiel zijn
Heel benieuwd wat anderen voor automatiseringen hebben toegepast en of daar specifieke MHI mogelijkheden/instellingen bij komen kijken.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Voor zover ik weet kan je echter via HA nog niet bijv. de Eco-mode of Silent mode (de)activeren. Dat lijkt mij een makkelijke optie om bijv. tijdens duurdere uren het verbruik te beperken zonder de unit uit te zetten of ingewikkeld te gaan doen met temperaturen bijsturen.
Vandaar dat ik benieuwd ben naar anderen die op een slimme manier via HA en MHI-AC-CTRL automatiseringen hebben draaien die hierop sturen.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Volgens mij kan ik de slaapkamers met offset erbij alleen vanaf 20 graden verwarmen, omdat de minimale instelling 18 graden betreft + 2 graden offset = 20 graden.
Zonder offset kan ik ze daadwerkelijk op 18 graden instellen, correct? Met voldoende luchtcirculatie zou de temperatuur bovenin tegen het plafond niet enorm veel hoger dan laag bij de vloer moeten zijn.
Ik heb berichten gelezen dat het 30 seconden indrukken van de ON/OFF zorgt voor het uitschakelen van de offset, maar op zowel de unit zelf als op de AB heeft dit geen effect. In de handleiding kan ik hierover ook niets vinden.
Is er een manier om de offset naar 0 aan te kunnen passen?
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Hoewel het geen eco mode is, als je de fan speed van je binnen unit lager zet, kan je buiten unit minder vermogen aan warmte of koeling kwijt en gaat hij vanzelf langzamer draaien (minder Hz, dus minder verbruik)Taro schreef op zaterdag 14 oktober 2023 @ 20:20:
@Chatslet Ik heb ze inderdaad ook in HA staan met MHI-AC-CTRL modules. De laadpaal heeft loadbalancing en verder zullen we niet zo snel vermogen moeten beperken. Ik ben dus echt op zoek naar een goede automatisering om slim te sturen op verbruik en tarieven.
Voor zover ik weet kan je echter via HA nog niet bijv. de Eco-mode of Silent mode (de)activeren. Dat lijkt mij een makkelijke optie om bijv. tijdens duurdere uren het verbruik te beperken zonder de unit uit te zetten of ingewikkeld te gaan doen met temperaturen bijsturen.
Vandaar dat ik benieuwd ben naar anderen die op een slimme manier via HA en MHI-AC-CTRL automatiseringen hebben draaien die hierop sturen.
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Dat is idd een optie, dus zoiets?LinuZZ schreef op zaterdag 14 oktober 2023 @ 20:48:
[...]
Hoewel het geen eco mode is, als je de fan speed van je binnen unit lager zet, kan je buiten unit minder vermogen aan warmte of koeling kwijt en gaat hij vanzelf langzamer draaien (minder Hz, dus minder verbruik)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| alias: MHI Dynamische fan speed description: "" trigger: - platform: time_pattern minutes: "05" condition: - condition: numeric_state entity_id: sensor.zonneplan_current_electricity_tariff below: 0.2 action: - service: climate.set_fan_mode data: fan_mode: "3" target: device_id: - 5447449cbc70cefcd2a99fa0844f9976 - 54dc207e5982c1947633a5b2c7db2ae3 - 05e6d6f09b70b2bcc638e9c1c65392f4 - 0b4d4a782d44deab883affd56a93e703 - 2a89252631cfa697036df959949179f9 mode: single |
Check: het betreft deze waarde die ik aan wil passen: <entiteit> indoor unit fan speed -> 1/2/3/4/5
Maar ik weet niet of set_fan_mode inderdaad dit gedeelte aanroept en daar de 3e optie kiest, of deze instelt op speed 3 ipv mode "3", maar het betreft wel deze setting die ik aan wil passen:
:fill(white):strip_exif()/f/image/vaU9UIN031TxO5dn9y4PnQKG.png?f=user_large)
Weet iemand of dit de juiste manier is?
Edit: Fan mode en fan speed werken beide niet, zowel via climate als fan. Benieuwd welke service/actie ik wel moet gebruiken.
[ Voor 3% gewijzigd door Taro op 14-10-2023 21:34 ]
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
vanuit de climate card moet fan speed (degene uit je screenshot) gewoon werken. als dat niet zo is, dan is het eerst zaak het daar op te lossen. als het daar werkt, kun je vervolgens de automations gaan doen.Taro schreef op zaterdag 14 oktober 2023 @ 21:22:
[...]
Dat is idd een optie, dus zoiets?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 alias: MHI Dynamische fan speed description: "" trigger: - platform: time_pattern minutes: "05" condition: - condition: numeric_state entity_id: sensor.zonneplan_current_electricity_tariff below: 0.2 action: - service: climate.set_fan_mode data: fan_mode: "3" target: device_id: - 5447449cbc70cefcd2a99fa0844f9976 - 54dc207e5982c1947633a5b2c7db2ae3 - 05e6d6f09b70b2bcc638e9c1c65392f4 - 0b4d4a782d44deab883affd56a93e703 - 2a89252631cfa697036df959949179f9 mode: single
Check: het betreft deze waarde die ik aan wil passen: <entiteit> indoor unit fan speed -> 1/2/3/4/5
Maar ik weet niet of set_fan_mode inderdaad dit gedeelte aanroept en daar de 3e optie kiest, of deze instelt op speed 3 ipv mode "3", maar het betreft wel deze setting die ik aan wil passen:
[Afbeelding]
Weet iemand of dit de juiste manier is?
Edit: Fan mode en fan speed werken beide niet, zowel via climate als fan. Benieuwd welke service/actie ik wel moet gebruiken.
enphase 8300wp (3460 ZO, 2740 ZW, 2100 NO), 2x20 vacuümbuizen op 300l SWW, Panasonic WH-MXC12J9E8, gasloos sinds Juni 2022 Stromer st3 voor woon-werk
Vanuit de climate card werkt die optie inderdaad.LinuZZ schreef op zondag 15 oktober 2023 @ 09:52:
[...]
vanuit de climate card moet fan speed (degene uit je screenshot) gewoon werken. als dat niet zo is, dan is het eerst zaak het daar op te lossen. als het daar werkt, kun je vervolgens de automations gaan doen.
3D Auto staat uit en ik gebruik geen MQTT.Chatslet schreef op zondag 15 oktober 2023 @ 09:57:
@Taro Heb je misschien 3D auto aan staan? Want kun je inderdaad de fanspeed niet aanpassen. Als je de airco met MQTT aanstuurt kun je ook nog overwegen om gewoon rechtstreeks in het set topic te schrijven.
Ik heb al even gekeken of ik die Climate Card kan ontleden om te zien wat ze aanroepen, maar nog niet gelukt.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
1
2
3
4
5
| service: climate.set_fan_mode data: fan_mode: "4" target: entity_id: climate.aircowoonkamer |
[ Voor 13% gewijzigd door Chatslet op 15-10-2023 10:49 ]
L/R kan je in yaml als volgt instellen:Taro schreef op zondag 15 oktober 2023 @ 09:59:
[...]
Vanuit de climate card werkt die optie inderdaad.
[...]
3D Auto staat uit en ik gebruik geen MQTT.
Ik heb al even gekeken of ik die Climate Card kan ontleden om te zien wat ze aanroepen, maar nog niet gelukt.
1
2
3
4
5
| service: select.select_option data: option: "Left" target: entity_id: select.mhi_gang_fan_control_left_right |
De keuze zijn:
- Left
- Left/Center
- Center
- Center/Right
- Right
- Wide
- Spot
- Swing
1
2
3
4
5
| service: select.select_option data: option: "Up" target: entity_id: select.mhi_gang_fan_control_up_down |
De keuze zijn:
- Up
- Up/Center
- Center/Down
- Down
- Swing
(Ik gebruik ESPHome)
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Nu gebruikt de airco zijn eigen temperatuurmeter, maar die zou ik graag overschrijven met de temperatuur gemeten door mijn Tado thermostaat.
en laat maar. Ik ben zelf eens wat beter gaan zoeken en heb het kunnen vinden. Zit al in de ESPHome met set_api_room_temperature en een automatisering.Rijo038 schreef op zondag 15 oktober 2023 @ 12:39:
is het mogelijk om met de MHI-AC-CTRL bediend via ESPHome, de huidige temperatuur van mijn Tado als Huidige temperatuur te gebruiken?
Nu gebruikt de airco zijn eigen temperatuurmeter, maar die zou ik graag overschrijven met de temperatuur gemeten door mijn Tado thermostaat.
Gaat als de brandweer en de binnenunit gedraagt zich ook een stuk stabieler ineens
[ Voor 5% gewijzigd door Rijo038 op 15-10-2023 13:51 ]
Idd werkt als een speer. Ik heb voor elke Airco een losse thermometer die via een automatisering de temp wegschrijft NA een temp-wijziging en als de airco aan staat.Rijo038 schreef op zondag 15 oktober 2023 @ 13:30:
[...]
en laat maar. Ik ben zelf eens wat beter gaan zoeken en heb het kunnen vinden. Zit al in de ESPHome met set_api_room_temperature en een automatisering.
Gaat als de brandweer en de binnenunit gedraagt zich ook een stuk stabieler ineens
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Ik neem aan dat elke 55 seconden de temp wordt gestuurd naar de airco?JoepW schreef op zondag 15 oktober 2023 @ 14:31:
[...]
Idd werkt als een speer. Ik heb voor elke Airco een losse thermometer die via een automatisering de temp wegschrijft NA een temp-wijziging en als de airco aan staat.
Doet hier helaas niets, uiteraard de juiste entity gekozen.Chatslet schreef op zondag 15 oktober 2023 @ 10:48:
@Taro Ik heb hier even snel voor je gekeken en ik kan de fan mode aanpassen door 1, 2, 3, 4 of auto te sturen. Ik heb dat wel de MHI-AC-CRRL zonder esphome en dus stuur ik ze via mqtt aan. Voorbeeldje:
code:
1 2 3 4 5 service: climate.set_fan_mode data: fan_mode: "4" target: entity_id: climate.aircowoonkamer
[ Voor 12% gewijzigd door Taro op 15-10-2023 15:59 ]
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Je bedoelt omdat ie anders terugvalt naar zijn interne sensor. Idd.Willempie27 schreef op zondag 15 oktober 2023 @ 14:45:
[...]
Ik neem aan dat elke 55 seconden de temp wordt gestuurd naar de airco?
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Wat voor thermometer gebruik je daar voor? Mijn ervaring is dat het met Zigbee thermometers niet zo betrouwbaar werkt.JoepW schreef op zondag 15 oktober 2023 @ 14:31:
[...]
Idd werkt als een speer. Ik heb voor elke Airco een losse thermometer die via een automatisering de temp wegschrijft NA een temp-wijziging en als de airco aan staat.
Ondank dat er veel negatieve ervaringen zijn gebruik ik toch de Xiaomi WSDCGQ11LM.Chatslet schreef op zondag 15 oktober 2023 @ 15:32:
[...]
Wat voor thermometer gebruik je daar voor? Mijn ervaring is dat het met Zigbee thermometers niet zo betrouwbaar werkt.
Er zijn negatieve berichten over de update frequentie, maar ik heb daar helemaal geen last van. Als er een temperatuursverandering is krijg ik die vrij snel door.
Veel mensen adviseren BT sensors, maar ik heb de noodzaak nog niet gehad.
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Als je het setpoint op 18 graden zet wil niet zeggen dat het ook precies 18 graden wordt. Idem met offset wil het niet zeggen dat de kamer precies 20 graden wordt. Verwarmen met airco werkt echter ander dan met CV qua nauwkeurigheid.Taro schreef op zaterdag 14 oktober 2023 @ 20:29:
Volgens mij kan ik de slaapkamers met offset erbij alleen vanaf 20 graden verwarmen, omdat de minimale instelling 18 graden betreft + 2 graden offset = 20 graden.
Je moet dus gewoon eerst proberen met offset hoe warm het wordt als je het setpoint op 18 graden zet. En natuurlijk als het wat kouder buiten wordt.
Dan kun je bepalen of je de offset moet uitzetten.
Chatslet schreef op zaterdag 14 oktober 2023 @ 20:37:
@Taro Die offset uitzetten moet je inderdaad even handigheid in krijgen. Uit mijn hoofd was het: Stroom er af, stroom er op, aanzetten met knop op de binnen unit, uitzetten met knop op de binnenunit en daarna de knop op de binnen unit ingedrukt houden. Je hoort aan de piepjes of het gelukt is.
:no_upscale():strip_icc():fill(white):strip_exif()/f/image/zqaMKdL1JzUcSdWUAYmgqACa.jpg?f=user_large)
ON/OFF hierboven is de knop op de binnenunit. Stroom hoeft er dus niet af.
Heb ik gisteren geprobeerd, maar in HA zag ik terug dat de unit gedurende die tijd iedere seconde 2x tussen verschillende modi gewisseld heeft ipv de offset uit te schakelen.jobr schreef op zondag 15 oktober 2023 @ 19:07:
[...]
[Afbeelding]
ON/OFF hierboven is de knop op de binnenunit. Stroom hoeft er dus niet af.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Ik heb ook van die zigbee thermometers. Ze meten nauwkeurig. Als ik ze naast elkaar legt en de temperatuur is stabiel geven ook exact hetzelfde aan.Chatslet schreef op zondag 15 oktober 2023 @ 15:32:
[...]
Wat voor thermometer gebruik je daar voor? Mijn ervaring is dat het met Zigbee thermometers niet zo betrouwbaar werkt.
Zodra de woonkamer 18 graden is en ik wil naar 21 verwarmen lopen ze uiteen vanwege de ververssnelheid.
Nu heb ik 2 sensoren in de woonkamer en neem daar het gemiddelde van en dat werkt eigenlijk best goed. De bedoeling was om de unit te laten blazen naar de sensor met de laagste temperatuur maar dat kon vorig jaar nog niet. Nu met de laatste update kan je wel L/R sturen dus ik ga daar weer mee aan de slag.
Met 3 sensoren krijg je waarschijnlijk nog een beter resultaat.
Ik gebruik zelf de Nest-thermostaat die er nog zit omdat de CV er nog hangtChatslet schreef op zondag 15 oktober 2023 @ 15:32:
[...]
Wat voor thermometer gebruik je daar voor? Mijn ervaring is dat het met Zigbee thermometers niet zo betrouwbaar werkt.

Die maakt enkel warm water nog... maar is ook een mooie thermometer voor de airco
Momenteel zelf bezig met het idee om boven ook airco te plaatsen, maar dan een duct-model in de gang. Daar zou ik een verlaagd plafond kunnen maken en zo slangen naar alle kamers kunnen maken en roosters kunnen plaatsen.
Moet het nog nameten en tekenen, maar anders zouden het 4 binnenunits worden, waarvan een aantal dan een condenspompje nodig heeft... En dat zie ik niet zo zitten op de slaapkamers.

Helaas is er weinig info over dat soort units en hoe je dit het beste kan plaatsen, en volgens mij zijn er ook niet zoveel bedrijfjes die deze units plaatsen. Ondanks dat 1 kanalunit waarschijnlijk goedkoper is als 4 losse binnenunits
Ik heb getest met zowel een Sonoff als een Aqara tempsensor. Qua temperatuur zitten ze dicht bij elkaar in de buurt, maar in eerste instantie updatete de Aqara sneller dan de Sonoff, maar nog niet snel genoeg naar mijn wens. Bij de Sonoff kon ik de updatefrequentie verhogen. Zowel de maximale tijd tussen twee berichten als de minimale temperatuurwisseling voordat hij een bericht stuurde kon ik middels zigbee2mqtt bijwerken. De sensor is nu veel responsiever.Willempie27 schreef op maandag 16 oktober 2023 @ 10:15:
[...]
Ik heb ook van die zigbee thermometers. Ze meten nauwkeurig. Als ik ze naast elkaar legt en de temperatuur is stabiel geven ook exact hetzelfde aan.
Zodra de woonkamer 18 graden is en ik wil naar 21 verwarmen lopen ze uiteen vanwege de ververssnelheid.
Nu heb ik 2 sensoren in de woonkamer en neem daar het gemiddelde van en dat werkt eigenlijk best goed. De bedoeling was om de unit te laten blazen naar de sensor met de laagste temperatuur maar dat kon vorig jaar nog niet. Nu met de laatste update kan je wel L/R sturen dus ik ga daar weer mee aan de slag.
Met 3 sensoren krijg je waarschijnlijk nog een beter resultaat.
SRK35ZS-W
Sorry, was niet helemaal juist wat ik schreef.Taro schreef op zondag 15 oktober 2023 @ 21:08:
Heb ik gisteren geprobeerd, maar in HA zag ik terug dat de unit gedurende die tijd iedere seconde 2x tussen verschillende modi gewisseld heeft ipv de offset uit te schakelen.
Als je onlangs de stroom eraf hebt gehad dan moet je minimaal de AC 1 maal hebben laten werken voordat het werkt. Misschien dat het daarom niet werkt.
De AC moet "Pip" zeggen als je de juiste procedure volgt.
En 30 sec vasthouden is best wel lang
[ Voor 3% gewijzigd door jobr op 16-10-2023 18:37 ]
Heb het geprobeerd maar ik krijg of 3x of 2x Pip, dus "PipPipPip" of "PipPip", enkel "Pip" nog niet gelukt.jobr schreef op maandag 16 oktober 2023 @ 18:35:
[...]
Sorry, was niet helemaal juist wat ik schreef.
Als je onlangs de stroom eraf hebt gehad dan moet je minimaal de AC 1 maal hebben laten werken voordat het werkt. Misschien dat het daarom niet werkt.
De AC moet "Pip" zeggen als je de juiste procedure volgt.
En 30 sec vasthouden is best wel lang
(heb er idd de stopwatch bijgehouden...)
(lijkt wel dat het hier nu werkt in ieder geval)
19.0 ingesteld, 19.0 op mijn iSense thermostaat, en de cheapass aquara meldt 19.3 dus al met al gaat dit goed.
Nu nog een methode om via ESPHome 15-16 graden als contintue temperatuur te kunnen programmeren.
[ Voor 22% gewijzigd door mvrhrln op 16-10-2023 20:11 ]
Waarom wijkt de temperatuur in de app 4⁰ af met de werkelijkheid? Is er een manier om dit te corrigeren?
Daarnaast vroeg ik mij ook af of er externe thermostaten zijn om mijn airco aan te sturen? Ik zie deze thermostaat maar vind deze aardig aan de prijs. Gaat dit echt toegevoegde waarde bieden?
Alternatief is home assistant inzetten, maar ik wil ook dat vrouw en kinderen eenvoudig de airco kunnen bedienen. Hoe doen jullie dat?
Stroom moet er echt eerst af anders werkt het niet en enkel en alleen met de knop op de unit. Dus nogmaals: Stroom er af, even wachten, stroom er op, airco aan met knop op unit en paar seconden later met knop op unit weer uit. Als laatste de knop op de unit precies 30 seconden ingedrukt houden. Pak hier echt een stopwatch voor want het luistert vrij nauw. Is echt mij ook pas na meerdere pogingen gelukt. Volgende week wordt er hier boven een multisplit met 4 binnenunits geplaatst dus het feest gaat voor mij ook weer beginnen. Als het je dan nog niet gelukt is laat het dan even weten. Maak ik een filmpje voor je.Taro schreef op zondag 15 oktober 2023 @ 21:08:
[...]
Heb ik gisteren geprobeerd, maar in HA zag ik terug dat de unit gedurende die tijd iedere seconde 2x tussen verschillende modi gewisseld heeft ipv de offset uit te schakelen.
Met 2x pip zit je goed.mvrhrln schreef op maandag 16 oktober 2023 @ 19:18:
[...]
Heb het geprobeerd maar ik krijg of 3x of 2x Pip, dus "PipPipPip" of "PipPip", enkel "Pip" nog niet gelukt.
(heb er idd de stopwatch bijgehouden...)
(lijkt wel dat het hier nu werkt in ieder geval)
19.0 ingesteld, 19.0 op mijn iSense thermostaat, en de cheapass aquara meldt 19.3 dus al met al gaat dit goed.
Nu nog een methode om via ESPHome 15-16 graden als contintue temperatuur te kunnen programmeren.
Wij hebben in de keuken een Google Nest Hub 2 staan met een Home Assistant dashboard erop. Naast de dynamische stroomtarieven staat daar sinds kort ook een bediening van de MHI woonkamer opzeezuiper schreef op maandag 16 oktober 2023 @ 20:19:
[...]
Alternatief is home assistant inzetten, maar ik wil ook dat vrouw en kinderen eenvoudig de airco kunnen bedienen. Hoe doen jullie dat?
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Heb de stroom eraf gehad, zal het morgen nogmaals proberen.Chatslet schreef op maandag 16 oktober 2023 @ 20:35:
[...]
Stroom moet er echt eerst af anders werkt het niet en enkel en alleen met de knop op de unit. Dus nogmaals: Stroom er af, even wachten, stroom er op, airco aan met knop op unit en paar seconden later met knop op unit weer uit. Als laatste de knop op de unit precies 30 seconden ingedrukt houden. Pak hier echt een stopwatch voor want het luistert vrij nauw. Is echt mij ook pas na meerdere pogingen gelukt. Volgende week wordt er hier boven een multisplit met 4 binnenunits geplaatst dus het feest gaat voor mij ook weer beginnen. Als het je dan nog niet gelukt is laat het dan even weten. Maak ik een filmpje voor je.
Replace fear of the unknown with curiosity | 42 (+10 incoming) kWh thuisaccu | 2 EV's: 136 kWh capaciteit | 10.660 Wp zonnepanelen
Apple homekit of een andere voice assistant aan home assistant koppelen.zeezuiper schreef op maandag 16 oktober 2023 @ 20:19:
Alternatief is home assistant inzetten, maar ik wil ook dat vrouw en kinderen eenvoudig de airco kunnen bedienen. Hoe doen jullie dat?
Hoe krijg je de temperatuur van die nest thermostaat dan naar je airco? Kan die dan ook MQTT doen? Die dingen zijn tegenwoordig toch niet meer te rooten?Waah schreef op maandag 16 oktober 2023 @ 12:33:
[...]
Ik gebruik zelf de Nest-thermostaat die er nog zit omdat de CV er nog hangt![]()
Die maakt enkel warm water nog... maar is ook een mooie thermometer voor de airco
Bereik is best goed, heb hier een nieuwbouwwoning met vloerverwarming, wifi van vloer naar vloer is belabberd, dus heb voor de zekerheid op iedere verdieping een BT proxy.Chatslet schreef op maandag 16 oktober 2023 @ 20:25:
@JoepW en @Theetjuh Thnx! Ik ga even de opties overwegen. Vraagje nog, hoe zit het met het bereik van die BT proxies? Ik kan me zo voorstellen dat als die in iedere kamer moeten hangen je er ook net zo goed een DHT22 op kunt zetten.
Als ik het zo schat met de bbq thermostaat en thermometer in de garage, haal je door diverse muren zo’n 8 meter.
Het is aan jou of je het wilt combineren, ga je gang zou ik zeggen … ik had de thermometers alleen al bezit.
Ik heb de BT proxies in Ikea Vindriktnings zitten die de lucht kwaliteit meet.
Via home assistent. Daarmee kan je de Nest koppelen. Voor zover ik me kan herinneren is dat vrij omslachtig maar eenmaal ingesteld werkt het. Geen root nodig dacht ik maar via iets van een developer account.Chatslet schreef op maandag 16 oktober 2023 @ 21:20:
[...]
Hoe krijg je de temperatuur van die nest thermostaat dan naar je airco? Kan die dan ook MQTT doen? Die dingen zijn tegenwoordig toch niet meer te rooten?
Gebruikte het voor de verwarming. Maar nu de airco er is gebruik ik hem als overkill temperatuur en luchtvochtigheidssensor
[ Voor 5% gewijzigd door Waah op 16-10-2023 22:03 ]
Ik heb ongeveer dezelfde afwijking in de app, zelfs wanneer de unit uitstaat geeft hij een veel te hoge temperatuur aan.zeezuiper schreef op maandag 16 oktober 2023 @ 20:19:
In onze woonkamer hebben we een MHI van 5kW hangen. Uiteraard willen we deze komende winter gaan gebruiken om te verwarmen. Als ik echter in Smart-M-Air kijk geeft de airco een temperatuur aan van 24⁰, terwijl het hier in huis toch echt maar 20⁰ is.
Waarom wijkt de temperatuur in de app 4⁰ af met de werkelijkheid? Is er een manier om dit te corrigeren?
Daarnaast vroeg ik mij ook af of er externe thermostaten zijn om mijn airco aan te sturen? Ik zie deze thermostaat maar vind deze aardig aan de prijs. Gaat dit echt toegevoegde waarde bieden?
Alternatief is home assistant inzetten, maar ik wil ook dat vrouw en kinderen eenvoudig de airco kunnen bedienen. Hoe doen jullie dat?
Er moet toch een mogelijkheid zijn om dit te corrigeren?
De unit meet in de unit. Het zou gerust 24 kunnen zijn. Bij mij ligt er een temp sensor op de grond en 1 op een meter en daar zit al 1,2 graden tussen.RonaldPr schreef op dinsdag 17 oktober 2023 @ 01:35:
[...]
Ik heb ongeveer dezelfde afwijking in de app, zelfs wanneer de unit uitstaat geeft hij een veel te hoge temperatuur aan.
Er moet toch een mogelijkheid zijn om dit te corrigeren?
Klopt, heb er later ook nog eens aan zitten te denken er een SEN0335 van DFRobot aan te koppelen, maar ja nog niet echt van gekomen en aangezien ik al de temperatuur geregeld heb ... niet echt nodigChatslet schreef op maandag 16 oktober 2023 @ 22:07:
@Theetjuh Hier een jaren 70 huis maar wifi komt ook niet lekker door de vloeren. We hebben op iedere verdieping een accesspoint om die regen. Ikea Vindriktning vind ik wel een heel gaaf idee. Daar heb je dus een ESP32 met ESPhome in zitten??
Toch als alles uitstaat geeft hij een veel te hoge waarde aan, dat klopt echt niet.Willempie27 schreef op dinsdag 17 oktober 2023 @ 02:10:
[...]
De unit meet in de unit. Het zou gerust 24 kunnen zijn. Bij mij ligt er een temp sensor op de grond en 1 op een meter en daar zit al 1,2 graden tussen.
Door de warme luchtstroom kan het wel, maar die is er niet.
Waar hangt de unit? Ik neem aan hoog aan de muur en wellicht in de hoek? Zet er maar eens een losse temp sensor naast, ik denk dat je dan ook echt wel aan die hogere temp gaat komen.RonaldPr schreef op dinsdag 17 oktober 2023 @ 09:08:
[...]
Toch als alles uitstaat geeft hij een veel te hoge waarde aan, dat klopt echt niet.
Door de warme luchtstroom kan het wel, maar die is er niet.
PVOUTPUT | 5400W | 15 PANELEN 360W ZUID 38° | ENPHASE ENVOY S | MICRO OMVORMERS 290W
Al mijn units (staand en hangend dicht bij het plafond) geven een te hige temperatuur aan.RonaldPr schreef op dinsdag 17 oktober 2023 @ 09:08:
[...]
Toch als alles uitstaat geeft hij een veel te hoge waarde aan, dat klopt echt niet.
Door de warme luchtstroom kan het wel, maar die is er niet.
Ik heb in HA per unit een script draaien dat als de unit aan gaat de temperatuur een externe temp-meter wordt geladen en zolang de unit aan is wordt deze temperatuur elke minuut bijgewerkt.
Daat laatste is nodig omdat MHI na een minuut terugvalt op de interne voeler.
iRacing Profiel -|- Mijn RaceRig -|- Mijn stream
Bij mij zit er nu het 18 graden in huis is al 1 graad verschil. Het kan best zijn dat de unit ook wat afwijkt. Als straks de zon gaat schijnen op het raam zal dit verschil alleen maar groter worden.RonaldPr schreef op dinsdag 17 oktober 2023 @ 09:08:
[...]
Toch als alles uitstaat geeft hij een veel te hoge waarde aan, dat klopt echt niet.
Door de warme luchtstroom kan het wel, maar die is er niet.
2 a 3 graden kan zomaar. En als de unit ook nog 1 a 2 graden afwijkt zit je er al ruim aan.