PHP2Shell alert: critical PHP flaws CVE-2026-109618 / 109619 — check your servers and get patched fast
HashTech Systems

Insights

Notes on EV charging and AI, from the team building them

Technical writing from the engineers shipping OCPP-certified charging platforms and production AI systems — tutorials, field notes and guides, no marketing fluff.

All articles

Cybersecurity

PHP2Shell (CVE-2026-109618, CVE-2026-109619): What It Is and How to Patch Every Server

A practical PHP2Shell guide: affected and fixed PHP versions, how to find every PHP runtime, patching per platform, workarounds and compromise checks.

11 min read
Cybersecurity

PHP2Shell on PHP 7.4, 8.0, 8.1 and Older: Your Real Options

No official PHP2Shell release exists for PHP 8.1 and older. Here are the vendor backports, source patches, upgrade paths and isolation steps that do.

5 min read
Cybersecurity

Cyber Essentials in 2026: The Five Controls, the Danzell Question Set and the 14-Day Rule

A practical guide to Cyber Essentials under v3.3 and the Danzell question set: the five controls, MFA auto-fails, 14-day patching, CE vs CE Plus.

8 min read
Cybersecurity

UK GDPR Security Obligations for SMEs: Article 32, 72-Hour Breach Reporting and What Changed in 2026

What UK GDPR actually requires on security for small and mid-sized firms: Article 32 measures, reporting breaches to the ICO within 72 hours, DUAA changes.

6 min read
Cybersecurity

AWS Security Baseline Checklist: 12 Controls and the CLI Commands to Check Them

An AWS security baseline: GuardDuty, Inspector, Security Hub, CloudTrail, Config, Access Analyzer, S3 Block Public Access and root MFA, with CLI checks.

7 min read
Cybersecurity

GuardDuty, Inspector and Security Hub Explained: What Each Does and How They Fit

What GuardDuty, Inspector and Security Hub (and Security Hub CSPM) each do, where they overlap, how they bill, and how to enable them org-wide.

7 min read
Cybersecurity

Automating Security Checks with AI Agents, Without Handing Them the Keys

How agent-assisted security work is done responsibly: read-only discovery, least privilege, approved changes, audit logs and a human signing off every fix.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 1

OCPP 1.6-J Tutorial, Part 1: Architecture and Message Framing

How OCPP 1.6-J works on the wire: WebSocket URL and subprotocol, CALL/CALLRESULT/CALLERROR frames, message IDs and the six feature profiles.

7 min read
EV Charging
OCPP 1.6-J Tutorial · Part 2

OCPP 1.6 BootNotification and Heartbeat Explained

What happens when a charger connects: BootNotification fields, Accepted/Pending/Rejected handling, heartbeat interval and clock sync in OCPP 1.6-J.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 3

OCPP 1.6 StatusNotification: Connector Status and Error Codes

The OCPP 1.6 connector status model: all nine ChargePointStatus values, connectorId 0, error codes, valid transitions and how a CSMS should use them.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 4

OCPP 1.6 Authorize, Local Auth List and Authorization Cache

How OCPP 1.6 authorizes drivers: Authorize and IdTagInfo, the local authorization list, the authorization cache, and how chargers behave offline.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 5

OCPP 1.6 StartTransaction and StopTransaction Deep Dive

OCPP 1.6 transactions in detail: StartTransaction, transactionId, meterStart/meterStop, stop reasons, transactionData and offline message queuing.

5 min read
EV Charging
OCPP 1.6-J Tutorial · Part 6

OCPP 1.6 MeterValues: Measurands, Contexts and Sampling

Reading OCPP 1.6 MeterValues correctly: SampledValue fields, measurands, contexts, sampled vs clock-aligned data, units, phases and common parsing bugs.

5 min read
EV Charging
OCPP 1.6-J Tutorial · Part 7

OCPP 1.6 Remote Commands: RemoteStart, Reset, Unlock, Reserve

Controlling chargers from the CSMS in OCPP 1.6: RemoteStart/StopTransaction for app sessions, UnlockConnector, Reset, ChangeAvailability and ReserveNow.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 8

