endor-force/home-assistant-garo-chargebox

A few comments

StarkJohan opened this issue · 5 comments

This applies to software version 1.3.1.

I think that the best way to get the explicit status from the charger is by using "chargeStatus". This is an integer in the json response but the Garo GUI decodes it as a hex value (in index.jsp) according to the function/switch below. I've also attached the function used to display the LED representation in the Garo GUI.

`charging.status.notconnected = Fordon ej anslutet
charging.status.connected = Väntar på startsignal från bil
charging.status.charging = Laddning pågår
charging.status.wait = Laddare initieras...
charging.status.rcdfault = Skyddbrytare utlöst
charging.status.chargecancelled = Laddning avbruten
charging.status.chargepaused = Laddning pausad av lastbalanseringssystem
charging.status.chargefinished = Laddning avslutad av bil
charging.status.overheat = Övertemperatur, laddning tillfälligt begränsad till 6A
charging.status.criticaltemperature = Övertemperatur, laddning avbruten
charging.status.lockingfault = Eluttag kan ej låsas
charging.status.contactorfault = Kontaktorfel
charging.status.ventfault = Ventilation krävs
charging.status.cablefault = Felaktig kabel
charging.status.generalfault = Kommunikationsfel
charging.sessionAccumulatedEnergy= Laddat sedan fordon anslöts

charging.status.notconnected = Vehicle not connected
charging.status.connected = Waiting for startsignal from car
charging.status.charging = Charging
charging.status.wait = Initialization...
charging.status.rcdfault = RCD fault
charging.status.chargecancelled = Charging cancelled
charging.status.chargepaused = Charge process paused by loadbalancing system
charging.status.chargefinished = Charging ended by car
charging.status.overheat = Overtemperature, charging temporarily restricted to 6A
charging.status.criticaltemperature = Overtemperature, charging cancelled
charging.status.lockingfault = Lock fault
charging.status.contactorfault = Contactor fault
charging.status.ventfault = Ventilation required
charging.status.cablefault = Cable fault
charging.status.generalfault = Communication error
charging.sessionAccumulatedEnergy= Charged since connected

function chargeCodeToText(status)
{
	switch(status)
	{
		case 0x00:
		case 0x10:
			return "<fmt:message key="charging.status.notconnected" />";
			break;
		case 0x30:
			return "<fmt:message key="charging.status.connected" />&nbsp;<a href='javascript:openChargePauseHelp()'>?</a>";
			break;
		case 0x40:
			return "<fmt:message key="charging.status.charging" />";
			break;
		case 0x42:
			return "<fmt:message key="charging.status.chargepaused" />";
			break;
		case 0x50:
			return "<fmt:message key="charging.status.chargefinished" />&nbsp;<a href='javascript:openChargePauseHelp()'>?</a>";
			break;
		case 0x60:
			return "<fmt:message key="charging.status.chargecancelled" />";
			break;
		case 0x70:
			return "<fmt:message key="charging.status.overheat" />";
			break;
		case 0x80:
			return "<fmt:message key="charging.status.criticaltemperature" />";
			break;
		case 0x90:
			return "<fmt:message key="charging.status.unavailable" />";
			break;
		case 0x91:
			return "<fmt:message key="charging.status.reserved" />";
			break;
		case 0x95:
			return "<fmt:message key="charging.status.dcfault" />";
			break;
		case 0x96:
			return "<fmt:message key="charging.status.dchardwarefault" />";
			break;
		case 0x9A:
			return "<fmt:message key="charging.status.cpfault" />";
			break;
		case 0x9B:
			return "<fmt:message key="charging.status.cpshorted" />";
			break;
		case 0x9C:
			return "<fmt:message key="charging.status.remotedisabled" />";
			break;
		case 0x9D:
			return "<fmt:message key="charging.status.dlmfault" />";
			break;
		case 0xA0:
			return "<fmt:message key="charging.status.cablefault" />";
			break;
		case 0xA1:
		case 0xA2:
			return "<fmt:message key="charging.status.lockingfault" />";
			break;
		case 0xA3:
		case 0xA4:
			return "<fmt:message key="charging.status.contactorfault" />";
			break;
		case 0xA8:
			return "<fmt:message key="charging.status.rcdfault" />";
			break;
		case 0xF0:
			return "<fmt:message key="charging.status.wait" />";
			break;
		case 0xF1:
			return "<fmt:message key="charging.status.ventfault" />";
			break;
		default:
			return "<fmt:message key="charging.status.generalfault" />";
	}
}
function chargeCodeToIndication(status)
{
	switch(status)
	{
		case 0x00:
		case 0x10:
			return "G";
			break;
		case 0x30:
			return "G";
			break;
		case 0x40:
			return "B";
			break;
		case 0x42:
			return "G";
			break;
		case 0x50:
			return "G";
			break;
		case 0x60:
			return "G";
			break;
		case 0x70:
			return "B";
			break;
		case 0x80:
			return "P";
			break;
		case 0x90:
			return "B";
			break;
		case 0x91:
			return "W";
			break;
		case 0x95:
			return "R";
			break;
		case 0x9A:
			return "R";
			break;
		case 0x9B:
			return "R";
			break;
		case 0x9C:
			return "B";
			break;
		case 0xA0:
			return "Y";
			break;
		case 0xA1:
		case 0xA2:
			return "Y";
			break;
		case 0xA3:
		case 0xA4:
			return "R";
			break;
		case 0xA8:
			return "R";
			break;
		case 0xF0:
			return "G";
			break;
		case 0xF1:
			return "R";
			break;
		default:
			return "R";
	}
}`

IT also seems that a few more "connector" possibilities has been added to recent software versions.

public enum ConnectorStatus {
NOT_CONNECTED, SEARCH_COMM, CONNECTED, CHARGING, CHARGING_PAUSED, CHARGING_FINISHED, CHARGING_CANCELLED, CABLE_FAULT, LOCK_FAULT, CONTACTOR_FAULT, RCD_FAULT, CP_FAULT, CP_SHORTED, INITIALIZATION, OVERHEAT, CRITICAL_TEMPERATURE, VENT_FAULT, METER_ERROR, READER_ERROR, DC_ERROR, GENERAL_FAULT, UNAVAILABLE, RESERVED, REMOTE_DISABLED, DISABLED, DLM_FAULT, DC_HARDWARE;
}

public enum ControlMode {
ALWAYS_OFF, ALWAYS_ON, SCHEMA, UNAVAILABLE, RESERVED;
}

Just dumping info here as I figure stuff out. This rest url has a more complete set of data:

/servlet/rest/chargebox/config

Info on specific boxes are available here: /servlet/rest/chargebox/slaveinfo/<serialNumber>

I have added the new connector statuses, but in my config i will opt to translate the Connector status rather than the hex codes.

Has anyone tested this for the GLB+?