Hi nada,
In a local network or VPN, i.e. if SCADA system and OpenEMS Edge can “see” each other, you can use out of the box:
- Modbus/TCP via openems/io.openems.edge.controller.api.modbus at develop · OpenEMS/openems · GitHub
- REST/JSON via openems/io.openems.edge.controller.api.rest at develop · OpenEMS/openems · GitHub
- MQTT via openems/io.openems.edge.controller.api.mqtt at develop · OpenEMS/openems · GitHub
- Websocket/JSON via openems/io.openems.edge.controller.api.websocket at develop · OpenEMS/openems · GitHub
I’d recommend REST/JSON in your case, if your SCADA system supports it. Alternatively Modbus/TCP.
Read State-of-Charge using REST/JSON: (Source)
import requests
url = 'http://192.168.0.23:80/rest/channel/_sum/EssSoc'
user = 'x'
password = 'user'
session = requests.Session()
session.auth = (user, password)
response = session.get(url)
response.raise_for_status()
print(response.text)
Send charge/discharge command to Energy Storage system via REST/JSON: (Source)
import requests
url = 'http://192.168.0.23:80/rest/channel/ess0/SetActivePowerEquals'
user = 'x'
password = 'owner'
session = requests.Session()
session.auth = (user, password)
data = {"value": 5000}
response = session.post(url, json = data)
response.raise_for_status()
For those questions I am unsure about your exact system architecture. Can you take this image as a reference and tell us if this looks like your setup? → Introduction :: Open Energy Management System
Regards,
Stefan