OCPP 1.6 Configuration Keys, TriggerMessage and DataTransfer

Managing OCPP 1.6 charger configuration: GetConfiguration, ChangeConfiguration, the standard keys that matter, TriggerMessage and DataTransfer.

5 min read
EV Charging
OCPP 1.6-J Tutorial · Part 9

OCPP 1.6 Smart Charging: SetChargingProfile and Stack Levels

OCPP 1.6 smart charging in practice: charging profile purposes, kinds, stackLevel, schedules, ClearChargingProfile and GetCompositeSchedule with examples.

5 min read
EV Charging
OCPP 1.6-J Tutorial · Part 10

OCPP 1.6 Firmware Updates and Diagnostics: UpdateFirmware Guide

Remote firmware updates and log collection in OCPP 1.6: UpdateFirmware, FirmwareStatusNotification, GetDiagnostics and how to roll out safely.

5 min read
EV Charging
OCPP 1.6-J Tutorial · Part 11

OCPP 1.6 Security: Security Profiles, Certificates and Signed Firmware

The OCPP 1.6-J security whitepaper explained: security profiles 1-3, Basic auth, TLS, client certificates, SecurityEventNotification and signed firmware.

6 min read
EV Charging
OCPP 1.6-J Tutorial · Part 12

Troubleshooting OCPP 1.6: CALLERRORs, Timeouts and Interop Bugs

A field guide to debugging OCPP 1.6-J: CALLERROR codes, timeouts and retries, message ordering, reconnect storms and common charger interop bugs.

6 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 1

OCPP 2.0.1 Tutorial: Architecture, EVSE Model and Functional Blocks

Start here for OCPP 2.0.1: OCPP-J framing, the station/EVSE/connector model, the A to P functional blocks, and how to read use case IDs.

6 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 2

OCPP 2.0.1 Device Model: Components, Variables and Monitoring

How the OCPP 2.0.1 device model works: ComponentType, VariableType, attributes, GetVariables/SetVariables, NotifyReport and variable monitoring.

6 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 3

OCPP 2.0.1 BootNotification, Network Profiles and Heartbeat

Bringing an OCPP 2.0.1 station online: BootNotification reasons, Pending provisioning, SetNetworkProfile, Heartbeat, StatusNotification and Reset.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 4

OCPP 2.0.1 TransactionEvent: Started, Updated, Ended Explained

A deep dive into OCPP 2.0.1 TransactionEvent: eventType, triggerReason, seqNo, TxStartPoint/TxStopPoint, offline queuing and CSMS-side handling.

6 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 5

OCPP 2.0.1 Authorization: IdTokens, Local Lists and Remote Start

IdTokenType and its types, Authorize and IdTokenInfo, the authorization cache, local lists, group tokens and RequestStartTransaction in OCPP 2.0.1.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 6

OCPP 2.0.1 Smart Charging: Profiles, Limits and EV Charging Needs

Charging profiles and purposes, stack levels, composite schedules, external limits and ISO 15118 charging needs in OCPP 2.0.1 smart charging.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 7

OCPP 2.0.1 Security: Profiles, Certificates and Signed Firmware

OCPP 2.0.1 security in practice: security profiles 1 to 3, SignCertificate and CertificateSigned, root certificates, security events and signed firmware.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 8

OCPP 2.0.1 and ISO 15118: How Plug & Charge Works End to End

How OCPP 2.0.1 supports ISO 15118 Plug & Charge: V2G certificates, contract authorization, Get15118EVCertificate and GetCertificateStatus.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 9

OCPP 2.0.1 Display Messages, Tariffs and Running Cost

Showing tariffs, running cost and custom messages on OCPP 2.0.1 stations: SetDisplayMessage, personalMessage, CostUpdated and totalCost.

4 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 10

Migrating from OCPP 1.6 to 2.0.1: Message Mapping and Plan

A practical guide to moving a CSMS and fleet from OCPP 1.6-J to 2.0.1: message and configuration mapping, mixed fleets and a migration plan.

5 min read
EV Charging
OCPP 2.0.1 Tutorial · Part 11

