Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enel X migrating from JuiceNet to JuicePass #86588

Closed
W0GER opened this issue Jan 25, 2023 · 176 comments
Closed

Enel X migrating from JuiceNet to JuicePass #86588

W0GER opened this issue Jan 25, 2023 · 176 comments
Assignees

Comments

@W0GER
Copy link

W0GER commented Jan 25, 2023

The problem

Enel X is migrating from JuiceNet to JuicePass.

Received email stating:

To provide you with the best user experience and new functionalities, we are transitioning to a new and improved platform for charging management. Your charging station will be migrated to the new JuicePass app (Enel X Way app). The EV JuiceNet app along with web browser access to your charger via home.juice.net will no longer be supported after February 20, 2023. Configurability and control of your chargers must be done via the new JuicePass app (Enel X Way app) which can be downloaded on iOS or Android.

since migrating my account, the JuiceNet app shows “disconnected” while their new app JuicePass shows the current data.

Is there a plan to update the Home Assistant core JuiceNet integration to work with JuicePass?

What version of Home Assistant Core has the issue?

2022.12.5

What was the last working version of Home Assistant Core?

2022.12.5

What type of installation are you running?

Home Assistant OS

Integration causing the issue

No response

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

@Githubthings
Copy link

I have the same issue with Home Assistant.
The EV JuiceNet app is also showing “disconnected” as well as the browser web login at home.juice.net/Portal

@Dystaxia
Copy link

Dystaxia commented Jan 25, 2023

Confirmed. Same situation.

Edit: The app is absolute garbage.

😆

@jesserockz
Copy link
Member

Yeah I received an email notification from them saying they are shutting down the Juicenet portal and the Juicenet App which I assume meant the API that Home Assistant is using.
Considering the API is mostly undocumented and I started this integration based on reverse engineering, I don't think it will be easy to migrate/update to use their new API.

I myself also do not use (or even have) a juicenet charger any more so I am not going to be of any use here.

  • Jesse

@home-assistant
Copy link

@MrDrew514
Copy link

Let's hope that a developer was using this integration and will be updating it to the new api #fingerscrossed

@michaelwoods
Copy link

I took a look using a SSL/MITM proxy and couldn't make much sense of the APIs used. They seem to issue POSTs with no response and then possibly receive (gRPC?) data over Google APIs, maybe a firebase offering. I can't see too much further as the SSL isn't transparent between Google Play Services and their servers.

@aravindtri
Copy link

Having the same issue and the new app is terrible

@barrymichels
Copy link

Spoke with support and they confirmed the API is going away and they have no plans in offering a similar product. I asked if they could submit a suggestion/request for one in the future
This is one of the reasons I went with a JuiceBox. 😢

@MrDrew514
Copy link

I'm guessing no API doesn't mean no integration. Is there still hope for this?

@barrymichels
Copy link

At this point, no. I hope enough customers request this feature so they see the demand and bring a new API online.

@MrDrew514
Copy link

image

Reached the support and sent a complaint for the API removal.

@barrymichels
Copy link

My chat with support on Jan 30th:

(09:37:31 PM) *** Spencer Simpson joined the chat ***
(09:40:53 PM) Spencer Simpson: Hello Barry,

Your devices not connecting to home.juice.net is normal, and the phantom device in your app is a common product of the migration. After JuiceBoxes are moved to the server, they cease all communications with the home.juice.net server, and we are still moving on a timeline of completely shuttering it from Feb. 20th on. We can resolve the phantom JuicePass box by removing the unit from your home.juice.net account, leaving only the entry for your JuicePass account.
(09:41:35 PM) Barry Michels: Ok. thank you.
(09:42:24 PM) Barry Michels: So, is home.juice.net going away? I'm using that API to integrate the data into my Home Assistant server to log/monitor the energy delivered to my car.
(09:43:01 PM) Spencer Simpson: Yes, it is going away, and there is definitely not a planned browser/web-based dashboard replacement. As for the status of a general residential user API, I am not able to confirm whether it is a planned feature at this time.

@MrDrew514
Copy link

A decrease in the features will certainly affect customers experience, I contacted them to know if they plan on working on it since I primary bought it for that case and if they are offering a refund regarding this problem.

