# myenergi Binding
This binding allows openHAB to communicate with the public API from myenergi Ltd. (https://myenergi.info), a manufacturer of electric vehicle chargers (Zappi) and solar energy diverters (Eddi):
- Retrieval of current energy readings (grid, solar, EV charger)
- Control charging status and boost modes for Zappi
- Control of Eddi manual boost
This binding has been tested with a Harvi, a Zappi and an Eddi.
## Supported Things
This binding supports the following thing types
| Thing | Thing Type | Discovery | Description |
|--------|------------|-----------|------------------------------------------------|
| bridge | Bridge | Manual | A single connection to the myenergi API |
| eddi | Thing | Automatic | A solar energy diverter |
| zappi | Thing | Automatic | An EV Charger (EVSE) |
| harvi | Thing | Automatic | A remote power clamp reader |
## Discovery
Once the bridge is configured with myenergi username and password, the various devices will be discovered automatically and added to the Inbox.
## Thing Configuration
#### Manual configuration
For the identifier of the devices, the corresponding serial number is used.
Bridge myenergi:bridge:api "MyEnergi API Bridge" [ username="<my username>", password="<my password>", refreshInterval=24 ] {
Thing zappi 21287642 "MyEnergi Zappi" [ refreshInterval=30 ]
Thing eddi 53223117 "MyEnergi Eddi" [ refreshInterval=30 ]
Thing harvi 87263212 "MyEnergi Harvi" [ refreshInterval=30 ]
}
## Channels
The following channels are defined. Except for the bridge refresh channel, all are read-only.
#### Bridge
none
#### Zappi
| channel | type | description |
|---------------------|--------------------------|-----------------------------------------------------------------|
| last-updated-time | DateTime | The time the readings have last been updated. |
| supply-voltage | Number:ElectricPotential | The supply voltage to the Zappi |
| supply-frequency | Number:Energy | The amount of energy measured by the clamp. |
| number-of-phases | Number | The identifier of the phase (for 3-phase installations). |
| locking-mode | Number | Indicates when the connector to the EV is locked in position |
| charging-mode | Number | Boost (0), Fast (1), Eco (2), Eco+ (3) or Stop (4) |
| status | Number | Describes what the charger is doing |
| plug-status | String | Describes state of connection to EV |
| command-tries | Number | 0-10 Trying, 253 Failed, 254 OK, 255 No command sent |
| diverter-priority | Number | Priority for solar energy relative to other myenergy devices |
| minimum-green-level | Number | Minimum proportion of solar energy used |
| grid-power | Number:Power | Power taken from grid |
| generated-power | Number:Power | Power generated by solar panels |
| diverted-power | Number:Power | power used by charger |
| charge-added | Number:Energy | charge added in this or the last charing session |
| smart-boost-time | Number | length of time for smart boost |
| smart-boost-charge | Number:Energy | charge added by smart boost |
| timed-boost-time | Number | length of time of timed boost |
| timed-boost-charge | Number:Energy | charge added by timed boost |
| clamp-name1 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power1 | Number:Power | The power measured by the clamp. |
| clamp-name2 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power2 | Number:Power | The power measured by the clamp. |
| clamp-name3 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power3 | Number:Power | The power measured by the clamp. |
| clamp-name4 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power4 | Number:Power | The power measured by the clamp. |
| clamp-name5 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power5 | Number:Power | The power measured by the clamp. |
| clamp-name6 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power6 | Number:Power | The power measured by the clamp. |
#### Eddi
| channel | type | description |
|---------------------|--------------------------|-----------------------------------------------------------------|
| last-updated-time | DateTime | The time the readings have last been updated. |
| supply-voltage | Number:ElectricPotential | The supply voltage to the Eddi |
| supply-frequency | Number:Frequency | The supply frequency to the Eddi |
| status | String | describes what the Eddi is currently doing |
| diverter-priority | Number | Priority for solar energy relative to other Myenergi devices |
| phase | Number | The phase the Eddi is connected to |
| grid-power | Number:Power | Power taken from grid |
| boost-mode | String | Boost ON or OFF |
| clamp-power1 | Number:Energy | The amount of energy measured by the clamp. |
| clamp-name2 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power2 | Number:Energy | The amount of energy measured by the clamp. |
| clamp-name3 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power3 | Number:Energy | The amount of energy measured by the clamp. |
| energy-transferred | Number:Energy | Energy transferred to heater today |
| generated-power | Number:Power | Power generated by solar panels |
| diverted-power | Number:Power | Power consumed by heater(s) |
| consumed-power | Number:Power | Power consumed by whole installation |
| boost-remaining | Number | time left for current boost in seconds |
| active-heater | Number | the heater currently in use |
| heater-priority | Number | the heater to be used first |
| heater-name1 | String | the name of the heater #1 |
| heater-name2 | String | the name of the heater #2 |
| temperature1 | Number | the temperature (in Celsius) of water tank 1 |
| temperature2 | Number | the temperature (in Celsius) of water tank 2 |
| clamp-name1 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
#### Harvi
| channel | type | description |
|---------------------|--------------------------|-----------------------------------------------------------------|
| last-updated-time | DateTime | The time the readings have last been updated. |
| clamp-name1 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power1 | Number:Energy | The amount of energy measured by the clamp. |
| clamp-phase1 | Number | The identifier of the phase (for 3-phase installations). |
| clamp-name2 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power2 | Number:Energy | The amount of energy measured by the clamp. |
| clamp-phase2 | Number | The identifier of the phase (for 3-phase installations). |
| clamp-name3 | String | A name for the clamp (set through app, e.g. “Solar Generation”. |
| clamp-power3 | Number:Energy | The amount of energy measured by the clamp. |
| clamp-phase3 | Number | The identifier of the phase (for 3-phase installations). |
## Actions
Zappi
setChargingMode(ZappiChargingMode chargingMode)
setTimedBoost(int slot, DayOfWeek dayOfWeek, int startHour, int startMinute, Duration duration)
Eddi
setBoost(int heater, int duration)
cancelBoost(int heater)
## Examples
myenergi.things
Bridge myenergi:bridge:api "MyEnergi API Bridge" [ username="<my username or API key>", password="<my password>", refreshInterval=24 ] {
Thing zappi 21287642 "MyEnergi Zappi" [ refreshInterval=30 ]
Thing eddi 54876211 "MyEnergi Eddi" [ refreshInterval=30 ]
Thing harvi 87263212 "MyEnergi Harvi" [ refreshInterval=30 ]
}
myenergi.items
DateTime Zappi_LastUpdatedTime "MyEnergi Zappi Last Updated Time [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <time> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:last-updated-time" }
Number:ElectricPotential Zappi_SupplyVoltage "MyEnergi Zappi Supply Voltage [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:supply-voltage" }
Number:Frequency Zappi_SupplyFrequency "MyEnergi Zappi Supply Frequency [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:supply-frequency" }
Number Zappi_NumberOfPhases "MyEnergi Zappi Number of Phases [%d]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:number-of-phases" }
Number Zappi_LockingMode "MyEnergi Zappi Locking Mode [%d]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:locking-mode" }
String Zappi_ChargingMode "MyEnergi Zappi Charging Mode [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:charging-mode", stateDescription=""[pattern="%s", options="0=Boost,1=Fast,2=Eco,3=Eco+,4=Stop"] }
String Zappi_Status "MyEnergi Zappi Status [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:status", stateDescription=""[pattern="%s", options="0=Starting,1=Waiting for Export,2=Demand Side Response,3=Diverting,4=Boosting,5=Charge Complete"] }
String Zappi_PlugStatus "MyEnergi Zappi Plug Status [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:plug-status", stateDescription=""[pattern="%s", options="A=EV Disconnected,B1=Awaiting Surplus,B2=Charge Complete,C1=Transitory - unknown,C2=Charging Max Power,F=Fault/Restart"] }
Number Zappi_CommandTries "MyEnergi Zappi Command Tries [%d]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:command-tries" }
Number Zappi_DiverterPriority "MyEnergi Zappi Diverter Priority [%d]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:diverter-priority" }
Number Zappi_MinimumGreenLevel "MyEnergi Zappi Minimum Green Level [%d %%]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:minimum-green-level" }
Number:Power Zappi_GridPower "MyEnergi Zappi Grid Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:grid-power" }
Number:Power Zappi_GeneratedPower "MyEnergi Zappi Generated Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:generated-power" }
Number:Power Zappi_DivertedPower "MyEnergi Zappi Diverted Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:diverted-power" }
Number:Power Zappi_ConsumedPower "MyEnergi Zappi Consumed Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:consumed-power" }
Number:Energy Zappi_ChargeAdded "MyEnergi Zappi Charge Added [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:charge-added" }
String Zappi_SmartBoostTime "MyEnergi Zappi Smart Boost Time [%s]" <time> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:smart-boost-time" }
Number:Energy Zappi_SmartBoostCharge "MyEnergi Zappi Smart Boost Charge [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:smart-boost-charge" }
String Zappi_TimedBoostTime "MyEnergi Zappi Timed Boost Time [%s]" <time> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:timed-boost-time" }
Number:Energy Zappi_TimedBoostCharge "MyEnergi Zappi Timed Boost Charge [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:timed-boost-charge" }
String Zappi_ClampName1 "MyEnergi Zappi Clamp Name 1 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name1" }
Number:Power Zappi_ClampPower1 "MyEnergi Zappi Clamp Power 1 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power1" }
String Zappi_ClampName2 "MyEnergi Zappi Clamp Name 2 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name2" }
Number:Power Zappi_ClampPower2 "MyEnergi Zappi Clamp Power 2 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power2" }
String Zappi_ClampName3 "MyEnergi Zappi Clamp Name 3 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name3" }
Number:Power Zappi_ClampPower3 "MyEnergi Zappi Clamp Power 3 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power3" }
String Zappi_ClampName4 "MyEnergi Zappi Clamp Name 4 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name4" }
Number:Power Zappi_ClampPower4 "MyEnergi Zappi Clamp Power 4 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power4" }
String Zappi_ClampName5 "MyEnergi Zappi Clamp Name 5 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name5" }
Number:Power Zappi_ClampPower5 "MyEnergi Zappi Clamp Power 5 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power5" }
String Zappi_ClampName6 "MyEnergi Zappi Clamp Name 6 [%s]" (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-name6" }
Number:Power Zappi_ClampPower6 "MyEnergi Zappi Clamp Power 6 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:zappi:api:21287642:clamp-power6" }
DateTime Eddi_LastUpdatedTime "MyEnergi Eddi Last Updated Time [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <time> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:last-updated-time" }
Number:ElectricPotential Eddi_SupplyVoltage "MyEnergi Eddi Supply Voltage [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:supply-voltage" }
Number:Frequency Eddi_SupplyFrequency "MyEnergi Eddi Supply Frequency [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:supply-frequency" }
String Eddi_Status "MyEnergi Eddi Status [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:status", stateDescription=""[pattern="%s", options="0=Starting,1=Awaiting Surplus,3=Diverting,4=Boosting,5=Max temp reached,6=Stopped"] }
Number Eddi_DiverterPriority "MyEnergi Eddi Diverter Priority [%d]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:diverter-priority" }
Number Eddi_Phase "MyEnergi Eddi Phase [%d]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:phase" }
Number:Power Eddi_GridPower "MyEnergi Eddi Grid Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:grid-power" }
Number:Power Eddi_GeneratedPower "MyEnergi Eddi Generated Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:generated-power" }
Number:Power Eddi_DivertedPower "MyEnergi Eddi Diverted Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:diverted-power" }
Number:Power Eddi_ConsumedPower "MyEnergi Eddi Consumed Power [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:consumed-power" }
Number:Energy Eddi_EnergyTransferred "MyEnergi Eddi Energy Transferred [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:energy-transferred" }
String Eddi_BoostMode "MyEnergi Eddi Boost Mode [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:boost-mode" }
Number Eddi_BoostRemaining "MyEnergi Eddi Boost Time Remaining [%d s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:boost-remaining" }
Number Eddi_ActiveHeater "MyEnergi Eddi Active Heater [%d]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:active-heater" }
Number Eddi_HeaterPriority "MyEnergi Eddi Priority Heater # [%d]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:heater-priority" }
String Eddi_HeaterName1 "MyEnergi Eddi Heater Name 1 [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:heater-name1" }
String Eddi_HeaterName2 "MyEnergi Eddi Heater Name 2 [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:heater-name2" }
Number:Temperature Eddi_HeaterTemperature1 "MyEnergi Eddi Heater Temperature 1 [%.1f %unit%]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:heater-temperature1" }
Number:Temperature Eddi_HeaterTemperature2 "MyEnergi Eddi Heater Temperature 2 [%.1f %unit%]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:heater-temperature2" }
String Eddi_ClampName1 "MyEnergi Eddi Clamp Name 1 [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-name1" }
Number:Power Eddi_ClampPower1 "MyEnergi Eddi Clamp Power 1 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-power1" }
String Eddi_ClampName2 "MyEnergi Eddi Clamp Name 2 [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-name2" }
Number:Power Eddi_ClampPower2 "MyEnergi Eddi Clamp Power 2 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-power2" }
String Eddi_ClampName3 "MyEnergi Eddi Clamp Name 3 [%s]" (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-name3" }
Number:Power Eddi_ClampPower3 "MyEnergi Eddi Clamp Power 3 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:eddi:api:53223117:clamp-power3" }
DateTime Harvi_LastUpdatedTime "MyEnergi Harvi Last Updated Time [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <time> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:last-updated-time" }
String Harvi_ClampName1 "MyEnergi Harvi Clamp Name 1 [%s]" (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-name1" }
Number:Power Harvi_ClampPower1 "MyEnergi Harvi Clamp Power 1 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-power1" }
Number Harvi_ClampPhase1 "MyEnergi Harvi Clamp Phase 1 [%d]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-phase1" }
String Harvi_ClampName2 "MyEnergi Harvi Clamp Name 2 [%s]" (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-name2" }
Number:Power Harvi_ClampPower2 "MyEnergi Harvi Clamp Power 2 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-power2" }
Number Harvi_ClampPhase2 "MyEnergi Harvi Clamp Phase 2 [%d]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-phase2" }
String Harvi_ClampName3 "MyEnergi Harvi Clamp Name 3 [%s]" (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-name3" }
Number:Power Harvi_ClampPower3 "MyEnergi Harvi Clamp Power 3 [%.1f %unit%]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-power3" }
Number Harvi_ClampPhase3 "MyEnergi Harvi Clamp Phase 3 [%d]" <energy> (dgMyEnergi) { channel="myenergi:harvi:api:87263212:clamp-phase3" }
Changelog
Version 0.5
- updated version to align with channel naming standard and latest PR. I’m aiming to get this into the official 5.x distro
Version 0.4
- support for openHAB 4.x (tested with 4.1)
Version 0.3
- support for Zappi STOP charging mode
Version 0.2
- support for Eddi Solar Diverter
- writable channel for Zappi Charging Mode and corresponding Action
Version 0.1
- initial release
Resources
JAR (Version 0.5): org.openhab.binding.myenergi-5.1.0-SNAPSHOT.jar
JAR (Version 0.4): org.openhab.binding.myenergi-4.2.0-SNAPSHOT.jar
JAR (Version 0.3): org.openhab.binding.myenergi-3.4.3-SNAPSHOT.jar
