Weegschalen Integreren met Uw Software via een API
Een weegschaal-API stelt software in staat live gewicht, stabiliteit, presets en opgeslagen records uit te lezen, en commando's zoals nul, tarra en print te versturen, meestal als JSON via het netwerk. Gebruik stabiele, tijdgestempelde metingen, haal records uit het logboek van de weegschaal in plaats van uit gepollde live waarden, en beperk en log externe commando's.
Wat een weegschaal-API doet
Een weegschaal-API (application programming interface) stelt uw eigen software in staat gewichten en records van een weegschaal uit te lezen en er commando's naar te sturen, met gebruik van een gedocumenteerde, machineleesbare interface in plaats van een display af te lezen (screen-scraping) of een printerstream te ontleden. Met een API kan een vangstregistratieprogramma, een besturing van een verpakkingslijn of een dashboard aan de wal de weegschaal gebruiken als databron en als bestuurbaar apparaat.
Oudere integraties leunden op een continue seriële uitvoer: de weegschaal stuurde meerdere keren per seconde een tekstregel met het gewicht via RS232, en het ontvangende programma ontleedde deze. Dat werkt nog steeds, maar het gaat maar één kant op en het formaat verschilt per fabrikant. Een netwerk-API voegt gestructureerde data toe (meestal JSON), toegang tot opgeslagen records en presets, en een vastgelegde manier om commando's te geven. De fysieke kant van die verbinding komt aan bod in RS232, Ethernet, USB, Wi-Fi of Bluetooth LE: een Interface Kiezen voor uw Weegschaal.
Typische endpoints en functies
De meeste weegschaal-API's bieden dezelfde vijf groepen functies: live gewicht, stabiliteit en status, presets, logs, en commando's zoals nul, tarra en print.
Onderstaande tabel is een algemene illustratie van hoe een dergelijke API doorgaans is opgebouwd. Dit is niet het schema van een specifiek product, ook niet van WPL.
| Functiegroep | Illustratief verzoek | Retourneert of doet |
|---|---|---|
| Live gewicht | GET /weight | Huidig netto en tarra, eenheid, tijdstempel |
| Status | GET /status | Stabiel-vlag, nul-indicator, overbelasting, resultaat gewichtssorteerder |
| Presets | GET /presets, GET /presets/{id} | Lijst en details van producten, streefwaarden, limieten, tarra |
| Actieve preset | PUT /presets/active | Een preset laden op de weegschaal |
| Preset bewerken | PUT /presets/{id} | Streefwaarde, limieten of labeltoewijzing wijzigen |
| Laatste record | GET /logs/last | Meest recent geregistreerde weging |
| Alle records | GET /logs?since=… | Opgeslagen wegingen, gefilterd en gepagineerd |
| Commando's | POST /commands | Nul, tarra, print en vergelijkbare acties |
Twee principes maken zo'n API voorspelbaar. Data lezen gebruikt veilige methoden die niets op de weegschaal wijzigen; presets wijzigen of commando's geven gebruikt methoden waarvan het effect gedocumenteerd is. HTTP-semantiek, inclusief welke methoden veilig en idempotent zijn, is gedefinieerd in RFC 9110. Veel leveranciers beschrijven hun HTTP-API's in het OpenAPI Specification-formaat, waarmee clientcode kan worden gegenereerd en verzoeken gevalideerd kunnen worden.
Voorbeeldpayloads
Een live-gewichtsrespons moet de waarde, de eenheid, een tijdstempel en de status bevatten die nodig zijn om te bepalen of de waarde gebruikt mag worden.
Uitsluitend een illustratief voorbeeld, niet het daadwerkelijke API-schema van WPL:
{
"scale_id": "scale-03",
"timestamp": "2026-09-14T06:42:17.250Z",
"net": 5.120,
"tare": 0.450,
"unit": "kg",
"stable": true,
"zero": false,
"check": "ok",
"preset": "COD-GUT-5KG"
}
De velden die het meest van belang zijn voor integratie zijn stable en timestamp. Een programma dat een doosgewicht registreert, mag alleen een meting accepteren die als stabiel is gemarkeerd, en moet tijdstempels vergelijken om een verouderde waarde te herkennen wanneer de verbinding hapert. Gewichten moeten JSON-getallen zijn met een vaste eenheid, geen strings met de eenheid erachter geplakt, zodat ze zonder parsen kunnen worden opgeteld (RFC 8259).
Een commando-uitwisseling, opnieuw als illustratief voorbeeld:
POST /commands
{ "command": "tare", "request_id": "7f3c-0192" }
200 OK
{ "request_id": "7f3c-0192", "result": "done", "tare": 0.450, "unit": "kg" }
De request_id stelt de client in staat het antwoord aan zijn verzoek te koppelen en stelt de weegschaal in staat een herhaling te herkennen van een commando dat al is uitgevoerd, zodat een verloren antwoord over een slechte verbinding niet tot een tweede tarrering leidt.
Polling versus push
Polling betekent dat de client de weegschaal met tussenpozen om data vraagt; push betekent dat de weegschaal data stuurt zodra er iets verandert. Polling is eenvoudiger te bouwen, push is efficiënter voor live waarden en gebeurtenissen.
| Methode | Hoe het werkt | Geschikt voor | Nadelen |
|---|---|---|---|
| Polling (HTTP) | Client vraagt elke n seconden /weight of /logs op | Eenvoudige integraties, periodieke logverzameling | Latentie tot één interval; veel verzoeken voor live weergave |
| WebSocket | Permanente tweerichtingsverbinding; weegschaal stuurt updates | Live gewichtsweergaven, interactieve besturing | Verbindingsbeheer en reconnectlogica; gedefinieerd in RFC 6455 |
| Server-Sent Events | Eenrichtings-eventstream via HTTP | Status- en nieuwe-recordmeldingen in browsers | Alleen server-naar-client; zie de WHATWG HTML-standaard |
| MQTT | Publish/subscribe via een broker, met afleverzekerheden | Veel apparaten, onderbroken verbindingen, ship-to-shore | Vereist een broker; topic- en payload-ontwerp; zie OASIS MQTT 5.0 |
De kosten van polling zijn gemakkelijk te onderschatten. Vijf keer per seconde live gewicht pollen levert 432.000 verzoeken per dag per client op. Voor een live weergave is dat acceptabel op een lokaal netwerk; via een satellietverbinding niet. Een praktisch patroon is push of snelle polling aan boord te gebruiken voor weergaven en besturing, en afgeronde records met tussenpozen uit het logboek te verzamelen voor alles wat het schip verlaat.
Live waarden versus records
Behandel het live gewicht als weergavewaarde en het logboek als de bron van waarheid (system of record). Als uw software eigen records opbouwt uit gepollde live waarden, kan het wegingen tussen pollingmomenten missen of dezelfde doos tweemaal registreren. Geregistreerde records met een unieke record-ID uit het logboek van de weegschaal lezen voorkomt beide problemen. Wat die records moeten bevatten, staat beschreven in Weegdata Loggen op Zee.
Commando's, veiligheid en toegangscontrole
Externe commando's zijn krachtig en moeten worden beperkt: een nul of tarra die op het verkeerde moment wordt verzonden, verstoort stilzwijgend elke volgende weging.
- Controleer de toestand voordat u handelt. Nul alleen een lege, stabiele weegschaal; tarreer alleen met de verpakking op het platform en een stabiele aflezing.
- Bevestig het resultaat. Lees de status na een commando in plaats van te veronderstellen dat het is geslaagd.
- Maak herhalingen onschadelijk. Gebruik request-ID's of idempotente bewerkingen zodat een herhaald verzoek hetzelfde effect heeft als één verzoek.
- Authenticeer en beperk toegang. Scheid leestoegang van commando- en preset-bewerkingsrechten; stel weegschalen niet rechtstreeks bloot aan het internet.
- Log commando's. Externe nul-, tarra- en presetwijzigingen horen in de audit trail, samen met de client die ze verzond.
Richtlijnen voor het beheren van cyberrisico's aan boord van schepen worden door de IMO gepubliceerd in de richtlijnen voor maritiem cyberrisicobeheer.
Integratie stap voor stap
Een betrouwbare weegschaalintegratie volgt een vaste volgorde van documentatie tot veldtest.
- Verkrijg de API-documentatie voor het exacte weegschaalmodel en de softwareversie.
- Inventariseer de data die uw software nodig heeft en koppel elk item aan een API-veld, inclusief eenheden en decimalen.
- Bepaal per datastroom of u polt, abonneert of logs uitleest.
- Gebruik record-ID's om imports idempotent te maken en hiaten te detecteren.
- Behandel onstabiele metingen, overbelasting, verbindingsverlies en timeouts expliciet.
- Synchroniseer klokken en sla UTC-tijdstempels op.
- Test aan boord met het echte netwerk, niet alleen op kantoor, inclusief verbindingsverlies tijdens een dienst.
- Leg de gebruikte API-versie vast, zodat een latere software-update op wijzigingen kan worden gecontroleerd.
Hoe WPL dit aanpakt
WeightControl bevat een geïntegreerde API die data teruggeeft in JSON. Hiermee kan externe software het huidige gewicht, de status van de gewichtssorteerder en de stabiliteitsindicatie opvragen, presets laden en bewerken, het laatste geregistreerde logrecord en alle opgeslagen logs uitlezen, en commando's geven zoals Nul, Print en Tarra. WeightControl draait op de R10-weegschaal zelf of als externe applicatie die meerdere weegschalen beheert. Documentatie wordt bij elk model meegeleverd; neem voor details en updates contact op met info@wpl-industries.com. De WeightControl IOT-module is als optie beschikbaar op de M2, M3, M5 en M6 series; zie de hub data-integratie voor de bredere architectuur.
Veelgestelde vragen
Is een netwerk-API beter dan de RS232-uitvoer van de weegschaal?
Voor nieuwe integraties meestal wel. Een continue RS232-stream is eenvoudig en robuust, maar stuurt alleen de weergegeven waarde in een fabrikantspecifiek tekstformaat. Een netwerk-API voegt gestructureerde JSON toe, toegang tot presets en opgeslagen records, en tweerichtingscommando's. RS232 blijft nuttig voor eenvoudige displays, legacysoftware en apparaten die niet op een netwerk kunnen aansluiten.
Hoe vaak moet software het live gewicht pollen?
Voor een lokale live weergave is enkele keren per seconde gebruikelijk en onschadelijk op een lokaal netwerk. Voor alles wat het schip verlaat, vermijdt u het pollen van live gewicht volledig: verzamel afgeronde records met tussenpozen uit het logboek, of gebruik een pushmechanisme. Vijf keer per seconde pollen levert 432.000 verzoeken per dag per client op.
Kunnen twee programma's tegelijk de weegschaal-API gebruiken?
Data lezen vanuit meerdere clients is over het algemeen geen probleem. Commando's en presetwijzigingen vormen het risico: twee programma's die tarreren of verschillende presets laden, komen met elkaar in conflict. Wijs één applicatie aan als sturende client, geef andere alleen-lezentoegang, en log welke client elk commando gaf. Controleer de documentatie voor limieten op gelijktijdige verbindingen.
Wat moet er gebeuren wanneer de API-verbinding wegvalt?
De weegschaal moet lokaal blijven wegen en loggen. De client moet de verouderde tijdstempel herkennen, aangeven dat de waarde niet live is, automatisch opnieuw verbinden en vervolgens eventuele gemiste records uit het logboek uitlezen, met gebruik van record-ID's om duplicaten te voorkomen. Commando's die tijdens een storing zijn verzonden, mogen daarna niet blindelings worden herhaald.
Bronnen
Geschreven en beoordeeld door weegtechnici van WPL Industries. Technische en wettelijke inhoud wordt getoetst aan de geciteerde bronnen. Redactioneel beleid