@owen2
Copy link
Contributor

owen2 commented Feb 8, 2023

We also lost the ability to manage load groups, so I complained about that and the API being unavailable. I was about to buy a 2nd charger and wire it to the same circuit. In the old system, it would limit the total amperage of the group to the rated amperage through software, and that isn't a feature in the new app... so fire risk, tripped breakers if you had that setup during the migration? yikes.

@aravindtri
Copy link

We also lost the ability to manage load groups, so I complained about that and the API being unavailable. I was about to buy a 2nd charger and wire it to the same circuit. In the old system, it would limit the total amperage of the group to the rated amperage through software, and that isn't a feature in the new app... so fire risk, tripped breakers if you had that setup during the migration? yikes.

I lost the ability to control charge current via juice pro but figured out a way to control it from Tesla.

@wmoss
Copy link

wmoss commented Feb 11, 2023

Got this today, so they don't seem to have their story straight but maybe there is hope.

image

@dtrop1
Copy link

dtrop1 commented Feb 13, 2023

I hope they re-enable this. The new app is garbage.

@CharlieDelta6
Copy link

We have a load group of 2 JB40 and still seem to be on the old system. Haven't received any migration email yet.

I did copy source locally and hard code max amp value at 40. That value was not being fetched correctly and would error (unable to set, valid range 6-0). Didn't want to dig too deep and fix properly due to the unknown status of the API.

@niharmehta
Copy link

If you have been impacted by this change, you can request support move you back to the old platform. It took a few weeks and requires a new token. It appears they know this migration has been a huge issue for their customers and they offered to move my system back. Not only did the new app/platform break the API, but it's TOU scheduling is broken, as well as load sharing capability doest not exist anymore either.

@tomayac
Copy link

tomayac commented Apr 28, 2023

I started a reverse-engineering effort of the new Enel X Way API and have put my findings in a public Gist. Help is very much welcome! So far I have the endpoints, but need to understand authentication, potentially request signing, etc.

@MrDrew514
Copy link

I started a reverse-engineering effort of the new Enel X Way API and have put my findings in a public Gist. Help is very much welcome! So far I have the endpoints, but need to understand authentication, potentially request signing, etc.

Looks promising, is there a way to request an API after the migration?

@tomayac
Copy link

tomayac commented May 1, 2023

[I]s there a way to request an API after the migration?

Not that I know of. It’s all private.

I don’t want to share their code, since it’s probably copyrighted, but what I did was download the app’s .apk, and then decompiled it with an online tool. I think it’s written in Flutter, so more targeted techniques could potentially reveal better results, but I didn’t get to that yet.

@cgraf
Copy link

cgraf commented May 17, 2023

Any update on this one? I just got forced to the Enel X Way app and lost JuiceNet access including the mobile app, webapp, and HA integration.

Happy to help contribute if I can. Wondering if there is any additional understanding of the auth component. I believe JuiceNet creds work for the Enel X app, so wondering if the JuiceNet tokens still work with Enel X. Enel X appears to have their own account system at my.enelx.com but the JuiceNet creds don't work there, and there's no apparent way to create an account. It would seem at first glance like the Enel X Way app is still using JuiceNet for auth, but I have not really looked at it all. Just at the point of realizing I got migrated and everything broke.

@Scott8586
Copy link

I don't know if this is helpful, but port 2000 is open for telnet to the Gecko OS of the JuiceBox - I tried to expose the web server on the wlan interface, and reboot, but the Juicebox seems to reset it to the softap/default on reboot. Maybe someone more industrious can figure out a way to expose something useful?
I suspect you could really screw things up if you tried, so play around at your own risk...

$ telnet 192.168.35.xxx 2000
Trying 192.168.35.xxx...
Connected to gecko_os-afb.xxx.net.
Escape character is '^]'.
EMWERK-JB201-1.0.46, Gecko_OS-STANDARD-4.2.7-11064, WGM160P
> get ht s i
get ht s i
default
> set ht s i wlan
set ht s i wlan
Set OK
> network_restart -i wlan
network_restart -i wlan
Connection closed by foreign host.

@wmoss
Copy link

wmoss commented May 21, 2023