OCPP 2.1: What's New Compared with 2.0.1

What OCPP 2.1 adds to 2.0.1: ISO 15118-20 and bidirectional charging, DER control, local cost and payment, battery swapping and new RPC frames.

5 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 1

OCPI 2.2.1 Tutorial: Roles, Modules and How EV Roaming Works

What OCPI is, the roles it defines (CPO, eMSP, Hub, NSP, SCSP), its modules, version history, and the push vs pull and hub vs peer-to-peer choices.

6 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 2

OCPI Versions and Credentials: The Token A/B/C Handshake

How OCPI 2.2.1 version discovery and the credentials handshake work, which token is used when, and the Authorization header encoding trap.

6 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 3

OCPI Transport: Response Format, Status Codes and Pagination

The OCPI 2.2.1 response envelope, status_code ranges, pagination headers, date_from filtering, routing headers and request IDs, with the usual pitfalls.

5 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 4

OCPI Locations Module: Locations, EVSEs, Connectors and Status

Modelling Location, EVSE and Connector in OCPI 2.2.1, pushing status with PUT and PATCH, evse_id format, and how eMSPs should pull and sync.

6 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 5

OCPI Tokens Module: Whitelists and Real-Time Authorization

How eMSP tokens reach the CPO in OCPI 2.2.1, what the WhitelistType values mean, and how real-time authorization with AuthorizationInfo works.

5 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 6

OCPI Sessions and CDRs: From Live Session to Billing Record

Pushing OCPI 2.2.1 Sessions, building CDRs with charging periods and CdrDimensionType, totals, and correcting mistakes with credit CDRs.

6 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 7

OCPI 2.2.1 Tariffs: Elements, Restrictions and Price Calculation

How OCPI 2.2.1 tariffs are structured, how TariffDimensionType, step_size and restrictions work, and a worked price calculation with VAT.

6 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 8

OCPI Commands: START_SESSION, STOP_SESSION and Async Results

How OCPI 2.2.1 commands work: START_SESSION, STOP_SESSION, RESERVE_NOW, UNLOCK_CONNECTOR, CommandResponse vs CommandResult, and timeouts.

5 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 9

OCPI Charging Profiles and Hub Client Info: Smart Charging and Hubs

The OCPI 2.2.1 ChargingProfiles module for SCSPs, its async result flow, and the HubClientInfo module plus practical notes on working with hubs.

5 min read
EV Charging
OCPI 2.2.1 Tutorial · Part 10

Mapping OCPP to OCPI: How a CSMS Bridges Chargers and Roaming

How a CSMS translates OCPP 1.6 and 2.0.1 events into OCPI 2.2.1: connector status to EVSE status, transactions to Sessions and CDRs, commands and auth.

7 min read
EV Charging

EV Charging Protocols Explained: OCPP, OCPI, OICP, OpenADR, ISO 15118

Who talks to whom in EV charging: the vehicle, the charger, the CSMS, roaming partners and the grid, and which protocol covers each link.

6 min read
EV Charging

EV Roaming Explained: Hubs, Peer-to-Peer and Settlement

How EV roaming works between CPOs and eMSPs: peer-to-peer vs hub connections, the data that flows, and how sessions turn into invoices.

5 min read
EV Charging

EV Charging Connector Types: J1772, Type 2, CCS, CHAdeMO, NACS

A practical guide to EV connectors: J1772, Type 2, CCS1/CCS2, CHAdeMO, NACS (SAE J3400) and GB/T, with AC vs DC and how software models them.

5 min read
EV Charging

EV Charging Payment Options: RFID, Apps, Contactless, Plug & Charge

How drivers pay for EV charging: RFID cards, apps, ad-hoc contactless terminals and Plug & Charge, and what each means for your CSMS and OCPP.

5 min read
EV Charging

NEVI and AFIR Requirements for EV Charging Software

The software-relevant parts of US NEVI (23 CFR 680) and EU AFIR: OCPP, OCPI, ISO 15118, payment, pricing, uptime and data reporting.

6 min read
EV Charging

