
Read temporary power meter from a photo: WhatsApp to Google Drive and Sheets (with OCR)
Read temporary power meter from a photo: WhatsApp to Google Drive and Sheets (with OCR)
Category: How-to Guides Niche: site utilities, OCR, WhatsApp workflows, Google Drive/Sheets, Building Safety Act evidence
Contents
- Quick answer
- Who this is for
- How it works
- Step-by-step setup in Make.com
- Code-first option (Cloud Run)
- Data model and folder structure
- Quality checks for UK meters
- Costs and limits
- Troubleshooting
- FAQ
Quick answer
You can let operatives WhatsApp a clear photo of the temporary power meter. An automation saves the image into Google Drive, reads the digits with OCR, and logs the reading into a Google Sheet for billing and audits. If confidence is low or the number drops below the last reading, the bot asks for confirmation.
- Capture: WhatsApp Business API (Twilio, MessageBird or 360dialog)
- Store: Google Drive (job/site folder)
- OCR: Google Cloud Vision Text Detection
- Log: Google Sheets row with timestamp, site code, meter serial, register (e.g., 1.8.0), kWh, link to photo
Who this is for
- Small contractors, temp power users, facilities teams and subcontractors who need monthly or weekly meter readings without sending someone to site with a clipboard.
- Anyone building a Building Safety Act evidence trail and wanting dated photos plus a clean log.
How it works
- Operative sends a meter photo to your WhatsApp Business number, optionally with a caption like: SITE=E14 Docklands | METER=K123456 | REG=1.8.0.
- Your WhatsApp provider triggers a webhook in Make.com or Zapier.
- The image is stored in Google Drive using a consistent path, then Google Cloud Vision extracts the numbers.
- A Google Sheet logs the reading with the photo link. If the OCR confidence is low, the bot replies on WhatsApp asking the user to confirm or resend a clearer photo.
Simple flow
- WhatsApp photo
- Google Drive upload
- OCR reading
- Append to Google Sheets
Step-by-step setup in Make.com
Prerequisites
- WhatsApp Business API number via Twilio or 360dialog
- Google Workspace account
- Google Cloud project with Vision API enabled
- A Google Drive root folder, e.g. Drive/Construction Power
- A Google Sheet called Meter Readings Log
Steps
- Trigger: WhatsApp New Media Message
- Provider: Twilio or 360dialog
- Output fields: media URL, sender, caption, timestamp
- Download media
- HTTP Get a File from media URL
- Upload to Google Drive
- Path: Drive/Construction Power/{{SITE}}/{{METER}}/{{YYYY-MM}}/
- Filename: READING_{{YYYYMMDD-HHMMSS}}_{{phone}}.jpg
- Save fileId to pass to later steps
- OCR with Google Cloud Vision
- Feature: TEXT_DETECTION
- Parse output for the register and the numeric value (4–8 digits). Keep the confidence score
- Build data
- Fields: timestamp_utc, site_code, meter_serial, register_code, reading_kwh, ocr_confidence, whatsapp_number, image_drive_link (fileId URL)
- If caption is missing data, try to detect site/meter from folder path or a small reference list
- Append to Google Sheets
- Sheet: Meter Readings Log
- Add a header row once: Timestamp, Site, Meter Serial, Register, Reading kWh, Confidence, WhatsApp, Drive Link
- Validate and reply on WhatsApp
- Look up the last reading for that meter in the Sheet
- If reading < last or confidence < 0.7, send a WhatsApp reply: “I read 012345 for meter K123456 (1.8.0). Reply Y to confirm or send a clearer photo.”
- If user replies Y, mark reading_source=user_confirmed
- Notify exceptions (optional)
- Send Slack or email if reading jumps more than your threshold (e.g., > 2x last period)
Code-first option (Cloud Run)
If you prefer a small codebase for more control, host a webhook on Cloud Run.
What the service does:
- Receives the WhatsApp webhook JSON, downloads the photo
- Uploads to Drive, calls Vision, parses text
- Checks against last reading in the Sheet
- Writes the new row and replies to the user for low-confidence cases
Minimal pseudocode outline
app.post('/whatsapp-webhook', async (req, res) => {
const { mediaUrl, from, caption, timestamp } = parseWhatsApp(req.body);
const image = await fetch(mediaUrl).then(r => r.arrayBuffer());
const fileId = await drive.upload(image, makePathFrom(caption));
const vision = await cloudVision.text(fileId);
const parsed = parseMeterText(vision.text);
const last = await sheets.getLastReading(parsed.meterSerial, parsed.register);
const needsConfirm = parsed.conf < 0.7 || parsed.value < last;
await sheets.append({ timestamp, ...parsed, from, fileId });
if (needsConfirm) await whatsapp.reply(from, `I read ${parsed.value} for ${parsed.meterSerial} (${parsed.register}). Reply Y to confirm.`);
res.sendStatus(200);
});
Data model and folder structure
Recommended Google Sheet columns
- Timestamp (UTC and local)
- Site code
- Meter serial
- Register code (1.8.0 import total; 1.8.1 day; 1.8.2 night; 2.8.0 export)
- Reading kWh
- Reading source (ocr, user_confirmed, manual)
- OCR confidence (0–1)
- WhatsApp number
- Drive link
- Notes
Drive structure
- Drive/Construction Power/SITE_CODE/METER_SERIAL/YYYY-MM/
- Keep raw photos immutable. Use Drive permissions, not public links
Quality checks for UK meters
Reduce misreads and get consistent results on UK sites:
- Teach operatives to select the correct register before taking the photo
- Shoot square-on, no glare, fill the frame with the LCD or odometer
- For cycling displays, wait for the exact register screen
- For dial meters, add a text message with the reading as a backup
- Ask for a WhatsApp location share to tag the reading to the site
Useful guidance
- OBIS codes explained: 1.8.0 import, 2.8.0 export, 1.8.1 day, 1.8.2 night
- Time-stamps: phone EXIF plus WhatsApp timestamp; keep both in the log
- Proof for clients: link the Sheet and Drive folder in your monthly application for payment
Costs and limits
- WhatsApp Business API: typically pence per conversation depending on provider
- Make.com or Zapier: plan-based operations pricing
- Google Cloud Vision: pay per image; low cost at small volumes
- Google Drive/Sheets: included with Workspace
Troubleshooting
- Photo is blurry or glare: reply asking for a new shot, remind user to turn off flash
- OCR picks the wrong number: add a rule to ignore numbers with decimal points if your meter should be whole kWh
- Reading lower than last month: flag for review, possible meter rollover or wrong register
- Multiple registers: add a short menu in WhatsApp or use keywords in the caption like REG=1.8.0
FAQ
Is this acceptable for invoicing clients?
Yes, many clients accept dated photo evidence and a consistent log, especially for temporary builders’ supplies. Check your contract requirements and keep the original images versioned in Drive.
What about data protection?
Use a dedicated WhatsApp Business number, restrict Drive access to your team, and include this workflow in your staff privacy notice. Avoid public links.
Do I need a developer?
No. Make.com can handle the full flow. If you have higher volumes or complex validation, a small Cloud Run service gives more control.
Want to slash training times and increase revenue per Engineer? Join our Waitlist - https://trainar.ai/waitlist
Share this article
Category
Step-by-step guides for common tasks
Ready to Transform Your Business?
Join the TrainAR beta and start using AR training in your business.
Join Beta ProgramStay Updated
Get weekly insights and new articles delivered to your inbox.
Comments (0)
Leave a Comment
No comments yet
Be the first to share your thoughts on this article!
Related Articles