I played around with Gecko as well, but I don't think it's going to get you anywhere. The Gecko OS itself is only aware of the GPIO pins on the Gecko chip, what matters is the custom software that Enel is running under Gecko OS and how that's interacting with the GPIO pins and the data that it's sending up to the cloud. Even if you could reverse engineer that piece of software, I doubt you could run something on the Gecko system to monitor it.

@cgraf
Copy link

cgraf commented May 30, 2023

FWIW, I was told by Enel X support that I could no longer request to be switched back to JuiceNet once I switch to the new app. I decided to sell my charger, and get one that remains open for integrations, but soon found that in Enel X Way there is no longer a way to transfer ownership of a device. I wrote to support again and asked that they remove my ownership of the device so that I could resell it, at which point they were nice enough to move me back to JuiceNet.

kindly note that I have been successful in motivating that you be migrated back to EV JuiceNet so that you can continue using the web platform home.juice.net and API functions as you normally did, at least up unit the Enel X Way app is updated to support these features.

So there is hope. I busted out a new automation that automatically sets the amperage of my charger based on the remaining charge of my Powerwall. Works great except that charge_now off does not seem to work. It toggles in HA, but does not actually turn off. Oh well. Glad to have this much of an integration working so that car charging does not burn through my battery overnight or on cloudy days.

@emilecantin
Copy link

It looks like I've been moved automatically to the new platform. I never even installed their new app, the charger just started showing "unavailable" a few days ago.

@cgraf I just got off the chat with support, and they told me they ended the contract with the provider for the old platform. I would assume they'll probably force everyone on the new platform in the next few weeks.

This is very frustrating, as I bought that device specifically for the Home Assistant integration... I imagine I'm not the only one in that situation.

@wtadler
Copy link

wtadler commented Oct 2, 2024

I'm happy to test this if there is a straightforward and well-documented way to set this up as a HA add-on, which I'm not immediately seeing anywhere.

@Scott8586
Copy link

Also happy to test, I have the proxy working via firewall rules to keep intercept traffic.

@FalconFour
Copy link

Looks like I'm going to be jumping in here with full force soon as well. I haven't actually tried it out yet as I still find the challenge of redirecting UDP traffic a bit daunting. Any way I can help, I know most of the internals of the box. The challenge is that the ZAP-equipped boxes don't listen to the UDP parameters exposed by ZentriOS - the ZAP (Zentri APplication) does the communication on its own, and it has no reason to listen to ZOS parameters - it makes the UDP connection and sends the data on its own. A man-in-the-middle WiFi AP (something perhaps running DD-WRT or modern equivalent - a great use for an E-waste trash router?) may be the only way to have a device redirect the UDP traffic.

If we can reliably clear that hurdle and have a setup guide for how a novice-skilled techie could set it up, across as many variations of JB firmware possible (ZAP and non-Zap - non-ZAP is easy!), then this could be a very awesome fill-in for the soon-to-be-dead Enel services.

@saltydog256
Copy link

saltydog256 commented Oct 2, 2024 via email

@FalconFour
Copy link

FalconFour commented Oct 2, 2024

Ooh, an ESP32 is ideal indeed. Or the cheapest ESP device that exists. Very simple task at heart - to redirect UDP traffic to another device. Can an ESP32 act as both a client (connect to another network) and a station (broadcast an AP) at the same time, offer DHCP to the attached device, spoof DNS, listen to the UDP traffic, and forward those packets on to the configured server on the client side (and vice versa)? If so, there's a well-paved path to getting this done super easily. I just have a soft spot for reusing old electronics ;) But most people will definitely choose the cheap ESP dongle route, I'm sure...

@barrymichels
Copy link

barrymichels commented Oct 2, 2024 via email

@FalconFour
Copy link

FalconFour commented Oct 2, 2024

Oh no! I don't mean replacing anything with an ESP32 (the WiFi chip is soldered anyway), but rather, designing something (using an ESP) that would just plug into a USB port around the house like a WiFi extender or Zigbee dongle. Much like smart-home bulbs and switches use a "hub". And then you'd simply configure the JuiceBox to connect to the dongle's network (running through WiFi setup, which doesn't need their silly app), and you're home free - the dongle would redirect traffic to your HA and give you complete local control, monitoring/metering, etc., all with the existing power/capability of Home Assistant.

