Aminorjourney
Well-known member
Well, my efforts are available!
https://www.f150lightningforum.com/...e-station-pro-passive-only.28997/#post-539241
https://www.f150lightningforum.com/...e-station-pro-passive-only.28997/#post-539241
Sponsored
Nice! I love when someone can take what I wrote and expand on it!Well, my efforts are available!
https://www.f150lightningforum.com/...e-station-pro-passive-only.28997/#post-539241
$ python examples/fcsp_state_monitor.py
? FCSP State Monitor
? Polling every 30 seconds
? Press Ctrl+C to stop
? Monitor will automatically recover when device comes back online
==================================================
? Getting initial state...
? Initial state: ? CS00 - Available
? Starting monitoring loop...
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb890>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb890>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb9d0>: Failed to establish a new connection: [Errno 64] Host is down'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb9d0>: Failed to establish a new connection: [Errno 64] Host is down'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb890>: Failed to establish a new connection: [Errno 64] Host is down'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb890>: Failed to establish a new connection: [Errno 64] Host is down'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcae90>: Failed to establish a new connection: [Errno 64] Host is down'))
? Device appears to be offline. Will continue monitoring for reconnection...
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb750>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Read timed out. (read timeout=10)
? Device is back online!
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298190>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298190>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298690>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298690>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298cd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298cd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299090>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
? Device appears to be offline. Will continue monitoring for reconnection...
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299450>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299810>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299bd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299f90>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x10429a350>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)'))
Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Read timed out. (read timeout=10)
⏳ Still waiting for device to come back online... (10 attempts)
? Device is back online!
? [2025-07-03 08:16:17] STATE CHANGE DETECTED!
Device: ? CS00 (Available) → ? CS02 (Charging)
Nice!Nice! I love when someone can take what I wrote and expand on it!
I also did some QA testing on the library and it does seem to handle power outages in the FCSP just fine. Example below of me turning it off and back on a few times, then starting up a charge:
Code:$ python examples/fcsp_state_monitor.py ? FCSP State Monitor ? Polling every 30 seconds ? Press Ctrl+C to stop ? Monitor will automatically recover when device comes back online ================================================== ? Getting initial state... ? Initial state: ? CS00 - Available ? Starting monitoring loop... Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb890>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb890>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb9d0>: Failed to establish a new connection: [Errno 64] Host is down')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb9d0>: Failed to establish a new connection: [Errno 64] Host is down')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb890>: Failed to establish a new connection: [Errno 64] Host is down')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcb890>: Failed to establish a new connection: [Errno 64] Host is down')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x103bcae90>: Failed to establish a new connection: [Errno 64] Host is down')) ? Device appears to be offline. Will continue monitoring for reconnection... Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x103bcb750>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Read timed out. (read timeout=10) ? Device is back online! Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298190>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298190>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298690>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298690>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298cd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) ❌ Error getting state: Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104298cd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299090>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) ? Device appears to be offline. Will continue monitoring for reconnection... Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299450>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299810>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299bd0>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x104299f90>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Max retries exceeded with url: /api/v1/access (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x10429a350>, 'Connection to 192.168.1.197 timed out. (connect timeout=10)')) Connection failed: HTTPSConnectionPool(host='192.168.1.197', port=443): Read timed out. (read timeout=10) ⏳ Still waiting for device to come back online... (10 attempts) ? Device is back online! ? [2025-07-03 08:16:17] STATE CHANGE DETECTED! Device: ? CS00 (Available) → ? CS02 (Charging)
def interpret_charger_status(charger_info, inverter_info):
if not charger_info:
return None
state = charger_info.get("state")
if state == "CS00":
return "Idle"
elif state == "CS01":
return "Vehicle Connected"
elif state == "CS02":
if inverter_info and len(inverter_info) > 0:
inv_state = inverter_info[0].get("state")
if inv_state == 1:
return "Preparing To Power Home"
elif inv_state == 5:
return "Powering Home"
else:
return "Charging Vehicle"
return "Power Transferring"
return state or "Unknown"
charger_info
, and Inverter_info
to further expand on the HIS system.0
until the power goes out. Then it shifts to a state of 1
for preparing to power, and 5
when it's actively powering. I'm pretty sure we can expand on that since the Delta E4_BDI is available outside of Ford's system. I bet someone, somewhere has deciphered what states 2
thru 4
mean get_wifi_networks
switches your unit into the pairing (white flashing) mode? I need to play with that a little more max_amps
is not the current software limit but the actual hardware limit set inside the unit. Were you running any code?Finally hooked up the usb port to my Pi and noticed it doing this when I had it plugged in. As soon as I unplugged it, it stopped. Wonder if it thinks it is about to get a firmware update.
Do you see network traffic? Also, in my experience the initial connect is SLOW>I have a FCSP that had been sealed in the box since I received it (a spare; I have another that I use to charge day-to-day). I just broke the seal and did exactly two things to it:
1. Connected 12 VDC to the BACK UP PWR IN pins, and
2. Attached a USB Ethernet adapter to the USB port
The device is definitely responding but I'm getting the Django 403 page when I try to use the Python library to query it; I am wondering if it needs to somehow go through the initial WiFi connection process first in order for the authentication stuff to begin working.
My "prod" charger has never been connected to my WiFi and I'm hoping to avoid that, so this will require some more experimentation. Also going to try to see if I can get UART working to replicate what I've seen the rest of you doing here.