Pre-visit photos over WhatsApp that attach to the job: a one-day setup for ServiceM8 and Jobber
Pre-visit photos over WhatsApp that attach to the job: a one-day setup for ServiceM8 and Jobber Category: How-to Guides • Niche: WhatsApp workflow...

3G switch off checklist for trades: keep phones, card readers and site comms working
3G switch off checklist for trades: keep phones, card readers and site comms working Category: How-to Guides Niche: mobile connectivity, 3G switc...

Set up AI quotes from site photos: Tradify, ServiceM8 or a simple Google workflow
Contents {#contents} - Quick answer - Who this is for - Option A: Tradify SmartTools AI (fastest if you already use Tradify) - Option B: ServiceM8...

Pre-visit photos over WhatsApp that attach to the job: a one-day setup for ServiceM8 and Jobber
Pre-visit photos over WhatsApp that attach to the job: a one-day setup for ServiceM8 and Jobber Category: How-to Guides • Niche: WhatsApp workflow...

3G switch off checklist for trades: keep phones, card readers and site comms working
3G switch off checklist for trades: keep phones, card readers and site comms working Category: How-to Guides Niche: mobile connectivity, 3G switc...

Set up AI quotes from site photos: Tradify, ServiceM8 or a simple Google workflow
Contents {#contents} - Quick answer - Who this is for - Option A: Tradify SmartTools AI (fastest if you already use Tradify) - Option B: ServiceM8...