I actually get warm fuzzy just thinking about that idea. I really want to see it become a reality - it's very user-friendly and maintainable, I think!

@beren12
Copy link

beren12 commented Oct 2, 2024

What are the chips in it? Maybe we could get openevse software ported to it

@saltydog256
Copy link

saltydog256 commented Oct 2, 2024 via email

@FalconFour
Copy link

FalconFour commented Oct 2, 2024

Core processor is an ATmega328p - literally an Arduino and the same as OpenEVSE. Core processor handles the entire system's operation, including LEDs, relay control, GFCI, metering, ground monitor, protocol processing, everything.
Metering IC is ATM90E26, communication over SoftwareSerial (UART), config/calibration is stored in ATmega328p's EEPROM.
WiFi is AMW106 (Zentri). It handles talking to WiFi and doing communications housekeeping. This module is the one to which the 3 LEDs on the JuiceBox board (not the front panel) are connected to - so the board LEDs tell you very little about the actual system status, only related to WiFi.

This is applicable to the black metal box JB1.x (3 front LEDs), PCBs v8.14.x to 8.17.x. Prior models used AMW006 (8.12.4 or so), or AMW004 (8.12.2 and prior). The super special Kickstarter-era box used a Roving Networks WiFly, which pre-dated any semblance of modern IoT and ... God help anyone that still has one of those (all long dead because they're so hard to configure).

The plastic-and-purple Enel JB2.x boxes used the same ATmega328p as a core processor, but changed the metering chip to a 3-phase model (M90E32 or *36, not sure), and a new SiLabs-branded Zentri module for WiFi. In that case, some system control moved to the WiFi chip - like the front panel LEDs and metering. Thus, the meter IC actually talks to the WiFi chip, making the two an inseparable mesh (box will run at 12 amps - 120v default - if the WiFi chip stops responding).

@Glim1000
Copy link

Glim1000 commented Oct 3, 2024

Thanks Matt, you had previously saved our juicebox with a replacement relay and LED strip, and now you are saving it again. Watching this thread with great interest. Cheers!

@ivanfmartinez
Copy link

Ooh, an ESP32 is ideal indeed. Or the cheapest ESP device that exists. Very simple task at heart - to redirect UDP traffic to another device. Can an ESP32 act as both a client (connect to another network) and a station (broadcast an AP) at the same time, offer DHCP to the attached device, spoof DNS, listen to the UDP traffic, and forward those packets on to the configured server on the client side (and vice versa)? If so, there's a well-paved path to getting this done super easily. I just have a soft spot for reusing old electronics ;) But most people will definitely choose the cheap ESP dongle route, I'm sure...

@FalconFour the older devices does not support the telnet method to set the server address ?

For all users that have devices that support the telnet I dont see a reason to use separate ESP device, just use correct configuration on juicepassproxy and it will configure the juicebox to send the commands to the juicepassproxy.

Making a new device to be a gateway is really the easiest path ?

without the enel x app, maybe a set os well documented scripts can also be used to configure a factory state device to use the juicepassproxy and the correct wifi network.

@FalconFour
Copy link

FalconFour commented Oct 3, 2024

@ivanfmartinez The NEWER devices - anything after 2016-ish - use ZAP firmware. ZAP has no reason to listen to "the telnet method", because Telnet only interacts with ZentriOS parameters. ZAP doesn't use those, it makes its own independent decisions as to what server to connect to. It first defaults to a switchboard server (capable of redirecting legacy devices), and it also goes and asks the directory server for which server to connect directly to. Once it gets that info, it switches to using that server for UDP traffic.

At no point does the ZAP ever check or use the "udp" variable used in the Zentri console. It's always blank because the "udp" variables apply to ZentriOS' core UDP client functionality - which isn't what ZAP is using.

I'd give a generous guess that up to 20% of stations are running non-ZAP software, that is capable of using that UDP parameter from Telnet. All the other 80%+, couldn't care less what you set that to.

Curious if wrong, definitely something to test (e.g. if there's a hook in the firmware that "if this parameter is non-blank, it takes precedence" for debugging?).

Edit to add: I'm just straight-up wrong about the approach I thought it was taking. It's actually closing and re-opening the stream from under the ZAP! Literally pulling an "Indiana Jones" on the stream handle. I kinda love it. It's unreliable because the ZAP unpredictably decides to reopen the connection (to the destination it chooses), but it does work, and that's a great starting point.
image

@mskwik
Copy link

mskwik commented Oct 3, 2024

From what I recall of my original experimenting I was able to see where it was connecting from the telnet interface

mskwik@fluffy:~$ nc 192.168.1.206 2000
[2024-10-03 | 17:34:13: Ready]
> list
list
! # Type  Info
# 0 FILE  webapp/index.html-1.4.0.24 (1995, 0)
# 1 UDPC  juicenet-udp-prod4-usa.enelx.com:8051 (8448)
>

I could close that connection and open a new one with the same number and it would continue to use it to send data, but only for a minute or 2 before it reset back to its original location. It also seemed to be a little hit or miss timing-wise to open a new connection without it noticing and I always lost a packet or so while doing it, which is why I ended up with the firewall redirecting method instead.

What I don't recall is whether I tried switching this way from the telnet interface after I was redirecting the valid server responses back or not, it's possible that it might not switch back to the enelx.com server as quickly if it gets valid data back.

@FalconFour
Copy link

Yep, this is definitely worth digging into more. I feel bad that I still haven't set-up JPP proper myself, because the act of getting it into HA is a bit daunting (plus, day job etc...). But now that I have bench-tested it myself and proven it works, it changes things a bit. The reliable way is still a man-in-the-middle device to spoof the DNS and make it always believe it's talking to "jbv1.emotorwerks.com:8042" (and block access to the directory server, so it never gets redirected to "*.enelx.com")). That directory server is "directory-api.emotorwerks.com" - block it, and it should always try going to "jbv1.emotorwerks.com:8042". The info from the directory server is never stored persistently - it learns it on every startup.

More to come soon, for sure.

@mskwik
Copy link

mskwik commented Oct 3, 2024

Okay, I just went ahead and tried it.

mskwik@fluffy:~$ nc 192.168.1.206 2000
[2024-10-03 | 18:05:04: Ready]
> list
list
! # Type  Info
# 0 FILE  webapp/index.html-1.4.0.24 (1995, 0)
# 1 UDPC  juicenet-udp-prod4-usa.enelx.com:8051 (8448)
> close 1
close 1
[2024-10-03 | 18:07:46: Closed: 1]
Success
> udpc 192.168.1.131 8051
udpc 192.168.1.131 8051
[2024-10-03 | 18:07:59: Opening: 192.168.1.131:8051]
Resolving host: 192.168.1.131
Connecting: 192.168.1.131:8051
[2024-10-03 | 18:07:59: Opened: 1]
1
> list
list
! # Type  Info
# 0 FILE  webapp/index.html-1.4.0.24 (1995, 0)
# 1 UDPC  192.168.1.131:8051 (30121)
> [2024-10-03 | 18:10:25: Closed: 1]
[2024-10-03 | 18:10:26: Opening: juicenet-udp-prod4-usa.enelx.com:8051]
[2024-10-03 | 18:10:27: Opened: 1]
list
list
! # Type  Info
# 0 FILE  webapp/index.html-1.4.0.24 (1995, 0)
# 1 UDPC  juicenet-udp-prod4-usa.enelx.com:8051 (19509)
>

Looks like it still switches back. Took 2.5 minutes that time. I continued to get good data in HA during the time that it was connected directly to the local JPP. It does seem like in theory you could use the telnet interface to do the same thing every time it changed back and get local control without any traffic redirecting, but you'd be fighting it the whole time so not sure how reliable it would be. On the other hand it wouldn't require any extra hardware or router/firewall changes so the setup could be easier.

@ivanfmartinez
Copy link

For reference I'm using juicepassproxy without enel x servers for a few months. The solution probably is not applicable to any router, but what I made in my mikrotik was to redirect ANY UDP traffic that came from juicebox to my juicepassproxy instance.

No changes on DNS.

This is the option C on the juicepassproxy instructions : https://github.com/snicker/juicepassproxy?tab=readme-ov-file#docker-compose-installation

Maybe if enel x removes the DNS entries I will need to create DNS entries in my router, but for this months I just redirected the UDP packets.

@saltydog256
Copy link

saltydog256 commented Oct 3, 2024 via email

@FalconFour
Copy link

I have a command somewhere in the archive that using an FTDI to change where the URL JuiceBox send UDP traffic too. That might be easier for some – it’s one command line. I had to do that when Enel took over eMotorwerks (I hand built the first opensource JuiceBox in 2015). It’s in my “History Box and probably still works.

That's "udp.client.remote_host" in ZentriOS, used on boxes that aren't running ZAP. Your box is probably quite old, then :) If that is the case, indeed you can just change the host to your local server, clap the dust off your hands, and you're done forever! It'll just work like that forever.

