diff --git a/csharp/App/VrmGrabber/Controller.cs b/csharp/App/VrmGrabber/Controller.cs index 955e16563..1aebb7873 100644 --- a/csharp/App/VrmGrabber/Controller.cs +++ b/csharp/App/VrmGrabber/Controller.cs @@ -127,7 +127,7 @@ th { /* header cell */ {{Serial}} {{NumBatteries}} {{BatteryVersion}} - ⬆️{{FirmwareVersion}} + ⬆️{{FirmwareVersion}} {{BatteryUpdateStatus}} "; @@ -168,8 +168,8 @@ th { /* header cell */ } - [HttpGet("UpdateBatteryFirmware/{installationIp}/{numberOfBatteries}")] - public async Task UpdateBatteryFirmware(String installationIp, String numberOfBatteries) + [HttpGet("UpdateBatteryFirmware/{installationIp}")] + public async Task UpdateBatteryFirmware(String installationIp) { //We need the DeviceName of the battery (ttyUSB?) var pathToBattery = await Db.ExecuteBufferedAsyncCommandOnIp(installationIp, "dbus-send --system --dest=com.victronenergy.system --type=method_call --print-reply /ServiceMapping/com_victronenergy_battery_1 com.victronenergy.BusItem.GetText"); @@ -188,30 +188,28 @@ th { /* header cell */ await SendNewBatteryFirmware(installationIp); var batteryTtyName = split[1].Split(".").Last(); - var localCommand = $"/opt/innovenergy/scripts/upload-bms-firmware {batteryTtyName} 2 /opt/innovenergy/bms-firmware/{FirmwareVersion}.bin"; + var localCommand = "echo start"; var installation = Db.Installations.First(installation => installation.Ip == installationIp); installation.BatteryUpdateStatus = "Running"; Db.Update(installation: installation); - for (var batteryId = 3; batteryId < Int64.Parse(numberOfBatteries) + 2; batteryId++) + var batteryIdsResult = await Db.ExecuteBufferedAsyncCommandOnIp(installationIp, $"dbus-send --system --dest=com.victronenergy.battery.{batteryTtyName} --type=method_call --print-reply / com.victronenergy.BusItem.GetText | grep -E -o '_Battery/[0-9]+/' | grep -E -o '[0-9]+'| sort -u"); + + var batteryIds = batteryIdsResult.Split("\n").ToList(); + batteryIds.Pop(); + foreach (var batteryId in batteryIds) { localCommand = localCommand.Append( - $" && sleep 3m && /opt/innovenergy/scripts/upload-bms-firmware {batteryTtyName} {batteryId} /opt/innovenergy/{FirmwareVersion}.bin"); + $" && /opt/innovenergy/scripts/upload-bms-firmware {batteryTtyName} {batteryId} /opt/innovenergy/bms-firmware/{FirmwareVersion}.bin"); } #pragma warning disable CS4014 + Console.WriteLine(localCommand); Db.ExecuteBufferedAsyncCommandOnIp(installationIp, localCommand) .ContinueWith(t => { - if (t.Status == TaskStatus.RanToCompletion) - { + Console.WriteLine(t.Result); installation.BatteryUpdateStatus = "Complete"; Db.Update(installation: installation); UpdateVrmTagsToNewFirmware(installationIp); - } - else - { - installation.BatteryUpdateStatus = "Failed"; - Db.Update(installation: installation); - } }); #pragma warning restore CS4014 return "Battery update is successfully initiated, it will take around 15 minutes to complete! You can close this page now."; diff --git a/firmware/opt/innovenergy/scripts/lsdbus b/firmware/opt/innovenergy/scripts/lsdbus index 7b788f3a9..2b9f18e65 100755 --- a/firmware/opt/innovenergy/scripts/lsdbus +++ b/firmware/opt/innovenergy/scripts/lsdbus @@ -1,4 +1,4 @@ -#!/usr/bin/python -u +#!/usr/bin/python3 -u # coding=utf-8 from argparse import ArgumentParser from time import sleep