Open lutzvahl opened 1 year ago
Hi Lutz, as I understand the E-Manager is used in case you have a photovoltaic system at home and want to tell the heatpump to use more electrical energy in case there is enough energy available from the roof (e.g. to heat up domestic hot water to a higher temperature). By the best of my knowledge the E-Manager is not active by default, I also have no PV-system when I got the WP installed therefore I can't test it. If Lambda did not activate the E-Manager in your WP I guess you will not be able to pull any data via MODBUS, you may want to talk to their support person to confirm this.
Cheers.....Ralf
Hi Lutz,
you could write it directly from ha (if you have your grid meter values in ha) to the heat pump’s register:
alias: Kostal -> EU08L
description: ""
trigger:
- platform: state
entity_id:
- sensor.ksem_ac_meter_watts
condition: []
action:
- service: modbus.write_register
data:
address: 102
value: "{{states('sensor.ksem_ac_meter_watts') | int | bitwise_and(65535)}}"
hub: EU08L
mode: single
Hi there, I am trying to write back to my EU13L with modbus-protocol - without any success so far (reading works fine). I try to write the max. buffer temperature (according to the docs from Lambda in register 3050. I am trying around with the following manual Automation:
alias: TEST modbus writeback EU13L description: "" trigger:
Does anyone have an idea?
@thecem: how can you use a three digit code for the register??? The adress should be 4 digit long!?
Bye. Falk
Leading zero could be cutted.
try:
value:
- 44
or
value: [44]
@FBrokelmann: could you do me a favor and read register 5006. I assume you have one or two heating circuits. If you have heating circuits wich value do you get with register 5006//5106! And when was the pump installed?
thx a lot!
@FBrokelmann: could you do me a favor and read register 5006. I assume you have one or two heating circuits. If you have heating circuits wich value do you get with register 5006//5106! And when was the pump installed?
thx a lot!
Hi @thecem, my heatpump (EU13L) was installed end of october last year. And I am VERY happy with it! :-)
Register 5006 (my one and only heating circuit) returns value 3 (same situation as with Ralf Winter I would say - I only use automatic heating mode up to now).
cheers
Many thx!
My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS.
I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait!
did you try it with the different value syntax?
actual working automation:
alias: Kostal -> EU08L
description: ""
trigger:
- platform: state
entity_id:
- sensor.ksem_ac_meter_watts
- platform: time_pattern
seconds: /5
condition: []
action:
- service: modbus.write_register
data:
address: 102
hub: EU08L
value:
- "{{states('sensor.ksem_ac_meter_watts') | int | bitwise_and(65535)}}"
mode: single
Hello, I just asked an acquaintance where I set this up over the weekend. Your heat pump is also off 23 and also does not display the operating mode (5006) correctly.
Von: thecem @.> Gesendet: Montag, 6. November 2023 12:18 An: RalfWinter/lambda-heatpump-modbus-tcp-HA @.> Cc: Subscribed @.***> Betreff: Re: [RalfWinter/lambda-heatpump-modbus-tcp-HA] General E-Manager section sensors unavailable (Issue #3)
Many thx!
My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS.
I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait!
did you try it with the different value syntax?
— Reply to this email directly, view it on GitHubhttps://github.com/RalfWinter/lambda-heatpump-modbus-tcp-HA/issues/3#issuecomment-1794597154, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A7QCQTIFSFCYLYINVAL4VIDYDDBQRAVCNFSM6AAAAAAZH6U4DGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJUGU4TOMJVGQ. You are receiving this because you are subscribed to this thread.Message ID: @.***>
Many thx!
My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS.
I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait!
did you try it with the different value syntax?
yes, I tried the new syntax (and several other variants), but still it doesn't work. Maybe it is something within the modbus-konfiguration of the sensor? Could you please post your config of adress 102?
my config for adress 3050 is the follwoing:
Can you see a problem in that config?
Did I get it right: You think my software ist old, and I can read, but not write?
Hello, I just asked an acquaintance where I set this up over the weekend. Your heat pump is also off 23 and also does not display the operating mode (5006) correctly. … ____ Von: thecem @.> Gesendet: Montag, 6. November 2023 12:18 An: RalfWinter/lambda-heatpump-modbus-tcp-HA @.> Cc: Subscribed @.> Betreff: Re: [RalfWinter/lambda-heatpump-modbus-tcp-HA] General E-Manager section sensors unavailable (Issue #3) Many thx! My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS. I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait! did you try it with the different value syntax? — Reply to this email directly, view it on GitHub<#3 (comment)>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A7QCQTIFSFCYLYINVAL4VIDYDDBQRAVCNFSM6AAAAAAZH6U4DGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJUGU4TOMJVGQ. You are receiving this because you are subscribed to this thread.Message ID: @.>
Yes. It belongs to the SW Version, the “old” one have the value in the registers, the new one not. There will be an update.
this one doesn’t have the values in the registers out of the controller, but you are able to write:
Many thx! My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS. I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait! did you try it with the different value syntax?
yes, I tried the new syntax (and several other variants), but still it doesn't work. Maybe it is something within the modbus-konfiguration of the sensor? Could you please post your config of adress 102?
my config for adress 3050 is the follwoing:
- name: EU13L_Buff1_set_max_temperature address: 3050 input_type: input unit_of_measurement: "°C" state_class: total scale: 0.1 precision: 1 data_type: int16
Can you see a problem in that config?
Did I get it right: You think my software ist old, and I can read, but not write?
This config is only to read the registers! Which value you could read in this register?
try to write following, go to:
service: modbus.write_register
data:
value:
- 440
hub: EU13L
address: 3050
You have to multiply your request value by 10 since there is a multiplication of 0.1
for the readed value in the documentation. A temp with 25,1 is 251 and there is a limit between 250 and 650, so 44 will not be accepted.
Great job, thanks to all contributors. Using your above Yaml, appriciate it!. Unfortunately some of them are returning unexpected values (like T_EQout 1008: -327, using NodeRed/ModbusRead got 32768), not shure how to interprete these. Regarding E-Manager all registers are unavailble, dispite E-Manager is activated, but using NodeRed registers returning proper values. I already got an energy meter for my PV-System. So I am writing values to E-Manager Act. Power 0102 with HA service what is fine and Heat Pump runs as expected. Thanks for the automation, it helps a lot.
Heat Pump SW-Version V0.0.1 Jul 3 2023 (Remote service is showing Typ: EU 13L SWID: V0.0.4 - 3K).
Do you get all register values in a proper manner with above Yaml?
Your have the same SW as mine.
EQout is not connected and they report the minimum value, same on my side.
what value you get on register 5006 & 5005?
Many thx!
My EU08 works since 10/23 like a charm! And it is even silently as the old oil heating. So you have the “old” SW that has all values, my SW Version is changed and you are not able to read the values, but able to write. So it is a kind useless, since I need this to bind it into my EMS.
I have opened a ticket on Lambda side and hope there will be bringing a solution for this. Because it is so easy to handle this. Up to that , I have to wait!
did you try it with the different value syntax?
yes, I tried the new syntax (and several other variants), but still it doesn't work. Maybe it is something within the modbus-konfiguration of the sensor? Could you please post your config of adress 102?
my config for adress 3050 is the follwoing:
name: EU13L_Buff1_set_max_temperature
address: 3050
input_type: input
unit_of_measurement: "°C"
state_class: total
scale: 0.1
precision: 1
data_type: int16
Can you see a problem in that config?
Did I get it right: You think my software ist old, and I can read, but not write?
This config is only to read the registers!
Which value you could read in this register?
try to write following, go to:
Entwicklerwerkzeuge
Dienste
Modbus: Register schreiben
copy & paste
service: modbus.write_register data: value: - 440 hub: EU13L address: 3050
You have to multiply your request value by 10 since there is a multiplication of
0.1
for the readed value in the documentation. A temp with 25,1 is 251 and there is a limit between 250 and 650, so 44 will not be accepted.
Thanx a lot, i am now able to write back. :-)
Your have the same SW as mine.
EQout is not connected and they report the minimum value, same on my side.
what value you get on register 5006 & 5005?
So why is Lambda doing different regarding their documentation (Modbus Beschreibung und Protokoll 11.04.2023)? Tried to contact Lambda serveral times but there was no reply yet. What a pity! However I don't need special values like EQout to run the Heat Pump as a normal user. But I would like to control some more functions of the Heat Pump by HA concerning Automations:
5005: -300, NodeRed: 62536 5006: -3000, NodeRed: 62536
Ok, so this is valid.
you could set the heat circuit mode with 5006, but be carefully, you are not able to set it back to 62536. For the time out period it will work, but you are with this software not able to read out the operation mode what was set in the gui. There is a reason behind this, since there was request from some vendors. It will be fixed in future to get the op mode and the “Soll Temperaturen” (Set Point/request temp). At the moment I couldn’t connect to my EMS since there is no possibility to get this relevant information out of the HP control unit.
Even the E-Manager status (that shows up in the display), that the Temperatur is higher., could not extracted in any way.
Ok, so this is valid.
you could set the heat circuit mode with 5006, but be carefully, you are not able to set it back to 62536. For the time out period it will work, but you are with this software not able to read out the operation mode what was set in the gui. There is a reason behind this, since there was request from some vendors. It will be fixed in future to get the op mode and the “Soll Temperaturen” (Set Point/request temp). At the moment I couldn’t connect to my EMS since there is no possibility to get this relevant information out of the HP control unit.
Even the E-Manager status (that shows up in the display), that the Temperatur is higher., could not extracted in any way.
Seems you know a lot more of Lambda's Modbus journey. So I will wait for improvements and stop requesting solutions for my problems at Lambda's customer support. But how to avoid missing improvements you mentioned above? Let suppose you are in contact with Lambda may you post notable changed here to let us know?
Yes, I’m in contact with lambda and have addressed the problems and even a solution for this. But we have to wait until they implement this. And I’m impatient 😂!
Yes, I’m in contact with lambda and have addressed the problems and even a solution for this. But we have to wait until they implement this. And I’m impatient 😂!
Hi, what kind of EMS are you using? Are you planning having a provider like Tibber?
Home Assistant.
tibber is really interesting, but the prices are at the moment(Nov 23) to high. If you have a battery it could be an option. For me the average must be 8 cents under my fix price 26, since I have to pay the battery usage.
Where are you from? I live in Germany and my price is 31. Who is your provider?
DE, had the opportunity in late July via check24 to go with octopus (26,32 Cents). The price is for 24 months, without bonuses and the option to cancel every month. I came from Vattenfall, which had really a good price, but decided to start from 08/24 with 32 cents, far to much!
For me the leading zeroes where cut. Instead of:
- name: EU13L_EMgr_Actual_Power
address: 0102
- name: EU13L_EMgr_Actual_Power
address: "0102"
Works just fine.
102 without 0 should also work.
Hi guys I am not that far yet. I am not familiar with HA, even not with programming. I have the EUL-13 and would like to import it into HA mainly to see the values. At least at the beginning. I have installed HACS an tried to get the repository into HA by copying the https from github but it failed with the message: Repository structure is not compliant.
I tried the same with a Wattpilot repository for my Fronius Wallbox and this worked out without any problems.
May someone help :)
@thecem: Any news about your conversation regarding update of modbus with lambda?
Last information was, they will rethink the logic. I will ask for status.
@Eisbaer2: Das oben ist eine automation, der Link die config für die Sensoren in HA. Nur die Automation schreibt die Werte in die Lambda. Gut das es geht.
@Eisbaer2: Das oben ist eine automation, der Link die config für die Sensoren in HA. Nur die Automation schreibt die Werte in die Lambda. Gut das es geht.
Hallo @thecem, war ein Missverständnis, eigentlich wollte ich @i-moove helfen.
Hi guys I am not that far yet. I am not familiar with HA, even not with programming. I have the EUL-13 and would like to import it into HA mainly to see the values. At least at the beginning. I have installed HACS an tried to get the repository into HA by copying the https from github but it failed with the message: Repository structure is not compliant.
I tried the same with a Wattpilot repository for my Fronius Wallbox and this worked out without any problems.
May someone help :)
@i-moove: Use this:
That is not an integration or a repository! You have to add this text manually in your configuration.yaml Of course you have to change the IP to yours!
Vielen Dank, ich werde es mal versuchen. 👍
@Eisbaer2 Thanks a lot. Now it works and I can see values. To understand what I have to do I used this: https://www.home-assistant.io/getting-started/configuration/
Hat eigentlich inzwischen jemand hier (wir sprechen vermutlich eh alle deutsch?) die Werte aus dem EMS bekommen? Laut noch aktueller Modbus-Beschreibung von Lambda sollte das ja gehen, aber bei mir wird auf den Registern 0100-0104 leider nichts ausgegeben. Außerdem bin ich mal gespannt, ob Lambda mal demnächst auch die Soll-Werte zur Verfügung stellt. Und langfristig wünsche ich mir, dass auch mehr Werte per Modbus beschrieben/gesetzt werden können, als nur der Leistungsüberschusswert im EMS.
Die Version 0.0.4 -K3 Juni 14 23 unterstützt das leider nicht(mehr, es gab hier Änderungen), ich kann hier nur appellieren sich an lambda zu wenden.
Die Version 0.0.4 -K3 Juni 14 23 unterstützt das leider nicht(mehr, es gab hier Änderungen), ich kann hier nur appellieren sich an lambda zu wenden.
Habe gerade eine E-Mail geschrieben. Wer auch noch eine Vorlage will: Hallo Lambda-Team, zum E-Manager habe ich noch zwei Fragen:
1) In der Modbus-Protokollbeschreibung bei Ihnen gibt es die Register 0100 bis 0104, auf denen Werte zum E-Manager ausgegeben werden (sollen). Da kommt aber leider nichts an. Geht auch anderen so, wie ich gelesen haben. Macht ihr das bitte bald wieder möglich? 2) Ich hatte jetzt schon mehrmals den Fall, dass im E-Manager bei höherem Überschuss der P-Soll-Wert deutlich über 2 kW lag, der Ist-Wert aber maximal bis ca. 2 KW geregelt hat. Gibt es da noch System-Restriktionen? Wenn ja, sollte das m.E. bei der Anzeige des Soll-Wertes berücksichtigt werden.
Und zu Modbus allgemein:
a) Wann wird es die neue Firmware-Version geben, die die Soll-Werte der Heizkreise wieder ausgibt? b) Wird es noch die Möglichkeit geben, per Modbus auch die Werte zu schreiben/setzen, die in der App (Sigmatek) einstellbar sind? Das würde Lambda deutlich attraktiver machen für alle, die Heimautomatisierungen einsetzen. Die Anzeige und Bedienung über die Sigmatek-Oberfläche ist doch sehr langsam, träge und umständlich.
Das Problem ist derzeit, dass Lambda einen extrem langsamen Support hat. Meine vorletzte Anfrage in 2023 dauerte 2,5 Monate, meine letzte Anfrage vom Dezember ist noch anhängig. Ich denke, die sind insgesamt zu schnell gewachsen, der Support aber nicht.
Bei mir ist allerdings ein Auslesen der Register 100-104 möglich (OpenHAB):
Bridge poller e-manager [ start=100, length=5, refresh=5000, type="holding" ] {
Thing data input100 "Wärmepume" [ readStart="100", readValueType="int16"] // Error Number
Thing data input101 "Wärmepume" [ readStart="101", readValueType="int16"] // OP-State
Thing data input102 "Wärmepume" [ readStart="102", readValueType="int16"] // [Watt] Actual input power [UINT16 (min = 0W; max = 65535W)] or actual excess power [INT16 (min = -32768W; max = 32767W)] (depends on settings in Module)
Thing data input103 "Wärmepume" [ readStart="103", readValueType="int16", readTransform="JS(factor0001.js)"] // [Watt] Actual power consumption of all configurated heat pumps
Thing data input104 "Wärmepume" [ readStart="104", readValueType="int16", readTransform="JS(factor0001.js)"] // [Watt] Power consumtion setpoint as a sum for for all heat pumps
// E-Manager
Number hz_e_err "Fehler" <error> (gHz_e) { channel="modbus:data:waermepumpe:e-manager:input100:number" }
Number hz_e_ops "Betriebsart E-Mngr [MAP(hz_gen_ops.map):%s]" <heating> (gHz_e) { channel="modbus:data:waermepumpe:e-manager:input101:number" }
Number:Power hz_e_power "Stromüberschuss [%.2f kW]" <solarplant> (gHz_e,gPersist) { channel="modbus:data:waermepumpe:e-manager:input102:number", unit="W" }
Number:Power hz_e_cons "Stromverbrauch [%.2f kW]" <energy> (gHz_e,gPersist) { channel="modbus:data:waermepumpe:e-manager:input103:number", unit="kW" }
Number:Power hz_e_pcs "Sollwert [%.2f kW]" <energy> (gHz_e,gPersist) { channel="modbus:data:waermepumpe:e-manager:input104:number", unit="kW" }
Bei mir ist allerdings ein Auslesen der Register 100-104 möglich (OpenHAB):
Das liegt wahrscheinlich daran, dass du noch bei der 0.0.1 bist. Bei der 0.0.4 geht es leider nicht mehr
Bei mir ist allerdings ein Auslesen der Register 100-104 möglich (OpenHAB):
Das liegt wahrscheinlich daran, dass du noch bei der 0.0.1 bist. Bei der 0.0.4 geht es leider nicht mehr
Aber bin ich nicht laut Anzeige auch auf der Firmware „0.0.4 - 3K“ vom 4. Juli 23?
@ulkrueger: Du hast Recht. Komisch, dass es bei dir dann geht. Meine 0.0.4 - 3K hat allerdings Build Date: 20. September.
Nochmal ich @ulkrueger @thecem @RalfWinter: Ich werde noch verrückt. Bei mir kommt beim Energy Manager mit den Registern 100 - 104 unter Modbus nichts raus (wohl aber schreibe ich in Register 102 meine Energie-Saldo, das funktioniert). Über meinen Heizungsbauer habe ich die Aussage bekommen, dass die Ausgabe bei mir funktionieren müsste. Jetzt habe ich nochmal probiert. Und: mit dem Tool von modbustester.com bekomme ich tatsächlich auch Werte in den Registern 100-104, die stimmig scheinen. Nur: unter Home Assistant nicht. Ich habe schon sehr viel probiert, warum auch immer kommt da nichts an. Aller anderen Modbus-Register funktionieren. Ich habe mich an den Entwurf von @RalfWinter gehalten, in meiner configuration.yaml steht z.B.
- name: eu13l_emgr_power_consumption_setpoint
address: 0104
input_type: holding
unit_of_measurement: "W"
state_class: total
scale: 1
precision: 0
data_type: int16
Habe auch schon viel rumgespielt mit anderen timeouts, Groß- und Kleinschreibung, etc. Hat alles nichts geholfen, die HA-modbus-Integration scheint da nichts auslesen zu können. Ich bin absolut ratlos, warum das nicht funktioniert. Hat jemand von euch noch Ideen, Tipps, Lösungen?
Ich werde in 1-2 Monaten auch eine Lambda E08 haben und bin durch Zufall auf diese Diskussion gestoßen. Allerdings arbeite ich mit Openhab. Bisher steuere ich nur die GO-E angepasst an die PV-Leistung, möchte aber in Zukunft auch die Lambda steuern. @ulkrueger: Kannst Du mir vielleicht bei den ersten Schritten in Openhab helfen? Wie schreibt man in GitHub eine PN?
Habe auch schon viel rumgespielt mit anderen timeouts, Groß- und Kleinschreibung, etc. Hat alles nichts geholfen, die HA-modbus-Integration scheint da nichts auslesen zu können. Ich bin absolut ratlos, warum das nicht funktioniert. Hat jemand von euch noch Ideen, Tipps, Lösungen?
Hallo, ich würde gerne helfen, habe aber das gleiche Problem: seit 3 Wochen habe ich eine PV-Anlage auf dem Dach und Energiereform hat mir den EMgr freigeschaltet, bekomme davon aber keine Daten in HA. Das Beschreiben des Registers 102 habe ich deshalb erstmal gelassen und nutze den potentialfreien Kontakt vom Wechselrichter um der Lambda PV-Überschuss zu signalisieren; das klappt überraschend gut, damit kann ich erstmal leben.
Ich habe das Problem lösen können: die führende Null beim Register darf nicht verwendet werden, bei der Adresse also nur 100 statt 0100 eingeben. Damit klappt es zumindest bei mir :-) @RalfWinter: Das Schreiben des Zählerwertes ging erstaunlich einfach über eine Automatisierung (so du den Zählerwert schon in HA hast). Melde dich, wenn du Hilfe dazu brauchst.
Super! Habe die Änderungen bei mir im HA auch gemacht und ich sehe jetzt auch Werte in der EMgr-Sektion. 1000 Dank! Die YAML-Datei hier im Repository habe ich bereits aktualisiert.
@Eisbaer2 : ich habe folgende Automation geschrieben, der Wert wird aber nicht ins Register geschrieben....was mache ich falsch? Danke Dir....
alias: WP-PV-Excess
description: Sent PV-Excess to HP
trigger:
- platform: time_pattern
seconds: "59"
condition: []
action:
- service: modbus.write_register
metadata: {}
data:
hub: EU13L
address: 102
value: "{{ states('sensor.shelly3em_total_power') | int }}"
mode: single
@RalfWinter: hier meine funktionierende Automation
alias: Leistungsdaten => Wärmepumpe
description: ""
trigger:
- platform: state
entity_id:
- sensor.leistung_aktuell
- platform: time_pattern
seconds: "30"
condition: []
action:
- service: modbus.write_register
data:
address: 102
hub: EU13L
value:
- "{{states('sensor.leistung_aktuell') | int | bitwise_and(65535)}}"
mode: single
Danke, aber funktioniert genau so wenig. Meine Lambda bringt allerdings auch einen Alarm sobald ich den E-Manager auf "Automatik" stelle: E-Manager ungültiger Wert
In den Details steht AlarmX0Para506
Ich nehme an, ich habe schon an anderer Stelle ein Problem. Werde die Tage mal wieder Energiereform kontaktieren. Die tun sich da zwar auch schwer, aber einen Versuch ist es wert.
Edit: Konfiguration bei mir ist wie folgt: E-Meter Kommunikationsart: ModBus Client E-Meter Messpunkt: Neg. E-Überschuss
Kannst du bitte mal in HA unter Entwicker in Template folgend einfügen und den Wert für negativ und positiv posten:
{{states('sensor.leistung_aktuell') | int | bitwise_and(65535)}}
Hi,
great work, thanks for sharing the config! I was able to adopt in my HA, unfortunately I don't get any values for the 'General E-Manager' Section registers 01xx. E.g. for 0103 (Actual power consumption) HA is just showing: unavailable Pump values, buffer and boiler (so 1xxx, 2xxx, and 3xxx) are working great! I'm even able to set the solar power values (register 0102), but I'm unable to read the overall power consumption of the system.
Any clue what's going on with the 01xx registers?
As of now I'm using the eu13l_hp1_inverter_power_consumption (1012 registers) to track power.