That, however, is the base of the reasoning I thought we were further away from a solution than we really were. I didn't think we could "Indiana Jones" the stream handle like that through Telnet. Very cool trick. I had thought Telnet was changing the host as you describe, and that parameter probably applies to only 20% or less of remaining JuiceBoxes still not using the ZAP software (which was fed to older boxes through the app-based Setup process). All JB2.x and most "3 front LED" black boxes (JB1.x UL) use the ZAP software, thus my surprise to see the Telnet technique actually works.

Just need to find the cadence/pattern at which the software re-starts the UDP connection... maybe it'll stop resetting the connection if we simply send responses to each message (as JuiceNet did). I know it's got a watchdog looking for those for connectivity verification...

@dambrosioj
Copy link

dambrosioj commented Oct 9, 2024

Has anyone done the C. Option here https://github.com/JuiceRescue/juicepassproxy?tab=readme-ov-file#getting-enelx-server-ips with the new Unifi/Ubiquity Masq/Destination Rules?

@kintaroju
Copy link

Has anyone done the C. Option here https://github.com/JuiceRescue/juicepassproxy?tab=readme-ov-file#getting-enelx-server-ips with the new Unifi/Ubiquity Masq/Destination Rules?

I tried, but haven't succeeded yet. If anyone has, and can do a quick run down on how to do it from a Unifi perspective, it'll be greatly appreciated :D.