EV Charger Uptime: Measuring, Detecting Faults and Recovering

How to measure EV charger uptime honestly, detect faults from OCPP data before drivers do, recover remotely, and run field operations.

5 min read
EV Charging

Testing a CSMS with an OCPP Charge Point Simulator

How to test an OCPP backend with charge point simulators: what to simulate, the scenarios that catch real bugs, load testing, and where OCTT fits.

5 min read
EV Charging

CSMS Architecture at Scale: WebSockets, State and Idempotency

Designing an OCPP backend for large fleets: WebSocket gateways, message routing, connection state, idempotency, multi-tenancy and observability.

5 min read
EV Charging

EV Charging Pricing Models: kWh, Time, Idle Fees and Tariffs

How to price EV charging: per kWh, per minute, session and idle fees, time-of-use, demand charges, and how pricing rules shape your tariff engine.

5 min read
EV Charging

V2G and Bidirectional Charging: ISO 15118-20, OCPP 2.1, Reality

V2G, V2H and V2L explained: how bidirectional charging works, the role of ISO 15118-20 and OCPP 2.1, and what is practical today.

5 min read
EV Charging

OCPP Certification Explained: What OCA Certified Actually Means

How the Open Charge Alliance OCPP certification program works, what is tested, certification profiles, and what a certificate does and does not tell you.

5 min read
AI Enablement

RAG for Enterprise Documents: What It Takes Beyond the Demo

Retrieval-augmented generation is easy to prototype and hard to trust. Parsing, chunking, permissions and evaluation decide whether it works.

6 min read
AI Enablement

AI Agents in the Enterprise: Tool Use, Guardrails and Where They Work

Agents that call tools can do real work, and real damage. How to choose the right level of autonomy, design tools and put guardrails in place.

5 min read
AI Enablement

Evaluating LLM Applications: Test Sets, Graders and Regression Checks

Without evals, every prompt or model change is a guess. How to build a test set, choose graders, and catch regressions before users do.

5 min read
AI Enablement

LLM Cost Control in Production: Caching, Routing and Token Budgets

LLM spend grows with volume and with sloppy prompts. Practical levers: measure cost per task, cache, route by difficulty, batch and budget.

5 min read
AI Enablement

AI Data Privacy and Governance: A Practical Control Set

What data reaches the model, where it goes, who can see outputs, and how you prove it. A practical control set for enterprise AI systems.

5 min read
AI Enablement

Model Context Protocol (MCP) Explained for Enterprise Teams

MCP standardises how AI assistants connect to tools and data. What it is, how servers and tools are defined, and how to deploy it safely.

6 min read
AI Enablement

AI for EV Charging Operations: Where It Helps a CPO Today

Fault prediction, demand forecasting and support automation for charge point operators, built on OCPP and OCPI data, with realistic limits.

5 min read
AI Enablement

Where AI Actually Pays Off in Enterprise Operations (And Where It Doesn't)

Not every workflow benefits from AI. Here's how we evaluate where it genuinely reduces cost versus where it adds risk.

6 min read
EV Charging

OCPP 1.6 vs 2.0: What Actually Changes for Charging Network Operators

Most deployed charging hardware still speaks OCPP 1.6. Here's what 2.0.1 adds, and whether it's worth the migration yet.

6 min read
AI Enablement

LLMs in Production: What Changes Between a Demo and a Deployed System

A working prototype and a production AI system solve very different problems. Here's the gap we actually build for.

7 min read
EV Charging

What Is a CSMS, and Why Does Your Charging Network Need One

A charge point management system is the piece between your hardware and your business. Here's what it actually does.

5 min read
EV Charging

Smart Charging and Load Management: Avoiding the Transformer Upgrade

Adding more chargers to a site usually means a costly electrical upgrade — unless your CSMS manages load dynamically.

5 min read
AI Enablement

A Practical Framework for an AI Opportunity Assessment

Before building anything, we map where manual effort is actually costing you. Here's the framework we use.

5 min read

Let's Talk

Ready to build something that lasts?

Whether it's a charging network, an AI rollout, or a core enterprise system — let's talk about what you're building.