ChargeHub Service Device
Hanterar direkt kommunikation med fysiska laddstationer via tre protokoll: UDP (eget proprietärt binärt), MacAddress-WebSocket (eget proprietärt V1/V2) och OCPP 1.6 (branschstandard). Kör som 4+ Kubernetes-poddar med distribuerad state via cache och RabbitMQ-events. Central komponent är StationStateRegistry som håller alla stationers tillstånd.
2
Loggfiler15
Kunskaper0
Misstänkta buggar1
DiskussionerKunskapsbas
Beteende 6
| Ursprung | Beskrivning | Källa | Konf. | |
|---|---|---|---|---|
| Manuell | Hanterar direkt kommunikation med fysiska laddstationer via tre protokoll: UDP (eget proprietärt), MacAddress-WebSocket (eget proprietärt V1/V2) och OCPP 1.6 (branschstandard via WebSocket). | Källkod + manuell | 100 % | |
| Manuell | Kör i Kubernetes med minst 4 poddar: 3 generella (chargehub-service-device-*) och 1 UDP-dedikerad (chargehub-service-device-udp). UDP-servern lyssnar på port 65101. | Loggar + källkod | 100 % | |
| Manuell | StationStateRegistry är central state hub — lagrar tillstånd i distribuerad cache och publicerar 20+ eventtyper vid tillståndsändringar (ChargeChangedEvent, VoltageChangedEvent, AlarmStateChangedEvent etc). | Källkod | 100 % | |
| Manuell | DesiredChargeStateChangedHandler tar emot ChargeStateChangeRequestedEvent via RabbitMQ. Alla poddar får eventet (broadcast) men bara en är Handler=True och agerar. Övriga loggar Handler=False. | Loggar + källkod | 100 % | |
| Diskussion | StationStateRegistry använder lokal in-memory cache per pod med event-driven invalidering. Specifika meddelanden för olika StationState-element signalerar invalidering av motsvarande lokala cache-poster. SetState-metoden är granulär med nullbara parametrar — null betyder "ändra ej detta element". Redis fungerar som fallback-cache utan TTL/expiration; StationState överlever pod-omstarter. StationState innehåller tidsstämplar som indikerar när förändringar skedde. | Diskussion #1 | 95 % | |
| Manuell | ConnectivityStateRegistry spårar enheters anslutningsstatus (Connected/Disconnected) baserat på heartbeat-timeout. Kör offline-detektion periodiskt. | Källkod + loggar | 90 % |
Mönster 5
| Ursprung | Beskrivning | Källa | Konf. | |
|---|---|---|---|---|
| Manuell | UDP-enheter skickar JSON-paket med status (rssi, voltage, power, evState, cableState) ungefär varje sekund. Varje enhet kan ha 1-2 outlets (stationer). Svar skickas som krypterade binärpaket. | Loggar + källkod | 100 % | |
| Manuell | MacAddress-enheter har två typer: ChargeDevice (laddning) och Analyzer (energimätning). Identifieras med MAC-adresser (t.ex. b8:27:eb:e4:6f:d8). Kommunicerar via binärt WebSocket-protokoll. | Källkod + loggar | 100 % | |
| Manuell | OCPP-stationer kommunicerar via WebSocket med JSON-meddelanden enligt OCPP 1.6: MeterValues, StatusNotification, StartTransaction, StopTransaction. Identifieras med strängar som 000002596. | Loggar | 90 % | |
| Manuell | 'No PowerChangedEvent' loggas ~4000 ggr/minut — det är normalt och betyder att effekten inte ändrats sedan förra uppdateringen. Extremt verbose för DEBUG-nivå. | Loggar | 90 % | |
| Manuell | VoltageAlarm loggas som INFO när en fas visar 0V — vanligt vid enfas-laddning där laddboxen rapporterar 3-fas-konfiguration men bara använder 1-2 faser. | Loggar | 80 % |
Begränsning 2
| Ursprung | Beskrivning | Källa | Konf. | |
|---|---|---|---|---|
| Manuell | Broadcast av RabbitMQ-events till alla poddar genererar mycket logg-noise: 3 poddar loggar Handler=False per event. Kan vara värt att sänka loggnivå för icke-hanterande poddar. | Loggar | 80 % | |
| Manuell | WebSocket-fel (invalid state Closed) loggas som INFO — sker vid normala frånkopplingar. Borde kanske vara DEBUG eller hanteras tystare. | Loggar | 70 % |
Integration 2
| Ursprung | Beskrivning | Källa | Konf. | |
|---|---|---|---|---|
| Manuell | Kommunicerar med LoadBalancer-tjänsten via RabbitMQ/EasyNetQ: tar emot ChargeStateChangeRequestedEvent, publicerar StationPingEvent, ChargeChangedEvent, MeasurementEvent, EvStateChangedEvent. | Källkod | 100 % | |
| Manuell | Använder SessionService (platform client) för att hämta session-data: användare, energi, tider, prioritet. Anropas vid varje MeterValues-meddelande från OCPP-stationer. | Loggar + källkod | 90 % |
Lägg till kunskap
Loggfiler