@troydangerfield
Copy link

I lost access to the web site back in Feb and have been using proxypass for the past 3 months on HA. As this is a DOCKER setup I have no access to the code but did the install via a wrapper. I then changed my UDP on the device to point to the HA IP address.

Data is now flowing, I have no control yet just collecting data so I know how much Juice I have pumped into the car.

list
! # Type Info

0 UDPC 192.168.20.5:8047 (30000)

@nhendin
Copy link

nhendin commented Oct 10, 2024

Just got this in my inbox a few minutes ago

Dear Enel X Way USA, LLC Stakeholder,

Enel X Way USA continues to engage with a third-party firm to manage the closure of the business on October 11, 2024. After further technical evaluation, the firm has entered into an agreement with the current provider to continue to operate the EV charging software in the US and Canada for an extended period. This interim measure will enable the firm to seek a long-term solution for the EV charging platform, with the ultimate goal of maintaining operational continuity for Enel X Way USA customers. While JuiceBox products will continue to operate with software connectivity after October 11, 2024, customer service will not be available during this interim period. The third-party firm will manage claims and communication with stakeholders after October 11, 2024. For more information, please visit: [www.LiquidAP.com/currentprojects/juicebox]

@wtadler
Copy link

wtadler commented Oct 11, 2024

This issue should really be renamed, since it doesn't really begin to capture what's been happening in recent months.

For anyone interested in local control of their JuiceBox, there's a much more elaborate operation happening over at Juice Rescue. Very active Discord too.

@nhendin
Copy link

nhendin commented Oct 11, 2024 via email

@W0GER
Copy link
Author

W0GER commented Oct 16, 2024

Closing this issue as JuiceBox servers seem to be going away. Other issues/projects are addressing getting direct access to residential JuiceBox EVSE.

@W0GER W0GER closed this as not planned Won't fix, can't repro, duplicate, stale Oct 16, 2024
@github-actions github-actions bot locked and limited conversation to collaborators Nov 15, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests