first commit

This commit is contained in:
2025-03-28 08:02:48 -07:00
commit 6dd30fb8e1
6 changed files with 101 additions and 0 deletions

1
Readme.md Normal file
View File

@@ -0,0 +1 @@
This is the code for the Carl API

3
Requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
requests
vedirect
flask

BIN
dist/victrondata.exe vendored Normal file

Binary file not shown.

12
testapi.py Normal file
View File

@@ -0,0 +1,12 @@
import requests
import json
url = r"https://carlapi.bteam.construction/orange/battery_info"
response = requests.get(url)
data = response.json()
print(data)
url = r"https://carlapi.bteam.construction/orange/mppt_info"
response = requests.get(url)
data = response.json()
print(data)

47
victrondata.py Normal file
View File

@@ -0,0 +1,47 @@
import vedirect
import json
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/orange/battery_info', methods=['GET'])
def get_battery_data():
device = vedirect.VEDirect("COM3")
volts = float(str(device._get_data( )[0].decode('ascii')).strip().split("\t")[1])/1000.0
power_usage = int(str(device._get_data( )[2].decode('ascii')).strip().split("\t")[1])
battery_percentage = int(str(device._get_data( )[4].decode('ascii')).strip().split("\t")[1])/10
battery_data = { 'draw' : power_usage, 'percentage' : battery_percentage, 'voltage' : volts }
return jsonify(battery_data)
@app.route('/orange/mppt_info', methods=['GET'])
def get_mppt_data():
mppt_device = vedirect.VEDirect("COM4")
wh_used_today = int(str(mppt_device._get_data( )[12].decode('ascii')).strip().split("\t")[1]) * 10
peak_charge_rate_today = int(str(mppt_device._get_data( )[13].decode('ascii')).strip().split("\t")[1])
wh_used_yesterday = int(str(mppt_device._get_data( )[14].decode('ascii')).strip().split("\t")[1]) * 10
peak_charge_rate_yesterday = int(str(mppt_device._get_data( )[15].decode('ascii')).strip().split("\t")[1])
mppt_data = { 'current draw' : mppt_device.solar_power, 'todays_wh' : wh_used_today, 'todays_peak' : peak_charge_rate_today, 'yesterdays_wh' : wh_used_yesterday, 'yesterdays_peak' : peak_charge_rate_yesterday }
return jsonify(mppt_data)
# device = vedirect.VEDirect("COM3")
# volts = float(str(device._get_data( )[0].decode('ascii')).strip().split("\t")[1])/1000.0
# power_usage = int(str(device._get_data( )[2].decode('ascii')).strip().split("\t")[1])
# battery_percentage = int(str(device._get_data( )[4].decode('ascii')).strip().split("\t")[1])/10
# print("Battery Percent:", battery_percentage)
# print("Battery Voltage:", volts)
# print("Current Battery Draw:", power_usage, "watts")
# mppt_device = vedirect.VEDirect("COM4")
# kwh_used_today = int(str(mppt_device._get_data( )[12].decode('ascii')).strip().split("\t")[1]) * 10
# peak_charge_rate_today = int(str(mppt_device._get_data( )[13].decode('ascii')).strip().split("\t")[1])
# kwh_used_yesterday = int(str(mppt_device._get_data( )[14].decode('ascii')).strip().split("\t")[1]) * 10
# peak_charge_rate_yesterday = int(str(mppt_device._get_data( )[15].decode('ascii')).strip().split("\t")[1])
# print("Solar Power being used:", mppt_device.solar_power, "watts")
# print("Todays Generated Power:", kwh_used_today, "Wh")
# print("Todays Peak Charge Rate:", peak_charge_rate_today, "Wh")
# print("Yesterdayss Generated Power:", kwh_used_yesterday, "Wh")
# print("Yesterdays Peak Charge Rate:", peak_charge_rate_yesterday, "Wh")
if __name__ == '__main__':
app.run(port=1099)

38
victrondata.spec Normal file
View File

@@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['victrondata.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=['win32timezone'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='victrondata',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)