To start the scale, just power it and take a device with Bluetooth (and a web-browser)! Check if there are new firmware-updates first.
Power ON
For 420/710 Scales
... if you are using our hardware scale models:
Our scales does not have any battery, display or buttons at all! All you will find is a USB-C plug. Simply connect the scale by USB-C-Cable directly with your mobile phone to power it - or use any standard USB-C charger/wall-plug, your computers USB-port or even a small mobile power-bank! If you plug your scale, it will switch on automatically! There is no automatic power-off, the scale will stay online as long as its plugged! By the way: The cable is only used for the energy supply, but not to transfer any data! Just plug the scale to a power-bank or wall-plug and you can move around freely with your mobile phone / display.
For 232 Upscalers
... if you are using our scale upgrade box:
Just connect your 232UPSCALER with a nullmodem-cable to the RS232-Port of your scale and the USB-C port of your 232UPSCALER to a energy source like a wallplug, powerbank or your mobile - or to your computer/printer directly.
For the UP↑SCALE DIY on the ESP32-C3 RS232 Adapter
Plug the adapter into the RS-232 port of your scale and power it with USB-C (charger or power bank) - see UP↑SCALE DIY.
For the UP↑SCALE DIY (your own ESP32-S3/C3 + RS-232 board)
Power the microcontroller board with USB-C (charger or power bank); it gives 3.3 V to the RS-232 board - see UP↑SCALE DIY.
Range or battery - you choose: in the settings you can raise or lower the power of the wireless connection (Bluetooth Power). Use the highest setting in a bigger kitchen, a shop or a workshop, where the scale is on a wall plug anyway. Use a lower setting when you are close to the scale and maybe power it from your phone. And use a very low setting when the scale records something all alone on a battery - out in the woods, for example ;-)
Device & Progressive Web App (PWA)
The UP↑SCALE PWA - which is a simple HTML-page - will run on all mobile phones (Android, iPhone, Windows etc.) as like as on notebooks or desktop computers. There is no App-download and installation, no registration and not even a internet-connection needed to use the scale. (Well, on Apple devices you need an extra app to use our PWA!) All data will stay local and private! Neither the scale nor the app will send any data to us and nothing will get tracked or stored from us at all! Not even cookies! There is no cloud, there are no subscriptions and nothing from us needed to run the scale! Like that it will still work in 50 years, even without us! Just go sure you've downloaded your PWA once ;-)
ONLINE: You can use our scale app directly online. Just use the "Install-To-Homescreen" option in your browser to get a button to the live UP↑SCALE PWA on your screen (how to install it in the different browsers). After you have opened it once, the app is stored in your browser and also starts without an internet connection! If there is a new app version, it gets downloaded in the background and a message with an "INSTALL UPDATE" button shows up at the bottom of the app. It also tells you which scale firmware the new app version needs, and warns you if your connected scale has an older one. Nothing changes without that click, so you can also keep your current app version (e.g. together with an older scale firmware).
OFFLINE: Additionally you can download the UP↑SCALE PWA as a single file offline version directly to your device and open it from there later! Like this you also can use the scale totally offline! Its recommended to download the latest file once, but you also can find the links later on our update-page!
Screen stays on: while a program runs - recipe, coffee, mold or container filling, check-weighing, counting, sorting or tracking - the app keeps the screen of your phone, tablet or laptop on (screen wake lock), so it doesn't go dark in the middle of a recipe. In the normal weighing mode and on the setup pages the screen goes off as usual. Browsers without this function (or with the battery saver on) just behave like before.
Firmware Updates
This scale will get regular firmware updates to enhance its functions and to add extra modes and options! You can check for updates within the scale app by self - and if you are using the (always updated) online UP↑SCALE PWA, then you also will get a notification at the bottom of the app if there is a new firmware available! If the app needs a newer firmware, it asks you to update the scale. To update the scale, just connect it by USB-C to a computer or notebook, open our update-website and click a button! It could not be more easy!
⚖ Free and PRO version (licence)
Every scale and adapter runs the free version of our firmware - and the PRO version or the ENTERPRISE & COMPLIANCE edition with a licence. The licence is made for one device (its Device ID) and unlocks it there - once and forever (lifetime) or for a month or a year (see month, year or once). No account, no internet needed. Every phone, tablet and computer that connects gets the unlocked version. Firmware and app updates stay free.
FREE version
PRO version
weighing in all units, tare, HOLD, prices, volumes, flow, counting, simple check-weighing (zero check), the coffee timer and pour-over, recipes, calibration and all settings
everything of the free version
the connections: several phones and computers, RS-232 setup, serial output, backup - and 1 extra scale
the ℮ prepackage control; the reports: print, HTML and plain CSV (sales log, ledger, statistics, stock, tracking, club - not sealed, not checkable), and the statistics series sent by the scale
labels saved as an image (PNG), with a small line "UP↑SCALE FREE VERSION" below
printing labels (print dialog of the browser and label printers directly), labels without that line
coffee timer
the early stop for the target yield (with learned lag), the timer start by espresso apps and machines
up to 3 THINGS and 1 recipe on the scale (more can be loaded, overwritten or deleted)
no limits (only the memory of the scale)
Try PRO first: the PRO functions are gray in the app - a click on one tells you what it is and how to get it. To test them with your own scale and your real work, start the free ENTERPRISE trial: everything of PRO and ENTERPRISE & COMPLIANCE for 14 days, once per scale. PRO pays for the development of UP↑SCALE: no ads, no accounts, no data collection, no subscription needed (every licence is also sold once, for ever). The free version stays free forever and has no time limit.
Tracking is the only mode with a free limit: 15 minutes of recording in a row, then tracking pauses for 10 minutes. The pause only counts while the scale is on, a restart does not skip it; the scale info (LICENCE) shows the minutes left. An ESP-NOW setting saved on the scale stays saved - the scale starts ESP-NOW again as soon as it has PRO. Tools of the app that need no scale (nutrition diary, food search, baker's, gold and infusion calculators, cocktails, conversions) are free. The PRO limits of the app (reports, extra scales) apply while a free scale is connected; printing labels and the ℮ prepackage control also without a scale, unless the last scale the app saw was a PRO scale.
UPCENT↑420 (Half Decent Scale): all coffee functions of the scale - the coffee timer, pour-over, the early stop for the target yield, the timer start by Decent Scale clients and ESP-NOW (for the pump relay) - are free on this firmware, so its users are not limited in their coffee work. PRO unlocks the other modes there.
See and activate your licence
Scale info → LICENCE shows FREE, PRO or ENTERPRISE & COMPLIANCE, until when (a licence for a month or a year), the licence number and the Device ID of your scale. A free scale also shows ⭐ FREE VERSION - GET PRO (or the offer of the free trial) at the bottom of the screen - switch it off in the settings (LICENCE: PRO / ENTERPRISE notifications, saved in this browser); 7 days before a subscription ends, the bar reminds you to renew (also with the notifications switched off; see month, year or once).
Get PRO: the PRO licence costs from 3.32 EUR a month (3, 6 or 9 months: 14.90 / 24.90 / 29.90 EUR), 34.90 EUR a year or 119.00 EUR once (incl. VAT) for the ESP32-C3 RS232 Adapter and the DIY boards (one firmware, UP↑SCALE DIY). Enter the Device ID when you order - nothing is shipped.
Find the Device ID: connect the device in the app, tap ⭐ FREE VERSION - UPGRADE TO PRO at the bottom of the screen (or SCALE ✰ INFO): the LICENCE box shows Device ID (12 characters, e.g. 24EC4A1DD634). Its GET PRO button opens the order form with the Device ID already filled in. Without the app (developers): esptool chip-id shows the same 12 characters as MAC.
Activate: you get a link and a QR code by email. Open the link on the device with the app (the app keeps the licence and activates it when the scale connects), or click 📷 SCAN LICENCE in the scale info and scan the QR code, or PASTE KEY. The scale checks the licence by itself and saves it - also after a restart or an update it stays PRO.
Installed the firmware again with "erase"? Just activate the licence again (the app sends a licence it already knows by itself).
Several scales: only the scale that runs the program needs PRO - free scales can join as additional scales. A free main scale works with 1 extra scale.
Lost the key (e.g. after a new install with "erase")? The app remembers it and sends it again by itself. An app that does not know the key yet (e.g. a new phone) asks you when it saw the board as PRO before and it is free now (erased) whether to look it up on up-scales.com - or tap 🔎 FIND MY LICENCE ONLINE in the LICENCE box. Only with your OK, and only the Device ID is sent; the app never does this by itself. Or the lost licence page (also linked in the LICENCE box) shows your licence again as QR code and link - enter the Device ID. A licence with an end date: 🔎 GET MY NEWEST KEY in the LICENCE box looks up the key of your last payment the same way.
The app checks the key too: a scale that reports PRO or ENTERPRISE without a valid licence key on it (unofficial firmware) counts as the free version in the app, and the app says so.
Month, year or once
All prices incl. VAT, per board (the saving is against 3 months):
PRO
ENTERPRISE & COMPLIANCE includes PRO
3 months
14.90 EUR 4.97 EUR a month
39.00 EUR 13.00 EUR a month
6 months
24.90 EUR 4.15 EUR a month, save 16 %
59.00 EUR 9.83 EUR a month, save 24 %
9 months
29.90 EUR 3.32 EUR a month, save 33 %
79.00 EUR 8.78 EUR a month, save 32 %
1 year
34.90 EUR 2.91 EUR a month, save 41 %
99.00 EUR 8.25 EUR a month, save 37 %
2 years
66.90 EUR 2.79 EUR a month, save 44 %
179.00 EUR 7.46 EUR a month, save 43 %, + PRO for ever
lifetime
99.00 EUR + 3 months ENTERPRISE
350.00 EUR upgrade from PRO lifetime: 251.00 EUR
Already have PRO lifetime? The upgrade to ENTERPRISE & COMPLIANCE lifetime costs only the difference: 280.00 EUR (button in the LICENCE box; only for a board with a PRO lifetime licence - also a gift or the PRO included with ENTERPRISE for a year).
Several boards: enter how many boards you want and the Device ID of each one (one per line) - one order, one payment, one email with all keys and QR codes. Every licence costs less from 5 boards in one order: boards (months, years and lifetime). Months and years bought together (the same email, ordered within 2 days) end on the same day, so you renew them together. Business customers tick "I order as a business" and enter the company, address and VAT ID; with an EU VAT ID of your country you pay no VAT (reverse charge). Coming soon: pay online by card or SEPA and get the key right after the payment.
All prices incl. VAT. In the order form you can buy 3, 6 or 9 months (the longer, the less a month) or 1 or 2 years at once (one key for the whole time). If the scale already has a paid period of the same level (PRO or ENTERPRISE) that has not ended, the new time starts at its end, no day is lost. A month or a year has no automatic charge and we send no reminder emails: 7 days before the end the app shows a bar at the bottom - "Your PRO / ENTERPRISE subscription runs out in X days!" with RENEW (opens the order form for the next period) and LATER (hides it until the next connect); after each payment you get a new key (link and QR code) - the next period starts at the end of the paid one, no day is lost. The key works 7 days longer than the paid time, so a late payment does not stop your work. ENTERPRISE for 2 years (paid at once) includes a PRO licence for ever for the same board (a second key in the same email, only if the board has no lifetime licence yet): when ENTERPRISE ends, the scale stays PRO. The other way round, PRO once includes 3 months of ENTERPRISE & COMPLIANCE (a second key in the same email, once per board; a running ENTERPRISE month or year gets the free 3 months added at its end). Afterwards upgrade to ENTERPRISE for ever for the difference, or go on with ENTERPRISE for some months or a year (the paid time starts at the end of the 3 months) - or simply stay PRO. The RENEW buttons in the LICENCE box open the order form for the renewal.
The free ENTERPRISE & COMPLIANCE trial
Every FREE or PRO scale can try ENTERPRISE & COMPLIANCE for 14 days, with no key and no order: 🎁 TRY ENTERPRISE 14 DAYS FREE in the LICENCE box. The scale counts the 14 days by itself from the start (also while it is switched off), once per scale; a scale that had ENTERPRISE before gets no trial. During the trial everything of ENTERPRISE and PRO is unlocked. The seal certificate of the scale (seal) comes with a paid licence: seals made in the trial can still be checked with the key of the scale, they only show "no UP↑SCALE certificate".
How the scale knows the date
The scale has no clock. For a licence with an end date and for the trial it takes the time of the phone, tablet or computer that connects (every app sends it at the connect and every hour) and keeps its own one-way clock: it only moves forward, also counting the running time of the scale without any app. It works completely offline.
A device whose clock is behind the scale is ignored - the scale keeps its own time and the LICENCE box shows ⚠ The clock of this device is … behind the scale. Check the date and time settings of that device.
After the scale was switched off, the first time of an app may move the clock forward by the days it was off. While the scale runs, a time far ahead is refused (and written to the activity log on ENTERPRISE scales).
With users on the scale only a logged-in device sets this clock.
Was the clock of the scale set too far ahead by mistake (a wrong date on a phone), so that the licence ended too early? Write to us: you get a clock repair key that sets it right once and changes nothing else.
Limits, honestly: someone who erases the flash with developer tools can get around the date (an erase also deletes all data of the scale). The rules are made against mistakes and casual tricks, not against firmware hackers.
When a licence ends
PRO (a month or a year, not renewed): the scale goes back to the free version. Your THINGS, recipes and all data stay on it; the limits of the free version apply again until you renew.
ENTERPRISE & COMPLIANCE (a month, a year or the trial): the scale goes back to PRO (with a PRO licence - also the one included with the yearly ENTERPRISE licence) or to the free version and keeps all records - records mode: the activity log goes on, users can still log in, the archive of the log and the record files can still be saved and checked. New reports, seals, signatures, reviews, the user and device administration and new scale profiles above 3 need ENTERPRISE again; the gates can only be switched off.
PART 2 Weighing & Modes
⚖ Weighing Modes & Functions
Overview
After you are connected with the scale, you will land directly in the normal, simple weighing mode! Here you already have a lots of additional options - but you also can choose between different scale modes in the menu! Each of them is specially made for different use-cases and includes a variety of different sub-modes and options!
If the connection drops (out of range, scale restarted), the app opens it again by itself: first after a moment, then every few seconds for ten minutes, without any message. While it tries, the ⚖ in the red RE ⚖ CONNECT button turns. You can press the button at any time to try at once. DISCONNECT stops it, the app only connects again when you press RE ⚖ CONNECT. A scale with a password asks for it again after every new connection.
This is the standard scale mode and your starting point if you open the scale App. If you want to weight things - here you go! Additionally you have the following options:
💶 Sales Log - daily sales per THING (pieces, weight, revenue, profit), 366 days saved on the scale, every record numbered and chained (checkable), print and CSV: with the inventory and the labels your scale is also a sales computer
If you have many small things of the same weight, like screws, bags or whatever, and if you want to know how many without counting every single one manually - here you go. In the counting mode you are able to:
💶 Sales Log - daily sales per THING (pieces, weight, revenue, profit), 366 days saved on the scale, every record numbered and chained (checkable), print and CSV: with the inventory and the labels your scale is also a sales computer
Well, this is a scale - so you can weigh things! Use the tare-button to - well - tare the scale, as example with a container on it. A tare waits (up to 3 seconds) until the weight has stopped moving, so a hand or a swinging load does not end up in the zero - the same goes for the zero when the scale starts.
🔢 Counting
In the counting-mode you can count things. At first you need to tell the scale how much 1 of the things is weighing:
By direct input
If you know the weight, just input it.
Or let the scale check...
If you don't know the weight, just check-weigh a couple of your things. Take a known amount, for example 10 of the screws you are going to count, place them on the scale and there you go!
After that the scale will show you the amount of things on the scale, as like as the total- and the average weight of them! Also you can log and count everything in pieces now.
🔗 Piece weight from an other scale (two-scale reference counting)
Small, light pieces in a big amount? Count the sample on a fine scale and the bulk on a big one - like the counting systems in industry. Connect the fine scale as additional scale, start counting on the big (main) scale, and on its start page put the counted pieces on the fine scale (tared, without a container). Enter how many they are and press USE ⚖2: the app takes the stable weight of the fine scale, divides it by the pieces and sends this piece weight to the main scale - like a typed in weight per piece ("Piece weight from ⚖2 ... (50 pcs)"). A finer scale gives a more exact piece weight - so the count of the bulk is more exact too. The fine scale then stays a device that counts its pieces with the same piece weight - and they are added to the big number (see below).
⚖+⚖ Count on many scales at once: one sum, live
Connect more scales to the app (1, 2, many scales) and start counting on the main scale: now all scales count together. Every scale shows its own weight and pieces small on top ("⚖1: 409.2 g = 100 pcs", "⚖2: 40.9 g = 10 pcs"), the big number in the middle is the sum of all of them - and so is everything else: the average and total weight below it (of all pieces on all scales), your units per piece (prices, mg, kcal...), the 🏷 label and the ∑ log. Put pieces on any scale, take them from one to the other: the sum follows live, whichever scale changes. Every scale gets rounded to whole pieces on its own, so the pieces on top always add up exactly to the big number. All scales count with the piece weight of the main scale - typed in, sampled on it, or taken from a finer scale with USE ⚖2 (above). Each scale has its own ⚞T⚟ tare button. The takeaway mode works with the sum too: it remembers what is on all scales and counts what you take from any of them.
⚖+⚖ WHAT NO NORMAL COUNTING SCALE CAN DO
Counting systems with a reference scale and a bulk scale are known from industry - with cables, a fixed setup and a price to match. Here it is wireless and as big as you need it: count the sample on the fine 710 (0.01 g), the bulk on the 420 - or on your old floor scale with the 232 UP↑SCALER - and add more scales whenever the amount does not fit on one. One phone shows the pieces of every scale and the exact total, with prices, label and log.
Example: 5,000 small screws for a delivery, in three bins on three scales. Count 50 of them on the 710 and press USE ⚖2 - fill the bins on all scales at once and watch the big number grow up to 5,000. Print the label with the exact count and the price of all of them, log it - done, without counting one bin after the other.
🎯 More exact with every piece: piece weight optimisation
Like professional counting scales, the scale makes the piece weight more exact by itself while you are sampling: after the sample (e.g. 10 pieces), simply add more pieces - up to 3 times the sample (here 30 pieces) on the scale. As soon as the count is stable for a second and surely exact, the scale takes it as the new sample and calculates the piece weight again ("🎯 Piece weight optimised with 25 pcs!"). Add more pieces again and it goes on - the bigger the sample, the more exact the count. The optimisation ends as soon as you take pieces away, tare or log (∑) - so a container, the takeaway mode or virtual weights can never change the piece weight. A piece weight that you typed in is never changed.
Below the totals you see where the piece weight comes from ("Piece weight from 25 pcs") and up to how many pieces the count is exact ("exact up to ≈ 870 pcs", calculated with the precision of your scale). Two warnings help you: if the pieces are very light for the scale (less than 10 digits each, e.g. under 1 g on the 420), use a bigger sample - or a finer scale like the 710. And if there are more pieces than the exact range, the count can be off by a piece: count a bigger sample (or let it get optimised) for amounts like this.
⬆️ Takeaway Mode
If you switch on the Takeaway Mode (with the small [↰] button top-right), then the scale will remember how much is on the scale and weigh how much you are taking from it instead of what you are adding. Place a full container/bowl on the scale, hit the button and just count how much you get out from it! (The scale will show you also how much is left on it in that case.) In the 🛍️ sales mode a booking takes what you took away (with its price), not what is left on the scale; the scale can not check this weight against its own reading (it is the difference of two weighings), so the record is not marked as verified by the scale.
卄OLD: freeze the weight
For animals, wobbly or big things - or when you can't see the display while weighing: the small [卄] button top-right (below the takeaway button) (in the weighing and counting mode) holds the weight. 1 click: the next weight is held (orange), 2 clicks: every weight is held (green), 3 clicks: off. As soon as the weight is stable, the app averages it for 2 seconds - small movements (a pet on the scale) stay in the average, up to 5 % - and then freezes it: the display, your units, the label and the ∑ log use the held value (in the counting mode the held pieces). A line below the weight shows what happens (with an ℹ️ that explains the hold in short; "waiting for a stable weight…", "averaging… 1.4 s" with a countdown, "250.3 g held.") - the weight is held after the 2 seconds, even if nothing moves on the scale. Take it off: with "next weight" the hold ends, with "every weight" the app waits for the next one. Adding more while a weight is held does not change it - take it off first. The hold is done in the app, so it works with every firmware.
🍽 TAKE-FROM Mode (leftovers, jars, boxes)
An extended takeaway mode: you weigh before and after, and in between the scale can be empty - you can take your plate to the table, or your jar back to the shelf. Put the full plate, jar or box on the scale (with its units on the page, e.g. a loaded THING with nutrition values or THC, or the processed food from batch processing) and press the small 🍽 button top-left (opposite the takeaway button, weighing mode only). The app remembers the weight and the values, the 🍽 gets a green glow, and the full weight is written into the log right away ("🍽 510.4 g on the scale - waiting for the 2nd 🍽") - so you can still see it later. This line counts nowhere yet: not in the totals, the diary or the servings calculator. After eating (or taking something out), put it back on the scale and press 🍽 again: the same line becomes the difference, with all units calculated for it ("🍽 from 510.4 g", what is left is shown as "Rest"). No name needed: it gets the name from the name field, if there is one. The log opens with the new line - and if it has nutrition values, the 📒 diary dialog opens with just this line. Without units only the weight gets logged. The first weight is kept in your browser, so the app can be closed in between (the log is not: after a restart the difference gets a new line). ✕ next to the info cancels it and removes the waiting line from the log.
Add units / conversions to the screen
You can add an unlimited amount of units to the screen. This units will be updated live together with the weight and will be also included in the log-files. You can choose between many preset units - but also add your own, customized ones easily. Here an overview about the different units (every unit with short examples: THINGS & UNITS):
Below the weight, between the bars THINGS and LABEL, is the bar UNITS: choose a kind in its list (PRICE PER WEIGHT 💰, INGREDIENTS (METRIC) 🧪, CANNABINOIDS 🌿, INFUSION CALCULATOR 🧈 (opens the calculator), FOOD NUTRITION VALUES 🍉, WEIGHT <--> VOLUME 🥛, HYDRATION (DOUGH) 💧, PERCENT WEIGHING 💯, CUSTOM UNITS 🔣, LOT NUMBER 🧾, CONTAINER/JAR WEIGHT 🫙) and its form opens as a window. The ℹ️ in its title explains it, ✖ or a click beside it closes it; after a unit is added, it closes by itself and the new unit shows up below the weight. The ℹ️ of the bar gives a short overview of all kinds.
Conversion Units can be added in counting- and weighing mode and can be simply a price per weigh-unit, or the calories of a food product or the amount in milliliters/cups if you are weighing something liquid. Once defined (for example as 4.15 EUR per Gram) this units will be shown on the scale and updated with the weight on it (at 100g == 420.00 EUR, to stay with the example.) You also can setup goals for fill-weighing based on that amounts now! Like this you can automatically calculate, show and track different units additional to the weight live on the scale, show the volume of something or subtract a container weight!
You can add an unlimited amount of units to the scale at the same time! Additionally you are able to save this once defined units together with a name as a THING on the scale in order to reload them with a click later! Like that you can add your custom products, foods or containers easily!
💰 Prices / Costs
To add a price and to show it live with the weight, simply select one of the currencies from the selection and add the price per gram (or per piece in the counting modes). After a click on the button, the price will be shown on top below the weight and update automatically with every weight change. You also can choose just "🪙" or "💰" instead of $ or or EUR. And for sure you can add multiple currencies at the same time. Like that you can show your price in Dollars, Euros and maybe in Bitcoin at the same time - just as you prefer! Buying or selling gold? The 🪙 GOLD PRICE CALCULATOR button below the input calculates the price per gram from the karat, the spot price and your payout.
🪙 Gold price calculator
Open 🪙 GOLD PRICE CALCULATOR below the input of the 💰 price units. It works like the 🌿 infusion calculator, in three steps:
1. The gold
Choose the karat: 24 K (999 ‰), 22 K (916), 21 K (875), 20 K (833), 18 K (750), 14 K (585), 10 K (417), 9 K (375), 8 K (333) - or type an own fineness in ‰ (e.g. 730).
2. The price
Type in the spot price of fine gold per troy ounce (31.1 g), gram or kilogram, in one of the currencies of the price units - the app has no price feed and never goes online, so you type in today's price from your bank or a price website. And your payout in % of the gold value (e.g. 90 %; 100 % is the pure gold value). The calculator keeps karat, price, currency and payout in this browser.
3. The piece (optional)
Weigh the piece (⤓⚖ WEIGHT FROM SCALE, like in the infusion calculator): the result shows its fine gold, its value and the payout.
💾 Save as THING
Saves a THING named like "18 Karat Gold" (or your own name) with two price units per gram: Spot-Price (the gold value of the alloy: spot per gram × fineness) and Payout (the value × your payout %). Load it in the weighing mode and every piece on the scale shows both. New spot price tomorrow? Open the calculator, type it in and save the THING again (overwrite). ⚖ ONLY TO THE WEIGHING MODE shows the prices with the weight without saving.
🧪 Fixed metric units
Sometimes you want to show or keep track the amount of something. For example Magnesium in milligrams - even if you run the scale with ounces. With this option you can add the metric amount and the name of the ingredient to show its absolute amount on top below the weight. This is specially interesting for producers of infused edibles who like to mention/track/indicate the exact amount of THC or CBD in milligrams contained in the weighed product on top of the scale. Don't know the mg per g of your butter or oil yet? The 🌿 INFUSION CALCULATOR button below the input calculates it (with the cannabis club settings on, it sits at the end of the 🌿 CANNABINOIDS box instead).
Each box of a metric unit also shows the share of the goods beside its name, exact to two decimals, e.g. THC 17.25 % (in a box on the left before the name: 17.25 % THC). Not in the counting mode: there the amount is per piece.
🥛 Weight <----> Volume
If you want to measure 100ml of Milk, Honey, Alcohol or Coconut-Oil - or if you would need the weight of your flour, nuts or sugar measured in Cups, Table- or Teaspoons... Then you normally first would need to know the density of the particular liquid and then calculate the weight in grams or ounces manually for every weighing. Well, with google and your calculator - but still... what a mess...
With an UP↑SCALE you simply select a liquid or food-product from the integrated database with the most common kitchen- and laboratory products,
or from the additional database with 8000+ food products. Or add an own value here, if your products density is not listed until now, no problem at all. (in g/ml or ml/g)
Save everything as a THING on the scale then, and you can re-use it later with one click!
Either way: One click, and the equivalent amount in milliliters, spoons or cups will be shown live with the weight! That's it - no guessing or messing around with measuring cups - you can just weight and log directly in volume now!
You can convert from all weighing units on the scale (gram, ounces, 1/8s etc.) directly to:
㎖ Milliliter
⩌ Cups (US, Legal)
⩌ Cups (Imperial/UK)
fl oz US Fluid Ounces
fl oz Imperial Fluid Ounces
🥄 Teaspoons
🥄 Dessertspoons
🥄 Tablespoons
Example:
You want to weight 2.5 US Cups of corn flour? Simply select it from the database, choose US Cups, and hit the button. The flours specific weight - in this case 0.62 g/ml - will be overtaken from the database automatically and you will see the amount of flour in US Cups live at the scale. Additionally you could now add a weighing goal for the US Cups, in our case 2.5 - and the scale will not only tell you how much you need to weight (372g) - but also will show you a percent-weighing-bar! This indicate the amount you have on the scale in a percentage of your goal - easy to fill 97... 98... 99... 100 percent then!
💧 Hydration (doughs and breads)
With HYDRATION (DOUGH) 💧 in the UNITS bar you can add the liquid share of a product. Add it to the products of your doughs and save them as THINGS - then your logs and recipes show the total flour, the total liquids and the true hydration of the dough (water + milk etc. ÷ flour), and the baker's percentages refer to the total flour. There is one hydration per THING, and it is always shown in percent (not with the weight):
💧 Liquid
The share of liquid in the weight: water 100 %, milk about 87 %, eggs about 75 %, butter about 16 %.
🫙 Preferment
Levain (sourdough starter), poolish, biga, sponge... with its own hydration, like bakers say it: water ÷ flour, so 100 % = the same weight of water and flour, a stiff levain 50-60 %. The water in it counts to the liquids, the rest to the total flour.
🍞 Flour
Marks a product as flour (0 % liquid, it counts to the total flour). Flours without it are found by their names ("flour", "Mehl", "harina", "rye", "Dinkel"...). If no flour is found at all, the biggest ingredient without hydration counts as flour.
Products without this unit count with 0 % liquid (salt, yeast, sugar...). Recipes find the hydration by the same name as the THING (like the nutrition values). The hydration unit is saved on the scale like all units. The 🌡 DDT calculator and 🫙 starter feeding can be opened right below its input, too.
💯 Percent Weighing / Baker's Percentage
The percent-weighing-option enables you to define whats 100% - and for the next weightings you will see the percentage of that below your current weight.
This is practical for many uses and specially for bakers a great option! The so-called "baker's percentage" is a dough formula wherein the total weight of the flour represents 100%, and the weight of all other ingredients is calculated as a percentage of that total.
With our scale you not need to do any calculations if you want to follow recipes in bakers percentage - you just add your amount of flour as 100% reference weight - and all the rest works automatically! Just weigh your other ingredients step by step without any extra calculations! No place for mistakes - and more time for cake!
Also this option is very useful for fill-weighing because the percentage will be shown in a live-bar, with an extra scale for the last 10% to allow exact filling even at bigger amounts! And last but not least: You also can do percent-weighing based on a goal of an additional unit instead of the weight! For that check out the Fill-Weighing-Goals option!
Create your own recipes!
If you log/sum-up minimum 2 different things, then our scale will show the amounts of your mix also as a Bakers Percentage Recipe automatically! It was never so easy to create and use this type of recipes! How amazing is that?
🍉 Food Nutrition Values
Maybe you are on a diet - or you just want to know how many calories, carbohydrates, proteins, fat, saturated fat, cholesterol, dietary fiber, sugar and/or salt (sodium) is in the stuff you are eating every day - or in the recipe you are just mixing? Here you go! By the way: The nutrition values of your different weightings of different foods can be simply logged and summed together with the summing- and logging-function then - and our Traffic Light Rating system will show you how healthy your recipe is in that case! Additionally you have a couple of options how to select, insert, save or output this values, check this out:
Simply use the search-option to select one of more then 8000 food products with their most important nutrition values from our inbuilt database! With one click you can overtake all nutrition values and the name of the product to the scale - it could not be more simple!
The search finds all words in any order and with or without plural endings ("raw blackberry" also finds "Blackberries, raw"). The best matches are shown first and in bold.
📷 ++ Scan the barcode of a product
Below the database search you can scan the barcode (EAN-13, EAN-8, UPC-A or UPC-E) of a packed food product with the camera of your mobile or computer (📷 button) - or just type the number below the barcode and click 🔎. The nutrition values per 100 g are taken from Open Food Facts, a free and open food database (data under the Open Database License, ODbL), and filled into the form for own values. Please check them with the package - then click the button to add the product to the scale (and save it as a THING if you need it more often).
Good to know:
This is the only function of the app that needs internet. Only the barcode number is sent to Open Food Facts - nothing else.
If a product is not in their database (yet), simply enter the values from the package. You can also add the product at Open Food Facts yourself - that helps everybody.
In the counting mode the app asks for the weight of one piece, because there the values are needed per piece.
The barcode is read directly by your browser if it can do that (most Android devices) - otherwise by our own barcode reader in the app. Hold the barcode straight, about 10-20 cm in front of the camera, with good light.
Add own values or foods
Its very easy and fast to add own food products with custom values to the scale! You simply can add one (or more) of the nutrition values directly live to the scale - but you also can add all the info for your most used food products easily, add a custom name, and save them as a THING on the scale. Next time you can load it directly from there with a click!
Salt or sodium? Choose what is printed on your package. The scale calculates with sodium, and like the EU food labelling rules we use: salt = sodium × 2.5.
🍞 ++ Show Bread- & Carbohydrate Units
Carbohydrates can be counted also as Bread Units (1 BU = 12g carbohydrate) or as Carbohydrate Units (1 CU = 10g carbohydrate). People with diabetes often use CU or BU instead of gram to calculate their insulin doses. If you have Carbohydrates on the display of this scale, you will be able to show them directly in CU or BU, and also the logging/summing will include the amount of that selected unit later! Like this you see live how many Carbohydrate-Units you have on the scale at the moment - and altogether in the pot! No calculations needed any more - even if you weigh in Ounces!
🚥 ++ Traffic light rating
If you log your weightings with nutrition value units - like fat, saturated fat, sugar and salt (sodium) - then you will find an indication for the "healthiness" of your composition. We are using the common food traffic light system to show you if the values are 🔴 high, 🟠 medium or 🟢 low and how much of the ingredients you got per 100g (or milliliter).
🔣 Custom Units
You want to add a price in a strange currency which we do not have in our list? Or maybe you like to show the percentage of love, included in every ounce of your product? Or the amount of single Raisins in a piece of cake? No problem at all! You can add a own unit, a name for it and the amount - and for sure - you can add as many units you want! Btw. The amount can be added:
In proportion to the weight.
The amount can be added in proportion to the weight on the scale - for example as 12.0g per 1g. Or as 12.0g per 10g, or per 0.0023 gram - just as you like. You can preselect some common units (like 1 or 10) - and you can change you amount-per-gram value later at any time!
As a percentage.
The amount in percent is preselected and not need much explanation. Add the amount of your things in percent of the weight - and there you go.
As absolute weight.
If you select "as absolute weight", then you can insert the weight of one of your things - like in our example - the average weight of a raisin. Then the amount of raisin in your weighed goods will be shown directly under the weight!
🧾 Lot Number of a THING
With LOT NUMBER 🧾 in the UNITS bar you can give the goods on the scale a lot number (batch number): type it in or 📷 scan it from the package (a GS1 code with (10) works too). Up to 20 letters, digits and - . / _ + : ( ) - the size of a GS1 lot number, so it fits into every barcode. Save it with the THING (+ADD), and every time you load the THING its lot number is back on the screen.
🔍 IDENTITY (ENTERPRISE), below the lot number in the same window: the approved codes of this THING (GTIN / EAN / article number - type, 📷 scan or a hand scanner; of a GS1 code only its GTIN is kept; max. 5), the approved label names (what the label of the container says, max. 3) and the grade (e.g. USP / Ph. Eur.). Save them with the THING (+ADD). They are the same for every lot of the THING. The ⚕ COMPOUNDING ASSISTANT checks every container with them - they never go into the weighing log, the sums or the labels.
Weighing log: every line of the THING shows its lot (🧾).
Labels: the lot is a line of the price labels (on the label from the start, you can switch it off) and the placeholder [lot] ([charge], [lote]) in your own texts; the QR label of the THING has it too.
Recipes: if an ingredient of a recipe is a THING with a lot number, its lot field starts with it. Change it there for this run only - the THING keeps its lot number.
No value: the lot number is never added up and never used for prices, nutrition values or recipe values. The 📦 inventory stays per THING.
A THING has max. 20 units on the scale - the lot number counts as one of them.
Lot code on the label: the option 🧾 LOT CODE prints a small QR code of the lot in a frame with the word LOT and its number beside it - so it is never mixed up with the EAN-13 price barcode or the QR code of the THING. The code is a web link (up-scales.com/lot?nr=...): a normal QR scanner (any phone camera) opens a page with the lot number, the product, the date and your business, readable for your customers - the UP↑SCALE app reads the lot number from it and goes on in the app. The page only shows what is in the code: we keep no data of your lots.
Your business: set it once on the settings page: the first line of the company data in QUALITY RECORDS & USERS → Reports (clubs: the name of the club in the CCLUB 🥦 MODE → ⚙ CLUB SETTINGS). It is saved on the scale for every phone and computer. While there is none, the 🧾 box shows a warning with a button to the settings. It goes onto the page of the lot code and is a line of the price labels ([business], not on the label until you check it).
🧾 Lot store of the scale (PRO)
With PRO the scale keeps up to 420 lots: THING, lot number, who made it (with users), when, and an optional 🔒 internal note of up to 420 characters (origin, supplier, best before ...) - only for your own records: it is never printed on labels or shown on the page of the lot code. All phones and apps of the scale see the same lots.
Generator: a pattern like {T3}{YY}{MM}{DD}-{N3} - {T3} the first 3 letters of the THING, {YYYY} {YY} {MM} {DD} the date and one counter: {N3} per day or {C3} per THING (3 digits, more if needed). The scale counts, so two phones never get the same number. Or type in a completely own number. The same lot number twice for one THING is refused.
🔍 LOTS: all lots of the THING (or all of them) in a table like the THINGS list - status, lot number, THING, date and use-by date, newest first. Typing in the search field filters the table at once, 🔍 (or Enter) asks the scale for exactly that number, or 📷 scan it. Click a lot for its card (THING, date, who and the text); ⤓ in the list or click the THING on the card loads it with this lot. Loaded this way, the lot is the one on the page (log, labels) - it is not saved with the THING, so you can sell the rest of an older lot.
THINGS scanner: scan a lot number (or the lot code of a label) instead of the THING code - the scale finds the lot and the app loads its THING (if it still exists) with this lot.
Several lots on sale at the same time: a THING can have many lots in the store - every lot that is 🟢 ON SALE (a new lot is) is offered when you load the THING: with more than one, the 🧾 line on the screen becomes a select (★ = the lot saved with the THING; without one the newest lot is chosen). The weighing log and the labels take the lot you chose. Set a sold out lot to ⚪ NOT ON SALE on its card. In the recipes, the lot fields suggest all lots of an ingredient that are on sale.
⛔ LOCK a lot (blocked or recalled): it stays in the store and shows as locked everywhere. ✕ DELETE follows the deleting protection of the ADMIN.
⌛ Use by: every lot can have a use-by date (on its card) - saved on the scale, so every phone knows it. The lot list marks it ⌛ within 30 days and ⛔ when it is past; the lot box of the weighing page, the lot fields of the recipes and the labels ([expiry], and the lot label) show it, and the page of the lot code too. A ∑, a booking of the 🛍️ sales mode or of the CCLUB 🥦 mode with an expired lot asks first; the ⚕ compounding assistant does not start with one. A lot typed in without the lot store keeps its date in this browser.
Lot numbers from the generator never collide: if a number is taken already for the THING (typed in by hand or brought from another scale), the scale takes the next free one.
All lots at a glance: the 🗂 RECORDS page, tab 🧾 LOTS, lists every lot of the store in small text (number, THING, date, status, THC / CBD) - click one for its card. ⤓ EXPORT ALL LOTS saves them as a plain CSV file (with ENTERPRISE & COMPLIANCE sealed, as CSV or JSON in your own format), and with ENTERPRISE & COMPLIANCE 📄 PDF OF ALL LOTS makes a sealed PDF with your company header, the report number and the integrity code - both with the user and the internal note.
To another scale:back up or ⇄ sync your THINGS - prices, cannabinoids and lot numbers go with them, and you are asked once whether the lots of the store should go too.
Full? When all 420 places are used, new lots are refused - nothing is ever overwritten, because traceability comes first. From 378 lots the app warns you.
With the ENTERPRISE & COMPLIANCE edition every new, changed, locked or deleted lot goes into the activity log.
🫙 Container / Jars
Not with an RS-232 scale in EXACT WEIGHT: there the app never changes the weight of the verified scale - tare the container on the scale.
Here you can subtract a know weight. For example: If your container, bowl, bag or jar is already filled with your weighing goods and you don't like to refill everything to tare the scale with the empty container. Here you simply can subtract the weight of your container from the total weight on the scale.
Tip: Best to add your most used kitchen containers/bowls once with this option and save them as a THING to the scale. Then you are able to reload them later with only one click and you don't have to remember their weights any more!
Extra-Tip: You can add your storage tupperware/containers for your different foods/ingredients as a THING including all additional units like prices, nutrition values etc. Like that you simply can load a product, together with your units and its container-weight with just one click. Just take the tupper from the kitchen cabinet, place it on the scale and see how much is left in there! For a whole shelf or bar, use the 📦 inventory.
If you use the Takeaway Mode now, you simply can weigh, count and log what you are taking from the container - without the need to remember or calculate anything!
🥅 Fill-Weighing Goals for Units
If you add a unit to the screen, for example 3.57$ per gram, then you maybe want to know how much would be the weight for 420.00$ now - for example to fill a bottle exactly with that amount.
You can add a goal for any active unit if you click on the "🥅"-Button (top-right of the amount of an active Unit). Simply add your desired amount of that unit there (in our example 420 $) and click the button. Now a percent-weighing option will be shown at the page and you can see a nice live percent-bar which will indicate the amount in proportion to your goal! This is also very useful for manual fill-weighing by the way...
➕ Virtual Weights
Add a "virtual weight" to the scale - or remove it! This can be helpful for many things (not with an RS-232 scale in EXACT WEIGHT and not in the strict audit mode: there it is switched off and its bar is hidden, a virtual weight is no weighing result):
Check some values
You want to know how many calories would be in 3.5 oz of some food? Or how many THC is in some amount of dough? Easy! Just select a product from our food-database (or load your pre-saved THING) or insert the nutrition values from the package - and then add your amount as virtual weight to the scale!
Create your recipes
Now you also can use the (∑) Summing-Up / Logging functions! Like this you can create your recipes and check how healthy they are - without actualling weighing something! Just add the names and the "virtual weights" for each product to log the amounts together with all units and conversions! Now you also can use the 🧮 Servings Calculator, to calculate all portions to the details and to create your labels!
Or just use it
to remove some weight, because you forgot to tare... again... ;-)
Recipe 🧑🍳 Mode
The Recipe 🧑🍳 Mode
Save your recipes on the scale, weight all ingredients step by step and up- or downscale your recipes on the fly without any calculations needed! The scale will do just everything for you - just enter your desired weight or amount of portions - and the Recipe Mode will guide you through all ingredients one after next! And if you add too much of something - a click on the button can re-calculate all amounts on the fly! This amazing mode will not only save you a lots of work, it also will make your products more consitant and safe!
The recipe mode enables you to create recipes consisting of 2 or more ingredients including their amounts in proportion to the total weight. After selecting one of the recipes and inserting the desired weight to produce, the recipe mode will guide through the weighting process for all ingredients.
Creating Recipes
To create a new recipe, open the add-a-new-recipe page and simply add:
Recipes name and description
...to find it later again. Something like "My Great Infused 100MG cookies", for example. Also add a description for the recipe if you like (max. 2048 characters)
Portion size
Optionally you can add the size of a portion/serving in your selected weight unit (like Grams). If you do so, you later can directly insert the amounts of portions you want to make and not need to calculate the full weight of everything any more!
And then, for each ingredient:
A name
...like Butter, Sugar, Cannabis Oil etc...
...or 🔗 a THING of the scale: the selection below the name lists your THINGS, and choosing one gives the ingredient the name of that THING. An ingredient with the same name as a THING is connected with it (its name field turns green): the 🥗 nutrition values of the recipe come from that THING. Choose "no THING" to type an own name. If a name is only similar to a THING (like "Butter, salted" and "Butter"), a 🔗 Butter? button suggests it - one click connects it. The app knows the list of THINGS of each scale only while it runs (nothing is saved in your browser), from every THINGS list read from it (the THINGS menu, a backup, the recipe menu). If it was not read from this scale yet, the form reads it by itself when it opens (once per app start) - the form stays as it is. Without a connected scale the selections show the THINGS with values loaded so far.
...or 🔎 the food database: an ingredient without a THING gets a 🔎 food database button beside its THING selection. Search and click a food to link the ingredient with it (an ingredient without a name gets the name of the food - so you can also start a new recipe right from the database): its 🥗 nutrition values come from there. The link is remembered in your browser for all recipes (by the name of the ingredient), ✕ removes it again.
The amount
...you can enter in 3 different ways!
1.) Bakers Percentage: Here the main ingredient (like the flour) will be added with 100%, and all other ingredients in relation to that. An ingredient can also have more than 100%, like the water in a bread dough with 110% hydration.
2.) Total Percentage: Just add the percentage of the ingredients as total percentange of the recipe. (All ingredients together have to be 100% then!)
3.) Absolute Weight: Just add the total amounts in a weight unit like Gram. All ingredients have to be added in the same weight unit in that case and our program will translate that to percentages later.
A tolerance
If you want to add some tolerances for your weighing, here you go. Just add the tolerance in percent or keep it at 0! This tolerances have influence in when the weighing bar becomes "green" and the ingredient will be marked as "ready". For example, if you need to weigh 100.0g of Butter, and if you have added a tolerance of 2%, then the butter will be marked as "ok" between 98 and 102 grams!
A short info
...add some short instructions for every ingredient! (max. 125 chars)
Additionally
...you can add some info if the ingredient have to be added in the same- or in another bowl and about the action byself, like Add, Pour, Fill-Up, Garnish With etc...
The order
Every ingredient is shown as a card: its action (short, e.g. STIR), name and amount on top, below them the 🔗 THING selection with the 🔗 suggestion and the 🔎 food database beside it. ⚙ more opens the rest in the same card - the action moves there (in full, e.g. STIR IN) beside the amount type and tolerance, the bowl, the short instruction - and ▲ ▼ to move it one place up or down and 🗑 to remove it.
...and if the amount is the given amount (ready within its tolerance), a minimum (ready from the amount minus its tolerance on, more is ok too) or a maximum (ready as soon as something is added, but not more than the amount plus its tolerance).
Import Recipes
Import recipes from calculators or 3rd-party websites with 1 click!! For example, you can use the free 420BASE.net Edibles Recipe Calc-O-Lator to create your recipes, and then just export them with one click to your scale from there! Try it out, it could not be more easy!
🌐 IMPORT FROM A WEBSITE: almost all recipe websites (BBC Good Food, Cookpad, Chefkoch, food blogs with a recipe plugin...) have their recipe as data in the page for search engines (schema.org/Recipe, as JSON-LD or microdata). Open 🌐 in the recipe menu and paste the 🔗 link of the recipe: the app loads the page directly and reads that data. This works only with websites that allow other apps to load their pages (e.g. BBC Good Food). If a website blocks it, the dialog shows the other two ways as tabs (also with "Other ways" below the link field):
🔖 BOOKMARK (works on every website, 1 click): drag the button 🔖 UP↑SCALE RECIPE to the bookmarks bar of your browser once (on a phone: copy its code and paste it as the address of a new bookmark). Then open a recipe on any website and click that bookmark: it reads the recipe data on the page and opens the app in a new tab with the recipe. Connect your scale (and unlock it, if it has a password) and the recipe form opens. No copying, and nothing goes through a server: the recipe travels in the # part of the link, which browsers never send to a server. (The offline app can't be opened by a website, so the bookmark made there opens the online app.)
📋 PAGE SOURCE: put view-source: in front of the address of the recipe (or right-click > View page source), select all, copy, and paste it in the field - the recipe data alone (JSON-LD) works too.
Nothing goes through our server.
Name, servings, ingredients and the steps (into the description, max. 2048 characterswith the source address) are taken over, max. 50 ingredients. Recipes of the category cocktail/drink become drinks.
All amounts become grams: weights directly (also "1 cup (120 g)" and "2 x 400 g"), cups, spoons, ml, oz, lb, pinches... with the density of the ingredient (flour, sugar, butter, oil, honey, milk and more - unknown ones like water, marked ≈), eggs, onions, garlic cloves, lemons and some more by their usual weight. Fractions (½, 1 1/2) and ranges (2-3: the middle) work, in English, German and Spanish.
Lines without a weight ("salt to taste") get ⚠ and a minimum of 0.01 - set them in the form. The form opens with the amounts in your weight unit ("Input as": g, oz...), saving makes the baker's percentages. Every ingredient keeps its original line as instruction. The portion weight is the total weight divided by the servings.
Check everything in the form before you save it, like with every import.
The imported recipe opens in the form, so you can check and change it before you start (and save) it. Before that, the app reads the list of THINGS from the scale and connects the ingredients with your THINGS: an ingredient with the same name (upper/lower case, accents and spaces don't matter) gets connected and takes the exact name of the THING. Ingredients with a similar name get a 🔗 …? suggestion to connect them with one click. Above the form you see how many ingredients are connected. The same happens for cocktails imported from the cocktail database.
Edit Recipes ✏️
Change a recipe that is saved on the scale: click ALL RECIPES in the recipe menu (or ALL DRINKS in the cocktail mode) and ✏️ beside the recipe - or load it as usual and click ✏️ EDIT THIS RECIPE on its start page. The recipe opens in the form with everything it has: name, type, portion size, description and all ingredients with their amounts (as baker's percentages), tolerances, actions, bowls, minimum/maximum and instructions. Ingredients connected with a THING show it in their 🔗 selection - choose an other THING to connect the ingredient with it (it takes the name of that THING). Move or remove ingredients with ⚙ more ▲ ▼ 🗑, add new ones, change the input unit for the amounts if you like.
Overwrite
...saves the changes in the same place on the scale (the name may stay the same). Paused runs of this recipe get deleted, because their weights belong to the old ingredients.
Save as a new recipe
...keeps the old recipe and saves the changed one next to it (with a number like "Cookies #2" if the name is the same).
Don't save
...starts the changed recipe once ("START WITH THE CHANGES (NOT SAVED)"): the changes are not saved on the scale and get lost afterwards.
Weighing a Recipe
If you select one of your recipes (or start it directly from the input form) you get the page YOUR RECIPE: with its name. First you get asked about the total amount you want to produce. If you have indicated a portion size for your recipe you can insert the amount of desired portions now. Otherwise add the total amount you are going to make. The needed amounts for all ingredients will be shown - check if you have everything - and start the program. Below them you find the 🥗 nutrition values, ⎙ PORTIONS & LABELS and 💰 COSTS & MARGIN.
📦 I only have ...
Not enough of an ingredient at home? Click 📦 I ONLY HAVE ... below the total amount, insert how much you have of an ingredient (+ ONE MORE INGREDIENT for more of them) - and the app shows the biggest amount you can make with it, and which ingredient runs out first (for a recipe with a portion size: as many whole portions). ✓ USE IT takes it as the total amount (or the number of portions).
Step-By-Step
The program will start with the first ingredient and show you how much you need to weigh of it. If you add something to the scale, a check-weighing-percent-bar-indicator will show you how much it is in percent. If its too less you will get yellow screen, if its too much it will become red - and if you are within your tolerance you will see a green screen (and optionally get a short beeping sound!) Overtake the weight with a click on the button and jum to the next ingredient to repeat the process until you are ready!
Within the running program you also have a couple of options:
Progress Table
You will see all the ingredients of your recipe at any time, including info about how much of it you already have weighted, if its too much or too less - and how far away you are from your weighing goal.
Weighing Parts
You have to weigh 5 kg flour but your scale only have 3kg capacity? Or your pot is already nearly full and the next ingredient would exeed the maximum weight of your scale? No problem at all. Simply click the save-button with what you have on the scale already, get a new, empty bowl on the scale, hit the tare-button and keep on weighing! Things will get summed up automatically!
Jump
You can jump between the ingredients freely, no problem at all! Weight a part of the sugar, then add the flour, go back to add some more sugar - all easy!
Recalculation On-The-Fly
Do you have added too much oil accidentally?? And you can't get it out from the pot any more? No worries! Simply re-calculate the recipe with the click of one button! The needed extra amounts for all other ingredients will be calculated automatically based on the new amount of oil! Now just add whats needed and produce a bit more - but everything in the right proportions!
⏱ Timers
Times in the short instruction of an ingredient (like "stir for 3 minutes", "rest 1-2 h", "30 min ruhen lassen") become buttons below it: one click starts the timer (for a range like 20-25 min the shorter time). ⏱ TIMER starts an own one (in minutes). Running timers are shown in a bar at the bottom of the page - also while you weigh on or switch to another mode - with ✕ to cancel them. At the end the timer blinks, beeps for a minute (always, also with the sounds switched off 🔇), vibrates the phone and shows a notification (if you allowed it). The timers run in the app: closing the app ends them.
🧾 Lot numbers
Below the recipe: 🧾 LOT NUMBERS opens a field for every ingredient - type in the lot (batch) number of the package you use, or scan it with 📷 (QR code or barcode). They are kept until the recipe is done (also while it is paused), go into the weighing log and into the batch report - and the last 5 lot numbers of an ingredient are suggested next time. An ingredient that is a THING with a lot number starts with that lot (change it for this run only, the THING keeps its own).
🧾 Batch report
When a recipe is done, the weighing log gets the button 🧾 BATCH REPORT: a report of this batch with the start and end time, the scale and - for every ingredient - its lot number, the target amount (and tolerance), the weighed amount, the deviation in % and ✓ if it is within its tolerance, the totals, the portions and the nutrition values. Add a batch number (date and time are preset), who made it, notes and your company (the header of all reports, the same as in the lot report), then ⎙ PRINT it (or save it as PDF in the print dialog) or ⇩ SAVE it as an HTML file. Good for small producers who have to show what went into a batch.
🍞 Baker's tools
For bread, pizza and all doughs: the recipe menu has the box 🍞 BAKER'S TOOLS with two calculators and a journal - and the recipe pages link to them where they help.
🍞 Dough & hydration
The start page of a dough recipe (with flour or a preferment in it) shows 🍞 DOUGH & HYDRATION below the ingredients: every ingredient as baker's % of the total flour (also the flour in preferments), the total flour and liquids (in g, once you set the total amount) and the true hydration - and how much of the flour is prefermented. It uses the 💧 hydration of the THINGS with the same names as the ingredients; without it, the box tells you how to add it. The finished recipe log shows the same hydration of the dough.
🌡 DDT calculator (desired dough temperature)
The water temperature decides how warm the dough is after mixing - and how fast it ferments. Add your desired dough temperature, the flour and room temperature (and the preferment temperature, if you use one) and how you mix: the app shows the right water temperature with the standard formula of professional bakers: water = DDT × 3 (× 4 with a preferment) − flour − room − (preferment) − friction. The friction factor has presets for mixing by hand, a stand mixer and a spiral mixer (in °F like in most baking books: 6, 26, 22) - or measure your own: mix a dough, insert the water temperature you used and the dough temperature right after mixing, and CALCULATE AND SAVE. Temperatures in °C (standard) or °F. Your last inputs are kept in this browser. While running a recipe, the step of the water gets the button 🌡 WATER TEMPERATURE (DDT).
🫙 Starter feeding
Weigh the rest of your sourdough starter (⤓⚖ WEIGHT FROM SCALE (12.3 g) shows the live weight and takes it, ⚖ TARE next to it - in another mode the scale switches to the weighing mode first) or type it, choose the feed ratio starter : flour : water (presets 1:1:1, 1:2:2, 1:3:3, 1:5:5, 1:10:10, 1:5:2.5 or your own) - and get the flour and water to add, the fresh starter in total and its hydration. Need a certain amount? Add the fresh starter you need: only the needed part gets fed, the rest is shown as discard. ⏱ START THE TIMER starts a timer to the peak of the starter - preset with a rough estimate from the ratio and the room temperature (5 h for 1:1:1 at 24 °C), change it to what you know from your starter. It runs like the ⏱ recipe timers in the bar at the bottom.
📒 Starter journal
Next to 🫙 STARTER FEEDING: write down every feed of your sourdough starter - the ratio (1 : flour : water, preset with the one of the feeding), how much starter you kept (⤓⚖ WEIGHT FROM SCALE works here, too), the hours it took to the peak (optional), the room temperature and a note. The list shows all feeds, newest first (up to 365, ✕ deletes one), and the average peak time of your last feeds. Next feed in (hours) sets the ⏰ NEXT FEED: the dialog and the baker's tools box in the recipe menu count down to it, and with 48 hours or less it also runs as a ⏱ timer in the bar at the bottom (type e.g. 168 for a starter in the fridge). The app can only ring while it is open - if you come back later it shows the feed as overdue. The journal is saved in this browser only, not on the scale.
Most edible calculators stop at a number on a screen - and you still guess with spoons and old notes. Here your scale weighs every step of the batch, and the result does not stay a number: it becomes a THING on your scale. From then on you weigh your infusion directly in mg THC (and every other cannabinoid), your recipes show the mg per portion, the servings calculator splits a batch into portions of exactly 5 or 10 mg, your labels print the exact cannabinoid content and the ingredients, and the nutrition diary tracks your daily intake. One tool from the flower to the labeled edible - for home cooks who want reliable doses, and for small edible makers who have to document them.
Make infused butter, oil or tinctures with a known strength - and use them in all your recipes. Open 🌿 INFUSION CALCULATOR in the recipe menu or below the input of the 🧪 metric units (with the cannabis club settings of the CCLUB 🥦 MODE on: at the end of the 🌿 CANNABINOIDS box). Every weighing step has one line with ⤓⚖ WEIGHT FROM SCALE (12.3 g) - the live weight on the scale in the button (pale while it is not stable), one click takes it into the field - and ⚖ TARE, so you see and control what you weigh (in another mode the scale switches to the weighing mode first). Every app start begins a new batch: no cannabis chosen, no lab values (only the solvent settings are kept). The part 💾 SAVE AS THING is shown from the start, its buttons get usable as soon as the steps 1 to 4 are filled in (or only the 🔬 lab values of your infusion).
1. The cannabis
Choose what you infuse (nothing is chosen at the start): cannabis flower, trim, kief, hashish, aged hashish, rosin, distillate, extract - or other with an own name (e.g. "Bubble hash"). Choosing it prefills the THC row with rough average values (e.g. flower: THCA 18 %, THC 1 %) - always use the values of your lab label if you have them. Weigh it (or type its weight).
2. The lab label
Add the cannabinoids of the lab label, one row each: THC, CBD, CBG, CBN, CBC, THCV, CBDV or an own one (e.g. THCP) - with the % of its acid form (THCA, CBDA ...) and of the neutral form. + ONE MORE CANNABINOID adds a row, ✕ removes it. Total = neutral + acid × 0.877: decarbing turns THCA into THC, which is 12.3 % lighter (the same for CBDA → CBD ...). Lower the decarb factor if your decarb was not complete. Already decarboxylated cannabis (distillate, aged hashish ...): add its amounts directly as THC, CBD ... (the neutral form) - and both, if it is partly decarboxylated.
3. The solvent
Butter, ghee, coconut oil, MCT oil, olive oil, cocoa butter, glycerin, alcohol (tincture) or other (with an own name, e.g. "Hemp seed oil" - for the ingredients and the name of the THING: "Canna-Hemp seed oil, 4.11 mg/g") - each with a preset extraction efficiency (how much of the cannabinoids get into the solvent: rough values, 70-85 % for fats and alcohol, 50 % for glycerin). Change it if you know better, e.g. from a lab test of your butter. Weigh the solvent used too (before infusing): it is needed for the ingredients of your THING. For alcohol add its strength in % vol: the solvent gets it in its name ("Alcohol 96% vol"), the THING gets the unit Ethanol (the pure alcohol in it, on labels as % of the weight) and the spoons use the density of the mixture. Every solvent has its density (g/ml) preset from the food database of the app (butter 0.911, coconut oil 0.93, glycerin 1.20, alcohol by its % vol ...) - change it if you know better (↺ DENSITY OF THE SOLVENT takes the preset again). Amounts in: type or weigh the solvent and the infusion in your weight unit or in ml (the scale weight gets converted with the density). The density is used for the ml, the spoons and the 🥛 milliliter unit of the THING.
4. The strained infusion
Weigh the butter, oil or tincture after straining (the plant material keeps some of it): the 📊 RESULT shows the mg of every cannabinoid (and with more than one: the Total Cannabinoids) in the cannabis, in the infusion, per g, per teaspoon and per tablespoon - and the ingredients of the product (e.g. "Butter 91.7 %, Rosin 8.33 %", from the fat used and the cannabis).
🔬 Lab-tested infusion (optional)
Got your butter, oil or tincture tested by a lab? Add its value of every tested cannabinoid in mg/g or % (1 % = 10 mg/g; empty: the estimate). A lab value replaces the estimate of that cannabinoid: the RESULT marks it with 🔬, the THING, the name ("Cannabutter, 9.5 mg/g"), the dosing and the labels use it. With the cannabis and its label filled in too, the RESULT compares both and shows the real extraction efficiency of this batch (e.g. "THC: lab 9 mg/g, estimate 12.98 mg/g - real extraction efficiency of this batch: 49 %") - a good value for the efficiency of your next batches. With lab values of all cannabinoids, the steps 1 to 3 are optional: e.g. for a bought, tested oil, only the cannabinoids, their lab values and the weight are needed (the ingredients of the THING need the cannabis and the solvent used).
💾 Save as THING
Saves a THING on the scale with these units: every cannabinoid in mg per g (🧪 metric units), the Total Cannabinoids (with more than one) and the ingredients as weight units (the solvent and the cannabis in g per g - on its label as % of the weight and mg/g, e.g. "91.67 % (917 mg/g)") and a 🥛 Milliliter unit (weight <----> volume with the density: weigh it and see its ml, cups or spoons) - in this order: solvent, cannabis, (ethanol), milliliter, the cannabinoids, Total Cannabinoids. Then you weigh with it in the normal weighing mode directly in mg of every cannabinoid, and print labels with the exact cannabinoid content and the ingredients. It gets the name in the field above it: proposed like "Cannabutter, 12.3 mg/g" (it follows your values) - or type your own (↺ PROPOSED NAME brings the proposal back). An existing name asks whether to overwrite it or save it as a new THING. Use this name for the ingredient of your recipes: the recipe values, portions & labels, the logs and the diary then show the mg of THC per portion. ⚖ ONLY TO THE WEIGHING MODE shows the values with the weight without saving.
5. How much infusion for my recipe? (optional)
Plan your edible: add the THC you want per portion, the portions and the fat (butter, oil ...) your recipe needs in total. The app tells you how much of your finished infusion (this batch) goes into the recipe - and how much plain, not infused fat fills up the rest of its fat (e.g. "14.6 g of your finished infusion go into the recipe + 85.4 g plain butter"). Without a wanted THC: the THC per portion if all the fat of the recipe is your infusion.
⚠ Only an estimate: the real strength depends on the flower, the decarb and the infusion! For a known strength, get your infusion tested by a lab and add its values. ⚠
🥗 Nutrition values of your recipes
When you start a recipe, the page with the total amount also shows 🥗 NUTRITION VALUES per 100 g, per portion (if the recipe has a portion size) and for the whole amount you are going to make - calculated from the shares of the ingredients. The values come from your THINGS: an ingredient gets the values of the THING with the same name (upper/lower case, accents and spaces don't matter: "Flour type 405" = "flour type 405"). The scale can save THINGS whose names differ only in upper/lower case (like "TestThing" and "Testthing") - then an ingredient takes the one with exactly its spelling.
Where the app knows your THINGS from
Straight from the scale - and only while the app runs: nothing is saved in your browser, closing the app forgets them. When you open the recipe menu, the app reads the values of all THINGS it doesn't know yet by itself (the scale goes to the weighing mode for a moment, then back to the recipe menu) - the first time all of them, later only new or changed ones. Every THING you load on the page (weighing or counting mode) is added too, and so are all THINGS of a THINGS backup or a restore. Every new THINGS list read from the scale refreshes them: THINGS that are gone are dropped, and a THING you saved again gets read again. The recipe start page does the same for its own ingredients (e.g. a recipe loaded from another device or after the app was closed): it reads just the THINGS of these ingredients and comes back to the start page. 📥 LOAD VALUES OF ALL THINGS in the recipe menu reads all of them again.
No THING with this name?
Every ingredient is listed below the values with where its values come from (✓ THING, 🔎 food database or ✕ no values). This page only shows them: to link an ingredient with the built-in food database, click ✏️ EDIT THIS RECIPE (see Edit Recipes) and use 🔎 food database beside the THING selection of the ingredient (see the recipe form) - the link is remembered for all recipes. Ingredients without values are named in red together with their share of the recipe: the values are too low then.
Raw or processed?
These are the values of the raw ingredients. Cooking or baking changes the weight (water evaporates, rice and pasta take up water) - for the values of the processed food use 🍲 batch processing - or insert the loss in ⎙ PORTIONS & LABELS.
Save it as a THING
💾 SAVE AS THING in the block "SAVE THIS RECIPE AS THING" below the list of ingredients saves the values per g of the recipe (like in the table, raw) as a new THING with the name of the recipe - e.g. to weigh a portion of the dough later, or to use the recipe as an ingredient of another recipe. It asks for the name first (the name of the recipe is preset), then the scale goes to the weighing mode and saves it.
The recipe in the log
When a recipe is done (or ended), everything you have weighed becomes a weighing log - one line per ingredient with its values. Below the totals you see the number of portions and what one portion contains. From there you can add it to the 📒 diary, use the 🧮 servings calculator or weigh the pot after cooking or baking (🍲 PROCESSED). A paused recipe is logged when you finish it.
⎙ Portions & labels of your recipes
Below the 🥗 nutrition values of the recipe page, the block ⎙ PORTIONS & LABELS works like the 🧮 servings calculator of the log - but with the total amount you insert above, before you weigh anything. The result is shown right away with every change:
Amounts for / servings of
Insert the number of servings - or choose your weight unit to insert the size of one serving (e.g. 250 g), or a unit of the recipe (e.g. 500 kcal per serving). For a recipe with a portion size, the number of portions to make is preset.
Loss while processing
Cooking and baking make food lose water. Check the box and insert the loss in % of the raw weight (ℹ️ explains it): this amount of water is taken out of the recipe before the servings, the ingredients, the calories and all other values are calculated (e.g. 1000 g dough, 15 % loss = 850 g bread). Don't know it? Weigh the pot before and after the next time, or use 🍲 batch processing.
The result
Like in the log: the total weight (and after processing), the number of servings, the weight of one serving, what one serving is equal to (all units of the recipe, like kcal, sugar or the price) and what one serving contains (every ingredient with its exact amount, biggest first).
Label for one portion
🛠 PREP, ⇩ SAVE and ⎙ PRINT make a label for one calculated portion - with its weight as net weight, all units of the recipe and the EU nutrition table (checked from the start). It is its own label with its own setup and size (saved in your browser, used for all recipes) and works like the 🏷 LABELS with live values: picture, own texts with placeholders, order, highlighting, size. The first time it takes the size of the weighing label (e.g. for your label printer). Additionally there is the line Ingredients: all ingredients of the recipe, biggest amount first, broken into lines between the words. The ⚠️ allergens in it are written in capitals. Change the text in 🛠 PREP if you like - it is kept until you load another recipe. With a label printer set up, ⎙ PRINT prints it right away.
💰 Costs & margin of your recipes
Below the portions, the recipe page shows 💰 COSTS & MARGIN. Like the 🥗 nutrition values, every ingredient takes the 💰 price unit (price per g) of its THING with the same name, times its weight in the batch: "✓ 1.20 €/kg · 600 g = 0.72 €". An ingredient without a price shows ✕ no price and is named in red with its share of the recipe (the costs are too low then) - give its THING a price unit, e.g. 0.0012 € per g. If the THINGS have prices in more than one currency, you choose the currency (each ingredient uses its price unit with that symbol).
Typed in per recipe
Ingredients total (instead of the sum - e.g. from your invoice; empty: the sum), packaging per batch (jars, bags, labels), labour per batch, the portions (empty: the total amount / portion size of the recipe) and your selling price per portion. The app keeps them per recipe in this browser.
The result
The costs of the batch (ingredients + packaging + labour), per portion and per kg, and with a selling price the profit per portion and per batch and the margin (profit in % of the selling price). A selling price below the costs is shown as a loss. Without a total amount, the card shows the price per kg of the mix.
🏷 QR Code Labels for Recipes
Like the labels of THINGS: as soon as a recipe saved on the scale is loaded, its QR code is shown left and right of its name in the title bar (on its start page and while you weigh it) - and the start page ends with the block 🏷 QR CODE LABEL (below ⎙ PORTIONS & LABELS) with a short info and its button. Click one of them to make a label for your recipe binder, the box of a pre-mix or the shelf: the QR code, and optionally the name, the portion size, the ingredients (biggest amount first, ⚠️ allergens in capitals), the EU nutrition table per 100 g (if all ingredients have their values) and the description. Size, ⇩ download and ⎙ print work like for THINGS (also with a label printer).
Open a recipe with the camera:📷 SCAN A RECIPE LABEL in the recipe menu - or any other of our scanners (see every label works in every scanner). The app loads the list of recipes from the scale and opens the start page of the scanned recipe. The QR code contains only the name (e.g. "RECIPE:Basic Cookies"), so the recipe has to be saved on the connected scale. The same spelling is taken first, otherwise the same name with other upper/lower case. If the scale shows another page (e.g. the start page of an other recipe), it goes to the weighing mode for a moment first.
⚠️ Allergens
The 14 allergens of the EU food information regulation (1169/2011) - gluten (cereals), crustaceans, egg, fish, peanuts, soy, milk, nuts, celery, mustard, sesame, sulphites, lupin and molluscs - have to stand out in the list of ingredients. The app finds them by the names of your ingredients (in English, German and Spanish) and writes them in capitals: the word that names the allergen itself in capitals ("WHEAT flour", "WEIZENmehl", "HAZELNUTS"), and for other foods the allergen in brackets behind them ("Butter (MILK)", "Parmesan (MILK)", "Flour (GLUTEN)"). All texts of a label are bold, so capitals are what makes them stand out. Things like "coconut milk", "peanut butter" or "gluten-free flour" are not marked as milk or gluten.
The ingredients of a recipe on a label (⎙ PORTIONS & LABELS and 📥 FROM A RECIPE OF THE SCALE in the 🏷 LABELS) are marked right away.
⚠️ MARK ALLERGENS below the ingredients text of a label marks a text you typed in, and shows all allergens found in it.
The list of ingredients below the 🥗 nutrition values shows the allergens of every ingredient (⚠️ MILK).
Please check it yourself: the app can only guess by the names - it doesn't know what is inside a product (e.g. "Chocolate" with milk, or traces of nuts). You are responsible for the labels you print.
Pause ⏸️ Recipes
You can pause a weighing process at any time in order to repeat it later. For example if you have parts which should react over some hours before adding the next components to the mix. Simply click on the pause-button, optionally add a name, and thats it. Now you can select the paused recipe from the list of all your recipes.
You can pause
up to 50 weighing-processes at the same time! This can be also different preparations from the same recipe (bowl 1, bowl 2, etc...) Add a name for every paused recipe to stay organized.
Repeat later
You can repeat the weighing process at any time, the scale will remember whats already in your pot! Just select the paused recipe from the list.
Pause again
In the moment you repeat a paused recipe, the paused version will get deleted from the scale automatically. Simply press the pause-button again if you want to store the updated version!
All 50 used?
Then the recipe will not be paused (and keeps on running) - load and finish one of your paused recipes first.
Save up to 250 recipes!
You are able to save up to 250 recipes including max. 50 ingredients each - directly on the scale! Like that you can use your recipes from each connected device without the need of any online-accounts or logins somewhere! Just plug your scale, connect with a mobile or notebook, load your recipe list from the scale and start working!
The recipe list (ALL RECIPES in the recipe menu, ALL DRINKS in the cocktail mode) shows one recipe per line with its kind (🍽️ food, 🍸 drink, 🧪 solution), its paused versions (⏸️) below the name and ⤓ (load), ✏️ (edit) and ✕ (delete, asks first) at the right - a click on the name does what the list was opened for. On top: the kinds to show and a filter by name. The lines appear while the scale is still sending them: with many recipes you don't have to wait - click one at any time, the rest of the list stops loading (↻ LOAD ALL loads it again).
Names are unique on the scale: if you save a second recipe with a name that is already used, it gets a number behind its name, like "Cookies #2", "Cookies #3" and so on. Names are max. 30 characters long, so a long name gets shortened for its number, like "Very Long Named Thing Re... #2". After saving, the start page shows the name the recipe was saved with. If all 250 slots are used, the recipe is not saved (you can still run it once) - delete a recipe first if you want to save it.
Several devices on one scale: if more than one device is connected to the same scale, only the device where you opened the list (or pressed SEND for a new recipe) talks to the scale while the recipes are transferred - the others only watch. If a recipe is running on the scale that is not loaded in the app (e.g. after an app restart, or started on an other device), the app shows a ⟳ LOAD THE RUNNING RECIPE button instead of loading it automatically - so the other device is not interrupted.
💾 Backup: below the recipe list (ALL RECIPES) you find ⬇ BACKUP and ⬆ RESTORE. BACKUP reads all recipes (with ingredients, instructions and description) from the scale and downloads them as one file. RESTORE saves the recipes of such a file on this scale - or on an other one. You choose which recipes, and what happens if a recipe with the same name is already there: skip it, save it again (it gets a number like "Cookies #2") or replace it. Paused recipes are not part of the backup. With a second scale connected you also find ⇄ SYNC there: see sync between scales.
⇄ Sync between scales: copy THINGS, RECIPES or MOLDS directly from one scale to an other one - without a file. Connect your scale, add the other one with ADD MORE 🤝 SCALES, and open the THINGS list, the recipe list (LOAD or DELETE) or the mold list: next to BACKUP and RESTORE you find ⇄ SYNC.
Other scale
...if more than one additional scale is connected, choose the one to sync with.
Direction
Copy from this scale to the other one, from the other one to this one - or both ways: then only the items missing on the other scale get copied (in both directions), nothing gets replaced. Afterwards both scales have everything.
Same name already there
(one direction only) skip it, save it again (with a number like "Cookies #2") or replace it - like a restore. Molds are compared by their values: skip or save again.
Lots
Also the lots of the lot store (checked in the THINGS sync): the 🧾 lots of the THINGS you choose go with them - like a backup.
THINGS and RECIPES together
The ingredients of recipes are connected with THINGS by their names. Check sync also the RECIPES (in the THINGS sync) or sync also the THINGS (in the recipe sync) to copy both: the THINGS first.
How it works
⇄ READ FROM THE SCALES reads the items of both scales (one after the other), then you choose which ones to copy. While the app talks to the other scale, its weight is not shown and it shows its transfer pages - afterwards it goes back to helping your main scale. Keep the device close to both scales; CANCEL stops it at any time.
Factory 🏭 Mode
⭐ PRO: the factory mode - gray in the free version; try it with the free trial (free and PRO).
The Factory 🏭 Mode
This mode allows you to fill molds step by step, just like on a conveyor belt. Perfect if you need to fill up many cavities/bags with always the same amount of something.
The factory-mode allows you to fill molds, one after the other, always with the same amount of filling, while counting, taring and logging everything automatically for you!
Fill molds step by step
First, define your molds with the amount of cavities, the amount of filling for each cavity as like as a range for over- and under-filling.
Now the scale will ask you to add the first container (or mold) and fill to the first cavity. For single bags/jars/containers (1 cavity) the program talks about "containers", for molds with multiple cavities about "molds". The scale will overtake the weight and get tared automatically if the filling is in the perfect range (and has been stable for at least 0.6 seconds, also with a shorter auto overtake time: so the tare for the next cavity is exact) - or just click the button manually (it counts at once).
The scale detects automatically when you put a container on it or take a full one away (also if you swap the full container directly with an empty one). Containers need to weigh a bit more than 5% of the filling (min. 0.5 g on the 420, 0.05 g on the 710, max. 2.5 g) to be detected - for lighter ones just press the "[Yes, I did!!!]" button.
Colors on the display and (optionally) sounds will indicate if you are close or perfect to your goal and the percentage-indication-bar will make filling easy for you.
The program will tell you also how much over- or under-filling you have in each cavity, how many molds and cavities you have filled altogether - and the averages for everything, as like as the total amount filled in altogether!
🛑 Predictive cut-off for filling machines
Fill with a machine - a valve, a pump or an auger driven by an ESP32? The scale can stop it via ESP-NOW. A machine never stops at once: the valve needs a moment to close and material is still falling when the stop comes. So the scale sends the stop early: as soon as weight + flow rate × lag reaches the filling of the cavity/container (the industrial "in-flight" or "dribble" compensation).
Switch it on in the running program below the auto overtake time: 🛑 Cut-off (filling machine): ON. ESP-NOW has to be on in the scale settings.
Lag: the time from the stop signal until the last material is on the scale (start with 0.3 s). The flow rate is measured by the scale all the time (over the last 0.4 seconds). While the cut-off is on, the scale keeps its filters fast (a new weight every 0.125 seconds), also if slower filters are set in the settings.
Learn the lag (on by default): after every stop the scale waits until the weight is stable. Too much? It stops earlier next time - too less? Later. Each filling corrects half of the error, so single outliers don't throw it off. A learned lag is saved at the end of the program, the settings at once.
Stopped too early (below the PERFECT range)? The machine gets the signal to fill again (top up), until the cut-off comes again.
Your machine gets fill_run (fill now), fill_stop (stop now - sent at once in an extra packet), a stop number, the flow rate and the lag. The MasterBlaster example sketch switches a valve or relay with them (set FILL_VALVE_PIN) - and closes it if no data comes from the scale for 0.5 seconds. Auto overtake and tare work as before: after the count the next cavity/container starts and fill_run gets true again (moving to the next cavity is the job of your machine).
Setup your Molds
Press "DEFINE A NEW CONTAINER" and setup your containers with the
Container type
Choose "Single Bags / Jars / Containers" (default) if you want to fill single bags, jars or cups. This is useful if you want to fill bags/cups with different weights with always the same amount! After every correct filling the scale will ask you to remove the cup/bag and will tare the next one automatically.
Choose "Containers/Molds with multiple cavities" if each container has more than one cavity, for example a chocolate mold.
Amount of cavities per mold
Only for containers/molds with multiple cavities: here you define the amount of "cavities" per "mold". For example for the 36 single bonbons in a chocolate mold.
Filling per bag/jar/container or per cavity
How much have to be filled in each of the bags/jars/cups or cavities? Add the amount here...
MG per cavity (optional)
This is an optional setting for edible makers. Just add the amount of your active ingredients in milligram-per-weightunit. The scale now will show you the averages per mold and per cavity - also the total amounts will get tracked, too. Like that you see at once if your portions are even (weight). The scale can only weigh - mix your batch well, so that even portions also mean even doses.
PERFECT Range
The "Perfect range" defines your weighing window. Weighings in this range will be marked green at the screen and a (optional) sound will indicate that you are perfect now. The scale will tare automatically now to get ready for the next filling (the time is adjustable within the running program later) - or press the button to start filling the next cavity.
If you are looking for an exact filling, just add 0 (zero) and 0 (zero) to the minimum- and maximum settings. In that case only a perfect filling will be marked as perfect and trigger the tare.
If you have some leeway with your fillings, add a little bigger range here. For example, add 0% for the under-filling and 3% for the overfilling to ensure that every bag have at least the minimum- but a little higher maximum amount.
OK Range
The "OK range" will work similar to the perfect one - but the scale NOT will not get tared automatically! Instead it only will indicate that you are close to your perfect weight, optionally also with a sound.
Save / Delete molds
You can save up to 42 different containers/molds directly on the scale! Simply check the box while defining a new one. Now you just can select them from your list to start filling them again. If all 42 places are used, a new one will not be saved (the overview will tell you) - delete an old one first.
💾 Backup: below the mold list (select or delete) you find ⬇ BACKUP and ⬆ RESTORE. BACKUP downloads all saved molds as one file, RESTORE saves the molds of such a file on this scale - or on an other one. Molds that are already there (same values) are skipped, unless you choose to save them again. The auto overtake time is part of the backup. Copy molds directly between two connected scales with ⇄ SYNC: see sync between scales.
Counting & Logging
Within the program the scale will give you info about the amount of already filled molds and cavities as like as the average amount of filling for each cavity and mold. Like that you get a nice overview of how exact you was working at the end, as like as a sum of all used product, milligrams etc...
When you end the program, the totals (filled containers/molds and cavities, total weight, averages and milligrams) are written to a new logfile. Everything you log afterwards goes to a new logfile again.
Coffee ☕ Modes
The Coffee ☕ Modes
Whether you prefer espresso or filter coffee, the coffee-modes allows you to perfect your machine or technique. Use the espresso-timer to monitor the flow-rate of your machine or the pour-over-mode to brew your coffee with the ideal brew-rate every time.
Permanent Setup: The scale will remember your last amounts of coffee, your desired brew-rates and your other settings! No need to calculate everything new every time, just place your stuff on the scale, weight your coffee and there you go!
Alarm options will notify you after a given time, if your coffee has reached a desired coffee:water-ratio, after the coffee-machine has finished or if a given amount of coffee has been extracted!
Automatic log-file: Each coffee's data will be saved in the log-file. Checkout the extraction times, flowrates, brew-ratio etc. here in order to optimize your machine or technique!
Espresso ☕ Timer
Monitor your espresso machine with the Espresso Timer, even if your scale does not fit under it! Optional automatic-options can detect cups, the first drops of coffee and the end of the program - just place your cup on the scale, start the coffeemachine and the rest will work automatically!
Coffee weighting
Weight your coffee directly into the portafilter - our measure what you are taking out of the bag.
Place the scale
If your scale fits, place it directly below the coffeemaker to monitor the live flow of your coffee.
External checkmode
If your scale does not fit, the external checkmode enables you to monitor your machine anyway!
Tare your cup
A click on the button will tare the cup's weight. The optional Auto-Tare option will do this automatically. Just place your cup on the scale and it will switch to the coffee-detection.
Coffee detection
Press a button if the extraction starts - or let the scale detect the first drops automatically with the Auto-Start option.
Flow-rate
You will see the live flow-rate of your coffeemaker now, also how long the extraction is running - and the actual amount of coffee made. If the coffee is ready, press the button - or let the scale detect it automatically with the Auto-Stop option.
Machine timer
With the Decent Scale protocol on, a machine or app (e.g. GaggiMate, the DE1) starts and stops the timer: the scale switches to the Espresso Timer by itself, and the shot is logged.
🎯 Target yield (early stop)
Set your target yield (e.g. 36 g - the app also shows it as a ratio to your coffee amount) and switch on Early stop. The scale gives STOP NOW a little before the target: when the weight plus flow rate × lag reaches it - the same maths as the predictive cut-off of the factory mode. So the coffee that still comes after the stop (pump, dripping, the delay of the scale) ends up right at your target.
STOP NOW goes to the app (beep), to a Half Decent Scale with UPCENT↑420 (beep) and via ESP-NOW to a pump relay (fill_stop, see the MasterBlaster example sketch): the relay lets the pump run with the cup on the scale and during the shot, and stops it at STOP NOW.
Learn the lag: after every shot the scale compares the final weight with the target and corrects the lag by half of the difference. You can also set the lag by hand (0 - 4 seconds, start: 1 second).
The shot ends by itself when everything is in the cup (stable weight, max. 8 seconds after the stop); its time ends with the stop.
Machines with the Decent Scale protocol (DE1, GaggiMate...): the protocol has no stop command - set the target weight in the machine, it stops by itself. A shot started by such a machine is not learned.
Not in the external checkmode (no live weight there).
Pourover ☕ Mode
If you prefer filter coffee - make a perfect brew every time with our guided Pourover Mode! The scale will ask you to weight your hardware, it will help you with the right amount of coffee and guide you through the brewing process.
Weight the Hardware
At first the scale ask you to add your empty cup or mug, after that it will ask you to add your pourover-cone with the filter on top of it.
Coffee Calculator
If you want, calculate the needed amount of coffee with the help of a given brew-rate (coffee:water ratio) and the amount of coffee you want to brew.
Automatic calculations
Or just weight the coffee you are adding to the filter and the scale will calculate the right amounts of water for you automatically!
Blooming mode
The scale will ask you to saturate the coffee now, the needed amount of water for that will be calculated automatically for you!
Start pouring water
Now you can pour the water! The scale will ask you for the right amount of it - no way to make any mistakes here!
Summaries and Statistics
While pouring you can see predicted values of flow- and brewing rates - and if you lift the filter-cone you will see the real values for the coffee already extracted in your cup! Stop the mode at any time with a click on the button if the coffee has reached the desired brew-rate or amount!
Cocktail 🍹 Mode
The Cocktail 🍹 Mode
If you like to drink a cocktail from time to time but you can't remember the ingredients and amounts, or if you are a bartender but your stuff can't remember anything - the cocktail-mode gets you sorted!
The cocktail mode is not only great if you just want to make a perfect cocktail from time to time - but also if you run a bar! Just add your own recipes directly to the scale and your staff is able to replicate them without any special schooling!
Create or Import Cocktails
Like at the Recipe Mode, you are able to create your own recipes. Or search and import them directly from cocktail databases! For more detailed info about how to create a recipe, check out the Recipe Mode, its the same, just for food instead of drinks!
Create Own Recipes
Add up to 250 own cocktail recipes, including description and maximum 50 ingredients for each recipe! For each ingredient you also can add a short description, as like as info about the amounts to add... Simply add the total amounts here, add a serving-weight - and in future you simply can upscale your recipe without any calculations needed!
Search & Import Recipes
Search and browse public cocktail-databases and overtake the recipe with a click! You are able to edit all amounts and descriptions as you like - and to save the recipe after directly on your scale. Or just run it once! The ingredients get connected with your THINGS by their names.
Edit Saved Drinks
Change your saved drinks any time with EDIT A DRINK - see Edit Recipes.
Cocktail Database Included
There are already 600+ cocktails and drinks from all around the world select-able!!
Run the Cocktail Mode
The Cocktail Mode will guide you through all the cocktail making process! Step by step it will ask you to add the ingredients, and its check-weighting-options will help you to fill the exact amounts!
Upscale easily
Just add the amount of cocktail you want to make - or the amount of servings/glasses - and there you go! No calculations needed!
Live corrections
You have poured in much of something accidentally? Just hit the button and all other ingredients will be re-calculated. You will have more cocktail altogether then - but it will be perfect!
Exact proportions
Even if you pour the first ingredient roughly by eye - just hit the re-calculation button - and add the rest of the ingredients in the right proportions!
Check-Weigh & Check-Count ✅ Modes
The Check-Weighing ✅ Modes
Use one of the checkweighing modes if you want to control if the weight of things you are adding (or removing!) from the scale is within a given range. There are 5 different checkweigh- and checkcount modes included!
Here you can check if things have the right weight or amount - or you can use this modes to weigh what you get off from the scale instead of what you put on! (for example to fill bags without the need to weigh each single one every single time.) The checkweighing-programs will indicate if the amount is perfect (or in an optional OK-range) with colors and - if you like - with a sound. A percent-bar also will show how close you are - very useful if you are using this option for a manual fill-weighing! Also the scale will tare, count and log for you automatically in the checkweighing modes!
Simple (Zero) Check Weighing
Simple checkweighing. Add things to the scale, and it will show you if its (and how much) too much or too less. Then you can remove the things again manually.
Positive- or Negative Checkweighing
Compare the weighing item with specified limit values. (the target weight and optionally a range for OK and PERFECT). You can set the PERFECT range either in percent or directly as weight ("PERFECT from X up to Y g" below the setpoint) - the other values will be calculated for you. If this limits are exceeded or undershot, it will be highlighted and shown on the display. Positive checkweighing determines whether the weight of the added material is within the target range. Similarly, negative checkweighing checks the weight of the removed material.
Positive- or Negative Checkcounting
In check counting, it is not the weight but the number of pieces that is compared with limit values. You can add the amount of pieces as like as the weight for one of it - and the scale will do the rest! The PERFECT range can be set in percent or as amount of pieces here too ("PERFECT from X up to Y x" below the setpoint). For sure we will show you not only the difference in percent, but also in pieces and as weight!
Options for the extended modes:
Auto-Overtake: Perfect weights can be overtaken/counted automatically after a given amount of time or with a click on the button. The automatic count waits until the weight has been stable for at least 0.6 seconds (also with a shorter time): a heavy item swings a moment after you put it on, and the tare after the count must not take that swing - otherwise the next zero would be off. The button counts at once.
After counting: choose how you work (positive check-weighing):
Tare - stack the next pack on top (default): the scale tares after every count, the next pack goes on top of the counted ones.
Single packs - zero when taken off: put every pack on alone. After the count the app shows "Counted - take it off!", and the scale zeroes itself as soon as it is empty and stable again. Until then the same pack can not be counted twice (no auto overtake, no button). A manual TARE ends the waiting.
Counting / Averaging: If counted per button or automatic option, a total weight as like as the average amounts of everything will be shown automatically!
℮ button: next to the setpoint - enter the nominal quantity of your ℮ prepackages and the setpoint and ranges are set for you (see ℮ prepackage control). Every counted pack goes into the 📊 statistics.
Fill 💯 Weighing
There is no extra fillweighing-mode, but we have different fillweighing options included in the other modes. All this options will show you a percentage-bar as indication for the right weight - with an extra scale for the last 10% - to allow exact filling even with bigger amounts!
You can use the simple percent-weighing options in the weighing- and counting modes. Here you can add your goal in units, in a weighing unit - or even if every other custom unit like dollars or calories with the help of the Fill-Weighing-Goals option!
Additionally you can use one of the Check-Weighing modes to fillweigh, here you can setup also ranges and get indications and automatic counting/logging! Also the Factory-Mode is a good option for fillweighing!
📊 Statistics & ℮ Prepackage Control
How exact do you fill? The statistics show it for every series of values - with one page for all modes. Open it with 📊 STATISTICS & ℮ in the row at the bottom of the app (it opens the series of the mode you are in), with the 📊 button of the weighing log, in the factory mode below the totals or in the running sorting program. At the top you choose the series:
Check-weighing: every pack that gets counted (by button or auto overtake) - its weight, in check counting its pieces. With the PERFECT and OK range of your setup.
Factory mode: every filled cavity or container, with the ranges of the mold.
Sorting: every counted item, with the limits of the categories (undo and reset take the values back).
Weighing- and counting logs: every logged line (∑) - in the counting log the pieces of every line.
You see the number of values (n), the mean, the standard deviation (and in % of the mean), min/max and the range, the deviation of the mean from the target and how many values were in PERFECT, in OK and outside. With ranges you also get Cp and Cpk: how well your spread fits into the range (Cp) and how well it is centered too (Cpk) - from 1.33 green, from 1.0 orange, below red. The run chart shows every value in its order (green/orange/red like the ranges) - so you see a trend, e.g. when a filling machine drifts. The histogram shows how the values spread. ⬇ CSV downloads all values (in gram) as a spreadsheet file.
Check-weighing, factory and sorting values are collected by the scale: it keeps the last 2000 values of the running program (1000 while ESP-NOW is switched on) until the next program or a restart, and sends every new value to all connected apps at once. An app that reconnects - or joins a running program later, e.g. a second phone - gets all of them from the scale. With a firmware built before October 18, 2026 the app records them itself while it is connected. The weighing- and counting logs are kept in the app. Nothing is saved for later - download the CSV if you need the values.
℮ Prepackage control (EU 76/211/EEC)
⭐ PRO: the ℮ prepackage control - gray in the free version; try it with the free trial (free and PRO).
℮ only with a verified scale: packs you sell with the ℮ mark have to be filled and checked on a verified (legal for trade) scale. The 420 and 710 are not verified - use them to plan and to practise. For your ℮ packs: your verified scale + our 232 UP↑SCALER = ℮ control, labels and statistics.
Packs with the ℮ mark (and most prepackages in the EU, sold with a fixed nominal quantity like "500 g") have to follow 3 rules - the packer is responsible for them:
The mean of the net contents of a batch must be at least the nominal quantity (Qn).
Only a few packs - max. 2.5 % - may contain less than T1 = Qn - TNE.
No pack may contain less than T2 = Qn - 2 × TNE.
The tolerable negative error (TNE) comes from the table of the directive: 9 % for 5 - 50 g, 4.5 g for 50 - 100 g, 4.5 % for 100 - 200 g, 9 g for 200 - 300 g, 3 % for 300 - 500 g, 15 g for 500 g - 1 kg, 1.5 % for 1 - 10 kg, 150 g for 10 - 15 kg and 1 % for 15 - 50 kg (the % values rounded up to 0.1 g). Example: 500 g honey - TNE 15 g, T1 485 g, T2 470 g.
Check "Check the series as ℮ prepackages" on the statistics page, enter the nominal quantity and - if you did not tare the packaging - the packaging weight (it is subtracted from every value). You see the TNE, T1 and T2 (also as lines in the charts, packs below T1 in red) and the 3 rules with ✓ or ✗. The settings are saved in your browser and used for all weight series.
Fill with the check-weighing: in the check-weighing setup, the ℮ button next to the setpoint asks for the nominal quantity and sets up a positive check-weighing for you: PERFECT from Qn up to Qn + TNE, OK from T1 up to Qn + 2 × TNE - so every pack below T1 is red. It also sets After counting to Single packs - zero when taken off (you can change it in the setup). Every pack you count then goes into the statistics with the ℮ rules. Only PERFECT packs are counted automatically: count the others (too light or too heavy) with OVERTAKE 🆗 NOW, or the statistics miss exactly the packs that matter.
Please note: this helps you to check your own packs, it is not a legal certificate. Inspectors check samples of a batch (e.g. 50 packs) and also take the spread into account - so fill with a safe distance to Qn. For selling prepackages your scale has to be legal for trade (a 232 UP↑SCALER on your verified scale works with all of this). Check the rules of your country.
📋 Lot check with sample plan & lot report
Check a whole lot like the inspectors do. In the ℮ box, choose the rules: EU ℮ packs (76/211/EEC) - or Germany: FPackV for all packs with a nominal quantity, also without ℮ (max. 2 % of the packs below T1, the table ends at 10 kg). Enter the lot size (all packs of one filling: max. one hour of a filling line, otherwise max. 10 000 packs) and if you open the packs (destructive test). The app shows the sample plan of FPackV annex 3 (the single sampling plans, the same as in 76/211/EEC): how many packs n you weigh, how many may be below T1 (c) and from how many the lot is rejected (d) - e.g. 50/3/4 for 100 - 500 packs, 80/5/6 up to 3200, 125/7/8 up to 10 000 (160/8/9 above in Germany); destructive 5 - 30 packs, ℮ packs 20. Lots under 100 (non-destructive) are checked pack by pack.
Take the sample at random from the lot and weigh it - the first n values of the series are the sample. The verdict checks the 3 rules of the sample plan: mean + k × s ≥ Qn (the mean criterion: k comes from the plan, s is the standard deviation of the sample - so a big spread needs a higher mean), the packs below T1 (max. c) and none below T2. You see ✓ LOT ACCEPTED, ✗ LOT REJECTED (also before the sample is complete, as soon as it can not pass anymore) or how many packs are still missing.
Drained weight of handmade packs: with the German rules you can check "Drained weight of a handmade pack or one with naturally grown food" - § 10 (3) FPackV: for packs labelled with a drained weight that are mostly made by hand or contain naturally grown food, no pack may be below Qn - 3 × TNE (instead of 2 × TNE). It only covers the drained weight of these packs - all other rules stay the same.
Lot report: add your company (several lines: name, address... - it is the header of all reports: lot report, batch report and tracking report), the product and the lot number, then ⎙ PRINT LOT REPORT (or save it as PDF in the print dialog) or ⇩ SAVE LOT REPORT as an HTML file. It holds the nominal quantity, the rules, TNE, T1 and T2, the lot size, the sample plan, the scale with its firmware and calibration date, the results with ✓/✕, the verdict, every value of the sample (packs below T1 or T2 marked) and a line for the signature. Weighed with a 420 or 710, the report and the app say that it is not a verified scale. Weighed with a 232, the report states the mode in a boxed line - "Weighed on a verified scale, in listen-only plus exact-weight mode" when both are on (otherwise which of them were off). The app learns the two settings when you open the RS232 scale settings once after connecting; until then it asks you to do that and the report leaves the line out. The line shows the settings at the time of the report. The settings are saved in your browser. This is your own check - not an official certificate.
Sorting 📦 Mode
⭐ PRO: the sorting mode - gray in the free version; try it with the free trial (free and PRO).
The Sorting 📦 Mode
Sort things by weight into your own categories - for example eggs into S, M, L and XL! Put one thing after the next on the scale: the scale sorts each of them into its category, counts it and sums up the weights, and gets ready for the next one as soon as you take it away.
The sorting mode sorts single things by their weight into categories, counts them and sums them up. Select "SORTING MODE" in the mode selection: if no sorting program is running, you will land on the setup page, otherwise directly in the running program.
Create a sorting program
Program name
Give your program a name (max. 50 characters), for example "Eggs from the farm".
Categories
Add 2 to 42 categories. You will see the inputs for the first 2 categories - add more with the "➕ ADD A CATEGORY" button, or remove one with its "➖" button. Each category gets a label (max. 15 characters, like S, M, L, XL) and a maximum weight.
Limits
Each category goes up to its maximum weight (the maximum itself still belongs to the category), the next category starts above it. The first category can have an optional minimum weight, the maximum of the last category is optional (leave it empty to keep the last category open).
UNDER / OVER
Things lighter than the minimum of the first category are counted as "UNDER", things heavier than the maximum of the last category as "OVER".
Weighing units
Insert and edit all weights in the weighing unit selected in the app. The programs are always saved in gram, so you can switch the unit at any time.
Active Ingredient (optional)
Click "TRACK AN ACTIVE INGREDIENT" to add a name for an ingredient (for example THC), its amount per weighing unit and its unit (ng, µg, mg or g). Then you can choose to insert the category limits as weight or as ingredient amount: the matching weight (or ingredient amount) is calculated on the fly and shown next to each input. The counted ingredient amounts (average and total per category, and the total of everything) are shown in the running program and written to the log.
Presets, save & delete
Your sorting programs are saved in your browser, not on the scale. Check "Save this program in this browser" below the "START SORTING" button on the setup page (the program is saved when you start it), or click "SAVE/OVERWRITE THIS PROGRAM IN THIS BROWSER" in the running program.
Select a saved program or one of the presets (egg sizes for Europe, USA, Japan and Taiwan) at the top of the setup page: the form will be filled with its categories and weights. Change what you like and start it or save it again.
If you save a program you have loaded with its unchanged name, you can choose to overwrite it or save it as a new program. If the name is already used (also by a preset), the new program will be saved as "Name #2", "Name #3" and so on.
Delete one of your programs by selecting it and clicking "DELETE". Presets can not be deleted.
Programs saved in one browser are not available in other browsers or on other devices.
Run the Sorting Mode
Click "START SORTING" and put the first thing on the scale:
A bar shows all categories in different colors (with their name, or their number if the name does not fit), from zero up to a bit more than the last limit. An arrow on top of it points to the current weight, so you can see if a thing is at the lower end of a category, in the middle or close to the next one. The current category gets highlighted.
The current weight is shown at the top like in all other modes (grey as long as it is not stable). Below it you see the program name and the status: "Weighing..." with the category of the thing on the scale, then "Counted!" and "Remove it now!". As soon as the weight is stable, the thing is counted in its category automatically. Take it away and the scale tares quickly and is ready for the next one. Use the TARE button below the bar at any time if needed: it does not change any counts.
For every category you see how often it was counted, the average weight and the total weight - and the total of everything. "UNDO LAST" takes the last count back, "RESET COUNTERS" sets all counts to zero and starts a new logfile (the old logfile keeps its numbers).
A logfile is created automatically with an overview of the run (total weighed, and count, average and total weight per category). It gets refreshed with every count.
The running program stays on the scale while it is switched on: if the app gets disconnected or reloaded, it will continue right where you left it. "END THE PROGRAM" or "NEW PROGRAM" will end it.
Multiple devices
If multiple devices are allowed, other devices connecting to the scale will switch to the running sorting program automatically and get all counts that are already done. Counts, undo and reset will be shown on all devices at the same time.
Control other machines
Via ESP-NOW the scale sends the weight, the status (weighing, counted, taring), the category of every item and all counts to your own devices - and an extra ping in the moment an item gets counted, with its category. So a microcomputer can sort the items automatically by triggering a gate, a conveyor or any other machine. TARE, OK and RESET can be sent back to the scale.
Tracking Mode 📈 (Interval Recording)
The Tracking 📈 Mode (Interval Recording)
Record the weight at a fixed interval - for minutes, days or weeks: drying and curing, plants (when do they need water?), dough and fermentation, evaporation tests... The scale records by itself, also with the app closed, and the app shows live charts, statistics, daily summaries and a prediction when your target will be reached.
Select TRACKING MODE in the mode selection. The scale records one point per interval: the mean of the shown weight over that interval (not just one reading), rounded to the scale division - with your speed, filter, locking and display settings. So a short bump or a breeze does not count, and a weight that stays stable on the display is a flat line in the charts. The scale records by itself: you can close the app or take your phone with you - when you connect again, the app loads all points from the scale. If a run is on the scale, the mode opens it directly.
Start a run
Put the empty container on the scale and tare it (tare button), then put your item on it.
Name (optional, saved in your browser) and the interval: one point every 0.25 seconds up to every 24 hours. The page shows how long the full detail lasts (8000 points, e.g. 33 minutes at 0.25 s or 5.5 days at 1 minute). Below 1 second the finest points stay only on the scale: when its memory is full they become 0.5 s, then 1 s points; from 1 second on, the app also keeps the full detail in your browser.
Start delay (optional): the recording begins this many seconds after the start - placing the item, closing a lid and the first movements do not count. The run page counts down; the zero and the first point are taken at the end of the delay.
Optional target and alarms, then START TRACKING. The first point is the weight at the start (or at the end of the start delay).
Live view, charts & statistics
The run page is live while the scale records, and stays as the result after you stop it. TARE below the weight at the top tares the scale during the run; the curve does not jump, the tare shows up as a marker. Below the name, ⏱ Sampling time shows the current interval - it doubles each time the memory of the scale is full, and while recording the page shows when that happens next:
Tiles: the weight now, the change since the start (in your unit and in %), the rate of the last hour (per hour and per day - in the first hour of a run the rate so far, per minute and per hour), the time until the target with the expected date and time (from the current trend) - once it is reached, a ✓ with the time (several times: how often, the first and the last time), the duration and the points with the time until the next one. A run started with the drying preset also shows the estimated moisture now.
Weight chart: all points over the time with a time axis (all, 14 days, 1 day, 6 h, 1 h, 30, 15, 10, 5, 2.5 or 1 minute, 30 or 10 seconds), with the highest and lowest point, the target line, the average (Ø) and its band, the peaks (purple ▲ / green ▼), the biggest rises and drops (circles), tares (a dashed line with a round T - the curve does not jump with a tare), restarts after a power cut (⚡) and the current weight (orange dot). Click or tap one of these markers (also the dots in the zero point chart): a small box shows what it is, its value and the exact time - and the alarm, if the scale raised one at that point. While a run records, the charts stand still while the mouse is on a marker or an info box is open (a dashed orange outline shows it), so the markers do not move away under the pointer.
Gross and net - what is the difference? When a run starts, the scale remembers its zero at that moment: the start zero. Then there are two ways to look at the weight:
GROSS = the weight against the start zero. A TARE during the run does not change it: the item on the scale still weighs the same, so the gross curve stays where it is. It always shows the real change of your item - no matter who pressed TARE when (you, another device, a machine).
NET = the weight like the display shows it. After a TARE the display shows 0 - and the net curve goes to 0 too.
As long as nobody tares during the run, both are exactly the same and you see only one line. An example - you dry 200 g of herbs:
display
gross
net
start of the run
200.0 g
200.0 g
200.0 g
you press TARE
0.0 g
200.0 g
0.0 g
later: 5 g of water are gone
-5.0 g
195.0 g
-5.0 g
The gross curve tells you "your herbs weigh 195 g now", the net curve tells you "5 g less than at the tare". Both are right - they only count from a different zero.
What you see: the third row of buttons above the charts. BOTH (standard): the net curve (like the display) as the solid blue line, and the gross curve as a thin dashed line behind it - it only shows up after a tare, when the two are different. NET (display): only the net curve. GROSS (start zero): only the gross curve. In BOTH and NET, the change, rate, statistics and markers use the net weights; in GROSS the gross weights. After a tare, the "Now" tile also shows the other weight, and a note below the chart says what you see. The CSV then has both columns. Your choice is saved in this browser.
Why does the gross curve not go back to exactly 0 when the scale is empty? Every scale moves its zero a little over time (warming up, temperature, a restart after a power cut). The display hides that after a TARE or with the automatic zero tracking - the gross curve shows it honestly, e.g. -0.2 g with an empty plate. On a very fine scale (0.01 g) this is easy to see.
Only real tares count: the small automatic zero corrections (autozero, creep) are not a tare. They are only shown in the zero point chart, not as a T and not in the events.
Alarms use (in the alarm settings, also changeable during the run) chooses which weight the alarms of the scale (target, constant weight, jump, peak, band) use:
gross (standard, the safe choice): a tare during the run changes nothing for the alarms - no false alarm, and the run is never stopped by mistake.
net (like the display): the alarms follow the display. A tare itself is not counted as a jump - but careful: if someone tares while the item is on the scale, the net weight drops to 0 at once. That can reach a ≤ target right away and, with auto stop, end the run.
The target line and the band in the chart are always drawn where the scale really raises the alarm - in the gross and in the net view.
Zoom and move: the buttons above the charts set how much time you see (counted back from now). Drag a chart left or right to move the window to any time of the run, Shift + mouse wheel (or two fingers on a phone) zooms in and out around the pointer, a double click zooms in (Shift + double click out), and − / + zoom around the middle. The thin strip below the weight chart shows the whole run with the shown window: drag the window, drag its edges to make it longer or shorter, or click beside it to jump there. The rate and zero point charts below always show the same window, and can be dragged and zoomed the same way. ▶| Live jumps back to the newest points and follows the run again. The zero point chart is always shown - a flat line means no tare and no drift of the zero in the window.
Rate chart: how fast the weight changed over the run - green when it goes up, red when it goes down. Great to see when drying slows down, or the day and night rhythm of a watered plant.
Zero point chart: the zero (tare point) of the scale over the time - when it was tared (●) or the autozero corrected it (·). It is always shown; a flat line means the zero did not move. The weight curve does not move with it: the scale measures the whole run against its own zero. The autozero corrections are only shown here (not as a tare, not in the events). During a run the autozero only works while the scale is empty for the run too: with an item tared away (display 0), it stays off, so slow changes of the item (drying, creep) are not zeroed away.
Peaks and events: highest and lowest weight, the biggest rises and drops between two points (at least 1 d), the peaks, the tares and zero corrections and the restarts - each with date and time, the newest first. Zero corrections (drift) right after each other are one line: the newest, with how many (e.g. "· Zero drift (12×)"). The page shows the latest 10; ▼ SHOW ALL opens the whole list.
Daily summary: a bar chart with the change per day and a table with the first, last, lowest and highest weight of every day.
Statistics: start weight, last point, total change (in % if the start weight is at least 10 d), mean, standard deviation, range, mean rate, jumps, peaks and how often the weight left the average band.
⇩ CSV: all points with date, time and Unix time for your spreadsheet (after a tare during the run: the gross weight and the display weight). ■ STOP ends the recording (the points stay on the scale). ↺ RESET (while recording) clears the points and statistics and starts new at once with the same interval, target and alarms (and the same name): the weight now is the new first point, without a new setup or start delay. ✚ NEW RUN deletes the run from the scale. ⇦ BACK TO WEIGHING (at the top below TARE, and at the bottom) goes to the weighing mode. While a run records (or waits for its start), the tracking page can't be left: press ■ STOP first. This also applies to the mode selection, SCALE INFO and SCALE SETTINGS. Closing the app or disconnecting is fine: the scale goes on recording, and when you reconnect (with any device) the app opens this page again with all the data.
Target, constant weight & jump alarms
Target: a weight - or a percentage of the start weight (e.g. 75 % = 25 % weight loss, perfect for drying). Choose the direction: ≤ raises the alarm when a recorded point drops to or below the target (drying, evaporation), ≥ when it rises to or above it (filling up, growing). For a percentage the target is calculated from the first point of the run, so the start weight never triggers it.
🌿 Drying / curing preset: enter the dry matter of your material (your own estimate: fresh cannabis flowers and herbs have about 20–25 %, i.e. 75–80 % water; partly dried material more) and the final moisture you want (10–12 % is usual for dried flowers and herbs). The app calculates the target: start weight × dry matter ÷ (100 % − final moisture), e.g. 22 % dry matter and 12 % moisture = 25 % of the wet weight (75 % loss). With the item on the scale it shows the target weight right away, and the weights for 12 … 10 % moisture. USE AS TARGET sets the target (≤, % of the start weight) and a point every 10 minutes (if the interval was shorter than 1 minute). The run page then shows the estimated moisture as a tile, and the alarm comes when the target is reached. Tare the empty tray, rack or jar before you put the material on. The moisture is only as exact as your dry matter estimate: to learn your value, dry a small sample completely once (constant weight) and divide its dry weight by its wet weight.
Constant weight: like a drying balance - "done" when the weight changes less than your value within your time (e.g. less than 0.2 g within 120 minutes).
Jump alarm: when the weight changes more than your value from one point to the next (watering, something was taken away...).
Peak alarm: at every high or low of at least your value - a peak counts when the weight went back at least that much from it, so small wiggles are ignored (e.g. the daily high and low of a plant pot).
Average band: when the weight goes more than your percentage above and/or below the average of the run (at least 1 d) - again every time after it was back inside the band.
Auto stop: for the target and the constant weight you can tick "stop the recording then" - the run ends by itself when it is done (e.g. drying finished), the points stay on the scale.
The scale checks the alarms itself, also with the app closed. The app shows them with the date and time of the point where they happened (with a sound and vibration) as soon as it is connected, until you press OK, SEEN. Change the alarms during a run with ⚙ ALARMS.
The result: log, report & print
When a run is finished (STOP or auto stop), the app writes its result into the log - start and end, duration, start and end weight, the change (also in %), lowest and highest weight and the events. If the app was closed when the run ended, it does that the next time it opens the run. With ⎙ PRINT you print a report (with your company header, if you added one - see the lot report) with all charts over the whole run, the statistics, the daily summary and the events - ⇩ REPORT saves the same report as a file (to keep it or send it). Both also work while the run is still going (as an interim result), and ⇩ CSV gives you all points.
Memory, power cuts & time
The scale holds up to 8000 points in full detail - at one point per 0.25 seconds that is 33 minutes, per second 2 h 13 min, per 10 seconds 22 hours, per minute 5.5 days, per 10 minutes 55 days, per hour 11 months (only 1000 points while ESP-NOW is switched on: its radio needs most of the memory of the scale: 4 minutes at 0.25 seconds, 16 minutes per second, 2.8 hours per 10 seconds, 16.7 hours per minute, 6.9 days per 10 minutes, 42 days per hour - the run works the same, it only merges neighbouring points earlier). When the memory is full, the run goes on: two neighbouring points become one and the interval doubles - so the whole run always fits, with less detail for the older part. A device that opens a running run loads all points from the scale first - a turning scale, the percentage and a bar show the progress, and the charts fill up while it loads. The app keeps the full detail: every point it got while it was connected stays in this browser (the last 3 runs), and the charts, statistics and the CSV use the finest data there is for every time. The points are saved in the scale about every 240 points, at most every minute and at least every 15 minutes (e.g. every minute at 0.25 s, every 4 minutes at 1 s, every 15 minutes from 4 s on), and at start and stop - few enough writes that the flash memory does not wear out. After a power cut the scale continues the run by itself (without a tare) and marks the gap. It waits 5 seconds before it records again, so the first point after the restart is not a still settling weight (no false jump, peak or band alarms); at most the points since the last save are missing (about 240 points, max. 15 minutes). The scale has no clock (solved by the device qualification): the app sends the time at the start and every time it opens the run. If the scale restarted while no app was connected, the times after the restart are estimated until an app connects again (marked in the CSV).
Alarms to other devices (ESP-NOW)
Via ESP-NOW the scale sends the state of the run in every packet (recording or stopped, points, last point, start weight, target, interval) and the alarms - with one extra packet in the moment a new alarm comes. So your own microcomputer can switch a buzzer, a lamp or a relay, or send a message. The MasterBlaster example sketch has an ALARM_PIN for that.
Density Mode 💎 (Archimedes)
⭐ PRO: the density mode - gray in the free version; try it with the free trial (free and PRO).
The Density 💎 Mode (Archimedes)
Find the density of gold, silver, coins, gemstones, minerals, meteorites, wood or 3D prints by weighing in air and in water - guided step by step, with built-in reference tables. Made for gold stackers, coin collectors, scrap metal buyers, jewelers and hobbyists.
Select DENSITY MODE in the mode selection. The scale guides you through the measurement and takes every value by itself - all connected apps show the same state, so you can start on the scale's phone and watch (or tare, or measure again) on a tablet. It needs the firmware that has the density mode. The density is the weight of a solid divided by its volume. The volume comes from the water it pushes aside: the weight of the displaced water is the same number in grams as its volume in cm³ (the app corrects it for the temperature of the water).
The three steps
1 · The dry item in air: the scale tares itself when the mode starts. Put the dry item on the plate: its weight in air is taken by itself when it is stable (1.5 seconds). The scale always waits until it has seen the empty plate with zero first, so a wrong tare can not spoil the result.
2 · The container with water: take the item off, put a container with water on the plate and press TARE (in the app or on the scale). Use enough water to cover the item completely.
3 · The item in the water: hold the item on a thin string or needle completely under the water, not touching the bottom or the walls. The scale now shows the weight of the displaced water, which is taken by itself when it is stable (2 seconds). Items that float (wood, plastics) are held under with a thin needle in a stand.
The buttons: TARE, START OVER (new dry item), MEASURE AGAIN (same item, e.g. after bubbles - lift it out, wait for zero, submerge again), NEXT ITEM and CLOSE. With a liquid other than water (isopropanol, ethanol, salt water or your own, with its density) you can measure items that dissolve or react with water. For water, type in its temperature (default 20 °C).
The result
The app shows the weight in air, the displaced liquid, the weight in the liquid, the volume and the density in g/cm³ (and kg/m³). The uncertainty is calculated from the resolution of your scale (0.1 g on the 420, 0.01 g on the 710) - it does not include handling errors, so small items are measured less exact: if the result is only good to about 3 % or worse, the app warns you. It also warns if both weights are almost the same (the item touched the bottom or floated).
Closest materials: the app lists the 4 materials whose typical density is closest (✓ = your value is inside the range of the material, uncertainty included).
Compare with: select a material (for example "Gold 18 K", "Quartz" or "PLA") and you get a verdict: inside the range, possible within the uncertainty, or no match - and the difference in %.
Fineness of gold and silver: for gold and silver the app estimates the fineness (‰ and karat) from the density, with a range - assuming a silver/copper alloy. If your scale is too coarse for this item, it says so instead.
Porosity: for plastics (3D prints), metals, gold and silver, a density below the solid material shows the share of air inside (infill, pores, casting holes).
Wood grade: very light to very heavy, for air-dry wood.
🏷 SAVE AS THING makes a THING from the measured density: its volume unit (ml per gram = 1 / density) shows the volume of any piece of this material you weigh later. Give it a name (up to 30 characters, the closest material is proposed) and, if you like, a price per weight unit (g, kg, oz t, oz or lb, in one of the currencies of the price units): the weighing mode then shows the price with the weight, like a price-calculating scale. SAVE ON THE SCALE uploads it (an existing name asks to overwrite), ONLY TO THE WEIGHING MODE just uses it. Either way the density mode ends.
💾 SAVE stores the measurement with an optional name in this browser (the last 30), 📋 COPY TABLE copies them tab-separated for a spreadsheet.
Reference tables
The tables are built into the app (typical density and range in g/cm³): gold 24, 22, 21, 20, 18, 14, 10, 9 and 8 K (yellow gold with silver and copper), silver 999, 925, 900, 835 and 800, 20 metals (platinum, palladium, tungsten, lead, copper, brass, bronze, nickel, steel, aluminium, titanium ...), 23 gemstones (diamond, moissanite, cubic zirconia, ruby/sapphire, emerald, topaz, quartz, jade, amber, glass ...), minerals and rocks, meteorites (stony, stony-iron, iron), 20 woods (air-dry) and 17 plastics (PLA, PETG, ABS, TPU, nylon, resin ...). Gold alloys are calculated from the pure metals - white, rose and green gold are a few % off.
Tips & limits
No air bubbles on the item: a drop of dish soap in the water helps. Use a thin string and always the same depth, so its volume does not matter.
Do not touch the container or the string with your fingers while the weight is taken - and let waves settle.
Small items (under about 5 g on a 0.1 g scale) are not exact: use the 710 or a bigger item. The bigger the displaced water, the better.
Density alone does not prove gold: tungsten has almost the same density as gold (19.25 against 19.32). Gold plating on tungsten, hollow parts, stones and solder fool this test - combine it with other tests (drilling, acid or electronic test, XRF). The same is true for diamond and topaz (both about 3.52).
Wood, porous stones and open 3D prints take up water: measure fast or seal them (wax, varnish). Soft stones (opal, turquoise, pearl, coral) should not stay in the liquid, and never in alcohol.
Solution Mode 🧪 (standard and stock solutions)
⭐ PRO: the solution mode - gray in the free version. ENTERPRISE & COMPLIANCE adds its report (print, HTML, sealed PDF with electronic signatures).
The Solution 🧪 Mode
Weigh a few ingredients in fixed proportions - a standard or stock solution in the lab, resin and hardener, paint and thinner, plant food. Goals as weight, % or parts; weigh one ingredient a bit too much and the app calculates all other goals again, so the proportion stays right. The scale holds the solution: every connected phone or computer shows the same.
For a solution of a few ingredients in fixed proportions - e.g. 10 mg of a powder in 50 ml of a solvent (0.2 mg/ml). If you weigh 10.4 mg instead of 10.0 mg, the app does not ask you to remove powder: 🧮 calculates all other goals again in the same proportion - add 52 ml (52 g of water) and the concentration is the same. Select 🧪 SOLUTION MODE in the mode selection. The scale holds the solution: every connected phone or computer shows and uses the same, like a running recipe. It needs the firmware that has the solution mode.
What else is it good for? Everything that is mixed in a fixed proportion, not only laboratory solutions: two-component resins and glue (epoxy, polyurethane, silicone - e.g. resin and hardener as 100 : 45 parts), paints and inks with a thinner, cosmetics, cleaners, plant food, aquarium mixes or a sourdough and dough batch. Choose parts if the data sheet says "100 : 45", % for a recipe in percent, or g for fixed amounts. Poured too much by accident? Do not scoop it out: take the value and press 🧮 on that ingredient. All other ingredients are calculated again in the same proportion - the confirmation lists their new amounts and the new full weight - so the mix stays right and nothing is wasted.
The rows: 2 to 10 ingredients, each with a name and a goal. Type the name or pick a THING with the 📦 button left of the name (or from the list while typing). Goal as a weight (in the selected weight unit), in % (they must add up to 100 %) or in parts (e.g. 4 and 1 for 4:1) - with % and parts also the total. A THING with a volume unit (its density) gets a small select: the goal and the weight in ml (or its volume unit) instead of the weight.
On the goal means within one digit (d) of the scale - or within the ± % tolerance if you set one (for small amounts).
⚖ TARE before each ingredient (the scale does not tare by itself), then ⚖ WEIGH NOW on its row: the button shows the live weight - green on the goal, red under or over, grey while it still moves - and the row shows a bar with the percent of its goal. A 2nd click on the button takes the weight (stable, or confirmed); WEIGH NOW on another row takes it too. Who took it and when is kept with the value.
🧮 on a row that is over or under its goal: all other goals are calculated again in its proportion (the confirmation shows the new total, and warns if an ingredient that is already weighed would then be too much). Gray when the row is on its goal.
TOTALS: below the ingredients a table shows what is weighed now, its share in % and in parts next to the goal (in brackets), and how much each row and the total is too little or too much. The big weight and the stability light stay on top with ⚖ TARE and a 🔊 / 🔇 button for the sound. When all rows are green the ✔ FINISH button pulses until you click it; after FINISH it turns solid green.
✔ FINISH works when every row is weighed and green: a summary goes to the weighing log (one line per ingredient) and the THINGS go out of the inventory with it - once. Then the values are locked; ↺ AGAIN starts the same solution with empty values.
ENTERPRISE & COMPLIANCE: after FINISH, ⎙ PRINT, ⇩ HTML and 📄 PDF make the solution report: scale, calibration date, start and end, every ingredient with goal, weight, deviation, who and when, the tolerance, the SOP and the line to sign. The PDF is numbered and sealed by the scale and can be signed electronically by a logged-in user.
ENTERPRISE & COMPLIANCE: with the protection "only approved recipes can run" (see users) only approved, saved solutions are weighed; typed rows can still be saved for the approval.
ENTERPRISE & COMPLIANCE: with the air buoyancy correction on, the goals of THINGS with a density are true masses: the scale judges every row with the correction (🌬 on the row), the report shows the true mass with the reading and the factor.
💾 SAVE keeps the solution on the scale with a name and a short SOP / description (shown above the rows), as a recipe of the kind "solution" - in the recipe list it has a 🧪 and opens in this mode. 📂 LOAD opens a saved one. Saving starts the solution again (empty values).
ENTERPRISE & COMPLIANCE: the special mode for laboratories and pharmacies - gray in the FREE and PRO versions (14 days free to try).
The Compounding ⚕ Assistant (Rezeptur- & Abfüllassistent)
From the master formula to the signed batch record in one place: the assistant leads every batch step by step - raw materials with lot and use-by date, weighing that only goes on when it is right, checklists, in-process controls, filling with the uniformity of mass, the label - and writes everything into a batch record that the scale seals and two people sign.
Master formulas (% shares, tolerance per ingredient, SOP, shelf life, process parameters, approval)
Choose ⚕ COMPOUNDING ASSISTANT in the mode selection. It works on the same rows as the 🧪 solution mode: the scale holds the batch, every connected phone or computer shows the same rows, goals and values, and the stability light, the 🌬 air buoyancy correction and the minimum weight work as there. The steps, the checklist and the batch record run on the device that started the batch (a reload goes on where it was). On every other device BACK TO THE SCALE and the mode selection are gray while that device is still connected - leaving would stop the batch there; they work again as soon as it is gone. It is made for the records pharmacy and GMP work asks for - such as the manufacturing record of a pharmacy preparation - but whether it fits your SOP is decided by your QA: the batch record is a record that people sign, never a certificate.
⚕ Master formulas
➕ NEW FORMULA (or ✏️ EDIT FORMULA of an open one): name, formula ID, standard batch size, dosage form, shelf life in days, storage, the SOP (the description), process parameters (e.g. stirring time 10 min, 40 °C) and the ingredients - each with its share in % (they add up to 100 %), its own tolerance in % (empty: one digit d of the scale) and an article number (taken from the THING when it has a unit named like Art.-Nr., PZN or SKU). Up to 16 ingredients.
The steps in their order: every ingredient has its ⚖ weighing step; add 📋 instructions ("warm the base to 40 °C"), ☑ checks (yes / no), 🔬 in-process controls (name, target ± tolerance, unit - e.g. pH 5.5 ± 0.3) and 🫙 filling, and put them in order with ▲ ▼. A preparation checklist ("workplace cleaned?") is ticked before the start.
🔍 Identity check of the containers:off, ✋ confirm the label (or scan) or 📷 scan to unlock. The approved codes and label names are not in the formula but in each THING (the same for every lot of it) - so every ingredient must be a THING of the scale that has them (scan: codes; label: names or codes). The editor shows ✓ / ⚠ per ingredient; 📥 READ THE THINGS FROM THE SCALE reads the ones this app does not know yet. The formula keeps a fingerprint of these data: if a THING gets other codes or names later, the batch does not start until the formula is saved (and approved) again.
💾 SAVE keeps the formula on the scale as a recipe of the kind "compounding" - with its whole process plan. In the recipe list it has a ⚕ and opens in this mode.
Approval (four eyes): with users, a saved formula is not approved until a QM approves this version (📂 OPEN A FORMULA lists the formulas in a table with ✔ approved / ⏳ waiting - click a name to open it; a QM approves one with 🔏 there or in the recipe list). The approval covers the rows, the SOP and the whole process plan: change anything and it needs a new approval. With the protection "only approved recipes can run" the scale opens no other formula.
1. Preparation
Batch size: type the amount you want (e.g. 500 g) - the scale calculates every goal from the % at once.
Batch number of the product: type it, or 🧾 GENERATE the next number of the lot generator of the scale (the formula is the THING of the lot - the batch then has its own lot card, and its use-by date is set when you finish).
Raw materials: the lot of every ingredient (📷 scan it or type it - the lots of the THING and of the lot store are suggested) and its use-by date (a lot of the lot store brings it). An expired lot blocks the start, and so does a lot that is locked (blocked or recalled) in the lot store.
Tick the checklist, then ▶ START BATCH. The start button says what is still missing.
2. The guided steps
On top while the steps run: 🔊 ℹ️ and the name of the formula, below it the batch number with 🗂 BATCHES and the step you are at (step 2 of 5). The big weight of the page is hidden then - the weight is in ⚖ OVERTAKE and the light beside it, TARE is in the weighing step. ✔ FINISH and the report buttons are there from the start, gray until every step is done.
🔍 Container check first (when the formula has the identity check): the step is locked - no check box, no OVERTAKE - until the container is checked. Scan its code with 📷 or a hand scanner (it types into the field, Enter), or (with "confirm the label") ✋ CHECK THE LABEL: a window lists the approved label names, the grade and the lot of the batch, tick "I checked the label" and THAT'S IT!. A code that is not approved, a GS1 code with another lot than the one of the batch, or with a use-by date in the past gives ⛔ wrong container - the step stays locked. Each check (how: scanned code or label confirmed) and each wrong scan goes into the batch record. Every time a weigh step comes up again, it is locked again.
⚖ Weighing: the scale tares by itself at the start of the step. A check box like in the check-weighing modes: the live weight, its % of the goal and the bar, colored yellow = add more (it says how much), green = on the goal (within the tolerance of the ingredient), red = too much; the weight is pale while it still moves. Below it the goal (with Already weighed: … (Δ %) when a part of this ingredient was taken before - it counts on live with what you add). (No AUTO TARE here: all ingredients go into one vessel - use ⚖ TARE when you need it.) The button ⚖ OVERTAKE shows what is on the scale now (a part weighed before is not in it, it is in the bar, the light and the table) and works when the weight is stable: green - the scale takes the value with who and when, and the next step comes. Yellow - the amount stays in the container as a part of this ingredient and counts, and the next open ingredient comes (the rest later). Red - a message what you can do (see "Too much?" below).
↪ Any ingredient, any time: you are not tied to the order. Click an ingredient in the table below the step to weigh it now - what is already in the container stays and counts (the container stays on the scale, you only TARE again). An ingredient that was already weighed can get more the same way. The scale adds the part to the reading, the traffic light and the bar judge the total, and the batch record lists every part and every addition (who, when). Go from ingredient to ingredient until everything fits - the ones that are not done yet stay open and come up again.
Too much? Take some out - or press 🔏 QM RELEASE: a user with the role QM - never the user logged in on this device - chooses the name, types the password and a reason on this device. The scale checks the password (wrong tries count and lock like a login) and writes the release into its activity log; the batch record shows who released which value and why. Or 🧮 calculates all other goals again in the proportion of this one (noted in the batch record).
📋 Instructions are confirmed with ✔ DONE, ☑ checks with YES - a NO asks why, goes into the batch record as a deviation and the step stays open.
🔬 In-process controls: type the measured value (pH, temperature, ...). Outside target ± tolerance it turns red and asks for the reason (a deviation in the batch record).
✕ ABORT BATCH asks for the reason and closes the batch record as aborted.
🫙 Filling and the uniformity of mass
The filling step weighs every container: tare the empty one, fill it, ✔ TAKE (stable) - for the number of containers of the step (e.g. 20 capsules or 12 jars). The same colored check box shows each fill against the target. With AUTO TARE (the switch below the box, on by default, ℹ️ explains it) you only swap containers: take the filled one off, put the next empty one on - when it stands still for 1.5 s it is tared by itself (the bar pulses and says "hold still …" meanwhile); ⚖ TARE is optional. Below it the statistics like the 📊 statistics of the modes: the verdict, number, mean, standard deviation, min / max, units within the limit / outside it / outside twice the limit, and a run chart with the target and the limit lines (± limit green, ± twice the limit orange; a histogram from 10 units on). Every unit opens the list of each value with its deviation.
Uniformity of mass along Ph. Eur. 2.9.5 for capsules, granules and powders (single-dose), tablets, suppositories and pessaries, powders for parenteral use and for eye drops: 20 units, not more than 2 may deviate from the average by more than the limit of the table (e.g. capsules under 300 mg: 10 %), none by more than twice the limit. Or an own limit in ± % around the target fill (e.g. jars of a cream): every unit must be inside. The maths is checked by the validation cases UM-01 to UM-07 (check page).
Not met? The app asks why the batch may go on (a deviation in the batch record).
3. Finish, batch record, label
✔ FINISH ends the batch on the scale (activity log), books every ingredient into the weighing log with its own lot and the person who weighed it and takes the raw materials out of the 📦 stock.
The batch record: formula, ID and approval (fingerprint), batch number, start and end, operator, batch size, use-by date of the product, the scale and its calibration, every ingredient with article number, lot and use-by date, goal, weighed amount, deviation in %, tolerance, who and when (and 🔏 who released it and why), the checklist with times and names, every step with its result (in-process values, checks), the single fills with the uniformity of mass, all deviations and recalculations, the SOP and two signature lines.
⎙ PRINT, ⇩ HTML and 📄 PDF (SEALED) with your company header, the report number and the integrity code; the PDF is sealed by the scale and carries the record as a JSON file. Right after the PDF the operator can ✍ SIGN it (performed); later a QM signs it as reviewed / approved - the scale refuses a QM who made the report (four eyes). Check every file on the check page.
🗂 RECORDS → BATCHES keeps every batch record in this browser: print it again, make the sealed PDF, sign it (the next signature goes on top of the newest signed file), the label, and a CSV of all batches. Keep the PDF files on your own read-only storage - the browser is no archive.
🏷 LABEL: product name, batch number with the lot code (QR), dosage form, quantity, made on, use by (end + shelf life), the ingredients with a click - their share in % and / or the weighed amount -, storage and a free text (patient, prescriber, use) - printed on your label printer.
To your LIMS / ELN by itself: with the forwarding of "finished programs" every batch record goes to your server at the end - as JSON, and if you want also as the file sealed by the scale.
↺ NEW BATCH starts the same formula again with empty values.
PART 3 THINGS, Logs & Labels
⚖ THINGS, Logging, Diary & Labels
Save what you weigh as THINGS, log it, keep a nutrition diary, a stock and a sales log - and print labels with the live values. These functions work in the weighing and counting modes (and partly in the recipe mode).
∑ Summing-Up / Logging
If you hit the (∑)-Button in weighing- or counting mode, the current weight will be added to the log-file! After you have removed the logged goods, the scale will tare automatically and is ready for the next weighing. (In the Takeaway Mode the scale will jump to 0 automatically and also will show you how much is still left on the scale or in your container!)
📝 Weighing log, 📊 statistics and 🗂 records: the row at the bottom
At the bottom of the app, one row holds all logs: 📝 WEIGHING LOG opens the log (greyed out while it is empty, highlighted as soon as it has entries; after every new entry a short NEW LOG ENTRY! shows in the bottom right corner - click it to open the log), 📊 STATISTICS & ℮ opens the statistics, and 🗂 RECORDS opens the page of the records that are kept for later, one tab each: 🛡 the activity log of the scale with its archive, ☑ the test history of the scale, ✓ the routine checks of this browser, 🖥 the devices (the register of the scale and the form of this device), 👥 the user access register, 🧾 the lots of the lot store, 💶 the sales log and - with the cannabis club settings on - 🥦 the club reports. The weighing log only lives in the app until you close it; the records are kept on the scale or in your browser (all logs at a glance). Without the ENTERPRISE & COMPLIANCE edition the page shows what your scale keeps, without the sealed exports - a PRO scale saves its lots and its sales log as plain CSV files (the activity log and the test history are kept by ENTERPRISE scales only).
⚠ When the data stops: no weight, nothing recorded
The app never records a weight it doesn't know for sure. The scale sends its weight several times per second on the weighing and counting page, also when nothing changes (at least every 0.25 seconds). If that stops for about 1.25 seconds - the scale is switched off, too far away, the battery is empty or the connection broke - the app shows – – – instead of the last weight, a red bar NO DATA FROM THE SCALE appears, and ∑, sales and labels with the live values are refused until fresh data come in. After a lost connection the same happens at once. Nothing is ever recorded with the "last known weight"; sales that were finished before are kept and sent when the scale is back. This is built to the loss-of-connection rule for weights sent to a computer (as described for WELMEC and NTEP). The UPCENT↑420 locks the weight only when the connection is lost. The heartbeat lock is part of ENTERPRISE & COMPLIANCE (also in the 14-day trial): on FREE and PRO scales the scale sends no heartbeat and the apps lock only when the connection is lost (the switch is greyed). Heartbeat Lock in the settings (top box, below Reboot Scale) switches it: it is on by default and saved on the scale for all apps. Switched off, the scale sends its weight only when it changes and the apps lock only when the connection is lost - fine for a kitchen or a hobby, but keep it on for trade, sales and every kind of record. It is always on (the switch is greyed) with EXACT WEIGHT. While it is off, a yellow warning bar at the bottom of the page (above the other bars) shows in the 🛍️ SALES MODE, the CCLUB 🥦 MODE and in the factory, check-weighing, sorting and density programs. Legal for trade is always the whole system with its type approval - the app alone doesn't make a scale legal for trade.
STABLE only says that the shown weight stands still. In a lab a weight is often saved a moment too early, while draft or vibration still move it inside one digit. Switch on Stability light in the basic settings (saved in this browser, off by default) and a line below the weight shows MOVING (red: not stable), SETTLING (yellow, pulsing: stable, but the scale still sees the weight move - the number is the spread of the last ~0.8 seconds in d) and SETTLED (green: the spread stayed at 0.5 d or less for 1 second). The scale decides this itself, so every connected app shows the same. The signal of a load cell is never perfectly still: SETTLED means within this limit, not zero. While the light is on, labels, the inventory check, the nutrition diary and taking a weight into a field wait for SETTLED: a window shows the light and saves by itself as soon as it turns green - or press SAVE ANYWAY (the activity log of the scale notes it with the weight and the user), or CANCEL. With the sound on, a short beep tells you the weight has settled. Needs the newest firmware; with an older one the app asks as before when the weight is not stable.
Add a name
Optionally you can add a name for your weighed product before you sum up, in that case it will be overtaken to the log-file to make it better readable later.
New logfile
Click the ➕-Button of the logger to start a new, empty logfile. Your next weighings will be logged there, and the sums below the weight start from zero again. The old logfiles are not deleted: select them in the log-selection at any time to see them again or to add more weighings to them.
Log Conversions & Units
All units/conversions will be logged and summed, too! Like that you will get not only an overview about what you have weighed, you also will see how much was the costs, ingredients or nutrition values for each of the weightings - and altogether!
Healthiness Info
If you count sugar, salt, fat or saturated fat, we will add a 🚥 Traffic Light Rating, to show you, how healthy your mix got (and how many percent of everything are inside)!
📒 Add it to the Nutrition Diary
If your log contains nutrition values (or metric/custom units like "THC"), the button "📒 ADD TO DIARY" is shown below it. Only what you add with this button lands in your Nutrition Diary - your weighings for baking or meal prep do not end up there by accident. Next to it, 💾 SAVE AS THING saves the values per g of the whole log (all weighed lines together, e.g. your own muesli mix) as a new THING - it asks for the name first (preset: its first line or the recipe).
Amounts as [B/M]AKERS PERCENTAGE
If you have weighed and logged 2 or more different products/things, then we will show you also the amounts of them as a Bakers Percentage Recipe! This is not only useful for baked-, but actually for all recipes. This way of recipe creation make it very simple to re-use your recipes later-on, for any batch sizes, and without any extra calculations for all the ingredients! Give it a try, you will love it!
Easy to use with our scale!
We also calculate the exact conversion factor for your recipe directly! With this you are able to calculate the amount of your initial 100%! (You want to make 1200g dough? Just divide 1200 by this factor!) This amount you now can add with the 💯 Percent Weighing Option to the scale, and then you can weight everything step by step with the given percentages! Without any further calculations for every single ingredient!
Hydration of the dough
If at least one weighed product has a 💧 hydration (from its THING, or the THING with the same name), 100 % is the total flour - also the flour in your levain or poolish - and the log shows HYDRATION OF THE DOUGH: the total flour, the total liquids (each with the part in preferments) and the true hydration in %. Without any hydration data, the biggest ingredient is 100 % like before. Every log line also shows the hydration of its product in %.
++ Portions 🧮 Servings Calculator
You can use the servings-calculator to calculate your portion amounts and sizes based on a weight, a number, on the amount of an ingredient - or by a price, for example! It also will show you the amount of all logged conversions/units for your calculated portion-size - ideal if you want to create labels for your products!
Portion Sizes / Servings can be calculated for:
An amount of servings
In this case, the total weight will be devided with your requested amount of servings, and the weight for each servings as like as the amount of all ingredients for each serving will be shown.
For a given weight
In this case we will show you how many servings you will get in total, as like as the amount of ingredients in one of them.
For an amount of an ingredient
Lets say you want to make 250-MG-Cookies. You have weighted 2325.43g dough with the scale, and you know, there are 13275.6 MG THC inside. Now, don't calculate everything by hand - just add 250 mg THC to the calculator! The scale will show you not only the exact amount of dough needed for each cookie, but also how many cookies you can make altogether - and even all other values (costs, nutrition values etc...) for each of the cookies! And ready is not only your calculation - but also your label! By the way... You can use every conversion unit you've added to your logging as a base for your calculation - including Milliliter, spoons, prices, calories, etc. pp!!!
The portions-calculator-bar will be shown/visible below the log-file, as soon as you have logged at least 2 weights in the weighing mode (also without any conversion units: portions by servings or by weight then) - or something with conversion units. Insert your desired portion-size or amount, click the "🧮-Button" and your calculation will be shown below the portions-calculator-bar in a seperate box!
The same calculation for a recipe before weighing it (from the amount you are going to make, optionally minus the water lost while cooking or baking - and with labels for one portion): ⎙ Portions & labels of your recipes.
📒 Nutrition Diary
What did you eat today, and how close are you to your goals? The nutrition diary keeps everything you ate - day by day, for each person of your family, with own daily goals. You open it with the "📒 NUTRITION DIARY" button below the scale, in the weighing log - and, as soon as there is a diary in your browser, also directly on the start page (without a connected scale).
Add food to the diary
Weigh your food with nutrition values on the screen and log it with (∑). Then click "📒 ADD TO DIARY" in the weighing log and choose:
What
All or only some of the logged weighings - as single entries, or summed up as one meal with its own name (e.g. "Lasagne"). Weighings that are already in the diary are marked with 📒 in the log, and the app asks before adding them twice.
For whom
For you, for another person - or shared between persons: give each person a number of servings (e.g. 2 and 1: two thirds and one third of the pot), and everybody gets the right share of all values.
When
Breakfast, lunch, dinner or snacks (chosen by the time automatically) - and the date and time, so you can also add things later.
Only one thing, without logging? In the weighing mode, "📒+ ADD THE WEIGHT" next to the "📒 NUTRITION DIARY" button at the bottom adds what is on the scale right now - with the nutrition values of the page (shown units) - directly to the diary, with the same choices as above (for whom, meal, date and time). The button is greyed out as long as the scale is empty or the page has no nutrition values for it (load a THING with nutrition values or add them as units) - click it then for a short info.
Only what you really ate? With the 🍽 TAKE-FROM mode you weigh your plate before and after eating: only the difference gets logged, and the diary dialog opens with just this line.
You ate something without weighing it? Use "+ ADD FOOD WITHOUT WEIGHING" in the diary and add the amount in gram. The values per 100 g can come from:
the food database (search with min. 3 letters), or type them from the package
"📷 SCAN CODE": one camera for both kinds of codes. The barcode of a product gets its values from Open Food Facts (you can also type the barcode number into the search field) - and the QR code on the label of a THING loads that THING from your connected scale.
"⚖️ THING FROM THE SCALE" (only while a scale is connected): choose one of your saved THINGs and its nutrition values are taken over. Its other units (like THC) are added with the amount, too. This only works while the scale is in the weighing mode; the scale switches back to it afterwards, and the THING on your weighing page stays as it was.
Tick "★ Save to my foods" before you add it, and the food goes into your own food list (with its values and this amount): next time it is one tap, and the search of this form finds it first (★).
Below the date of the day view, "⚡ QUICK ADD" logs food with one tap - for the person and the day you see:
★ My foods (favourites): your own food list in this browser, next to the THINGS of the scale. Add a food with "☆ To my foods" in the ⋯ menu of an entry (the same menu removes it again), or with "★ Save to my foods" when you add food without weighing. A tap adds it with its saved amount.
🍽 Meal templates ("My breakfast"): click 💾 next to a meal of the day and give it a name - all its foods are saved together. A tap adds all of them again, to the same meal.
🕘 Recent: the newest foods of this person (from the diary itself), with the amount of last time.
After a tap a green line shows what was added: EDIT opens it to change the amount (all values change with it), UNDO takes it out again. ⚙ lets you change the amount of a favourite and delete favourites and templates (the diary itself stays as it is). Your foods and templates are shared by all persons and are part of the JSON backup of the diary.
Day view & daily goals
For every day you see the totals of calories, protein, fat, saturated fat, carbohydrate (also as BU, CU or carb choices, if set for the person), sugar, dietary fiber, salt (or sodium) and cholesterol, the meals with all entries, and a 🚥 traffic light rating of everything you ate. With the "⋯" button of an entry you can edit it, move it to another meal or another person - or delete it.
"✏️ Edit" lets you change the name, time, amount (and pieces) and all values of an entry, including the other units: rename them, change their amount, remove them (empty amount) or add a new one. You ate only a part? Just change the amount - all values change with it (you can switch that off).
At the top you switch between the persons, and between the day, the history and the persons. In "👪 PERSONS" you add persons (with name and icon) and their daily goals - calories, protein, carbohydrate, fat and fiber - and daily limits for sugar, saturated fat and salt. Bars show you how far you are: green is on target (or below the limit), orange is above a goal, red is above a limit.
🍞 Carbohydrate units for diabetics
If you count carbohydrates for your insulin, choose your unit for each person in "👪 PERSONS": Bread Units (BU, 12 g), Carbohydrate Units (CU, 10 g) or Carb Choices (CC, 15 g, common in the USA). The grams per unit can be changed (e.g. 10 g per BU in Switzerland) - use what your diabetes team told you. The diary then shows the units of every entry, of every meal and of the whole day. If you follow a fixed meal plan, add your units per meal (e.g. 4 BU for breakfast) and you see "3.5 / 4 BU" at every meal.
Net carbs: check "Net carbs" to count the carbohydrates minus the dietary fiber. Use it only if the values of your foods count the fiber as carbohydrate - like the built-in food database (USDA) and US package labels. EU package labels and most values from the barcode lookup already show the carbohydrates without fiber: there the fiber would be subtracted twice. Fat-protein units (FPU): if you use an insulin pump with an extended bolus, check "Show fat-protein units": 100 kcal from fat and protein are 1 FPU (fat 9 kcal per g, protein 4 kcal per g). The diary shows them next to the carbohydrate units of every entry, meal and day, and in the CSV.
The diary only adds up - it does not calculate insulin doses. Please note: the carbohydrates of the built-in food database (USDA) include the dietary fiber, while EU package labels (and most products from the barcode lookup) do not. For foods with a lot of fiber (like wholemeal bread), the database shows more carbohydrates than the package.
Other units (like THC) & their daily limits
Besides the nutrition values, the diary also keeps your metric units (like "THC" or "caffeine" in mg - always saved in mg) and your custom units (by name and unit). They are shown at every entry and as "Other units" in the day totals and the history. In "👪 PERSONS" you can give each of them a daily limit (e.g. 30 mg THC) - a red bar and a ⚠️ in the history show when it was too much. Prices, volumes and percentages are not saved in the diary.
History
"📅 HISTORY" shows all days of a person with their totals, and the averages of the last 7 and 30 days. Click a day to open it.
📊 Week chart: at the top of the history, one bar chart each for calories, protein, carbohydrate and fat - a bar for every day from Monday to Sunday, the daily goal of the person as a dashed line, and the average of the days with entries next to the goal. The bars have the colors of the goal bars of a day: green on target (90 - 110 %), orange above, light blue below, grey without a goal. Hover a bar for the exact value, click it to open the day, and switch the week with ◀ ▶.
Your data stays with you
The diary is saved only in the browser on your device - no account, no cloud, nothing is sent anywhere. Because of that:
"⬇ BACKUP" downloads the whole diary (all persons) as a file. With "⬆ IMPORT" you can restore it - or move it to another device or browser. Entries that are already there are not added twice.
"⬇ CSV" downloads all entries as a spreadsheet file (for Excel, LibreOffice, your doctor or your nutrition app) - with the carbohydrate units and one column for each other unit.
Deleting the browser data (or using a private window) deletes the diary too - so make a backup from time to time!
🔄 Synchronize between your devices
Your family uses the scale with several phones or tablets? "🔄 SYNC" brings the diaries together - through the scale, without internet, account or cloud. Connect all devices to the same scale (they can be connected at the same time) and stay on the weighing page. Then click "🔄 SYNC" in the diary on one device. The app finds the other devices, and you choose the persons and what should happen:
Combine all devices
The entries of these persons from all devices get combined, then every device gets the same diary. For double entries (the same entry, or the same food with the same time and weight) the entry of the device that started the synchronization wins.
Overwrite the other devices
The diary of these persons on the other devices gets deleted and replaced with the one of your device.
Nothing happens without a confirmation: every other device shows what will happen, and a check code - confirm only if it is the same code as on the device that asks. There you also choose which of your persons gets which data (e.g. "Anna" of the other device is "Anna" here, "Klaas" is a new person - or skip a person). Persons that are not chosen stay as they are. After the first synchronization the persons are known on all devices and get found by themselves.
Only devices connected to your scale get the data (and if your scale has users, only logged-in ones can send). The scale only passes the data on and does not save it.
🍲 Batch processing: weigh the pot
You cook a big pot of chili for the whole week, bake a bread or mix a dough? Weigh and log the raw ingredients with their nutrition values (or run a recipe), cook, bake or mix - and then click 🍲 PROCESSED below the log. Cooking and baking change the weight (water evaporates, rice and pasta take it up), so 100 g of the finished food have other values than 100 g of the raw mix - this page calculates them ("ℹ️ more info" at the top explains it in short):
1. Raw ingredients
All lines of the log are checked - uncheck what is not in the pot (e.g. the water: it has no values, but it counts for the raw weight).
2. The pot
The pot, bowl or baking tin the food is in. Choose one of your saved pots, insert its weight - or put the empty pot on the scale and click ⚖ WEIGH EMPTY POT (with a name): its empty weight is saved in your browser for the next time. If you tared the scale with the pot, choose "No pot".
3. Processed
Put the pot with the processed food on the scale and click ⚖ TAKE THE WEIGHT (the pot is subtracted) - or insert the weight of the processed food.
4. Result
The yield factor (processed / raw, e.g. 0.82 = 18 % lost, mostly water), all values per 100 g processed with the 🚥 traffic light, and the split into containers: how much goes into each of them and what each one contains. Prices and other units (like THC) are spread over the processed food too.
⚖ USE FOR WEIGHING switches the scale to the weighing mode (if it is not there yet) and puts the values per g of the processed food on the weighing page - with the pot as container, so the scale shows the food in the pot without the pot. Now weigh the portions into your containers, log them and add them to the diary, print a label with the EU nutrition table for each box - or use the 🍽 TAKE-FROM mode for your meal. 💾 SAVE AS THING does the same and saves it as a new THING on the scale (e.g. "Chili, processed" - change the name as you like) with all its units and the pot.
You know the loss already (e.g. 15 % for your bread)? Then you can calculate the portions of a recipe with it before weighing: ⎙ Portions & labels of your recipes.
➕ 1000 THINGS
You can save THINGS on the scale, to re-load them from there later. (What a THING can carry, with examples: THINGS & UNITS.)
With THINGS you can save your containers/bowls to remember their weight for later. Or add just a name and a price. But you can also save your storage tuppers/jars of food or weed, including their nutrition values and ingredients to check later how much you have without taring/unfilling/refilling everything first. (And to weigh directly out of that containers with the Takeaway Mode then). Or just save your common kitchen foods including their nutrition values like calories, proteins etc., to reload them later fastly! The options are endless!
A THING need a (unique) name, which you can enter on the page - and also at least one conversion/unit, like a price, nutrition value or a container weight. Then you just hit the ➕ ADD button to save it permanently on the scale. Now you are able to load this THING at any time to any mobile/device, just click the ⚖ LOAD button and select the THING from the list. The list shows one THING per line, sorted by name, with ⤓ (load) and ✕ (delete, asks first) at the right; a click on the name does what the list was opened for (LOAD or DEL). The filter on top shows only the THINGS whose name contains what you type. The lines appear while the scale is still sending them: with many THINGS you don't have to wait - click one at any time, the rest of the list stops loading (↻ LOAD ALL loads it again).
You can save up to 1000 THINGS on the scale, each THING with a maximum of 20 Conversions/Units! If you save a THING with a name that is already used, it gets a number behind its name, like "Flour #2" (a long name gets shortened for it, max. 30 characters). If all 1000 slots are used, a new THING is not saved - delete one first. Edit a THING: load it, change, add or hide its units (keep its name) and press ➕ ADD again - then you can choose to overwrite the saved THING (it keeps its name and its place in the list, but gets only the units shown now) or to save it as a new THING.
Several devices on one scale: if more than one device (e.g. your phone and your computer) is connected to the same scale, only the device where you pressed LOAD, ADD or DEL talks to the scale while the THINGS are transferred. The other devices only show "THINGS ON AN OTHER DEVICE" until it is done. (CANCEL still works on every device - and stops the transfer for all of them.)
💾 Backup: below the THINGS list (LOAD) you find ⬇ BACKUP and ⬆ RESTORE. BACKUP reads all THINGS with all their units from the scale and downloads them as one file. RESTORE saves the THINGS of such a file on this scale - or on an other one. You choose which THINGS, and what happens if a THING with the same name is already there: skip it, save it again (it gets a number like "Flour #2") or replace it. Keep the app open and the device close to the scale while it runs - it can take a while for many THINGS. With a second scale connected, ⇄ SYNC copies THINGS (and recipes) directly to or from it: see sync between scales.
Prices, cannabinoids and lots go with the THINGS (they are units of the THING). If the scale has a 🧾 lot store, you are asked once whether its lots of these THINGS should go too - with number, date, internal note, THC / CBD and on sale / locked. They are saved on the other scale with the same number and date (as an own number, made by the user of this app there); a lot that is there already for its THING is skipped, and a THING saved as "Haze #2" takes its lots with it. The other scale needs a lot store with PRO.
📦 Inventory of THINGS (bottles, jars, bags)
⭐ PRO: the inventory on the scale (the free version keeps the inventory in the browser only) - gray in the free version; try it with the free trial (free and PRO).
Like the inventory scales of bars: weigh your open bottles, jars and bags and the app tells you what is left in them. Click 📦 in the THINGS bar (the last button on the right, after ➕ ADD). The stock is saved on the scale (up to 250 THINGS, next to the THINGS themselves, which stay as they are): every phone and every app connected to it sees the same stock, and a change in one app shows up in the others right away. What the apps used since the last check and the last 20 checks (with the expected content and the loss) are saved on the scale too - so the loss is right even if several people pour from the same bottle. Without a connected scale you see the last state this app got from it, but you can't check or change it.
🍸 FOR BARS: the inventory scale of your shelf
Save your Gin as a THING with a 💰 price and the empty bottle as container unit, then add it in 📦: empty bottle 520 g (the container button fills it in), full bottle 1,190 g, 700 ml, 6 sealed ones in stock. Pour your drinks with the recipe and cocktail mode or weigh them into the log - every pour gets subtracted.
At the end of the shift press ▶ CHECK ALL: bottle on the scale, saved, bottle off, the next one - the whole shelf in a few minutes. You see the ml and % left of every open bottle, the total stock and its value - and the loss: what left the bottle without being poured with the app (over-pouring, free drinks, spills). Every phone behind the bar sees the same stock, because it is saved on the scale. Send the CSV to your office.
🌿 FOR CANNABIS SHOPS AND CLUBS: never lose your overview
Save your Haze as a THING with its 💰 price and the weight of the empty jar as container unit, print its automatically made 🏷 QR code label for the jar and add it to the 📦 inventory.
Now just put the jar on the scale, scan the code (📷) and switch on the takeaway mode: the scale shows you directly how much you take out - and its exact price. Print a 🏷 label for the bag right away, with the exact weight, price and all other values, and log the sale (∑).
When you check your inventory after a lot of sales, you directly see what has been sold and how much should be left - and how much has "evaporated" in the meantime (drying, crumbs, mistakes). All counters of your shop see the same numbers.
+ ADD A THING
The name (best the same as the THING on the scale - the list suggests them; if a THING is loaded on the page, the form opens with its name), the empty weight (the bottle or jar with or without lid or pour spout, the way you weigh it; 0 for a bag without a container) - type it in, weigh it (⤓⚖ WEIGHT FROM SCALE) or take the container unit of the THING (the button shows whether it is with or without lid) - and optionally the full weight of a new one, its volume when full (e.g. 700 ml) and how many full ones (sealed) you have in stock.
What is left
Content = weight on the scale − empty weight. With a full weight you also get the % left, with a volume (or a volume unit of the THING) the ml. The full ones count with their full content: total = open one + full ones, and with a 💰 price unit of the THING you see its value.
⚖ CHECK / ▶ CHECK ALL
Check one THING, or all of them one by one: put it on the scale - it saves by itself once the weight is stable (or click ✓ SAVE NOW) - take it off, the scale gets tared when it is empty and the next THING comes. You can also correct the number of full ones while checking. The scale has to be on the weighing page.
Loss
"Subtract from the expected content" chooses what counts as used with the name of an inventory THING: the bookings of the 🛍️ sales mode and every recipe run (also cocktails) - the standard, so a weighing just to look does not count -, also every ∑ of the weighing and counting mode (a kitchen, where every ∑ is taken out), or nothing. At the next weighing you see the expected content and the loss: what went missing without the app (over-pouring, spills, evaporation...).
⤓ CSV
The inventory as a table for your spreadsheet: last weighing, content, %, volume, full ones, total, value, expected and loss of every THING.
Several apps and users
Every app adds what it logs to the same used counter on the scale, and a check in any app starts it new for all. The scale calculates the expected content and the loss of every check, so every phone shows the same numbers - also for the checks the others did while this app wasn't connected (each app keeps up to 100 checks per THING, the scale the last 20).
💶 Sales Log: every sale and the daily report per THING
Click 📦 in the THINGS bar: the dialog "Inventory & Sales Log" has the tab 💶 SALES LOG (it only shows up if your scale has the sales report). There you see what you sold per THING, day or user - or every single sale with its time - today, the last 7 days, this month, this year or your own time range. Every booking with BOOK NOW in the 🛍️ sales mode is added up on the scale (not in your browser) - under the name of the THING: all phones, apps and users of this scale see the same report, even after clearing the browser. A ∑ in the weighing or counting mode is no sale (it stays in the weighing log and the inventory), so no accidental weighing gets into the sales log; recipes and the other modes are not counted either. The 📦 inventory still counts only THINGS.
🛒 YOUR SALES COMPUTER: shop, market stall, bar or club
With the THINGS (name, price, container weight), the QR code labels, the takeaway mode, the price labels, the 📦 inventory and this 💶 sales log your scale also does everything a small shop needs (on top of all its other modes) - without an extra cash register, without a PC, without a monthly fee:
Weigh: scan the QR code of the jar (📷), put it on the scale, the scale shows the weight and the exact price (and the costs, if you saved them as "Costs" unit).
Sell: in the 🛍️ sales mode press BOOK NOW and confirm: the sale is logged - and saved on the scale with its time, THING, lot, weight, price and costs.
Label: print the label for the bag with weight, price and barcode.
Report: 📦 → 💶 SALES LOG: pieces, weight, revenue, costs and profit with margin - per THING, per day, per user or per member ID (as soon as there are sales with one); today, this month, this year or any time range - or the list of every single sale with its time. Print it or save it as CSV for your accountant.
Chained and checkable: the scale gives every record its own number (never used twice) and saves it with the SHA-256 fingerprint of the record before it, and it checks the weight against its own reading before it saves it. A changed or inserted record no longer fits the chain, a deleted or lost one leaves a gap in the numbers - the 🔏 sealed report (ENTERPRISE & COMPLIANCE) shows both, and its sealed file can be checked by anybody on up-scales.com/check (in the browser, nothing is uploaded).
Stock: in the same dialog the 📦 inventory shows what is left of every jar and bottle, what has been sold and what got lost.
All of it is saved on the scale (every single sale, up to 366 days): every phone, tablet and counter sees the same numbers, the history survives clearing a browser or changing the phone - and the scale warns you when its memory gets full.
Please note: the sales log is your own record and overview. It is not a certified cash register or fiscal device (even if it does the same! ;-)), and the app itself is not verified - for receipts, price labels and your bookkeeping check the rules of your country (see What stays legal).
What is counted
Pieces (a weighing counts as 1, in the counting mode the counted pieces), weight and revenue from the price unit of the THING (🪙 or a currency). If the THING also has a "Costs" unit (💰), the report shows the costs, the profit and the margin too - the app takes both as the same currency, and calculates the profit only for sales that had costs.
Single sales
Choose Group by: Single sales to see every sale with its time, THING, weight, price, costs and profit (the latest 300 on the screen - print and CSV have all of them). Every sale has its own number, so a sale is never saved twice, even if the wireless connection drops.
🖨 PRINT / ⤓ CSV
The report as a printout (with your company header, if you have one) or a table for your spreadsheet: one line per day and THING - or, with Single sales, one line per sale with date, time and sale number.
Storage
The scale keeps the last 366 days, up to 300 different THINGs. It saves a new sale about 5 seconds after the last one, so don't pull the plug right after a sale. The scale does not have a clock: the day is the date of your phone. The name of a THING is freed again as soon as no saved sale uses it any more. A day can hold up to 2000 sales. ✕ DELETE SHOWN deletes the days of the shown time range on the scale, ✕ DELETE ALL clears the whole report.
⚠ Memory getting full
THINGS, recipes, the inventory and the sales share the memory of the scale. If less than 20 % of it is free, the app warns you when you save a THING or a recipe and in the sales log (⚠ on the tab): download all sales with ⤓ CSV (EVERYTHING), then delete the old days (Own range, ✕ DELETE SHOWN) and the THINGS or recipes you don't need.
🔒 Protection against deleting
So that nobody (an employee, a helper) can delete your sales or your stock, the ENTERPRISE & COMPLIANCE edition has users: the ADMIN switches deleting only by an ADMIN on (it needs an ADMIN with a password), and every sale is saved with the name of the user who was logged in. The former separate delete password can't be set any more; one that already exists still works for deleting and can be removed here (REMOVE PASSWORD). If a password is lost, nobody can read or recover it - for a forgotten ADMIN password another ADMIN sets a new one; if the only ADMIN forgets it, only flashing the firmware completely (update page) helps, which erases ALL data of the scale.
Several apps
If the wireless connection drops, the app keeps the sale and sends it again after reconnecting - the scale counts every sale only once.
SALES 🛍️ MODE: the sales display (shop, market stall, bar)
⭐ PRO: the sales mode and the sales log - gray in the free version; try it with the free trial (free and PRO).
The Sales 🛍️ Mode
Your scale as a sales display: big weight, the price highlighted, BOOK NOW with a confirmation - every sale saved on the scale with time, THING, lot, weight and price. The live units of the THING and the labels stay as in the weighing mode. Cannabis social clubs use the CCLUB 🥦 MODE instead.
Choose SALES 🛍️ MODE in the mode select (it stays selected there as long as the sales mode is on). Several devices: when another phone or computer connects to the scale while a device is in the sales mode, it joins it by itself and lands on the same screen with everything loaded: the THING with its units and lot, the customer ID and the settings of the sales mode; the currency too, if none is chosen on the new device yet. Nothing is sent to the scale for it, so the device that is selling is not interrupted. The scale weighs as in the weighing mode, but the screen becomes a sales display: big weight, the price highlighted, everything else that you don't need for selling (name input, ∑, THINGS bar, unit inputs) is hidden.
THING: choose it from the list (alphabetical) or 📷 scan its QR code or a lot code. Your last 12 THINGS are tiles below (name and price) - one click loads them again. With several lots on sale, choose the lot below the weight.
JETZT BUCHEN / BOOK NOW opens the confirmation (also with nothing on the scale). The final BOOK takes the stable, positive weight of the scale - or a ✍ manual weight you type in there, e.g. for a pre-packed bag: it replaces the weight of the scale for this booking (log, inventory, price, sales log), is marked as manual in the record, the activity log and the sealed report, and prints no automatic label. Not with an RS-232 scale in EXACT WEIGHT. A weight of zero or below zero (empty plate, tared wrong, container too heavy) is never booked, also not with pieces: the scale itself refuses a zero or minus weight, a minus price and - when its own weight is booked - less than one digit on the plate. First comes a confirmation with THING, lot, weight and price - you can change the price per weight unit or the total for this sale (also 0, e.g. for a club). Auto print prints the label right after booking.
Every booking goes into the weighing log, the inventory and the sales log on the scale - with time, THING, lot, weight (shown with the d of your scale: g, mg or µg, kg), price, the logged in user and the member ID.
The scale checks the weight: when a booking arrives, the scale compares it with its own stable reading (minus the container of the app) and saves its own value - the app only proposes it. The record also gets a number of the scale (1, 2, 3 ... never used twice), the tare (T weighed on the scale, PT the container of the app), the unit price, the PLU (a unit named PLU in the THING, e.g. 4011) and the calibration and configuration counters. See the sealed report.
Currency: choose the currency of the sales log once in the basic settings of the settings page (row Currency) (sales are blocked until then). It is saved on the scale, so every phone and computer of this scale books in the same currency, and the scale refuses a sale in another one. A THING can have prices in several currencies: only its price in this currency is booked (the "Costs" unit counts in it too), and every record keeps its currency (ISO code in the sealed report). Change it only when you start a new sales log: the sums don't convert between currencies.
THING required (on) and Member ID required (off) below the button stop bookings without them.
The label bar stays below (live label generator, save, print; the label printers are set up in the generator).
The sales display warns you before old sales get deleted (the scale keeps 366 days with sales) and when the memory of the scale gets full - with the button to download everything.
⚙ Settings of the sales mode (folded, at the bottom):
Customer IDs (off by default - e.g. for regular customers or customer accounts): a field and a scanner for the customer ID. Only IDs are saved, never names. As soon as an ID is there, its sales of the last 3 months are shown (folded): every sale with lot and weight, the sums of today, of this month and in total.
🪪 Create member cards: one ID, a list (one per line) or a range like M-0001 - M-0050 - each card has a QR code of the ID, the ID in big letters, your business and an optional line (e.g. "valid until"). Print one as a label, or all of them on A4 sheets with credit card sized cards (85.6 × 54 mm) to cut out and laminate, or have them printed on PVC cards. Your own member cards work too: any QR code or barcode whose content is the ID (Code 128/39 where the browser can read it).
With the cannabis club settings on, the scale refuses plain sales (it asks for the member ID, lot and THC / CBD of every booking): the mode list then has no SALES MODE - the CCLUB 🥦 MODE books.
Please note: the sales mode and the sales log are a documentation aid - please check your record keeping against the rules of your country. The customer IDs are kept in the memory of the scale without encryption: export the sales log regularly (with ENTERPRISE & COMPLIANCE as sealed files, see tamper-evident records) and keep the list of who has which ID apart.
🔏 Sealed Report: every record for an inspection (ENTERPRISE & COMPLIANCE)
The button 🔏 SEALED REPORT in the sales tab (for the period chosen there) and in the CCLUB 🥦 MODE and 🗂 RECORDS → 🥦 CLUB (this year) collects every record of the period - the sales and the other bookings (harvest, dried, destroyed) - in the order of the numbers the scale gave them. As a sealed PDF (the JSON of all records inside) or as CSV / JSON with the UP↑SCALE SEAL.
Per record: number of the scale, record ID, date and time (also as UTC, from the time zone of the app clock), Device ID, kind, THING, PLU, lot, member ID or note, user, gross, tare with its type (T / PT), net in the unit of the sale and its d, pieces, unit price, total, whether the scale checked the weight, the calibration and configuration counter at the booking, THC / CBD (mg) and the chain.
The checks on top: the chain of the records (each record holds the SHA-256 fingerprint of the record before it: a changed, inserted or removed record breaks it), missing numbers (deleted or lost records - the activity log shows the deletion), records the scale could not check (sent again later), and every change of a counter inside the period (between which records and on which day).
The instrument: firmware, the counters now and the certificate data you typed in once. They are also printed at the bottom of every other report (self-check, sales, lots, tracking ...).
Built along the record points of NIST Handbook 44 (audit trail with event counters for calibration and configuration), OIML R 76 (gross / tare / net, tare marked T or PT) and WELMEC Guide 7.2 (event logger; the legally relevant weight comes from the scale and the record is protected). Built to them - not certified, and our own scales have no type approval.
Not a fiscal export: no DSFinV-K (Germany) or SAF-T: they belong to a certified cash register with its own security module. No payment method and no tax - your cash register stays separate and can take the CSV / JSON.
Saved on the scale, for every device: the currency, the settings of the sales mode (customer IDs, "a THING is needed", "a customer ID is needed"), the cannabis club settings of the CCLUB 🥦 MODE (on / off, the limits per member), what the inventory takes as used, the pattern of the lot generator and the company header of the reports (its first line is the name of your business or club) are saved on the scale and sent to every phone and computer that connects. A change on one device is at once the setting of all of them. The scale also checks every booking against them and refuses one that misses something (currency, member ID, lot, THC / CBD, the reason of a destruction, the name of the club): another browser or an old app can't go around them. With users, changing them follows the rules of the settings (ADMIN gate, not by an operator, a reason in the strict audit mode) and is noted in the activity log. Only the automatic printing of the confirmation stays a setting of each device (every device has its own printer).
CCLUB 🥦 MODE: dispensing, harvest, drying and destruction for cannabis social clubs (PRO)
⭐ PRO: the CCLUB mode - gray in the free version; try it with the free trial (free and PRO).
The CCLUB 🥦 Mode
Made for cannabis social clubs: the app knows the record-keeping duties of the KCanG (§ 26) and helps you keep the documentation it asks for. The dispensing to the members on one tab, harvest, drying and destruction on the other - all linked by the lot number, with THC / CBD, saved on the scale. It works like the 🛍️ sales mode (live price and units, labels, manual weight, several devices), and all club settings are in the mode.
Choose CCLUB 🥦 MODE in the mode select. The first time, the mode shows only one box: switch on the cannabis club settings for this scale and enter the name of the club (it is also the first line of the report header and of the lot codes). Both are saved on the scale for every phone and computer; while they are on, the scale checks every booking for the club records, and the mode list has no SALES MODE. Later you find them in the folded ⚙ CLUB SETTINGS at the bottom of the mode, together with the way to the 🌿 CANNABINOIDS box, the member cards and the limits. The box 🥦 CANNABIS CLUB on the settings page only says whether they are on and opens the mode. When another device connects while one is in the CCLUB mode, it joins it on the same tab.
Two tabs:🌿 DISPENSING books the dispensing to a member (member ID, its dispensings of the last 3 months, the limits, the price). 🌱 HARVEST & STOCK has three big buttons 🌱 FRESH (harvest), 🍂 DRIED and 🗑 DESTROYED and a note field - no member (the stock itself is counted in the inventory). The BOOK NOW button and the tab are green for dispensing and brown for harvest & stock, so you always see what you are booking. Every booking is weighed on the scale with a stable weight, confirmed and saved on the scale - with time, user, THING, lot number, weight (by d) and a note. A harvest (fresh) has no price and no THC / CBD. Dried takes THC / CBD and a price if you have them (both optional); once it is saved the app asks whether to add the weight to the stock of the inventory (a THING that is not there yet is created). A destruction needs a reason (note field, e.g. mold) and is taken out of the inventory like a dispensing. The activity log names each kind (e.g. "Harvest weighed (fresh)").
The club reports are always visible as a row of buttons in the mode, and in 🗂 RECORDS, tab 🥦 CLUB (only with the club settings on; the button 🗂 CLUB RECORDS leads there). 🌱 Harvest log: only the dispensing is a sale - the sales log and its exports show the sales only. Harvest, dried and destroyed are in the HARVEST LOG, grouped by THING and lot. A harvest is usually weighed in several parts: tick the weighings of a lot (all are ticked; ONLY FRESH / ONLY DRIED / ONLY DESTROYED / ALL with one click) and make one report of them - the fresh harvest, later the dried buds of the same lot, or both together with the drying loss in %. The 🗑 DESTRUCTION LOG lists every destruction of a year over all THINGS and lots, with the reason and the sum.
The lot links everything, also weeks apart: create the lot at the harvest (lot store), print its label, and scan it again when you weigh the dried flowers or dispense - the lot is chosen again and all bookings belong together. Several containers of one lot are several bookings that add up. Weigh the net weight (tare the container first).
THC and CBD: in the units of a THING the box 🌿 CANNABINOIDS (UNITS bar) takes the content in milligram per gram from your lab report - THC and CBD on top, below CBG, CBN, THCV and more. Only THC and CBD go into the records (one of the two missing counts as 0); the other substances are normal units for the live display and labels, and you can add any other substance in the box INGREDIENTS (METRIC) above. A lot can have its own lab value: on its card in the lot store enter THC / CBD (mg/g); it wins over the value of the THING, is shown on the page of the lot code and goes into the records as it was when you booked. While that lot is chosen (also when you switch between several lots on sale below the weight), its values replace the THC / CBD of the THING in the boxes below the weight, the % beside them and on the labels, marked 🧾 - so the screen, the label and the booking always show the same value. The THING keeps its own values (saving it with +ADD saves them, not the lot's); a lot without a lab value shows the THING's own values.
The check before every booking: the club name, THING and lot number are needed; for a dispensing also the price, the member ID (always needed) and THC / CBD. If something is missing the button stays blocked and says what.
History of a lot: on the lot card the button LOT REPORT shows the harvest, drying (with the loss in %), destruction, dispensing and the rest (dried - dispensed - destroyed) and every booking. 📅 SUMS OF A YEAR adds up one calendar year per THING: harvest, dried, dispensed with its THC and CBD, destroyed and the rest - as a help to fill in the report you hand in once a year. The reports give THC and CBD as the amount in the weighed goods (mg, for large sums g or kg - one unit for the whole report), not in %.
Limits per member (⚙ CLUB SETTINGS, off by default): limits per day and month in g. Above a limit the confirmation of a dispensing turns red - only a warning, booking stays possible; the limits are yours, please check them against the law.
🪪 Member cards (⚙ CLUB SETTINGS): the same cards as in the sales mode - a QR code of the ID, never a name.
Print and export: print and a plain CSV are PRO; JSON, your own format, the sealed CSV and the sealed PDF are ENTERPRISE like the other exports. Their header names the club, the scale and the logged-in user; see tamper-proof records for what the seal does and does not mean.
Please note: this is a documentation aid, not legal advice. Please check with the law (KCanG § 26) and your authority what you have to record and report. The law asks for the name, first name and year of birth of a member: the scale saves the member ID only, so keep your member list with the names yourself. The records can be checked for changes - keep the exported files safe.
🏷 QR Code Labels for THINGS
As soon as a THING is loaded from the scale (or saved on it), the app shows its QR code left and right of its name in the title bar. Click on one of them to create a black and white label for your jar, bag or container:
The label always has the QR code. Optionally add the name of the THING below it (scaled to the width of the label) and one or more of its units in smaller text: nutrition values per 100g like on food packages (like "Protein: 12 g/100g"), your own weight units per 1 of your selected weight unit (like "THC: 0.22 g/g" or "6.237 g/oz"), the container weight in grams (as "CONTAINER (+ lid)" or "CONTAINER (no lid)"), percent weighing as "100 % = 200 g", milliliters as density in both directions (like "0.533 g/ml = 1.876 ml/g"), prices per 1 of your selected weight unit (like "0.125 €/g" or "3.54 €/oz"), and all others per 100g, like "kcal: 350 kcal/100g" (in counting mode: per piece).
Set the width and optionally the height in pixels - or in millimeters together with the DPI of your printer - or in printer dots: then the label is made in exactly the dots of your label printer (the DPI comes from the printer setup). As soon as you set up a label printer for direct printing, all label dialogs start with its print width and resolution - change it as you like, it stays until you change the printer setup again. The width starts with 600 px (max. 3000 px), the height is filled in automatically with the size of the content (no maximum). Empty the height field to get back to the automatic height.
If you set a height that is bigger than the content, you can choose to spread the free space between the QR code and the text or to keep it white at the bottom. If it is smaller, the label gets cut at the bottom (the dialog tells you).
The QR code always fills the whole width of the label. Around everything there is only a thin white border - just as much as a camera needs to read the QR code reliably (2 QR dots). A label with only the QR code is always square, its height is set to its width.
Click ⬇ DOWNLOAD PNG to save the label as an image, or 🖨 PRINT to send it to your printer (one page in the exact size of the label). With a label printer set up for direct printing, 🖨 PRINT prints right away - without the print dialog.
Load a THING with the camera: click the 📷 button ("SCAN THING's QR") between ⚖ LOAD and ➕ ADD - the list of your THINGS gets loaded and the camera starts right away. (Or click ⚖ LOAD and then 📷 LOAD THING VIA QR-CODE at the top of the list.) Hold the label in front of the camera: if the THING is saved on the connected scale, it gets loaded with all its units right away. If not, you get a message and can scan the next one.
Good to know: a THING is identified only by its name - the QR code contains nothing else (e.g. "THING:Flour"). So the THING has to be saved on the connected scale to load it with a label. Spelling counts: "Flour" and "flour" are different THINGS for the scanner.
Every label works in every scanner: scan the label of a recipe with the THINGS scanner (or in the 📒 diary) and the recipe opens - scan a THING label with the recipe scanner and the THING gets loaded. Only the barcode scanner of the nutrition values (food products) stays with product barcodes, and the scanner of the lot numbers takes every other code as a lot number. While a recipe is running, THING and recipe labels can't be loaded (finish or pause it first).
Several scales: you can save the same THING on more than one scale by yourself - just load it, connect the other scale (its units stay on the page) and press ➕ ADD there. Make sure it gets exactly the same name on every scale: if that scale already has a THING with this name, it saves the new one as "Flour #2" - then delete the old one there first (⚖ LOAD, then ✕ in its line). Then one label works with all your scales, and you can even use different units or values on each of them.
⭐ PRO: printing labels (the free version saves them as an image) - gray in the free version; try it with the free trial (free and PRO).
Set up your own label once - and then print it for every weighing with the current values. The LABEL bar sits below the units (in the weighing and in the counting mode). Weigh your products piece by piece and print an exact label for each of them - including the price, the mg of THC, the nutrition values and everything else you have added as a unit.
🛠 PREP opens the setup with a live preview (calculated with the weight on the scale right now). Check the lines you want on the label and change their order with the ▲/▼ buttons:
Picture (optional): click 🖼 ADD PICTURE to upload your own logo or photo. It gets converted to grey and is always as wide as the label. Choose photo (grey becomes fine black dots) or logo (sharp black and white) - label and thermal printers can only print black.
Name: the name in the name field at the top (the same as for THINGS and logs) - as big as the width of the label allows. Load another THING and the label gets its name automatically.
NET WEIGHT in your selected weight unit - and in the counting mode also the NET COUNT (pieces). Both start as "big with frame". You can select them separately, but with the same highlighting they always share the same box.
Units: every unit on the page - also the hidden ones (👻) - with its value for the current weight, like "THC 10208.00 mg" or "Price 5.80 €". Nutrition values also get their share of the net weight in %, like "Sugar 23.20 g (50 %)" - and so do THC and CBD, like "THC 1052.50 mg (21.05 %)" (below 1 % with two decimals). An inverted box (white on black) right above or below a framed box, the nutrition table or the lot code is joined to it, without a white gap. New units are checked if they are shown on the page.
NUTRI-TABLE (EU nutrition table): if all 7 values of the EU nutrition declaration (food information regulation 1169/2011, "big 7") are on the page - energy, fat, saturated fat, carbohydrate, sugar, protein and salt (sodium) - you can check this line to print them as a table instead of the single lines: energy in kJ and kcal, "of which" lines indented, rounded like the EU guidance says (e.g. "<0.5 g"). Choose per 100 g or per 100 g + net weight (counting mode: + per piece). Its 7 single lines are left out then and hidden in the list (uncheck the NUTRI-TABLE to get them back), all other units (like the price) stay. It is in the language of the app. Please note: the values are only as good as the values on your page - you are responsible for your labels.
Own texts: click + TEXT to add as many as you like (✕ removes one). Use placeholders in square brackets: "With [sugar] sugar!" becomes "With 23.24 g (50 %) sugar!". While you type, all placeholders that work right now are shown below the text field together with their current values - click one to insert it (or click "more info"). Always possible are [weight], [name] and in the counting mode [count], [scaleline] (extra line of an RS-232 scale, e.g. its alibi number); upper/lower case and accents don't matter, nutrition values work in all languages ([sugar] = [zucker] = [azúcar]). Dates: [date] (today), [date+7] (in 7 days - e.g. for a best before date, any number of days works, also [date-1]) and [time], written like your browser writes dates ([datum], [fecha], [zeit], [hora] work too). A placeholder that matches no unit stays as you typed it, so you see a typo in the preview.
🧾 Lot: the lot number of the THING on the page (on the label from the start). Also as placeholder: [lot]. 🧾 LOT CODE (not on the label until you check it): its QR code, small and marked with LOT and the number, a link to the readable lot page. Your business (not on the label until you check it): the first line of your company header, also as placeholder [business].
Unit price (not on the label until you check it): for every price unit on the page there is a line "Price per kg" (per lb if you weigh in oz or lbs, per piece in the counting mode), like "12.90 €/kg" - in the EU, goods sold by weight need the price per kg next to the price. Also as placeholder: [price per kg].
EAN-13 BARCODE (not on the label until you check it): a barcode with the price, the weight (g) or the pieces in it, for the barcode scanner of your checkout. Shops use the numbers 20-29 at the start of an EAN-13 for their own goods: choose the prefix (20-29), your 5 digit item number and what it contains - the app adds the value (price in cents, max. 999.99; weight in g, max. 99999) and the check digit, e.g. 21 00001 00323 4 for 3.23 €. With more than one currency on the page, choose the one for the barcode. The bars are made in whole printer dots, so they stay sharp. Some checkout systems use other formats (e.g. 4 digits price with an own price check digit) - please check yours before you print many labels.
CANNABIS WARNING (not on the label until you check it): three warning symbols in one row, as wide as the label - left a no driving sign (a crossed out car), in the middle a warning triangle with "! THC" and right an 18+ sign. Pure black and white for label printers; with the small select beside its arrows you choose ◻ black on white or ◼ inverted (white on black). These are our own symbols, not official ones of any state or country - made for home makers, private clubs and "not for children" labels. They do not make a label legally compliant: please check which warnings the law of your country requires. For official state or country symbols: simply add them as a picture (e.g. one picture with your logo and the symbols).
Ingredients (not on the label until you check it): type them in - or click 📥 FROM A RECIPE OF THE SCALE and choose one of your recipes: the text gets filled with "Ingredients: " and all its ingredients, biggest amount first (you can still change it). Allergens are written in capitals right away (see ⚠️ Allergens), and ⚠️ MARK ALLERGENS below the text does the same for a text you typed. On the label it is broken into lines between the words. Reading the recipes needs the weighing mode (the scale shows the recipe pages for a moment and comes back); in the counting mode you can type the text. The text is saved with your label.
Every dot is used: these labels have no border - the picture and the texts go from edge to edge, and there is no space above the first or below the last line. If your printer or labels need some space at the edges, enter a white border (in px/dots) in the setup: then the content keeps exactly this distance on all four sides.
Highlight what you want: every line (except the picture) has a small select left beside its arrows: b small (normal text size, not stretched to the width), B normal, ▢ big with frame (black frame around it) or ◼ big inverted (white text on black). Highlight the name, a unit like the price or the THC, an own text - or several of them. Highlighted units (and net weight/count) one after the other with the same highlighting share one box, the name and own texts always get their own box.
Every line is printed as big as possible without breaking it: all unit lines in the same size (the longest one fills the width). In your own texts every line gets its own size and goes exactly from the left to the right edge - short lines get bigger, long lines smaller (they only break where you put a line break). Highlighted lines are always the biggest texts, the normal lines stay smaller than them.
Size: like for the QR code labels - width and height in pixels, in millimeters with the DPI of your printer, or in printer dots. For label rolls set a fixed height: it is remembered for this label (empty field = automatic height), and you can spread the free space between the lines or keep it white at the bottom. Content that is higher than a fixed height is made smaller to fit. With a label printer set up, the size starts with its print width and resolution (tape printers: the label lies on the tape).
✂ Cut label after printing (behind "Free space"): only shown if your label printer has a cutter.
⇩ SAVE downloads the label as PNG and ⎙ PRINT sends it to your printer (one page in the exact size of the label) - both with the weight on the scale at the moment you click and all values calculated with it. If the weight is not stable yet, the app asks first. With a label printer set up for direct printing, ⎙ PRINT prints right away - without the print dialog.
The setup (including the picture) is saved in your browser, so it is there again next time - also with another scale.
Print with one click: connect your bluetooth label- or thermal printer directly wireless via USB, network or serial port. Including 🖨 LABEL PRINTER SETUP (below the size in the label dialogs, or on the SCALE SETTINGS page) - more than 15 printer languages from receipt printers to Brother, Dymo, Zebra, Niimbot or Phomemo. Then ⎙ PRINT in the LABEL bar prints right away, without the print dialog of the browser. All about it: Label Printers.
Labels for a recipe: on the recipe page, ⎙ PORTIONS & LABELS makes a label for one calculated portion (before you weigh anything) - with its own setup and the ingredients of the recipe.
🖨 Label Printers
⭐ PRO: label printers - gray in the free version; try it with the free trial (free and PRO).
All labels of the app - the LABELS with live values of the weighing- and counting mode and the QR code labels of THINGS and recipes - can be printed with the print dialog of your browser. That works with every printer that is installed on your device (also network printers), but you have to confirm the dialog every time. Connect your label- or thermal printer directly instead, and every label is printed with one click.
Open the setup with 🖨 LABEL PRINTER SETUP - in the label dialogs (below the size of the label) or on the ⚙ SETTINGS page in the LABEL PRINTER section. The settings are saved in your browser, not on the scale - so they stay the same when you connect another scale. Direct printing works in Chrome and Edge on PC (Windows, macOS, Linux, ChromeOS) and in Chrome or Samsung Internet on Android mobiles and tablets (wireless, and USB via an OTG adapter). On iPhone and iPad only wireless printers work, in the Bluefy browser. The Dymo LabelManager (HID) works on PC only.
Connections
Print dialog of the browser - all printers (as before).
Wireless - most mobile label and thermal printers.
USB - printers with a direct USB connection (computers). If your system has its own driver for the printer, it can block the access.
USB (HID) - for the Dymo LabelManager.
Serial port / wireless serial - USB printers that work as a serial port, and wireless printers with a serial connection: pair them in the Bluetooth settings of your computer first. Niimbot printers with USB cable work as serial port too.
Printer Languages
Select the language of your printer - the list only shows the languages that work with the selected connection:
Language
Printers
Connection
ESC/POS
receipt and thermal printers (58/80 mm), most cheap wireless printers
BLE, USB, serial
TSPL
label printers of TSC, Xprinter, Munbyn, HPRT, iDPRT, Polono, Jadens and many more
BLE, USB, serial
ZPL
Zebra and compatible label printers (also many Honeywell, Bixolon, Godex...)
BLE, USB, serial
CPCL *
mobile printers (Zebra mobile, HPRT, Honeywell...)
BLE, USB, serial
EPL2 *
older Zebra/Eltron and many cheap label printers
USB, serial
Star *
receipt printers of Star Micronics (TSP100/TSP143, mC-Print, SM-L...) in graphic mode
BLE, USB, serial
Brother QL *
Brother QL label printers (raster mode)
USB, serial
Brother P-touch *
Brother PT tape printers (tape printer)
USB, serial
Dymo LabelWriter *
Dymo LabelWriter
USB
Dymo LabelManager *
PnP, 280, 420P (tape printer)
USB (HID)
Dymo LetraTag *
LetraTag 200B (tape printer)
BLE
Phomemo *
M110, M120, M220...
BLE, serial
Phomemo D30 *
D30, D35, Q30 mini label makers (tape printer)
BLE, serial
Niimbot *
D11, D110, B21, B3S... - and "Niimbot new" for B1, B18, B21 Pro...
BLE, serial
PeriPage *
A6, A6+, A40 pocket printers
BLE, serial
Cat printers *
GB01, GB02, GB03, MX05, MX06, MX10...
BLE
*: experimental - made after the documentation, not tested with a real printer yet. Please tell us if yours works!
Settings
Resolution (dpi) of your printer - mostly 203, Brother QL and Dymo 300, Brother P-touch and Dymo LabelManager 180.
Print width (dots) - the width of the printhead (58 mm printers: 384, 80 mm: 576, Niimbot D11: 96, Brother 62 mm: 696, Dymo LabelWriter: 672). Wider labels are made smaller, receipt printers get the label in the middle. For Brother P-touch and Dymo LabelManager you select the tape width instead.
Darkness, labels with gap (die-cut labels) and the gap in mm, feed, copies and turn the label by 90° - depending on the printer language.
✂ Cut after printing - for printers with a cutter (ESC/POS, TSPL, ZPL, Star, Brother QL and P-touch). The same option is in the label dialogs right after "Free space" - and only shown if your printer can cut.
Advanced: packet size and pause for wireless printers (try smaller packets or longer pauses if a printer stops in the middle), baud rate for serial ports, margins and line length for Brother QL (90 bytes: QL-500 to QL-820, 162 bytes: QL-1050/1060N/1100).
Size of the labels
As soon as you set up a printer, all label dialogs start with its print width and resolution, and the size is shown in printer dots: then the label is made in exactly the dots of your printer - nothing gets scaled when printing. Change the size as you like, it stays until you change the printer setup again. The dialog warns if a label is wider than the printer.
Tape printers (Brother P-touch, Dymo LabelManager and LetraTag, Phomemo D30/D35/Q30): the printhead goes across the tape, so the label lies on the tape - its height is the width of the tape, its width the length of the label (e.g. LetraTag: 150 × 30 dots, P-touch 12 mm: 350 × 70 dots). The label is turned automatically when printing, and content that is higher than the tape is made smaller to fit.
Connect & Print
🔗 CONNECT opens the list of your browser to choose the printer, 🧪 TEST PRINT prints a small test label.
PRINT in all label dialogs and in the LABEL bar prints right away on your printer - without the print dialog of the browser (the LABEL bar with the weight on the scale at the moment you click). With "Print dialog of the browser" selected as connection, PRINT opens the print dialog as before.
After a restart of the app the printer connects again with the next print (Chrome may ask you to choose it again).
Not printing? Switch the printer on, make sure it has labels and is not connected to another app or device. Try the next printer language, a smaller wireless packet size or a longer pause. And the print dialog of the browser still works with every installed printer.
This scale is operate-able with plenty of weighing units and in different languages! Calibration is fast and simple! Also it will allow you to operate it with multiple displays and devices at the same time, it even can be connected with your home automation systems or other devices!
Within the app you are always able to switch between weight units or to select a different language - but you are also able to save your preferred settings directly on the scale in order to load them automatically - independtless of the device you are using to connect with the scale! Go to the ⚙ SETTINGS page to change your settings and save them on the scale directly! The page is arranged in blocks: Basic Settings (every row has an ℹ️ button in front of its title that explains it), USB, BLE & ESP-NOW, Speed & Stability (the speed slider, the folded expert filter settings, autozero, locking, display and creep compensation), ⚖ Calibration (calibrate, date and reminder, calibration check), the 🔍 Scale Self-Check (folded, PRO) and the Label Printer. The BACK TO THE SCALE button is at the top and at the bottom.
Weighing Units
This scale is able to weigh in Gram as like as in many other units. Ounces or Pounds? No problem! We even can weigh in Eights! (No joke!) But also you can find all the other more or less common or useful units, like Carats, Troy Ounces or - for our American friends - Giraffes per Footballfield.
Here a list of all weighing units:
g Grams
oz Ounces
⅛ Eights
lbs Pounds
oz t Troy Ounces
ct Carats
GN Grains
tla Tolas
dwt Pennyweights
gpf Giraffes per football field
kg Kilograms (also for big RS-232 scales that send in kg)
mg Milligrams
µg Micrograms (for micro and ultra-micro balances on an RS-232 adapter)
t Tonnes (for big platform scales and weighbridges on an RS-232 adapter)
The app shows every unit with as many decimals as the scale can show: for g, kg, mg, µg and t straight from the smallest step d of the scale (a weighbridge with d = 20 kg shows 60.02 t, not 60.020000 t). mg, µg and t also work as the unit an RS-232 scale sends, and saved as your unit on the scale.
And by the way, its also possible to weigh directly in volume, such as Milliliter or Cups, regardless of the scales weight unit!
Languages
At the moment the scale software is available in English, German and Spanish. A French and Italian version will follow soon - and many more later! You can change the language on the fly, or save your preferred language on the scale at the settings page.
Speech Output: You can switch on a speech-output! The scale now will read out loud the current weight each time it has changed! Depending to your selected language, device and browser you maybe even have different voices and dialects to choose from! If no voices are installed for your language, the app shows a message instead. On Linux, Chrome only finds the system voices when it is started with the option --enable-speech-dispatcher.
Calibration
Its generally not a bad idea to re-calibrate the scale from time to time, specially after not using it for a long time or if you travel with it... Our inbuilt calibration program will make things easy for you.
Single-Point: You just need to have known weight ready to hand - then click the button at the settings page and follow the instructions! For a single-point-calibration, ideally use a weight which is min. a third of the range of the scale!
Which weight? The calibration is only as exact as the weight value you type in - the scale takes it as the truth. Best are test weights (OIML R 111, e.g. class M1 or F2). No test weights at hand? Weigh any thing on a different, calibrated scale and use that value. Not a known weight: the weight printed on a package, or the reading of this scale itself (taking the shown value as the true one changes nothing - the scale would just keep its error). For a scale used for trade, the standard OIML R 76-1 (3.7.1) asks for test weights of OIML R 111 with an error of at most 1/3 of the permissible error of the scale, and the verification is done by the authorities - our calibration and self-check are no verification.
Multi-Interval / Multi-Range: Optionally its possible to calibrate the scale with multiple weights! This option will make the scale even more exact over its full range! You can use a 2-point-calibration or even a 3-point calibration which makes your scale a real multi-interval-scale (Well, we're always showing the smallest, best possible interval - but with a higher precision then, based on the current gross weight). In this case you will need a separate known weight for each calibration-step, but no worries, our calibration wizard will guide you through that!
The scale also remembers the weights of a multi-point calibration and goes in a straight line from one calibration point to the next one - so there are no steps in the weight when the load passes from one range to the next.
Exact zero and weights: for the zero and for each calibration weight, the scale takes the mean of 2 seconds - and only when the weight has been still for these 2 seconds: no hand on the plate, and a heavy weight has stopped swinging (else the error would stay in the calibration until the next one). So after you put the weight on and press the button, it can take a few seconds more; if the scale does not get still at all, it takes the value after 10 seconds anyway. Then check the result with the calibration check.
PS: Your scale will come pre-calibrated with 3 different calibration points from the factory!
📅 Calibration date & reminder: with every calibration the app sends the date to the scale, and the scale saves it (the scale has no clock of its own; for audits see the device qualification). So every phone or computer that connects sees the same "Last calibration: 15.07.2026 (94 days ago)", at the top of the calibration page and in the ⚖ CALIBRATION block of the scale settings. Scales calibrated before this firmware show "unknown" until their next calibration. Below the date you choose after how many days you want to be reminded (30, 60, 90 - the default -, 180 or 365 days, or never; this is a setting of the browser). When the calibration is older than that, a note at the end of the page tells you so when you connect, with CALIBRATE NOW and REMIND ME IN 30 DAYS. The date (with ⚠ when a calibration is due) is also printed in the header of the reports, e.g. the batch report and the tracking report. A 232 UP↑SCALER can't calibrate the connected scale itself: calibrate it with the scale's own menu, then save that date in the scale settings ("Calibrated with the menu of the scale itself on").
Center of zero: on the weighing page the stable 0 turns dark green when the scale is exactly at zero - within a quarter of a digit, not only rounded to 0 (like on lab and legal-for-trade scales). With more scales connected, the sum is shown, so it stays black then. The scale decides this itself from its unrounded weight, not the app. Not with an RS-232 scale in EXACT WEIGHT: its weight comes already rounded to d, so "0" only means within half a digit - the real center of zero is known by that scale alone (look at its own display), and the self-check skips the zero indicator there. A click on the weight (on every page with the weight) opens a small window: what its colour means (grey = still moving, black = stable, dark green = exactly at zero; the current one is marked), and what is behind the weight - the max. load and d of the scale, the speed preset with its averaging time and when the weight is stable, autozero, locking and creep compensation on or off, the last calibration (⚠ when the reminder is due) and an overload. From there, ⚙ SETTINGS opens the scale settings and 📖 MANUAL this page.
⚠ Overload: if the load on the scale is more than its max. load (+ 9 digits), the title bar at the top turns red with "⚠ OVERLOAD", the load and the max. load (on every page - a click on it shows the whole warning). The weight is still shown, but above the max. load it is no longer exact, and the load cell can be damaged: take weight off. The load counts against the empty scale, so a tared container counts too. Also when the sensor reaches the end of its range (then the shown weight is wrong). Scales with a load cell; an RS-232 scale shows its own overload.
Tare: the new zero is the mean weight of the half second before you pressed TARE - so the press itself does not get into it, and the display shows 0 at once. If the weight was still moving (you pressed while putting a bowl down or pouring), the scale waits until it is still (max. 3 seconds) and then tares: the weight stays visible until then, and the zero is right. The same at the start: the scale zeros itself as soon as the plate is still (max. 3 seconds after switching on), so a hand on the plate does not get into the zero. This is for your own tares (the app, the button of the scale, "T" via USB); tares of programs and machines (coffee, recipes, factory, check-weighing, sorting, espresso machines, ESP-NOW) are done at once. After a tare the scale shows 0 for a moment before it is stable again: 1 second after a button on the scale (the plate still shakes from the press), and only 0.1 seconds after all other tares (the app, USB, programs and machines) - so the first drops of an espresso are shown right away.
Automatic zero tracking (autozero) (on by default): while the scale shows zero, it keeps it exactly at zero - small drifts (warming up, temperature) are corrected by themselves, in tiny steps (max. half a digit per second, only within less than one digit around zero). This also works after you tared a bowl: as long as nothing is added, the display stays at 0. So small amounts you add slowly are not zeroed away, and the display does not jump. During a tracking run it stays off while an item is tared away. With the creep compensation on, it works more strictly (like legal-for-trade scales, OIML R76): only at the real zero of the empty scale, after taring something light (up to 4 % of Max), or when a tared container was taken off again - and all its corrections together stay within 4 % of Max.
Scale data and scale profiles
The block SCALE DATA at the top of the settings holds everything about the scale itself. On our own scales the values are fixed and only shown: max. load, d, e = d and the Device ID as serial number. They have no data plate and no class to enter: the tests use the class that fits e and the number of steps. On an RS-232 adapter (232 / DIY) you set the max. load and d of the scale it is attached to here (from the data plate or the manual; this is needed to weigh), and the connection itself (baud rate, data format, scale type, tare signal) on the RS-232 page. Maker / model, serial number, e and class are optional: you do not need them to weigh - they only go into the test records and reports of the test suite and the quality records.
Scale profiles (RS-232 adapters, PRO: 3 profiles, ENTERPRISE & COMPLIANCE: 50): do you move one adapter between several scales? Everything is in one place: on top of the SCALE DATA block is the select of the scale in use, below it the data of the attached scale. Select a scale and the adapter applies its RS-232 settings, max. load and d (with its ranges) at once (it restarts if the baud rate or data format changes); its data is filled in and folded away, so it takes no room - open it to change something and press SAVE CHANGES. With - custom - the fields are open: enter or change the data and press SAVE, or SAVE AS NEW PROFILE (it takes the present RS-232 settings, max. load and d, plus the name and the optional data). The profiles are saved on the adapter, so every phone and computer connected to it sees the same list and the same scale in use. The records follow the scale: the register entry, the test history and the routine check are kept per profile on the adapter, and the test data in your browser too, so a scale never inherits the test dates of another one. "Custom" has records of its own; when you save the attached scale as a new profile while "custom" is selected, the records made so far go with it. Deleting a profile deletes its records. A change on the RS-232 page while a profile is in use updates that profile. With users, saving and deleting follow the rules of the settings (ADMIN gate, reason in the strict audit mode, not by an operator); selecting a scale is allowed for every logged-in user. The activity log notes every selection, so it shows which scale was attached from when on. In the free version the select is shown greyed out (saving and switching profiles are PRO); max. load and d can always be set.
Back up and move profiles:⬇ EXPORT PROFILES (below the select) saves a file with the data of every profile: name, maker / model, serial number, baud rate and data format, scale type, tare signal, unit, decimals, Max and d table, e and class, the certificate data, the asset name and test interval of the register, and the permanent number. It never contains the logs, the test history or the sales. ⬆ IMPORT PROFILES reads such a file on the same or another adapter. An import never deletes a profile and never changes the meaning of an old log entry: a profile of the file with the same name and serial number as one on the adapter is written into it (it keeps its slot and its permanent number), every other one is added as a new profile with a new slot and a new number. The adapter asks first and shows which profiles are updated (=) and which are added (+); the licence limit (PRO 3, ENTERPRISE 50) applies, and with users and in the strict audit mode the usual rules for saving a profile apply (ADMIN gate, a reason). Every written profile is noted in the activity log. Keep the file safe: it holds the data of your scales.
📜 Certificates & counters (folded, at the end of the SCALE DATA block): type in once what is on the data plate or certificate of the weighing instrument - the CE / metrology marking with the notified body, the EU type examination or OIML certificate, the NTEP Certificate of Conformance, the serial number of the instrument and (RS-232 adapters) the firmware of the connected scale. It is saved on the scale (adapters: per scale profile) and printed on every report and the sealed report, so an inspector can compare it with the plate. The line on top shows the two event counters of the scale: the calibration counter (+1 for every calibration saved) and the configuration counter (+1 for every change of the settings, the creep / tare guard / environment filter, the density settings or the scale profile). They count in every edition and can not be reset. Fill in only what your instrument really has - our own scales have no type approval.
⚖ Minimum weight (USP <41>) (ENTERPRISE & COMPLIANCE, on by default; folded, at the end of the SCALE DATA block): below the minimum weight of a balance the relative error of a weighing is too big for analytical work - e.g. 2 mg on a balance whose minimum weight is 10 mg. Type in the certified minimum weight of your balance (from its calibration certificate or its qualification, USP <41> / Ph. Eur. 2.1.7) and press SUBMIT. From then on, a weight above 0 and below it asks first before it is recorded: ∑ (also a booking of the SALES MODE) and a label say "BELOW THE MINIMUM WEIGHT" with both values. Recorded anyway, the activity log notes it with the weight. Without a value nothing is checked - the block then reminds you to type it in, so a shop or a club that never weighs at the limit of its scale is not bothered. The value is saved on the scale for every phone and computer (an RS-232 adapter keeps one per scale profile). With users only an ADMIN changes it (with a reason in the strict audit mode); every change and switching it off is an entry of the activity log. The routine check with the USP or Ph. Eur. profile shows the minimum weight it measures (2000 x s) as a help - the value you type in is yours. FREE and PRO show the block greyed out.
One scale or everything of the adapter: records of an adapter with several scales
An RS-232 adapter that is moved between scales keeps one activity log, one sales log and one archive for all of them. So that a report or an export never mixes up the scales, every record is assigned to the scale it was made on, and you choose the scope wherever it matters:
Per scale on the adapter (the profile of the scale, scale profiles): the register entry, the test history, the routine check, the certificate data and the two event counters (calibrations, configuration changes). Selecting another scale is no configuration change.
Assigned by the app: the entries of the activity log (the log notes which scale is attached: at every start, every selection, every saved or deleted profile) and the sales (every sales record carries the scale it was booked on).
The same for all scales (marked adapter): users and their roles, logins, the device register, the clock, the settings of the adapter, the seal and the licence.
Scope: a selection Scope appears on the 🗂 RECORDS page (tab 🛡 ACTIVITY) and in the sales report: This scale (the default: only the records of the scale that is attached now plus the entries about the adapter) or Everything of this adapter (all scales, a column tells which scale each entry belongs to). It applies to the lists, the CSV exports, the printouts, the sums by day / THING / user and the sealed report. For one scale the sums are made of its single sales, because the UP↑SCALE adds up the sums of the whole adapter. The download everything button of the memory warning always saves all of it.
Records for the files:SAVE FOR THE RECORDS always saves the complete log of the adapter - the chain can only be checked over all entries, so these files are the evidence. For an auditor or a customer of one scale there is EXTRACT OF THIS SCALE: a sealed file with only the entries of that scale and the ones about the adapter. Every entry carries the fingerprint before it, so CHECK ARCHIVE FILES (and up-scales.com/check) can check each entry on its own, and against the complete files if you choose them as well. The extract also has its own chain: every row is chained to the row before it in the extract, and every row says how many entries of other scales lie before it. So the extract is a gapless trail of that scale on its own: a changed, removed or swapped row, or a hole that is not declared (also a cut-off start or end of the log: the file names the first and last entry of the whole log), is found by the check. What the other scales did is not shown; that the declared holes really belong to other scales can only be proven with the complete files (keep them, see the record files above). The file is named UPSCALE-Audit-Extract_<adapter>_<scale>_<date>_No-<from>-<to>.json, so in a folder the extracts sort by adapter, then by scale, then by date, and the extracts of different scales never mix. Choose the extract together with the complete record files (CHECK ARCHIVE FILES, or the check page) and the check goes further: the complete files must hold the whole log from the first to the last entry named in the extract with an unbroken chain, every row of the extract must be there unchanged, nothing that belongs to this scale or the adapter may be left out, and the skipped entries must belong to other scales. Only then is the extract proven complete; if the complete files cover only a part of the log, the check says so and does not call the extract complete. An extract is no replacement for the complete files.
The sealed report of sales checks the numbers and the chain over all records of the adapter first, then shows the scope; for one scale it says how many of the records of the adapter in the period it shows. The counters inside it are compared with the records of the same scale.
Permanent numbers: every scale profile gets a number that the adapter never gives twice (P000001, ...), every device in the device register a device number (S000001, ...), like the user numbers. They stay unique when a profile is deleted and its place is used again later (new profiles take the places in a circle) or a device is removed from the list; old entries show the right scale and device.
Limits: entries of the log that are older than the first note of the attached scale cannot be assigned and are not shown for a single scale (the number is told). The sums of the sales per scale need the sales records of the newer firmware.
RS232 Scale Settings
If you are running a 232 UP↑SCALER Scale Adapter, then you can/should setup your scale once in the RS232 Scale Settings! Here you are able to configure the serial connection to your scale as like as the precision, the capacity and how you are going to tare the scale.
Scale Type (Presets)
Select the maker of your scale: METTLER TOLEDO (MT-SICS), KERN (KCP), OHAUS, A&D, ADAM or SARTORIUS (SBI). The preset fills baud rate, data config and tare signal with the usual factory settings (e.g. A&D 2400 baud 7E1, the others 9600 baud), and the dongle speaks the maker's protocol:
METTLER TOLEDO: the dongle starts the weight stream with SIR (and again after 2 seconds without data) and only takes the weight answers ("S S" stable, "S D" dynamic): no error or tare answers as weight.
KERN (KCP), A&D, SARTORIUS: the dongle asks for the weight all the time (SI, Q, ESC P), so the scale doesn't have to send by itself. KERN: set Mode ASK and protocol KCP in the scale's menu. A&D overload lines ("OL") are skipped.
OHAUS, ADAM: set the scale's output to continuous (OHAUS: Auto Print - Continuous).
RS232 WEIGHING SCALE: every other scale that sends its weight continuously.
The models of a maker differ: the preset is a start, your scale's menu must have the same settings (check its manual). Lines without any digit (like "S +" for overload) are never shown as weight.
Serial Connection
If the scale is not working out of the box, check your manual for the exact serial connection settings (baud rate (often 9600), start bits, stop bits and parity) and overtake them to the app.
🔍 Auto-Detect Baud Rate
Don't know the settings? Let the scale send (or select its type, then the dongle asks it) and press 🔍 AUTO-DETECT BAUD RATE. In about 10 seconds the dongle tries the usual baud rates (1200 to 115200) and data configs (8N1, 7E1, 7O1, 8E1, 8O1) and shows what it found, with a line of the received data. The found values are filled in: press SAVE to use them (the scale restarts). Nothing found? The app tells you why: no signal at all - the scale doesn't send (switch on its output, e.g. continuous output or the print key) or the wires are crossed the wrong way (try a null-modem adapter, or a straight cable instead of one); data, but unreadable - choose the preset of your scale or set data bits and parity by hand.
Hardware/Software Tare
While many RS-232 scales are able to receive a TARE signal, some cheaper models are not able to do so! You are able to select between the most common hardware tare sigals (like T, t, @ or ESC T for SARTORIUS) within the settings, best try out if one of them is working, this would be the best option! If not, no worries, you always can use the software tare option!
Board Pins (UP↑SCALE DIY only)
Only shown on a DIY adapter (also on the ESP32-C3 RS232 Adapter, which needs no change here): the GPIOs of your board that go to the RS-232 board. Choose your board (ESP32-C3 RS232 Adapter, Seeed XIAO ESP32S3/C3, Adafruit QT Py ESP32-S3/C3) - its pins are filled in - or CUSTOM and type the GPIO numbers (not the D/A numbers printed on the board) of TX (to TXD, data to the scale), RX (to RXD, data from the scale) and optionally RTS (leave it empty for none; the firmware holds it on, for scales with a hardware handshake). ⇄ SWAP TX/RX exchanges the two for wires the wrong way round. SAVE PINS saves them on the adapter, which restarts. Pins that would stop the board (flash, PSRAM and USB pins) are refused. A new adapter starts with the pins of the XIAO ESP32S3 (TX GPIO 43, RX GPIO 44, RTS GPIO 2) on an S3, or of the ESP32-C3 RS232 Adapter (TX GPIO 10, RX GPIO 4, RTS GPIO 0) on a C3 - on a XIAO ESP32C3 choose it here once.
Listen Only (for verified scales)
Switch on LISTEN ONLY and the dongle never sends anything to your scale: no weight requests of the presets, no hardware tare (the app uses the software tare, the hardware tare select is locked), also not while auto-detecting. It only reads what the scale sends. Your scale must then send its weight continuously by itself: set its output to continuous in the scale's menu (with METTLER TOLEDO, KERN, A&D and SARTORIUS the app shows a reminder). It is the safest setting for verified (legal for trade) scales: an add-on that sends nothing to the scale cannot change it. (Many verified scales have a protective interface that also allows requests or tare - check the scale's manual.) The display of the verified scale stays the legal reading: weights, prices and labels from the app are not verified by themselves. For weight or price labels used in trade, ask your verification office (in Germany the Eichamt) which setup is allowed (e.g. a scale with an alibi memory). For your own checks (like the ℮ control), statistics, counting or recipes it works as usual. The setting is saved on the dongle.
Exact Weight (without our filters)
Switch on EXACT WEIGHT and the app shows exactly the weight your scale sends: no averaging, no stable lock, no display filter and no automatic zero tracking - the speed and stability settings don't change the weight then. Stable is what your scale says, if its protocol sends a stable mark: METTLER TOLEDO and KERN ("S S" stable, "S D" moving), A&D, ADAM and many other scales ("ST"/"US"), OHAUS ("?" while moving). Without a mark, the app checks the stability of the exact values itself. The software tare takes the last exact value of the scale (no average). Best set your scale to grams and the precision to the scale's d: other units are converted, which can change the last digit. Together with listen only, the app shows the scale's own weight and stable mark, minus your software tare. Nothing of the app changes that weight: a virtual weight and the container of a THING are switched off in EXACT WEIGHT (they would change the result outside of the verified scale) - tare the container on the scale itself. The app also shows no center of zero here. Saved on the dongle.
Indicator view (EXACT WEIGHT)
When the customer can't see the display of your scale, the app is the display. Switch on Indicator in the basic settings (off by default, saved in this browser; switching EXACT WEIGHT on switches it on too); then in EXACT WEIGHT mode the weighing page shows below the weight the marks NET or GROSS, the tare (T), →0← (exactly at zero) and STABLE, updated with every value of the scale. ⛶ INDICATOR shows the same big on the whole screen - for a screen or tablet that faces the customer (✕ closes it). When the data stop, it shows – – – (see when the data stops).
Extra Line (e.g. alibi number)
Some scales send an extra line when you press their print key, e.g. the alibi number of a verified scale ("Alibi 000123"). Type into EXTRA LINE OF THE SCALE how this line starts (e.g. Alibi, up to 12 characters, upper and lower case count). The dongle then does not read the line as a weight, but keeps the last one and sends it to the app. It shows below the weight for a minute (weighing and counting, "🔖 Alibi 000123"), and the next entry you log (🍽/OK) within 30 seconds gets it as "🔖 Alibi 000123" in the log - each number only once. In the statistics it is listed per value in the lot report and the CSV export (an extra column, only if there are numbers). Put it on your labels with the placeholder [scaleline] (empty if the last line is older than 10 minutes). Leave the field empty to switch it off. This only reads, so it works with LISTEN ONLY too. The app copies the text of the scale: it does not create or check an alibi number, the alibi memory of the verified scale stays the legal record.
Scale Settings: max. load, d and the weight unit
Add the maximum capacity (in g) and the d of your scale (the smallest step it shows, on its label or in its manual) and the unit your scale sends (grams, kilograms, milligrams, ounces...). d is always 1, 2 or 5 × 10ⁿ - from 0.1 µg (ultra-micro balances) to 500 kg (weighbridges), e.g. 0.2 g, 5 g or 20 kg. The list only shows the d that fit the max. load (100 to 100 million steps, grouped in µg / mg / g / kg / t); ▾ show all d shows the rest. d is in the unit the scale sends.
Several ranges (multi-interval or multiple range scales, e.g. many shop scales: up to 6 kg d = 2 g, up to 15 kg d = 5 g): choose 2 RANGES or 3 RANGES, the d of each range and where each range ends (the last one ends at the max. load). Multi-interval: d follows the load up and down. Multiple range: the bigger d stays until the scale is back at zero. The adapter and the app round every weight to the d of its range, both in exactly the same way, and the test suite uses the e of the range of each load.
High resolution: a scale with more than 4 million steps in one range (e.g. a microbalance with 6.1 g and d = 1 µg, or an ultra-micro balance with 2.1 g and d = 0.1 µg) has more digits than the normal weight value can carry (about 7). It works with EXACT WEIGHT only (the app switches it on): the adapter then also reads the weight as an exact count of d from the digits of the scale, so the weighing page, the logs, labels and the tests get every digit. Limits: the tracking, statistics, check-weighing, factory, sorting and density modes keep working with about 7 digits (the app says so once when you open one of them); several ranges can not be combined with high resolution; the max. load of the old setting (for older apps) is a whole number of grams.
The table is saved on the adapter and goes with its scale profiles.
Connectivity
You have the option to allow (or disallow) the connection to the scale for multiple devices! This can be very useful if several persons are using the same scale at the same time - but could course trouble in public environments, so you can decide when you need it. Also there is a Weight-For-Everybody function. If this option is on, then the current weight or count on the scale will be continuously send via the public manufacturer data of the scale and can be read from every device nearby - without any prior connection to the scale! (Same like the find-me or iBeacon devices). Beside of that you will find multiple options to transmit data and receive commands via USB (Serial Port) and/or ESP-NOW! (To connect with scale software, printers or own devices!) Your labels you can print directly on label printers via wireless, USB or serial port.
Expert Configuration
You are able to control all the sensor- and averaging settings which are controlling how fast and exact the weight will be shown. You can keep all settings at automatic, but sometimes you maybe want to change something, for example to stabilize the weight better if you are in a windy environment. Click here to read more about this expert-scale-settings.
Speed presets: at the top of "Speed & Stability" in the settings, one slider sets all of them at once - from A (AUTO, the factory setting: the scale adapts the filters by itself) via 1 (super fast, nearly unfiltered) and 3 (fast, for filling and the factory mode: quick while you fill, calm when stable) to ★ 4 STANDARD, and on to 8 and 9 for animals (the mean weight over about 4 or 8 seconds, for calm or restless animals) and 10 (the calmest value, averaged over about 18 seconds - for wind outdoors or long measurements). Below the slider you see what the selected preset does, how long it averages and when the weight is stable. The single sensor and filter settings are below it under "⚙ Expert filter settings", followed by Autozero, Locking and Display (always visible) - change one of them and the slider shows "own settings". Save the settings as usual.
Zero Memory (silo, tank): for a load that stays on the scale - a silo, a tank or a container that is always on it. Normally the scale sets its zero at every start with what is on it, so the plate must be empty then. With Zero Memory on (settings, top box, below Heartbeat Lock; off by default) the scale saves its zero and a tare and starts with them instead: you can switch it off and on again with the load on it, and it shows the same weight as before. The zero is saved about 2 seconds after a tare, a slow change of the autozero at most every 10 minutes. If the load at the start is clearly below the saved zero (more than 4 % of Max), the scale does not trust the saved zero and sets a new one as usual; the settings show a red note then. A tracking run that goes on after a restart keeps its own zero. Load cell scales only (not the RS-232 adapters: the connected scale sets its own zero). Saved on the scale for all apps.
✅ Routine check before use: the first block of the ☑ TEST page (see Scale Self-Check). The short check you do before you work with the scale - every day, every shift or at the interval of your own procedure: put a known weight on a few times, the app takes every value by itself as soon as it is stable (or with ✓ TAKE NOW), each value counts minus the empty plate before it, and you get PASS or FAIL. There is no one rule for every kind of work, so you choose a profile:
Quick check (kitchen, food, HACCP): one reference weight 3 times in the middle of the plate; PASS when the mean is within your tolerance (default 1 % of the weight, at least 2 d - set what your HACCP plan asks for). There is no standard for kitchen scales: this is the common practice.
Trade (OIML R 76, in use): one weight (and optionally a second one) 3 times, 6 times for the classes I/II; every single value must be within the limit for scales in use, 2 x the maximum permissible error of the class of your scale. What your country asks for is set by the national rules.
Industry QA (two weights): a small weight 10 times for the repeatability and a big weight (at least 5 % of Max, best near Max) once for the sensitivity, with limits from your process tolerance (default 0.10 %).
Lab: USP <41> and Lab: Ph. Eur. 2.1.7 (balances for analytical work): one weight 10 times; the repeatability is met when 2 x the standard deviation divided by the smallest net weight you weigh is at most 0.10 % (a standard deviation below 0.41 d counts as 0.41 d). Accuracy (USP, 0.10 %) or sensitivity (Ph. Eur., 0.05 %): one weighing of a weight of at least 5 % of Max - the second weight, else the first weighing of the series. The app shows the minimum weight of your scale (2000 x s): below it, the pharmacopoeias say the scale is not good enough for your weighings. Neither pharmacopoeia asks for this test every day - how often is set by your own risk assessment.
Custom (own SOP): the number of weighings (3 to 30), a limit for the mean error and, if you want, a repeatability limit.
Every check with 10 or more weighings shows the mean, the standard deviation and the minimum weight. If your test weights may be off by more than a third of a limit (the weight tolerance of the self-check data), the result says so: then the check partly tests the weight. A failed check puts a red NOT RELEASED FOR USE bar on the weighing page and the test page until a check passes: find the cause (dirt, level, place, test weight, calibration - CALIBRATE NOW is offered) and press ↻ RE-TEST. The bar only warns, the scale keeps weighing. REMOVE WARNING takes it away with a reason that is logged - on a scale with users only an ADMIN can do that, without users (or without an ADMIN) everybody. Minimum interval (off, every 4 / 8 / 12 hours, every day, every 7 / 30 days) is kept by the scale, together with the time of the last passed check and an open failure, so every phone and computer sees the same: when the interval has passed since the last passed check, a yellow bar with a START button shows on the weighing page of every phone and computer until the check is done. A failed check shows the red bar (RE-TEST, REMOVE WARNING) on every device. The bars stay until a check passes or an ADMIN removes the warning or switches the interval off. On a scale with users only an ADMIN can set the interval (the scale refuses it for the others, in the strict audit mode with a reason); without users everybody. Changes of the interval, results and removed warnings are entries of the activity log on ENTERPRISE scales. The last checks of this browser are listed with the result, s, the minimum weight and the user (the browser keeps the last 1000; all of them are on the 🗂 RECORDS page, tab ✓ ROUTINE). With ENTERPRISE & COMPLIANCE, EXPORT LOG saves them as CSV / JSON, and PDF REPORT makes a sealed PDF of all of them: the period, how many checks passed and failed, whether every failure was followed by a passed re-test (or a removed warning with its reason), how often the minimum interval was missed, and every single check with the user. It documents that the scale was checked before use (with the report number, the integrity code and the UP↑SCALE SEAL like the other reports); right after a check, 📄 PDF OF THIS CHECK saves that one check (scale, time, user, every value, the limits and PASS / FAIL) the same way; on ENTERPRISE scales every check and every removed warning also goes into the test history of the scale (a removed warning shows ⚑) and into the report of the test suite. The check runs with your settings, like in daily use - it is your own check, no verification and no calibration; the names USP and Ph. Eur. only say which rules the profile follows.
⚖ Calibration check: on the ☑ TEST page (see Scale Self-Check). Is the calibration still right? Type in your test weight (best a real test weight, e.g. 1 kg, or the weight you calibrated with), start the check with an empty plate (the scale goes to the weighing mode and is tared once), and put the weight on the middle of the plate 3 or 6 times - each value counts minus the empty plate before it, and everything is taken by itself as soon as it is stable (or with ✓ TAKE NOW). You get the mean difference to the test weight in the unit, in d and in %, and the spread of the values. How many loadings: like the verification in OIML R 76-1 (A.4.10): 3 for scales of the classes III and IIII, 6 for the classes I and II - the app takes the class the self-check finds for your scale (the 420 and the 710 fit class II: 6). The repeatability test of the self-check uses 10 loadings, like the type approval. Up to 0.05 % of the weight (min. 2 d) the calibration is right, up to 0.1 % (min. 5 d) acceptable - a test weight has its own tolerance (e.g. 1 kg of class M1: ±50 mg), so a stricter limit would test the weight, not the scale. If it is more, CALIBRATE NOW starts the calibration. The reminder to calibrate again (every 30 days to 1 year) is in the settings too.
⌖ Eccentricity test (corner load): part of the Scale Self-Check on the ☑ TEST page. It checks if a weight shows the same in the middle and on the 4 corners of the plate. Take one weight of about 1/3 of the max. load, start the test with an empty plate (the scale goes to the weighing mode and is tared once) and put the weight in the middle, then front left, front right, back right and back left - each time in the middle of that quarter of the plate, not on the edge. The test goes 3 times around, and everything is taken by itself: first the empty plate (the zero), then the weight as soon as it is stable for a second. Each value counts minus the empty reading before it (like the usual test procedures: zero before each loading), so there is no tare in between. Then lift the weight off and put it on the next position. A status line shows what the test waits for, the current weight and when the next value is taken. If a value is not taken by itself (e.g. the weight does not get stable long enough), press ✓ TAKE NOW: it takes the current weight for the step that is running. The overview shows the 3 exact values of each position, their mean, their spread and the difference to the middle in d (1 d = the smallest step of the scale), and at the end the repeatability (standard deviation) and the zero drift. If Autozero is on, the test shows a warning: Autozero moves the zero by itself while the plate is empty, so switch it off for the most exact test. The result: the biggest difference of a corner mean to the middle mean (the method of EURAMET cg-18, it needs no calibrated weight) is compared with the maximum permissible error of OIML R 76 for the test load, in the class of the scale (the class you entered in the self-check, else the loosest class that fits e and n; e.g. class III: 0.5 e up to a load of 500 e, 1 e up to 2000 e, 1.5 e above). The uncertainty of the readings is taken into account: rounded readings make the difference of two means uncertain by up to 1 d, readings before rounding (newer firmware) by about 0.2 d. ✓ = surely within the limit, ≈ = cannot be decided with these readings, ~ = above the limit but surely within twice the limit (the limit for instruments in use), ✗ = above that. With the true mass of the weight (optional, the field above the start button: the conventional mass from its calibration certificate, not the nominal value) every corner is also judged against that mass like OIML R 76 A.4.7 - only the corners, the middle is not part of it; the uncertainty adds the rounding of the readings and the tolerance of the weight that you entered in the self-check data. Then that result counts for the report and the classes, and the difference to the middle is shown for information. Without the mass, the comparison with the middle is the result. This is a self-check - not a verification of the scale. More than that: check that the plate sits freely and the scale stands level and firm. The result also depends on the speed and stability settings, so test again after you change them.
⚖ Creep compensation (optional, off by default, in the "Speed & Stability" block of the settings - the scales with a load cell, not the RS-232 adapters):
🌍 Environment test (at the end of the "Speed & Stability" block in the settings; load-cell scales and the RS-232 adapters): how steady is the place where your scale stands? Put the scale on its table (empty or with a fixed load), press START ENVIRONMENT TEST and do not touch the table for 3 minutes. The scale measures its own unrest (how much the readings swing within 10 s for averaging times from 25 ms to 12.8 s, plus the slow drift of the weight - weighing standards have no such test) and the app shows the noise for every averaging time, a graph of the weight during the test with its trend, what kind of unrest it is (noise, vibration or a soft table, drift, or too restless) and the fastest speed preset that keeps the display steady (noise up to 0.18 d: the display then swings less than about one step) next to the one you use now. USE THE RECOMMENDED SETTING takes it over and saves the settings - nothing changes without your click. It works in both directions: a place that is steadier than you thought gets a faster preset. With drift or a too restless place no preset is offered (no filter fixes that). If something is put on or taken off the plate during the test, it starts again; it stops when the scale leaves the weighing/settings page. A new scale is still warming up: in the first 30 minutes the drift can be warm-up, the app tells you - repeat the test later. At an RS-232 adapter the test measures the values your scale sends (the adapter filters them again in the app); in EXACT WEIGHT mode the adapter filters are off, so only the steadiness is shown and no preset is offered. The result is a recommendation for this place and these 3 minutes, not a measurement result.
🌬 Air buoyancy correction (ENTERPRISE & COMPLIANCE, off by default; own block after the "Speed & Stability" block in the settings): a balance is adjusted with steel weights (8.0 g/cm³), so it shows the conventional mass (OIML D 28). A sample of a lower density pushes away more air and shows a bit less than its true mass: water about +0.105 %, ethanol about +0.137 %, a powder of 1.5 g/cm³ about +0.065 %, steel 0. It is a relative error, so it grows with the weight: on a scale with d = 0.01 g, 10 g of water are already one digit; on an analytical or micro balance at an RS-232 adapter it is many digits. Switched on, the app calculates true mass = reading x (1 - ρ air / 8.0) / (1 - ρ air / ρ sample) for every THING with a density - its volume unit, typed in as g/ml or saved by the density mode. Without a density nothing is corrected (never a guess). The reading itself is never changed: the true mass is shown and recorded next to it. Air density: the preset is 0.00120 g/cm³; type in your own value, or choose "from temperature, pressure and humidity" and the app calculates it with the formula of OIML R 111 (use the pressure at the place of the balance, not the sea level value of a weather report; the air changes with the weather - set it again regularly). SUBMIT saves it on the scale for every phone and computer (one value per scale, also with several scale profiles: it is the air of the room); the block shows when and by whom it was set last. With users only an ADMIN changes it (with a reason in the strict audit mode); every change is an entry of the activity log with the old and the new air density, and it counts as a configuration change. While a recipe or a solution is open on the scale the values stay fixed. Not used where the conventional mass is the rule: calibration, the tests and the routine check, the minimum weight, check-weighing, sorting, counting, sales, the club and the stock. Where it is used:
Weighing: with a THING loaded, a line under the big weight shows "🌬 true mass" with the density and the factor (only when the correction is at least half a digit). Its volume units (ml, cups ...) are calculated from the true mass.
Solution mode and recipes: the goals are true masses. The app sends the correction of every ingredient to the scale when the solution or recipe opens, and the scale judges green / red with it - so a row is green when its true mass is right, and 🧮 recalculates in true masses. The rows show the true mass (🌬), the report lists the true mass with the reading, the density and the factor below it and the air density in its head. The app needs the values of the THINGS: when a solution opens (after starting the mode and typing the rows, 📂 LOAD or 💾 SAVE) with THINGS whose values this app has not read yet, and nothing is weighed yet, it reads them by itself (a few seconds each) and opens the same solution again - a running solution can't be interrupted for it, so a THING added after the first weighing is corrected from the next LOAD or SAVE on. Recipes read them on their start page.
Density mode: the result includes the air: density = weight in air / displaced liquid x (ρ liquid - ρ air) + ρ air - so a THING saved from it has the true density. Saved results that were corrected have a 🌬 in the list (the air density is in its tooltip and in the 📋 copy); results without it use the plain formula.
The weighing log (∑) adds the true mass to a line of a THING with a density, and the LIMS / ELN forwarding sends it as air_buoyancy (true_mass_g, factor, density_g_cm3, air_density_g_cm3) next to the reading grams - for weighings and the live weight. The inventory is always booked with the reading.
🌍 Environment filter (AUTO / OFF, off by default, below the environment test; load cells and RS-232 adapters): with AUTO the UP↑SCALE does the environment test by itself from time to time, in the background and only while it stands still, and adapts the averaging: slower where the table is restless, faster where it is very steady. It starts 30 minutes after the scale was switched on (warm-up), changes something only when two measurements in a row (10 minutes apart) ask for the same preset - and only if the present setting is clearly too noisy (above 0.20 d) or clearly over-filtered (under 0.09 d) - and never when the weight drifts or the place is too restless. Only the sensor speed, the floating average and the smoothing change; stability, lock and display settings stay yours, and your saved settings are never changed (a restart goes back to them). The app shows a note as soon as the scale changed something, with an UNDO button (the automatism then waits 60 minutes). If you change the averaging in the settings yourself, it steps back. Not in EXACT WEIGHT mode of an RS-232 adapter.
🛑 Tare guard (next to the environment filter, on by default): a scale must not tare or set zero while the weight is still moving (OIML R 76-1 4.4.2, 4.5.4). With the guard on, a tare from the app, the key of the scale or USB waits up to 3 seconds for a stable weight; if the table or the load keeps moving, the tare is refused and the app shows a short note (before, the scale tared anyway after 3 seconds). A short disturbance is no problem: the scale waits and then tares. The zero at power-on and the tares of programs and machines (coffee, recipes, check-weighing, factory, ESP-NOW, Decent Scale protocol) are not keys and are not affected. In EXACT WEIGHT mode of the RS-232 adapter the guard is off by itself.
What is creep? Put a weight on your scale and leave it there: over the next minutes the reading slowly changes a little - every load cell does this, cheap ones more. Take the weight off, and the zero slowly comes back. On a fine scale (0.01 g) you can see it easily: a few hundredths of a gram over half an hour.
Autozero or creep compensation? The autozero only corrects at zero (empty scale, or a tared bowl with nothing added). The creep compensation corrects the creep at every weight, from 0 to full load - also while you weigh, and also the slow return after taking a load off.
How it knows your scale: every load cell creeps differently, so it is measured once: ⚖ MEASURE CREEP opens the tracking mode with the creep test preset (a point every second, no alarms). Follow the steps on the run page: empty plate for 1 minute, put a weight of half to full load on the scale and do not touch it, leave it 30 minutes, take it off, wait 15 minutes, then CALCULATE CREEP. Do not tare during the test. The app shows how much the scale crept, what is left with the compensation, and checks the return after taking the weight off. SAVE AND SWITCH ON saves the values on the scale. Repeat the test after a new calibration or a repair.
While it is on, the autozero works more strictly (see above): the creep under a tared bowl is removed by the compensation, and slow real changes of an item (drying, evaporation) are never zeroed away. The tracking mode is PRO (the free version: 15 minutes in a row, then a 10-minute pause - enough for a short test, a full creep test needs PRO).
Scale Number
If you connect with your scale, it will identify with a number (like #45678). This number was randomly generated at the first start of the scale and is only stored there, we do not know (or store) it at all. If you don't like your number, or if you want to change it for any reason, select the checkbox at the settings page and a new number will be generated for you!
⚖ Scale Self-Check: test your scale and get a report
Where: all tests, the checklist and the reports are on their own page: the third button ☑ TEST next to SCALE ✰ INFO and ⚙ SETTINGS. The tests that belong to settings (environment test, creep compensation and measurement, calibration) stay in the settings; the test page links to them, and the settings page links to the test page. At the top of the page is the routine check before use, the short check of every day.
On the ☑ TEST page, the block 🔍 SCALE SELF-CHECK lets you test a scale with the steps of the official test procedures (OIML R 76 / EN 45501 and the EURAMET guide cg-18) and gives you a report you can print or save. The tests run in the free version too, their reports (print, HTML, CSV) need PRO. It works with all UP↑SCALE variants and - with the 232 / 323 adapter - with the scale you have connected to it, e.g. a verified (legal for trade) scale.
It is a self-check, not a verification and not a calibration certificate. Only an authorised body can verify a scale. But the self-check can show you early what such a body would find:
Before you call the verification office: a failed appointment costs the call-out and the re-verification, and the time your scale is out of service. If the self-check shows a clearly bad corner, a drifting zero or an error that is too big, you can first fix the cause (level, a loose plate, dirt, calibration) - and you only book the appointment when the scale passes.
Before you buy a used scale: a second-hand lab or legal-for-trade scale costs a lot of money. Bring your test weights and your phone and check it on the spot - repeatability, all four corners, up and down - before you pay. A scale that fails the self-check may cost you more in repair or re-verification than the price difference to a good one.
Regularly: run the same tests every few months with the same weights and keep the reports - then you see a change early, not when a customer complains.
Scale data and classes (all optional)
The limits come from the maximum permissible errors (mpe) of the accuracy classes: 0.5 e up to a first load step, 1 e up to the second and 1.5 e above (for class III: up to 500 e, up to 2000 e, above; class II: 5000 e and 20000 e; class IIII: 50 e and 200 e; class I: 50000 e and 200000 e), where e is the verification scale interval on the data plate. The app takes d (the smallest step) from the scale and uses e = d. Only for a scale on an RS-232 adapter (232 / DIY) you can type in a different e from its data plate (our own scales always have e = d). The e, the class and the serial number are set in the SCALE DATA block of the settings (per scale profile on an adapter); the test page shows them with a link there. From e and the number of steps n (max. load divided by e) the app works out which classes are possible for this scale and tests against the loosest one - or the class you pick from the data plate. In the report you see for every class that fits if the scale meets its limits, only meets the limits of instruments in use (twice the mpe), cannot be decided or fails. So you do not have to know the class before you start. The serial number (for our own scales the Device ID, which is the MAC address, is filled in for you), remarks and the tolerance of your test weights are optional too (the tolerance of the weights is added to the uncertainty of every result).
The tests
Every test is guided: the status line tells what to do (leave the plate empty - put this weight on - take it off) and each value is taken by itself as soon as it is stable for a second. Each value counts minus the empty reading before it, like in the usual procedures. The scale goes to the weighing mode and is tared once at the start. Use ✓ TAKE NOW if a value is not taken by itself. The newest value is always on top of the table (the report lists them from the first to the last).
Test settings: while a test runs, the scale switches the filters that would change a reading by itself - only for the test and only in its memory, your saved settings are not touched: the stable lock and the display filter are off and the stability tolerance is the default (1 d). Autozero is on for the repeatability test and the calibration check (OIML R 76-1 A.4.10 asks for it: the scale is tested as it is used), off for the eccentricity test (the zero must not move between the corners), and as you set it for the weighing and tare tests. The panel shows 🧪 while the test settings are on. They end when the test ends, when you close it, when the app disconnects, when the scale restarts - or by themselves 2 minutes after the app stopped asking for them. Other apps connected at the same time see the unfiltered weight during the test. The creep compensation stays as you set it: it is part of how the scale measures.
Where the filters are used and where not: the stable equilibrium test always runs with your own settings (stable lock, display filter and tolerance are exactly what it tests, and the shown values are what counts). The weighing, tare and warm-up tests use the weight before rounding with the filters off - or, with the strict procedure and the legal display, your filters and the shown weight with the changeover step ΔL. The zero-setting, creep & zero return and eccentricity tests run with the autozero off (the zero must not move by itself). The discrimination test reads the display, because it asks what the display shows.
🎯 Strict procedure (switch in the self-check settings, off by default): makes the tests follow OIML R 76-1 (Annex A.4) as closely as a self-check can, and tells in the report which rules were met. Loads: filled in as the standard asks (Min, the loads where the mpe changes, Max; at least 5 for a verification, 10 for a type examination, A.4.4.1; the tare test with a tare of half of Max, A.4.6.1). Preload to Max once before each weighing test (A.4.1.10). Legal display: the shown weight is used, and the error before rounding comes from the changeover step +ΔL at every load (A.4.4.3: add small weights of about 1/10 d until the display jumps up by one step, and count them with the + / − buttons of the row: one click is 1/10 d; the zero readings get a row of their own with the same buttons, because the standard corrects every error by the error at zero E0 found the same way - without it the rounding of the zero stays in the uncertainty) - or, if you prefer, the weight before rounding as the reading of a device with a smaller interval (A.4.1.6); the filters of the scale stay as you use it. Repeatability by A.4.10: one series with about 0.8 Max, 3 weighings (classes III and IIII) or 6 (classes I and II) for a verification; two series with about 50 % and 100 % of Max, 10 weighings each, for a type examination - a known test weight is needed. Warm-up: the scale should be on for 30 minutes (A.5.2) - the app knows the time since the scale started and asks before it starts earlier. Test weights: OIML R 111 with an error of at most 1/3 of the mpe (3.7.1): enter their tolerance, the checklist checks it. Room temperature at the start and the end (optional): steady means a change of at most 1/5 of the temperature range of the class, not more than 5 °C (A.4.1.2). The checklist in the report lists every rule with ✓ met, ✗ not met or ? not known. Not part of the self-check: temperature, tilt and voltage tests (A.5), the range of the zero-setting (A.4.2.1) and the checks of the manufacturer's documents. It stays a self-check: no verification, no legal value.
Repeatability: the same load 10 times, with two loads (about half of the max. load and about the max. load, or only one if that is all you have) - like the type approval in OIML R 76-1 A.4.10 (a verification uses only one series of 3 weighings for classes III/IIII, 6 for classes I/II). No error may be bigger than the mpe, and the difference between the biggest and the smallest error must stay within the mpe. No weight with a known value? Leave the load field empty: the test asks you to put any weight on (best about half of the max. load up to the max. load), takes the first loading as the reference (rounded to d, it is not counted as a test), and all 10 loadings after it are compared with it. Then only the spread is judged - the repeatability itself (R 76-1 3.6.1 asks only that the results of the same load agree) - not the error against a known weight. Normal conditions or raw: the checkbox above the load field (only on scales with filter settings; PRO licensed scales always test under normal conditions, RS-232 adapters always use the unfiltered value) lets the test run with your filters on, like in daily use, instead of the raw readings; the report tells which one was used. Results in plain words: after a test the app shows the biggest deviation in percent with an example at a third of the max. load, explains what "undecided" and "in use limit" mean (a scale in that range is still accurate enough for everyday, non-legal use) and, if the tested class is not met, the same checks against the next looser class that is met. The classes are explained in a short list there and in the report.
Accuracy & linearity test (weighing test up & down): the loads rise step by step and fall again, then the empty plate (zero return). The error at every load must stay within the mpe; the same load going up and going down must agree (hysteresis). The result also shows the linearity: the largest deviation of the values from the best-fit straight line, as digits and in % of the biggest load, and the gain error (slope). This is the weighing test of OIML R 76-1 A.4.4 - the standard has no separate linearity test; the error curve against the mpe is the proof. The standard uses at least 5 loads (10 for the first test of a type), including Min (only if Min is at least 100 mg), the loads where the mpe changes and Max.
Tare test: the same with a tare weight that is put on and tared first: does the tare function keep the accuracy?
Eccentricity test (corner load) and the calibration check: see above - their results go into the report too.
Discrimination test (type examination, d of at least 5 mg; OIML R 76-1 A.4.8.2 and 3.8.2.2): at three loads (Min, 1/2 Max, Max) you put the load and ten small weights of 1/10 d on the scale, take the small weights off one after the other until the display drops by one step, put one back and gently add a weight of 1.4 d - the display must then show one step more than at the start. The app follows the display and tells you each step; it needs small weights of 1/10 d and 1.4 d (10 mg and 140 mg on a 0.1 g scale). R 76-1 has no threshold test for digital scales (the sensitivity test A.4.9 is only for non-self-indicating instruments).
Creep & zero return (classes II, III, IIII; A.4.11): half an hour with a load close to Max, the app reads the indication every minute. Creep: at most 0.5 e change within the 30 minutes and at most 0.2 e between minute 15 and 30. If they are not met, tick go on to 4 hours before the start: the standard then allows the change within four hours to stay within the maximum permissible error at the load (3.9.4.1) - the app goes on by itself after the 30 minutes (a reading every 5 minutes), the 30 minute rows are then shown for information and the 4 hour result decides. Keep the page open and the room temperature within 2 °C for the four hours. Zero return: after taking the load off, the zero may differ by at most 0.5 e from before. The autozero is off during this test. Both are evaluated from the same half hour. Keep the table still.
Accuracy of the zero-setting (A.4.2.3.1, 4.5.2): with a load on the plate the app presses the zero key (a tare within 4 % of Max is a zero-setting, the range of the zero-setting device, 4.5.1); the indication at zero must then be within ±0.25 e. Up to five different loads, exchanged each time. With the weight before rounding the zero is read directly; with the rounded display the changeover step ΔL gives it. Also checked: the zero indicator (4.5.5) - the dark green zero must be on exactly when the unrounded zero is within ±0.25 d (only with the weight before rounding). The autozero is off during this test.
Zero tracking (autozero, A.4.2.3.2): no test of its own. The standard measures the error at about 10 e, outside the range where the tracking works; the weighing test does that at every load (the first is Min: 10 to 100 d, depending on the class) with the autozero as you set it, so a tracking that eats into the load shows up as an error. The report lists it in the checklist as "not tested separately".
Warm-up time test (A.5.2): for a scale that was off for at least 8 hours. Switch it on, connect the app and start the test at once: zero and a load close to Max right after switching on, then after 5, 15 and 30 minutes (the app asks you shortly before each time to take the load off and put it back; no preload). Each result is corrected for the zero error of that moment. The time comes from the scale (its minutes since the start); the report shows the real minute of every measurement. The app asks whether the scale was off for 8 hours - it cannot know that itself.
Stable equilibrium test (A.4.12, 4.4.2): about 50 % of Max on the plate; you disturb the equilibrium once (tap the table or push the plate), five times in a row. The moment the scale says "stable" again counts as the print command: the values shown in the next 5 seconds may be no more than two adjacent ones (a span of at most 1 e). The zero and tare keys during a disturbance are not tested here: the tare guard refuses them.
Rounded readings and the changeover step
Weight before rounding: while a test runs, the scale also sends its weight before rounding (and before the stable lock and the display filter) - the tests take that value. (Outside the tests it sends only the shown weight: fewer packets while the weight stands still.) That is what the standard allows for a scale with a display of a smaller step (OIML R 76-1 A.4.4.3, at most 1/5 e): no changeover step is needed, and the report says the weight before rounding. The weight on the display stays rounded as always. On the RS-232 adapter the value is the one of your scale: switch on EXACT WEIGHT in the adapter setup, then each value is taken exactly as your scale sends it - if your scale rounds it, the app sees that all values sit on the steps (below); if it sends finer values (a service mode), the app sees that too. Without EXACT WEIGHT the adapter averages the values, and an average of rounded values only looks finer: the tests then use the shown weight. Everything below is for scales that send only their rounded display.
A scale shows its weight rounded to the step d, so one reading is uncertain by half a step. The app checks this from your values: if every reading sits exactly on the steps of the scale, the readings are rounded and the half-step uncertainty is used; if some readings fall between two steps (e.g. a verified scale with a service mode that shows ten times the resolution), the scale gives finer values and only a tenth of a step is used. A result is therefore marked ok only if it is within the limit even in the worst case, undecided if it is that close to the limit that the rounding could decide, and too big if it is clearly over. For an undecided row the app shows an input +ΔL: use the changeover method of the standard - add small weights of 0.1 d one after the other until the display jumps to the next step, and type in the total of the added weights. The app then calculates the exact error (E = I + d/2 - ΔL - L) and judges again. You only need the fine weights for the rows that are undecided. Example: a 420 shows 1000.0 g with a 1 kg test weight; you add 0.01 g pieces and the display jumps to 1000.1 g after 0.03 g: the value before rounding is 1000.0 + 0.05 − 0.03 = 1000.02 g, so the error is +0.02 g = +0.2 d. In practice few people have weights of 1/10 d - the reason why the scale sends the weight before rounding.
The scale does the following by itself while a test runs (see test settings); to set it by hand: switch the stable lock and the display filter off and set the stability tolerance to the default in the scale settings (the test warns you if the lock or autozero is on) - a big tolerance calls the weight stable while it is still settling, the display filter holds the shown value until it differs by 1 d for a second, the lock holds it until it moves by 0.75 d. On an RS-232 scale use LISTEN ONLY and EXACT WEIGHT in the adapter setup, so the adapter passes on the weight exactly as the scale shows it. Use test weights of class M1 or better, put the scale on a firm and level ground, and let it warm up first.
Checklist, inspector data and final report
At the top of the self-check settings the checklist lists every test with its status (not done / done with the result ✓ ≈ ~ ✗ and the time), a START / AGAIN button that jumps to the test, and for each test whether it is asked for a verification / conformity assessment (OIML R 76-1 Annex A: needed, or type examination = only asked when a type is examined), an inspection in use (typical: a usual set - what is asked depends on your country, please check your national rules) and a calibration (EURAMET cg-18: repeatability, eccentricity, errors of indication). The columns are short so the table fits a phone: VER (verification / conformity), USE (inspection in use), CAL (calibration) with ● asked, ○ typical, △ only for a type examination, – not asked; the first column shows the status (⬜ not done, ✓ ≈ ~ ✗ the result), explained in a legend below the table. A filter shows only the tests of one procedure, and a line per procedure counts how many asked tests are done. The same table opens every report.
Inspector data (optional, below the tests): name, organisation, inspector ID, place, report number, remarks and a signature that can be drawn with finger or mouse. It is printed on every report and saved only in this browser, never sent anywhere. The FINAL REPORT button builds one record from the checklist and all results: header with the scale and its settings, summary per procedure (which asked tests are done, whether the done ones stay within the limits, what is missing - no verdict), all test tables, and at the end fields for date, signature, stamp and remarks to complete by pen, with the line "values checked against the display of the scale". With an inspector name or signature the report says that the signing inspector is responsible for its content (and names the EXACT WEIGHT mode if it is on); without, it keeps the note that it is a self-check without legal value. Can an inspector use it? The inspector reads the legal display of the scale himself while testing; the app (with the RS-232 adapter in EXACT WEIGHT mode: the value of the scale unchanged) only records the readings. Whether such a record is accepted is the decision of the authority or the accredited body - UP↑SCALE is not affiliated with any of them and the report never claims to be an official certificate.
Why test your own scale? Good for everybody, not only for officials
You do not need to be an inspector. The tests are the same ones an official would do, so you can find out for yourself - and save money and trouble:
Before you call a verificator or a service technician: a visit costs the call-out, and a scale that fails costs a repair or adjustment and a second appointment. If you test it first, you know whether it will pass, you can fix the obvious (levelling, a dirty or loaded plate, a drifting zero, the calibration) beforehand and call only when it is ready - or when the test shows a real defect.
Before you buy a used scale (or accept a new one): the test shows in half an hour whether it is accurate, repeatable and the same in every corner, and which accuracy class it really reaches - on the spot, before the money is gone, and as proof if you want to return it or claim under warranty.
Instead of guessing: is the scale still right after a move, a repair, a heavy overload or a year of use? Does it drift when it is cold? Is the table the problem? The results and the checklist answer that, and a report from last year shows whether it is getting worse.
For your own quality system or customers: shops, labs, workshops and packers can show with a dated record that their scale was checked - and decide on facts whether a recalibration or a new scale is really needed.
It stays a self-check: for legal use (trade, packs, medicine) only the display of a verified scale counts, and only the responsible body can verify or calibrate. But a scale that passes your own test will very likely pass theirs.
The third licence level (from 8.78 EUR a month, 99.00 EUR a year or 399.00 EUR once per device, incl. VAT, includes everything of PRO; 14 days free to try, see month, year or once) is made for businesses, service companies, laboratories and inspectors who have to prove that their scales are tested, unchanged and documented. The measuring itself is never held back: weighing, taring, calibration and all tests work in every version. You find the tools in the settings of the scale, in the collapsible box QUALITY RECORDS & USERS (the ☑ TEST page shows the date of the last test and the next test due, with a button that opens the box). The test history, the activity log and its archive are on the 🗂 RECORDS page (the button at the bottom of the app; the box has a link to it). Without the edition the buttons stay visible but greyed out; a click tells you how to get it.
Equipment register: give the scale an asset name and a test interval (30 days to 2 years). The scale saves them with the date of its last test and calculates the next test due (✅ valid, ⚠ due within 30 days, ⛔ overdue). The register lists all scales this browser has seen, with their due dates; export it as CSV or JSON for your quality system (ISO 9001 measuring equipment list).
Test history: every finished test run of the scale test suite adds a short record to the scale itself (date, test, result ✓ ≈ ~ ✗, worst error in steps d, initials of the inspector): the last 40 runs, about 650 bytes of flash. It is shared by all phones and computers that connect, and a small chart shows the trend per test - so you see if a scale gets worse from test to test. The full measurements stay in the reports.
Users: optional, up to 50. The first user is the ADMIN; every user has a unique name (case sensitive), a title or role (boss, employee, bar staff, ...) and an optional password (the ADMIN too). With users, every device logs in: after connecting, every phone or computer asks who is working and logs in by itself - several users can be logged in at the same time on different devices, all sharing the one screen of the scale, and each action is recorded under the user of the device that did it. A user without a password is chosen by name only (the name just goes into the logs); a user with a password needs it on every device. There are no guests: a device that has not logged in gets nothing from a scale that has users (its screen shows the login), and the name of the logged-in user is shown in the top left corner of the app (☻ user, ♛ ADMIN, ☑ QM, ⚒ operator). The ADMIN switches the protections (all off at first): deleting sales and stock only by an ADMIN, settings, calibration, licence key and register only by an ADMIN, and strict audit (every change needs a reason, see below). A protection can only be switched on if an ADMIN has a password (the fourth, only approved recipes, also needs a QM with a password), otherwise anybody could just pick the ADMIN; a user without a password can be chosen by anybody, so the login only keeps people out if the users have passwords. The ADMIN adds, renames, deletes users, sets other users' passwords (a forgotten ADMIN password can be reset by another ADMIN; the last ADMIN can't be deleted; if the only ADMIN forgets the password, only a complete reset of the scale helps) and reads the activity log per user. The user name appears in the weighing log (on every line only if several users weighed, else once at the total), in the sales views and CSV, in the statistics values and their CSV (the scale keeps the user of every value), and in the header of printed reports. USB serial and ESP-NOW have no login (no password is sent over the air): they act with the rights of the user who logged in last on a connected app, else as GUEST.
Passwords never go over the air in plain text: every scale has its own key (the one of its seal). The app encrypts each password for the login, a new password and a signature with a one-time key made for this scale (ECDH + AES), and the scale takes it only once, within 30 seconds - a recording of the radio is no use to anybody. The app remembers the key of each scale; if it ever changes (a scale with an erased memory, or another device that poses as your scale), the app asks before it sends a password.
Roles: every user has one role. User: weighs, runs programs and tests, saves recipes and THINGS (the normal case). Operator: weighs, runs programs and tests and can sign a report as performed, but changes nothing: the scale itself refuses settings, calibration, saving or deleting THINGS and recipes, deleting and the other protected actions (the refusal is written to the activity log; the app greys out the settings button and asks for no reason). A recipe an operator runs is not saved. QM / approver: a user who additionally approves recipes and signs reports as reviewed or approved. ADMIN (also possible together with QM): manages users and protections. The role is chosen when a user is created or edited. With strict audit every user needs a password to log in (the user list marks users without one with ⚠). Roles are technical controls of the scale: it does not know who a person really is, so the passwords and the organisation around them matter.
Approval of recipes (four eyes): with users, the list of recipes on the scale shows for each recipe whether it is approved (by whom, when) or not approved (saved by whom, when). A QM presses APPROVE, confirms the statement and signs with the password; the scale checks the password again, keeps who approved which version (a fingerprint of the recipe) and writes the signature into its activity log. Every later save of the recipe makes it "not approved" again, and nobody can approve a version that he saved himself. WITHDRAW takes an approval back. The fourth protection only approved recipes can run (needs a QM with a password) lets the scale refuse to start any recipe that is not approved; the refusal is logged. It covers the solutions too (they are saved as recipes): a saved solution that is not approved does not open, and a solution typed into the app is not weighed - 💾 save it, a QM approves it in the recipe list, then 📂 load it. Recipes that were saved before approvals existed show as not approved until a QM approves them.
⚕ Compounding assistant: the special mode for labs and pharmacies - master formulas with process plan and approval, raw-material lots with use-by dates, guided weighing with the 🔏 QM release of a value over its goal (a second person with password and reason, logged by the scale), in-process controls, filling with the uniformity of mass, the sealed batch record with the signatures of the operator and a QM, and the product label.
Electronic signature of a saved report: in the box QUALITY RECORDS & USERS (settings), SIGN A REPORT FILE takes a saved HTML report of this edition and adds a signature with the meaning performed (every logged-in user with a password), reviewed or approved (a QM who neither took the report number nor performed the report). The user enters the password, the scale checks it and writes the signature (name, date and time, meaning, report number and the integrity code of the report) into its activity log, so it is part of the SHA-256 chain and of the archive and record files. The signed file is saved again (..._signed-1.html); the integrity code does not include the signatures, so a report can collect several. CHECK SEALED FILES lists every signature, checks its UP↑SCALE SEAL and compares it with the archived log of this browser: confirmed, not matching (not genuine) or not in the archive. Printed reports are signed by hand as before.
Activity log: the scale records the last 10,000 events with time and user: every sale saved with the sum button, changes of the stock (saved, deleted), start and end of the programs (recipe, factory, check-weighing, sorting, density, tracking, coffee), finished tests with their result, deleting sales and stock, calibration (with the old and the new calibration factor), saved settings, licence key, creep / tare guard / filter changes, recipes and THINGS saved or deleted, changes of the density settings (old and new liquid density), printed reports (with their number), changes of the users, log-ins, log-outs and wrong passwords, changes the scale refused (with the reason why), clock jumps and the devices (qualified, retired, a device without qualification connected). Not every single weighing. Every entry has a running number, and the entries are linked by a SHA-256 chain: the app checks with it that no entry was changed or taken out (see Archive below). The ADMIN sees the log per user on the 🗂 RECORDS page (tab 🛡 ACTIVITY). No command can delete the log. Power cuts: every entry is written in steps that a power cut cannot mix up; if the power goes while an entry is being written, the scale checks the chain at the next start and finishes the entry or leaves it out, so the chain stays whole - and it records that it happened ("Log write interrupted (power loss)"). The entries already saved, the users and the settings are not affected, and a lost Bluetooth connection changes nothing: the scale writes its log by itself.
Reason for a change and strict audit: the ADMIN can switch on a third protection, strict audit (needs an ADMIN with a password). Then every change of settings, calibration, licence key, register, creep / tare guard / filter and every deleting of sales or stock needs a reason: the app asks for it once (routine, correction of an error, new method or product, service or repair, other) with an optional note, and the scale itself refuses the change if no reason came with it, if it does not know the time yet, or if the log would overwrite entries that no app has archived. In that last case it also refuses new programs and new sales (the app keeps the sales and sends them again after archiving) - weighings and programs that are running always go on. Recipes, THINGS and density settings are asked for too and logged with the reason. The virtual weight is switched off (it is no weighing result). Without strict audit, equal setting changes within a minute are one entry; with it, every change is its own entry.
Archive and record files of the activity log: the scale keeps the last 10,000 entries (S3 and C3 alike). While an ENTERPRISE app is connected it archives them by itself - when it connects and every minute, in the background, nothing is interrupted: it loads only the entries it does not have yet, checks the chain (no entry changed or taken out, no number missing), keeps every entry in the archive of its browser with the note of its reason, and tells the scale how far it is archived. The 🛡 ACTIVITY tab of the 🗂 RECORDS page shows the number of entries, the chain result (✓ unchanged, or ✗ broken between two entry numbers), the entries on the scale that are not archived yet, alarms (a missing range, a broken chain, an archived entry that is different on the scale now), entries the scale had to overwrite before any app archived them, whether the browser keeps its data for good, and the date of the last saved record. A bar at the bottom of every page warns when 80 % / 95 % of the log on the scale are not archived yet. With strict audit the log is no rolling buffer (FIFO): before an entry that no app has archived would be overwritten, the scale stops new sales, new programs and changes (work that is running goes on) until an app has archived the log - connect the app and it goes on, no entry is lost. Without strict audit the oldest unarchived entries are overwritten, but never silently: the scale records the lost numbers and the app shows them. A round only loads the entries that are new since the last one (about 65 entries per second): a long round (from 200 new entries on, e.g. the first one or after many days without an app) shows a progress bar with the percentage and the time left - keep the app connected until it is done. SAVE FOR THE RECORDS (after archiving the newest entries) saves a record file with the entries since the last record of this scale, named so that the files of a scale stand in order in a folder: UPSCALE-Audit_420-42149_No-0000040-0000041_2026-10-23.json (scale, entry numbers, date). Every record file names the previous record file and its SHA-256 and carries the chain value at the end of it, so the files form one chain: a missing, changed or exchanged file shows up. Right after saving, the app offers the printout of the same entries (print or PDF of the browser): scale, range, chain result, missing numbers, alarms, the previous file with its SHA-256, the name and the SHA-256 of this record file, all entries with time, user, event, reason and note, and lines for signatures - so the paper and the file belong together provably. Keep the record files unchanged in your folder (the record is the file, not a copy opened and saved by another program). Check exported archive files (several at once) shows the SHA-256 of every file, checks the chain of the entries inside them, the continuity between the files (no number missing) and the link of every file to its previous file. EXPORT ARCHIVE (CSV / JSON in the chosen format) is for reading in a spreadsheet only - a spreadsheet can change values when it saves, so it is not the checkable record. The chain is public - it shows changes and gaps, it is no secret seal: someone with the tools to rewrite the flash memory of the scale could write a new consistent log, but not the record files that are already saved.
Report extras for all reports: printed or saved reports (test suite, final report, sales report, ℮ lot report, tracking report) get a header with your company data and logo, a running report number counted by the scale (the same in every app, never repeated), an integrity code in the footer and the UP↑SCALE SEAL. The footer also names the firmware, the calibration and configuration counters and the certificate data and the address of the public check: up-scales.com/check - anybody can check the file there in the browser, nothing is uploaded. If a saved file is changed afterwards, CHECK SEALED FILES in the app shows it too. (With PRO, your logo already goes on top of printed and saved reports - without number, integrity code or seal, so these files cannot be checked.)
Exports in your format: all table exports (test suite, sales, statistics, stock list, tracking, equipment register) belong to this edition. Next to every export button you choose the format: UP↑SCALE standard (comma, dot, ISO dates, fixed English column names, no BOM), Excel in the language of the app (semicolon, decimal sign of the language, BOM), Excel English, JSON (numbers and dates exactly as they are, for programs and ERP), or own settings (⚙: separator, decimal sign, date format dd.mm.yyyy / dd/mm/yyyy / mm/dd/yyyy / ISO, BOM, column names fixed or in the app language). The fixed columns: sales date, time, sale_id, thing, user, pieces, weight_g, revenue, costs, profit (per day: without time and sale_id); stock list name, date, empty_g, full_g, weighed_g, content_g, left_pct, volume, volume_unit, full_units, total_g, value, currency, expected_g, loss_g, used_since_g; statistics no, time, value_g (or value_pcs), net_g, alibi; tracking no, time, unix_time, weight, display_net, interval_s, note; register device, scale, asset, last_test, interval_days, due, state, last_seen, edition. The LEDGER CSV of the sales (date, description, amount; one line per day and THING; always comma, dot and dd/mm/yyyy) has the three columns that accounting programs document for importing transactions (QuickBooks Online, Xero via column mapping). We do not promise ready-made templates of third-party programs (Square, Shopify, DATEV, ...): their templates are strict and change - use JSON or the standard CSV with the column mapping of your program.
🔗 LIMS / ELN forwarding: in addition to the live weight and tracking of PRO, the app sends the activity log, the sales log, the stock, the sealed reports, the status of the scale for use and the weighing log as JSON to a server of your lab, while it is open and connected (LIMS / ELN forwarding).
Validation of the calculations (IQ/OQ): reference cases worked out by hand from OIML R 76-1, run against the code of the app, with a printable record and a code fingerprint for your validation file - see Validation of the calculations.
Protection of deleting and settings: instead of separate passwords, the ADMIN switches two protections for all users (see Users): deleting sales and stock only by an ADMIN, and settings, calibration, licence key and register only by an ADMIN. The old passwords for deleting the sales log and for locking the settings are gone and can't be set any more (an existing delete password still works and can be removed in the sales tab).
Good to know: the date and time come from the app (the scale has no clock - the device qualification closes this for audits): every app sends its time when it connects and every hour while it is connected, and the scale logs every jump of more than 2 minutes (clock guard). Users, protections and the activity log are kept on the scale and are the same for every app and every browser. Every phone, tablet and PC that runs the scale is qualified once with the 🖥 DEVICE QUALIFICATION form and kept in the device register.
👥 Who may use the scale: users, roles and the user access register (ENTERPRISE & COMPLIANCE)
Auditors ask for a controlled list of the people who may use a system. They want to know the user ID of each person, their role, who authorised them, since when they have access, and when the list was last reviewed. 21 CFR Part 11, EU GMP Annex 11 (§12), ISO/IEC 17025 and GLP all ask for this kind of access control. The scale and the app keep it for you:
One user per person, never reused: every user gets a permanent user number from the scale (shown as U000001, U000002, …), and the scale never gives the same number twice. This also holds after years and after any number of users came and went. Use one user per person and no shared logins.
The history is kept by the scale: creating a user, every change of the role, a new password and removing a user are written to the hash-chained activity log, with the user number, the old and the new role and the ADMIN who did it. The app archives the log, so the access history cannot be rewritten without it showing. Old log entries keep the person who was the user at that time.
The people behind the users: the 👥 USER ACCESS REGISTER lists every current user of the scale with number, user name, title, role and whether a password is set. Your QA adds the real name, the function, who authorised the access, the training date and remarks. These entries are kept on the scale, the same for every app. Only an ADMIN or a QM can change them, and every change is written to the activity log. They stay after a user is removed, so the former users keep their real names. Users who were removed stay in the list as former users.
Access review: a QM signs it with the password (✍ SIGN THE ACCESS REVIEW), and the scale checks the password every time. The scale keeps the review with the date, the reviewer and the next due date (3 to 24 months), and writes it to the activity log.
Output for QA and inspectors:
SAVE SEALED PDF makes a numbered PDF, sealed by the scale; the reviewer then signs it electronically (✍ SIGN). It contains the current users, the former users, the access history from the archived log, the access review, signature lines for the reviewer and the system owner, and a column for the signature specimen of every user. The register is attached as JSON.
PRINT prints the same record, and CSV / JSON exports it for your QA system.
Where to find it: the settings, box QUALITY RECORDS & USERS (below the user list); the 🗂 RECORDS page, tab 👥 ACCESS; and the licence of an ENTERPRISE scale.
Your part: check who a person is before you give them a user and an electronic signature. Keep the signed register with your SOP. If your authority asks for it, send the statement on electronic signatures yourself; for the FDA that is the letter under 21 CFR 11.100(c).
🔑 Password rules: lockout, maximum age, a password set by an ADMIN (ENTERPRISE & COMPLIANCE)
The scale checks every password itself: at the login, when you change your own password, with every electronic signature and with every review.
Lockout: after 5 wrong passwords in a row the user is locked for 15 minutes. A restart of the scale does not end the lock. Every wrong try and the lock are written to the activity log. An ADMIN can unlock a user at once (🔓 UNLOCK in the user list). The user list shows wrong tries and locked users.
Maximum age: the ADMIN can set how long a password may be used: never, 90, 180 or 365 days (Password rules below the user list). An older password has to be changed at the next login, before the user can work. The user list shows how old each password is.
A password set by an ADMIN for somebody else is changed by that person at the first login, when the password rules or strict audit are on. Only that person knows their password.
A new password must be a different one from the current one.
Changes of the rules are logged with the old and the new value. Minimum length, complexity and the training of your users are rules of your own SOP.
🧾 Review of the audit trail (ENTERPRISE & COMPLIANCE)
Audit trails must be reviewed regularly (EU GMP Annex 11 §9). On the 🗂 RECORDS page, tab 🛡 ACTIVITY, the box Audit trail review shows the last review, by whom, up to which entry, and how many entries have come since then.
A QM reads the entries since the last review (changes with old and new values, refusals, logins, wrong passwords, clock jumps, device events) and presses ✍ SIGN THE AUDIT TRAIL REVIEW.
The QM signs with the password, and chooses when the next review is due (1, 3, 6 or 12 months).
The scale checks the password, keeps the review, and writes it into the hash-chained activity log with the number of the last reviewed entry. So the reviews themselves are part of the record files.
An overdue review is shown in red.
🔗 LIMS / ELN forwarding: your weights and records to your own server (PRO / ENTERPRISE & COMPLIANCE)
Which edition: with PRO the app forwards the live weight and tracking (start, end, alarms and points). ENTERPRISE & COMPLIANCE adds the finished programs and batches (with their sealed report files if you want), the activity log, the sales log, the stock, the sealed reports, the status of the scale for use, the validation runs (IQ/OQ) and the weighing log (marked 🏢 on a PRO scale).
The app can send what happens at the scale straight to a server of your lab - your LIMS, your ELN, a small archive server in your network - as JSON, one event per POST. Nothing goes to us or to any other cloud: you give the address, and only your server gets the data. Settings > 🔗 LIMS / ELN FORWARDING.
Important: the app must be open and connected to the scale on that device. The scale itself sends nothing to the network - it is the app that forwards. If the phone or computer is off, the app is closed or a phone has put it to sleep in the background, nothing is sent at that time. What is lost and what comes later:
Activity log: nothing is lost. The scale keeps its entries, and the next time the app is connected it fetches the new lines (it does this every minute anyway) and forwards each line once.
Sales: the scale hands every new sale to all connected apps, so the forwarding app also sends the sales of the other phones and tablets at the scale - while it is connected itself. Sales of a time without it are not sent (each one is still in the activity log, which catches up).
Weighings, live weight and tracking events: only what happens while the forwarding app is open, and the weighings only of that app.
Only the app where you switch it on sends. The settings (address, token, events) are saved in that browser, not on the scale. Switch it on in one app only - for example on the lab computer next to the scale. You choose with a checkbox for each kind of event what is forwarded:
📜 Activity log of the scale: every line with its sequence number, time, user, text and the chain hash - your server can check the chain by itself (hash chain).
💶 Sales log of the scale: every sale the scale saves (sales mode), from any app, with its record number, the chain value of the sealed record, the THING, weight, price, user, member, lot and the raw bytes.
📦 Stock on the scale (inventory): every change the scale hands to the apps - grams used (∑, sales, recipes, solutions) or added (a dried harvest), the number of full ones, every stock check with the expected content and the loss, a new or deleted item - from every phone at the scale, also what was booked while the forwarding app was closed (it compares with the state it knew).
🔏 Sealed reports and files: every seal the scale makes (UP↑SCALE SEAL) - reports, PDFs, exports and record files, and every electronic signature - with what was sealed (title, file name, report number, for a signature its meaning and signer), the SHA-256 of the file, the time, the user, the number of its entry in the activity log, the seal itself, the certificate and the public key of the scale. Your server can check every seal on its own, the same way as the public check page. Without more, the file itself is not sent: your server gets its fingerprint, and the file that is saved or printed can be matched against it at any time. Tick with the file itself below it and the finished file comes too, as its own event sealed_file right after its seal: the same log_seq as its sealed event, the file name, the type (mime), the size, the SHA-256 of the finished file (sha256_file - for a PDF or report it differs from the sealed SHA-256, because the seal is written into the file) and the file as base64 (content_base64). Until it is sent, the file waits in the storage of this browser (IndexedDB), and only a reference waits in the queue; if the browser has lost it, the event comes with content_missing: true. A file can be large: allow POST bodies of a few MB on your server (PHP: post_max_size).
🚦 Status of the scale for use (event status, field kind): every finished routine check (routine_check: pass or fail, profile, re-test, n, mean, s, minimum weight and every single check with its error and limit in d), the release state whenever it changes and once when the app connects (release: released, due - the minimum interval has passed - or not_released after a failed check, with the state before and the last passed check), a removed warning with its reason (warning_removed), and every weight recorded below the minimum weight after the warning (below_min_weight). So your server can mark every weighing made while the scale was not released.
📝 Weighing log of this app: every ∑ and the lines of the programs (recipes, solutions, factory mode …). A line below the minimum weight has below_min_weight: true and min_weight_g.
⚕ Finished programs (event programs, field kind): every batch of the compounding assistant (batch: the whole batch record as JSON UPSCALE-BATCH-1 - lots, use-by dates, weights, releases, checks, in-process values, filling, deviations), every finished solution (solution) and every finished recipe run with its lots (recipe) of this app - by itself, at the end. With "with the report as a file" the app also makes the report itself (batch record, solution report, recipe batch report) - numbered, with the integrity code and sealed by the scale, without a download - and sends it as base64 in its own event (…:file, with its SHA-256 and report number; checkable on the check page). The batch record made this way is also kept in 🗂 RECORDS → BATCHES, ready to sign. ENTERPRISE.
☑ Validation of the calculations (event validation): every run of the validation of the calculations (IQ/OQ) in this app - date, app version, code fingerprint, browser, scale, firmware, Device ID, edition, the number of cases passed and failed, and every case (results: id, clause, pass, expected, calculated, error). Ready for your QMS without reading a PDF. ENTERPRISE.
⚖ Live weight of every mode - what the big weight shows (weight, pieces in the counting mode - then also with the weight in g and the piece weight - ml in the coffee mode), with the mode it was in. All values are plain JSON numbers; when it settles (once per weight or count; with the stability light on, when it is SETTLED) or every 1, 5 or 60 seconds. With the weight in g and in your unit, stable, the stability state and spread in d, d, the THING - and the line of the serial data format (the same as in the manufacturer data and on USB) as plain ASCII text ("serial": ST,+0000019.60 g + CR LF, counting SQ,+0000000012 PC), so a program that already reads the scale over USB or Bluetooth can use the same parser. With butler scales connected, every scale comes on its own ("scales": number, name, g, stable) together with the total of all of them ("total_g"; the serial line then shows the total). With a minimum weight set (ENTERPRISE & COMPLIANCE), a weight below it has below_min_weight: true and min_weight_g (with butler scales: the weight of this scale).
📈 Tracking: start, end and every alarm of a tracking run (target reached, constant weight, jump, restart, peak, above / below the band) - and, as an extra choice, every new point.
The id is fixed for each event (the activity log: device + sequence number). If an event comes twice - after a lost answer, or when an app connects again during a tracking run - your server simply drops the second one.
The app never waits for your server. A POST that gets no answer is given up after 8 seconds (a sealed file: 60 seconds); a failed one is sent again later (after 5 s, then longer, up to every 5 minutes), in the right order. Up to 1000 events wait in the browser, also over a reload. A red bar at the bottom of the app warns when 800 of them are used (soon the oldest are dropped - they stay on the scale and in the archive files) or when your server was not reachable for an hour; it goes away by itself once the queue empties. The live weight never waits: an old weight is worth nothing, so it is only sent when nothing else is on its way. 📡 TEST sends a test event ("ping") and shows the answer; the status line shows how many were sent, how many wait and the last error.
What your server needs (browsers are strict here):
https. The app runs on https; browsers block a POST from it to a plain http:// address. A certificate of your own lab (internal CA) is fine.
CORS headers that allow the app: Access-Control-Allow-Origin (https://up-scales.com; the offline app sends the origin null), Access-Control-Allow-Headers: Content-Type, Authorization, and for an address in your local network also Access-Control-Allow-Private-Network: true. Some browsers ask once whether the app may reach devices in the local network - allow it.
An answer with a 2xx status. Anything else counts as not delivered and is sent again.
A complete receiver in PHP that writes every event as one line into a file:
<?php
// upscale-receiver.php: every event as one line in events.jsonl
header('Access-Control-Allow-Origin: https://up-scales.com');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
header('Access-Control-Allow-Private-Network: true');
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {exit;}
if(($_SERVER['HTTP_AUTHORIZATION'] ?? '') != 'Bearer YOUR-TOKEN') {http_response_code(401); exit;}
$event = json_decode(file_get_contents('php://input'), true);
if(!is_array($event) || empty($event['id'])) {http_response_code(400); exit;}
file_put_contents(__DIR__ . '/events.jsonl', json_encode($event) . "\n", FILE_APPEND | LOCK_EX);
echo 'OK';
A second copy outside the scale and the browser: forward the activity log to a storage of yours where entries can only be added (for example an append-only file, or a bucket with a retention lock). Together with the chain hashes this keeps an independent copy of every line, and a later change on the scale side or in a browser archive shows. How long and how strictly that copy is kept is set up in your storage.
The UP↑SCALE SEAL (ENTERPRISE & COMPLIANCE)
Every scale makes its own seal key (ECDSA P-256) a few seconds after its first start with this firmware. The private part never leaves the scale. When an ENTERPRISE app prints or saves a report, a record file of the activity log, an export or a PDF, it sends the SHA-256 of the file to the scale, and the scale seals it: it signs the SHA-256 together with its Device ID, the time, the report number, the logged-in user and the number of the entry that it writes into its activity log for this seal ("Sealed by the scale"). Changing one character of the file breaks the seal, and no app or computer can make a new seal without the key of the scale - also not with a changed app or a pretended scale.
Where the seal is: a report (HTML) shows it in its footer ("Sealed by the scale ..., log entry #..."); a JSON record file or export has it as its last field seal; a CSV export gets a second small file <name>.seal.json - keep both; a PDF has it in its document data and shows the report number and the integrity code on every page.
Signatures: a performed / reviewed / approved signature on a saved report file is sealed too, with the name of the user and the meaning of the signature: the meaning or the name can not be changed later.
PDF reports:SAVE AS PDF (test suite, validation record, lot report, tracking report, and the printout of a record file) makes an A4 PDF with the report as text and tables (charts are left out); the HTML report itself - with its integrity code, seal and signatures - and, for the activity log, the JSON record file are attached to the PDF (most PDF viewers show them in their attachments panel). The PDF is sealed as a whole.
Seal certificate: UP↑SCALE confirms with its licence key that the seal key belongs to the scale with this Device ID and the ENTERPRISE edition. It comes with the link of the key email of an ENTERPRISE order (the app sends it to the scale), or the app asks for it once - only after you confirm: with the link of your order it comes at once; without it, it is sent by email to the address of the order. The settings page has the block UP↑SCALE SEAL (below SCALE DATA): a short description, the state and the public seal key, a red warning while the scale has no certificate, and GET SEAL CERTIFICATE to ask for it. A new key (after the flash memory of the scale was erased) needs a new certificate; old certificates stay valid for the old files. Without a certificate a seal shows only "the same key as before" - the check says "key not certified".
Checking: in the app, CHECK SEALED FILES (in the QUALITY RECORDS & USERS box; several files at once: PDF, HTML reports, JSON record files, a CSV with its .seal.json) shows for every file whether it is unchanged, which scale sealed it, when and who was logged in, the certificate, the signatures - and whether the seal has its entry in the archived activity log of this browser. Somebody who has no app and no scale (an authority, a customer, an auditor) uses the public page up-scales.com/check: the same checks in the browser, without the archive, nothing is uploaded.
Sealed, not signed: why the scale's mark is a seal, how it is made and how an auditor checks it: sealed or signed?
What a seal is not: no qualified electronic signature (eIDAS), no official certificate, and no proof that the measurement was right or that the firmware of the scale is unchanged. Seals made outside the scale have no fitting entry in the archived activity log, so keep the archive and save the record files regularly.
🔏 Sealed or signed?
Two words that are often mixed up. In UP↑SCALE they mean two different things, and a record can carry both:
Sealed = by the scale, by itself, for every report, PDF, record file and export: "this file comes unchanged from the scale with this Device ID, made at this time, with this user logged in, logged as entry #...". In EU law (eIDAS) this idea is an electronic seal: the mark of an organisation or a system that shows where a document comes from and that it is unchanged.
Signed = by a person, on purpose, with their own password: "I, name, performed / reviewed / approved this report" (see signatures). That is an electronic signature in the sense of 21 CFR Part 11 §11.50 / §11.70: the printed name, the date and the meaning, linked to the record. The scale checks the password, writes the signature into its activity log and then seals it, so the name and the meaning can't be changed later.
Why it is called "sealed": a signature needs a person who means something by it. The scale means nothing - it only vouches that the file is the one it saw. If the scale's mark were called a signature, an auditor would read that a person approved the report when nobody did. So the app calls a file sealed as soon as the scale has sealed it (SAVE SEALED PDF), and signed only after a person has signed it (✍ SIGN REPORT …). For the same reason nobody - not we and not you - may call it a qualified electronic seal: that needs a certificate from a qualified trust service on the EU trusted list and a certified signing device. Our seal uses the same idea and the same cryptography, but it isn't one.
Why nobody else can make one: the private key is made by the scale and never leaves it; our licence key confirms which scale the public key belongs to (the seal certificate). Without the key of the scale no app, computer or person can make a seal that fits a changed file - we can't either, we never have that key.
Industry standard, open format: SHA-256 (NIST FIPS 180-4) and ECDSA on the curve P-256 (NIST FIPS 186-5), the algorithms that also protect HTTPS, PDF signatures, software updates and electronic passports. Only the place of the seal in the file is ours, and it is open:
a seal = 80 bytes of data + 64 bytes of ECDSA signature (r | s) over the SHA-256 of these 80 bytes. The data: version, kind (1 report, 2 file, 3 signature), Device ID (6), the number of the log entry of the seal, the time (epoch, UTC), the report number, the user and its name, the meaning of a signature, and the SHA-256 of the document.
the seal certificate = 80 bytes (version, edition, Device ID, certificate number, date, the public key of the scale) + 64 bytes of signature of our licence key; our public key is built into the check page.
the document hash: an HTML report without its code, seal and signature fields; a JSON file without its last field seal; a CSV file as it is (the seal is in the .seal.json next to it); a PDF with its seal field /UPSCALESeal filled with zeros.
The script of the check page is plain, readable JavaScript, so an auditor's IT can re-check a seal with any standard crypto library, without us.
How an auditor checks a file in under a minute: open up-scales.com/check on any computer or phone, choose the files (several at once), and read for each one: unchanged or not, which scale, when, which user, which log entry, whether the key is certified, and the signatures of the people. Nothing is uploaded, no account or app is needed. For the complete check the auditor asks for the record files of the activity log of the same period: the log entry named in the seal must be in them.
What it brings: for you, every report is sealed by itself, without extra signing software, bought certificates or a subscription, and it shows that the record comes from the scale and not from a typed or edited file. Auditors check your records themselves, at once and independently of you and of us, and ask for the right log entries instead of searching.
Adobe Reader and other PDF viewers do not list our seal in their signature panel: that panel shows only PAdES signatures with the certificate of a trust service. If you need one, sign a copy of the PDF with your own signature tool and keep the sealed original: any change to a PDF (an added signature too) makes the seal of the whole PDF no longer fit, but the attached report still checks.
For regulated laboratories (ISO/IEC 17025, GLP/GMP, 21 CFR Part 11)
Laboratories that work under a quality system have to show that their balances are tested, that their records are complete and unchanged, and who did what. No software is "compliant" by itself: compliance comes from the validated system together with the procedures (SOPs) of the laboratory. UP↑SCALE gives you technical controls and records for that; this list says exactly what they do today, so that you can judge them in your own validation.
Records on the scale, not in one browser: users, protections, the test history and the activity log are kept in the scale itself and are the same for every connected phone or computer (see ENTERPRISE & COMPLIANCE).
Who may use the scale: every user has a permanent user number that is never given twice, and every change of the users and roles is in the chained activity log. The user access register adds the real names, authorisations, training and the access review, as a sealed PDF for your QA and the inspectors.
Passwords and reviews: lockout after 5 wrong passwords, an optional maximum age, a password set by an ADMIN is changed at the first login (password rules), and QM-signed reviews of the user access and of the audit trail (audit trail review).
Who, when, what and why: with users, every connection has to log in, and each logged action carries the user, the time and - with strict audit - the reason; calibration, density and every setting that changes the weight or the records keep the old and the new value. Every entry has a running number and is linked by a SHA-256 chain, and every app keeps an archive of the log in its browser (see ENTERPRISE & COMPLIANCE).
Report integrity and the UP↑SCALE SEAL: every printed or saved report carries a running number counted by the scale and an integrity code (SHA-256), and the scale seals it: it signs the SHA-256 of the report with its own key (ECDSA P-256) and writes the seal into its activity log. Record files, exports and PDF reports are sealed the same way. Anybody can check a sealed file - in the app (CHECK SEALED FILES, also against the archived log) or on the public page up-scales.com/check (in the browser, nothing is uploaded) - see the UP↑SCALE SEAL.
Test procedures: the test suite follows OIML R 76-1 Annex A; the limits are calculated by the app and every rule is shown as met, not met or unknown.
Validation of the calculations: a built-in set of reference cases worked out by hand from OIML R 76-1, run against the code of the app, with a printable IQ/OQ record and a code fingerprint (see Validation of the calculations).
Complete on the product side. These are the technical controls. Everything an audit can expect from a balance and its software is built in:
an audit trail in the scale with who, when, what, why and the old and the new value, hash-chained, for every connected device (Part 11 §11.10(e), Annex 11 §9)
access control: permanent user numbers and roles, lockout, password age, and QM-signed reviews of the access and of the audit trail (§11.10(d), (g), §11.300, Annex 11 §12)
electronic signatures with the name, the date and the meaning, checked by the scale and linked to the record (§11.50, §11.70)
sealed records that anybody can check (§11.10(b), (c); sealed or signed?)
the test suite, the routine check and the validation of the calculations
What stays with you is what no product can do for you: your validation, your SOPs, training, checking who your users are, and the storage and time servers of your IT. The app brings the forms and templates for these too. How it saves time:
For your QA: the binder documents come out of the app, filled in by the app, sealed and with signature lines: device records, the user access register, the device register, test records, routine check logs, review records and the IQ/OQ record. You need no consultant for the paperwork, no extra validation package and no subscription.
For the auditor: checking a file takes a minute on the public check page. The reviews, the signatures and the log entry of every seal are in the records, so the auditor asks for certain entries instead of leafing through logbooks.
All of this is built to the expectations of 21 CFR Part 11, EU GMP Annex 11, ISO/IEC 17025, GLP and ALCOA+. It is not a certification: compliance comes from your validated system together with your procedures.
Limits today (please take them into account in your validation): the scale keeps the last 10,000 log entries and the app archives them while it is connected - save the record files regularly; with strict audit the log is no rolling buffer: the scale refuses changes, new programs and new sales before it would overwrite entries that no app has archived (without strict audit it overwrites them, but records which numbers were lost). The log records which setting was changed, by whom, when and why, with the old and the new value for calibration, density, the weight unit, the filters, zero tracking, the stable lock, d and the ranges, the RS-232 setup, the tare guard, the creep compensation, the environment filter, the heartbeat lock, the protections and the password rules; for the other settings (language, display, connections) only that they changed. The chain of the log shows changes and gaps, but it is not signed: whoever could rewrite the whole log and recalculate the chain could not be told from the original on the log alone - so the archived and exported copies (with the seal) are the evidence. The integrity code of a report alone detects changes of the file but anybody can compute one - the UP↑SCALE SEAL is what shows that a file comes unchanged from a certain scale; the drawn signature on the report is an image; a signature on a saved report file is checked against the log of the scale and its archive and sealed by the scale, but it is not a qualified electronic signature (no certificate of a trust service - labs that need one sign the PDF with their own qualified signature tool); seals made with a copied key have no fitting entry in the archived log; the seal does not show that the firmware of the scale is unchanged; recipe approval covers recipes only (not THINGS or settings); the operator role is enforced for the actions listed above, not for every single setting; passwords are optional unless you use strict audit or rely on the protections. Reports are HTML files or sealed PDF files (the PDF shows the report as text and tables - charts are left out - and carries the HTML report as an attachment). The time of every record comes from the connected app (the scale has no clock): lock the clocks of your devices and record it with the device qualification - the scale logs every big clock jump (clock guard).
📝 🗂 All logs and records at a glance
UP↑SCALE keeps several logs, each for its own job. They differ in what they hold (single weighings, measured values, events), where they are kept (in the open app, in your browser, on the scale) and how long. You reach all of them from the row at the bottom of the app: 📝 WEIGHING LOG, 📊 STATISTICS & ℮ and 🗂 RECORDS.
📝 Weighing log (all versions)
Every weighing or counting you log with ∑, with its name, units, prices and nutrition values, plus the results of the programs (coffee, factory, sorting, tracking, recipes). It is your working list: labels, the 📒 diary, a new THING, baker's percentages and the batch report are made from it. It only lives in the open app: closing or reloading the app clears it.
📊 Statistics & ℮ (statistics on the screen free; ℮, reports and exports with PRO)
This is not a log of its own, it evaluates the others. It takes the single values of a running check-weighing, factory or sorting program (the scale keeps up to 2,000 of them in its memory until it restarts, so every connected app gets the same series) and the lines of the weighing log. From them it works out the mean, the standard deviation, Cp/Cpk and the ℮ lot check (more).
Kept on the scale: the last 10,000 events (who changed or did what and when: settings, calibration, logins, sales, stock, programs, tests, reports, signatures, refusals), linked by a SHA-256 chain. The app archives it in your browser and saves it as record files. Single weighings are not in it, and they don't need to be: they would push the important events out of the 10,000 entries within hours. On the 🗂 RECORDS page, tab 🛡 ACTIVITY (more, how it is protected).
☑ Test history (ENTERPRISE & COMPLIANCE)
Kept on the scale: a short result of each of the last 40 test runs of the test suite (date, test, result, worst error in d, who), with a trend chart. The full measurements are in the reports you save. On the 🗂 RECORDS page, tab ☑ TESTS.
✓ Routine checks (all versions, exports with ENTERPRISE & COMPLIANCE)
Every routine check before use and every removed warning, kept in this browser (the last 1,000 per scale). The scale itself keeps the last passed check, an open failure and the interval. On the 🗂 RECORDS page, tab ✓ ROUTINE.
👥 User access register (ENTERPRISE & COMPLIANCE, the blank form is free)
The users of the scale with their permanent user numbers and roles (on the scale), the people behind them and the access review (your QA, in the browser), and the access history from the archived activity log. On the 🗂 RECORDS page, tab 👥 ACCESS (more).
🖥 Device register (ENTERPRISE & COMPLIANCE, the form is free)
Kept on the scale: every phone, tablet and PC that runs it, with its qualification (qualified, failed, due, retired), its record number and the due date; the sealed, signed records are your files. On the 🗂 RECORDS page, tab 🖥 DEVICES (more).
💶 Sales log (PRO)
Kept on the scale until you delete it: every sale (a booking of the 🛍️ sales mode) with its time, pieces, weight (with the d of the scale), revenue, cost, user, lot number and member ID - numbered and chained by the scale, so a changed, inserted or deleted record shows up (sealed report). The scale keeps 366 days with sales and warns 30 days before the oldest ones get deleted. It opens from the 🗂 RECORDS page, tab 💶 SALES, or from the 📦 stock.
Other records
The tracking recordings and the last 20 stock checks per item are kept on the scale. The 📒 nutrition diary is kept in your browser. Saved reports and record files are the files on your disk.
Why are they separate? They have different rules. The weighing log is meant to be changed, cleared and started again. The activity log must stay complete, may never be edited and has room for events only. Measured values need a long series in the memory of the scale. They are linked where it matters: the activity log notes the start and end of every program, the sales and stock changes with their numbers, every report number and every signature, and the statistics values carry the user who weighed them.
Tamper-proof records: audit trail, hash chain and digital seal in plain words
For audits (ISO/IEC 17025, GLP/GMP, 21 CFR Part 11, EU Annex 11, ALCOA+ data integrity) your records must show that nothing was changed or removed afterwards. UP↑SCALE does this in four layers:
Audit trail in the scale. Every change (calibration, settings, users, recipes, test results, reports) becomes an entry with who, when, what and - in strict audit - why. Entries cannot be edited or deleted in the app or on the scale; the log only grows (the last 10,000 are kept).
Hash chain. Each entry contains the SHA-256 fingerprint of the entry before it, like links of a chain. If anybody changes, removes or inserts one entry, all following fingerprints no longer fit and the check shows it. This is what "tamper-evident" means.
Record files. The app copies new entries into an archive and you can SAVE FOR THE RECORDS: a file with a printout of its fingerprint. Each file names the one before it, so a missing or changed file is found by CHECK ARCHIVE FILES. Strict audit stops work before entries could be overwritten unarchived.
Numbered sales records. The sales log is a chain of its own: every record gets a number of the scale and the fingerprint of the record before it, and the scale checks the weight against its own reading. The sealed report shows gaps and breaks.
Digital seal. Reports, PDF, JSON and CSV exports are sealed: the scale signs the fingerprint of the file with its own key (ECDSA P-256), and our licence key vouches for that scale. Anybody can check a file on the public page Check a sealed file, in the browser, without account or upload.
Is this WORM (write once, read many)? Not as hardware: the memory of the scale can be rewritten, and a file on your disk can be deleted. What we give you is tamper-evidence: changes and gaps cannot be hidden unnoticed. It is made to go together with a procedure of yours: the record files go to write-once storage or a read-only, backed-up share, you keep the printed fingerprint of the newest file separately, and you save the files regularly. The time comes from the device that runs the app (the scale has no clock). Both are covered by the tools of the app: the DEVICE QUALIFICATION form with templates for your IT, the storage settings, the device register and the clock guard of the scale. The key of the scale is kept in its flash memory, so it does not prove genuine firmware. Please take this into your validation; this is not a certification.
🖥 Devices, time and record storage for audits: solved with the app
Two questions come up in every FDA, GMP or ISO audit of a system like this one. Where does the time come from? The scale has no clock of its own: the time of every record comes from the phone, tablet or computer that runs the app, which we call the device. A device is what runs the app, a scale is what you weigh on: each has its own register (the device register and the equipment register). Can the records be deleted? The record files are saved on the disk of the device. Our records are tamper-evident (a change or a gap shows up), but a file on a disk can still be deleted. Both points are closed the same way everywhere, with a short procedure (SOP) of your own: every device takes its time from a time server and the operators can't change it, and the record files go to write-protected storage. The app has the tools built in, so this is an afternoon per site, not a project:
Templates for your IT (free): ready-made settings, filled with your time server and your records folder: a Windows .reg file (browser policy, time server, the hidden Date & time page), Linux (chrony / timesyncd and the Chrome policy), an Android MDM policy, macOS, and the browser policy as JSON. The app never changes your systems: your IT checks them and applies them, best by Group Policy or MDM.
The DEVICE QUALIFICATION form (the form and the blank paper version are free, the sealed PDF needs ENTERPRISE & COMPLIANCE): one form per device, with the tests for its system. Each test has a COPY button for its command and a box for the output. Paste what the command printed, and the app proposes PASS or FAIL. For example, it finds "Operation not permitted" or "synchronized: yes", or it sees that the time source is not the local CMOS clock (it also knows German and Spanish system messages). The tester decides.
Filled in by the app: everything it knows goes into the record by itself, so nobody has to type it:
the device: its ID, browser, time zone and app version
the scale: firmware, Device ID, serial number, licence, certificate data, last calibration, event counters and the last routine check
the data-integrity setup of the scale: users and roles (and whether all have a password), strict audit, the protections, the device register, heartbeat lock, tare guard, EXACT WEIGHT, the seal key and its certificate
the clock: the difference between this device and the scale, and every clock jump the scale logged since the last qualification
the archive: the state of the activity-log archive, the newest record file with its SHA-256 fingerprint, and whether the browser keeps its storage
The record, sealed and signed:SAVE SEALED PDF makes a numbered PDF that is sealed by the scale. It has the device data, the data read by the app, every test with its command, the expected and the observed result, the deviations (every failed test gets a row for the action taken), the result with the date of the next qualification, and lines for the printed name, signature and date of the tester and the QA reviewer. If the scale has users, you pick both from the user list. The pasted outputs and a JSON of the form are attached to the PDF. PRINT prints the same record, CSV / JSON exports it for your QA system, and BLANK FORM prints the paper version with all systems and tick boxes. Sign it electronically right after saving it (✍ SIGN REPORT …): the tester signs it as performed, and the QA reviewer (a QM) as reviewed or approved, on this device after logging in or with SIGN A REPORT FILE on their own one. The scale checks the password with every signature and writes it to the activity log. The signed report is saved as an HTML file, and every signature is added to it. The PDF is the sealed copy for printing, with lines for signatures by hand.
The device register on the scale (ENTERPRISE & COMPLIANCE, below): every qualified device, with its due date, the number of its record, and a list for every app.
Where to find it:
the ☑ TEST page, block 🖥 DEVICE QUALIFICATION (second block, after the routine check)
the warning bar of a device that is not qualified (QUALIFY NOW): fixed at the bottom of the weighing page, above the FREE VERSION bar. The ✕ button hides it in this browser until the message changes (another state, or changes are refused now)
The form keeps its entries in the browser of the device until you start a NEW RUN, so a re-qualification only needs the tests again. The overview of the tests lists the device qualification too.
Who does what: run every test as the operator of the device, not as an administrator, because the point is that the operator can't change the time. The QA reviewer checks the record and signs it.
Time integrity of the devices: Windows, Linux, Android, macOS
The scale takes the time from the app when it connects and counts on from there. Your procedure makes sure that this time is right and that nobody can change it. These are the settings, and the form has a test for each of them:
Windows:
gpedit.msc → Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment: Change the system time and Change the time zone only for Administrators (and LOCAL SERVICE for the system time). Standard users may change the time zone by default, so remove them there.
Administrative Templates → System → Windows Time Service → Time Providers: Configure Windows NTP Client Enabled, NtpServer your-server,0x9 (or time.windows.com,0x9), Type NTP, and Enable Windows NTP Client Enabled.
Administrative Templates → Control Panel → Settings Page Visibility: hide:dateandtime hides the Date & time page.
Tests: time 12:00:00 must answer "A required privilege is not held by the client", tzutil /s "UTC" must be refused, and w32tm /query /source must name your time server, not "Local CMOS Clock" or "Free-running System Clock".
Linux:
Operators get a normal account that is not in the groups sudo / wheel / admin.
Use chrony or systemd-timesyncd with your time server.
Tests: date -s "12:00:00" must answer "Operation not permitted", timedatectl set-timezone and set-ntp false must ask for an administrator password, and timedatectl status must show "System clock synchronized: yes" and "NTP service: active".
Android (tablets at the weighing station):
Use an MDM (Android Enterprise) with kiosk mode or a work profile without the Settings app.
Set automatic date and time zone to enforced and switch the developer options off.
Android takes its time from the mobile network (NITZ) or from time.android.com, not from the time server of your Wi-Fi. A company time server needs an option of your MDM or of the maker, such as Samsung Knox.
Test: Wi-Fi off, restart, Wi-Fi on. The time must correct itself.
macOS: operators get a standard account; "Set time and date automatically" on, with your time server; date 1200 must answer "Operation not permitted".
The browser (all systems):
The developer tools must be off (policy DeveloperToolsAvailability = 2). With them, a page could be given another time.
No incognito, guest or new browser profiles. They would lose the archive and get a new device ID.
No extensions, except the ones you approve.
The download folder is the records folder (see below).
Test: paste the list of chrome://policy into the form.
BIOS / UEFI password on PCs, so the hardware clock can't be set before the system starts.
The clock checks of the app:
The app compares this device with the time of the scale (at most 5 s).
A live clock lets the tester compare the device with a reference, such as a radio clock or your time server (limit 2 s by default).
The app shows the time zone.
It counts the clock jumps since the last qualification.
Record storage: write-protected (WORM) storage for the record files
The app saves every report, record file and export as a download. Real WORM (write once, read many) is a feature of the storage, not of an app. So the files have to land on storage where they can be added, but not changed or deleted:
Best: a NAS or server with a WORM folder or immutable snapshots, for example Synology WriteOnce, a QNAP WORM folder, or ZFS / btrfs read-only snapshots. Cloud storage with an object lock in compliance mode also works, for example S3 Object Lock or Azure immutable blob storage. Keep a second copy as well.
Make the download folder the records folder on every device with the browser policies DownloadDirectory (your records share) and PromptForDownloadLocation = false. Every record then goes there by itself, without a save dialog. The Windows and Linux templates contain this.
Not WORM, but write-protected:
Windows: a folder where the operators may only create files (NTFS rights: create files / write data on the folder, files read-only, no delete).
Linux: a folder with chattr +a (files can be added, not deleted or renamed).
Together with our hash chain and seal this is tamper-evident, but an administrator can change it. Say so in your validation, or add the WORM storage.
Android: the tablet is never the archive. A sync app or the download folder of the MDM brings the files to the records storage.
The tests of the form:
Save a test file. It must land in the records folder without a dialog.
As operator, try to delete it, change it, rename it or overwrite it. Each must be refused.
Show the retention setting and the second copy.
Write the fingerprint of the newest record file into your binder. The app shows it.
The device register of the scale (ENTERPRISE & COMPLIANCE)
A scale is often run from several devices: the PC in the lab, a tablet at the bench, the phone of the QA. Each of them is a device and needs its own qualification. The scale keeps the device register, the same list for every app (up to 50 devices):
the asset ID, the system, the state (qualified, failed, due, retired), the date, the due date, the report number and who saved it
devices that are connected now are marked ●
How it works:
Add a device: run the form on it. SAVE SEALED PDF enters the result in the register.
Re-qualification: after 3, 6, 12 or 24 months, as you choose on the form. A due device is shown as due.
Remove a device:RETIRE it, with a reason (replaced, broken, lost, not used any more). It stays in the register, because older records were made on it. A device is not deleted at once. When all 50 places are taken, the oldest retired device is replaced.
Keep the list clean: a retired device can be taken off the list with REMOVE. Without users on the scale that works at once (for example for a test entry from the setup). With users, only an ADMIN or a QM can do it, with a reason in strict audit, and not before 12 months after the retirement, so a device that was in use during the last year stays on the list for the auditor. A device that is still qualified, failed or due has to be retired first. The removal is an entry in the chained activity log (device, record number, who, when), so the log still shows that the device existed - the log itself is never cleaned.
A scale that is out of service: in the box QUALITY RECORDS & USERS, the list All scales seen by this browser has a REMOVE button per scale. It cleans this browser only: the register line, the archive of the activity log of that scale, the access-register notes and the remembered checks. It works only when a saved record file covers the whole archive (otherwise the app asks you to save the record first), and not for the connected scale. The scale itself and the record files on your disk are not touched - keep those as long as your retention rules say.
Who: with users, only an ADMIN or a QM can save or retire a device. With strict audit, a reason is asked like for every other change. Every change is written to the activity log.
Enforcement: once at least one device is qualified and strict audit is on, a device that is not qualified (or is due) can still weigh and print, but the scale refuses its changes and sales. A sale is kept in the app and sent again after the qualification. Without strict audit, the app shows a warning bar, and the scale writes a log entry when such a device connects.
REGISTER AS SEALED PDF prints all devices, also the retired ones, with the device events and clock jumps from the archived activity log. The register can also be exported as CSV or JSON.
What a device is: a browser profile with a random ID that the app makes once. It is not a hardware ID. The asset ID on the record and your SOP tie it to the device. A new browser profile is a new device, so block new profiles with the browser policy.
The clock guard of the scale
Every app sends its time when it connects and every hour while it stays connected. In between, the scale counts on with its own timer, which does not overflow. A scale that runs for months without a restart therefore keeps the time of your synchronized devices; its chip alone would drift a few seconds a day. A small correction backwards never makes the time of the log go back. Summer and winter time change nothing: the scale counts in UTC, and every record is shown in the local time that applied at that moment. Sales also keep the UTC offset of the app, so the hour that repeats in autumn stays in the right order. The scale compares every time it gets with its own running time.
A difference of more than 2 minutes is a clock jump. The scale writes it to its activity log with the user, the seconds and the time that was sent. The scale allows a little more after long running times, because the clock of the chip drifts slightly.
With strict audit on, the scale keeps its own time and refuses the jump. Without strict audit, it takes the new time and keeps the entry.
Every app shows a warning when its own clock differs from the scale by more than 2 minutes.
The form lists the clock jumps since the last qualification.
This shows a wrong or changed clock. It does not replace the time server: after a restart of the scale, the first app that connects sets its time again.
All of this is a record of your own qualification for your validation binder, not a certificate. We describe what the tools do. Your QA decides whether they fit your procedures (21 CFR Part 11, EU GMP Annex 11, ISO/IEC 17025, ALCOA+).
Validation of the calculations (IQ/OQ)
The ENTERPRISE & COMPLIANCE edition has a box VALIDATION OF THE CALCULATIONS (IQ/OQ) at the end of the ☑ TEST page: RUN VALIDATION computes reference cases worked out by hand from OIML R 76-1 (the routine check from USP <41> / Ph. Eur. 2.1.7, the air buoyancy correction from OIML D 28 / R 111-1) with the code of the app and makes a printable record with a code fingerprint for your validation file. EXPORT DATA (CSV / JSON) saves the same run as raw data for your QMS - a table with the IQ data and one row per case (expected, calculated, pass/fail), in the format of the export picker and sealed by the scale like every export; the LIMS forwarding can also send every run to your server by itself. The description, what it does not cover and the full list of the cases with their working are on the public page Check & validation for officials and auditors.
Validation Summary Report and release for use (VSR)
The ENTERPRISE & COMPLIANCE edition has a box VALIDATION SUMMARY REPORT & RELEASE right below the validation of the calculations on the ☑ TEST page - the route for the final sign-off of your QA team:
Pick the two reports you saved and signed before: the IQ/OQ record (validation of the calculations) and the PQ baseline report (the final report of the test suite), each as HTML or as our PDF. The app checks each one at once: integrity code, seal of the scale, its signatures, and that it belongs to this scale; it shows the SHA-256 of the file.
✍ ROUTE FOR FINAL SIGN-OFF makes the VSR: purpose and scope, the two reports with report number, integrity code, SHA-256, check result and signatures, a hardware and software inventory made at that moment (scale, Device ID, edition, Max / d, firmware, certificate data, calibration and configuration counter, register entry, routine check, minimum weight, the qualified stations, app and browser), the open points the app found (a missing, changed or unsigned report, an open routine check failure), the release decision and three lines to sign on paper. It is saved as a sealed PDF with a report number; the two reports are attached to it unchanged. Open points are listed, they do not stop you.
Sign it: a QM / approver signs the VSR approved - right away, or later with ✍ SIGN A SAVED VSR - with the password, which the scale checks again (never the person who made the VSR: four eyes). This signature releases the scale: it keeps "released by VSR no. X, by QM, when" together with its event counters of that moment, writes it into the activity log and every phone and computer shows RELEASED FOR USE. You can also print 📄 VSR WITH LINES TO SIGN and sign on paper - that is a record for your binder, the status on the scale needs the electronic signature.
After a calibration or a change of the configuration (the counters of the scale go up), the box shows RELEASE TO BE CONFIRMED: make and sign a new VSR. A QM can WITHDRAW RELEASE (logged). An RS-232 adapter keeps one release per scale profile. Nothing is blocked - the release is a status for your QA and its procedures. It is your own release decision, no certification of the device by UP↑SCALE.
For inspectors, verification offices and service companies
The test suite is also a work tool for people who test scales for others: verification officers and their helpers, calibration and service technicians, quality managers. It does not replace their reference weights, their procedures or their decision - it takes the paperwork and the arithmetic off their hands and makes the record error-proof:
Every test of OIML R 76-1 Annex A.4 that can be done at the scale, in one guided suite: repeatability, accuracy & linearity (weighing up and down with the changeover step ΔL), eccentricity, tare, accuracy of the zero-setting and the zero indicator, discrimination, creep (30 minutes, with the 4 hour alternative) and zero return, warm-up time (after 8 hours off), stable equilibrium - plus the calibration check. The strict procedure fills in the loads, preload, legal display and steps of the standard.
The checklist shows what is done, with which result, and which test is asked for a verification / conformity assessment, an inspection in use or a calibration - so no test is forgotten.
The limits are calculated by the app: the maximum permissible errors of the class that fits d, e and Max, the uncertainty of the readings, the test weight tolerance (R 111, 1/3 of the mpe), the room temperature change and the warm-up are checked, and every rule shows ✓ met, ✗ not met or ? not known.
Your data on every printout: name, organisation, inspector ID, place, report number, remarks and a signature that you draw once on the screen (saved only in this browser).
The FINAL REPORT puts the scale data and its settings, the checklist, a summary per procedure, all result tables with the single readings, the class overview and the lines for date, signature, stamp and remarks on certificate-style pages. Print it or save it as PDF; the CSV has all readings for your own records or software. The inspector reads the legal display of the scale while testing, ticks "values checked against the display" and signs.
With the RS-232 adapter the same suite runs on an existing verified scale: with EXACT WEIGHT the readings are the values of that scale, unchanged (the report names the mode). The adapter is no part of the legal measuring chain; the display of the verified scale stays the legal reading.
What it is not: the report is a test record that the signing person is responsible for. Whether it is accepted as part of a verification, a certificate or an inspection is the decision of the responsible authority or accredited body; UP↑SCALE is not affiliated with OIML, EURAMET or any authority, and the report uses none of their forms or logos. Which tests an inspection in use asks for differs from country to country - the checklist shows a usual set; please use the rules of your own authority.
The report
All tests of this session are collected in one report: the scale (name, firmware, serial number, max. load, d, e, classes), the settings during the test, the date of the last calibration, every value with its error and limit, and the status of each class. OPEN REPORT (PRINT / PDF) opens it in a new window - use the print dialog of your browser to print it or to save it as PDF. DOWNLOAD HTML saves the report as a file that opens and prints on any device, DOWNLOAD CSV saves the raw values for your spreadsheet. The report says that it is a self-check and not a verification.
⚖ Config+++
Weighing things is not as easy as it maybe looks ;-) Measuring weight digitally in real life is quite interesting actually, if you break it down. To explain it fastly, our digital scales is made from 3 main components, a Microcomputer, a analog-to-digital converter and a so-called load-cell. Inside the load cell - which is this is a transducer whose function in the scale is to convert the force exerted by the object of measurement into an electrical signal - is a set of strain gauges arranged like the resistors in a Wheatstone bridge. When a load is placed on these strain gauges, they compress. This compression changes the resistance of the gauge, just like in a Wheatstone bridge. Now there will be a voltage output corresponding to the change from the stressed gauges - which we will transform to a digital signal, with the help of a Sigma-Delta analog to digital converter, to be exact. This digital signal we can use now to calculate the weight.
But - and here it gets complicated - there are many variables! There is nothing like an absolute and always same weight of a thing, it depends how, how long and where you are weighing it, how the conditions are around, if the thing is maybe moving and and and... Because of that there are many variables in the background which define how the weight will be read from the sensor, how the data will get stabilized and displayed, when the weight is getting "stable", what you define as stable weight, and so on and so on... The output at the end should not jump around too much, should be reliable and repeatable - but also need to be shown as fast as possible. While normal scales do everything automatic for you, and normally need to find some kind of compromise, professional scales will let you adjust some-, and our scale will let adjust you all of this settings! Maybe you want your scale faster reacting for filling things - or you need a long average weighing time because you need to weight some moving animals or maybe you need the scale a bit less reactive because you are working outside or people are bumping on your table all the time! With our scale this is no problem at all, you can adjust every single variable - or just leave it in the automatic mode!
This Settings you will find within your scale-app, at the Scale-Settings page. Here you can define how fast the sensor should be, how it will calculate the averages, how long it will take to define the weight as stable and if you want to ignore, for example, small bumps on the display - and how big they can be.
PART 5 Connections & Hardware
⚖ 1, 2, Many Scales!
Using Multiple Scales
Yes, you can connect more then one scale at the same time!! Just connect an additional scale within the app and weight on all of them simultanely! Maybe you are using a big platform scale together with a smaller tabletop one? Just connect them both and track all ingredients at the same time and in the same program!
Weight on all connected scales seperately - but also get the combined weight of all of them.
To connect with an additional device, click the [ADD MORE 🤝 SCALES] button on the very bottom of the app, select your scale, and pair with it.
All scales will be shown on top of the (now combined) weight, including a seperate tare-button. The standard tare button will work for all scales now.
To disconnect one of the additional scales again, just delete it with its [❌] button. The scale goes back to the normal weighing mode.
If an additional scale loses its connection (out of range, switched off), it is removed automatically and its weight isn't counted anymore. Just add it again.
The weights are combined only in the classic weighing- and in the recipe mode.
Devices in counting, check-weighing and sorting: here the additional scales are not added up - every scale is a device of the program on the main scale. In counting each scale (also the main scale as ⚖1) shows its weight and pieces small on top, with the piece weight of the main scale - the big number in the middle is the sum of all scales, like in the weighing mode, and so are the average and total below it, the units, the label and the ∑ log (also in the takeaway mode), in the check-weighing PERFECT, OK, TOO LESS or TOO MUCH (with the ranges of the setup in this app - otherwise the % of the setpoint), in the sorting mode the category of the item on it. Only the main scale counts, logs and fills the statistics.
Two-scale reference counting: count the sample on a fine scale (e.g. a 710) and the bulk on a big one (e.g. a platform scale with the 232 UP↑SCALER) - see piece weight from an other scale.
A connected additional scale can also exchange its THINGS, RECIPES and MOLDS with your main scale: see ⇄ sync between scales.
⚖ Connectivity
This scale can send data and receive commands via USB, BLE and ESP-NOW to ensure connectivity to old and new software as like as to own programs and microcomputers!
All this options you can switch on/off and setup in your App, at the ⚙ SETTINGS page in the USB, BLE & ESP-NOW Stuff section.
Here some more detailed info about the possibilities and data formats for...
You can control the scale from your mobile/computer via BLE with your app.
Normally its only allowed to be connected with one Device at the same time, but you also can use multiple devices at the same time if you need so!
Switch on the Multiple masters option to do so, but take care in public with that!
The scale can also speak the public wireless protocol of the Decent Scale. Machines and apps that support the Decent Scale can then use your scale, for example Beanconqueror, GaggiMate (brew by weight) and the Decent DE1 app. The option is off by default; switch it on at the ⚙ SETTINGS page ("Decent Scale mode") and save. The scale restarts.
The name
These machines and apps only find scales whose name begins with "Decent Scale", so the scale is called "Decent Scale UP-420 #12345" then (with your scale type and number). Our app finds it under this name too: connect it again after the restart. Everything else works as always, also with an UP↑SCALE app connected at the same time.
Weight & tare
The machine or app gets the weight 10 times per second (stable or moving), in 0.1 g steps (a 710 sends 0.1 g too) up to ±3276 g, and can tare the scale.
Shot timer
When the machine or app starts its timer, the scale switches from the weighing page to the Espresso Timer and records the shot - without its own tare, the machine tares by itself. Its timer stop ends the shot (the auto-stop waits for it), and our app saves it in the log ("Started and stopped by the machine/app"). The coffee timer shows if a machine or app is connected.
Login
Machines and apps can't log in as a user: on a scale with users they get nothing until an UP↑SCALE app has logged in (until all connections are gone again).
Limits
Only weight, tare and timer: battery is always reported as USB power, LED and power-off commands are ignored, and the connection is never dropped (no heartbeat needed).
Decent, Decent Scale and DE1 are names of Decent Espresso International Ltd. UP↑SCALE is not affiliated with or endorsed by Decent Espresso; the scale is only compatible with the published Decent Scale protocol.
Wireless for all
If this option is on, the scale will send weight data continuously to everybody! This is working like a FindMe Device, the data will be packed in the public readable manufacturer data part where it can get read out from everybody nearby! This can be super-useful if you want to read out this data from multiple devices without connecting/pairing first! This will allow some additional options, like showing the weight of multiple scales together at the same time - or you could read it out with your smart-watch or integrate it into your home automation systems on that way! The data by self will be transmitted as ASCII in HEX - check out all info about the exact format below!
Example Code for Arduino / ESPs
We've prepared a small and simple example "sketch" for Arduino.
This will scan for scales around you and show the live weight on it - without being connected/paired to a scale first!
Check this out to learn how to scan for the scales and how to read in and use the weight data.
Click here for the ARDUINO BLE WEIGHT MONITOR, copy, paste and there you go :)
PS.: If you also want to get more (or faster) data, and if you also want to be able to send commands to the scale, check out the ESP-NOW options for ESP Microcomputers instead!
Html/JavaScript Example Code
Same is working directly in a Web-Browser! We've prepared an example just with html and javascript which is reading out - and summing up - all scales around you!
Click here to check it out (and to test it live and direct).
Just copy the code from there and build something own on it :)
USB Connectivity
Bluetooth Power
The transmit power of the scale, in the settings box USB, BLE & ESP-NOW. The standard is +9 dBm: what most Bluetooth devices use, enough for a scale on your desk; +15 dBm gives a steadier connection through a wall or across a room (the heartbeat lock likes a steady link), +18 dBm (maximum) reaches farthest, for long distances or many walls. Higher means more range and a more stable connection, but also a bit more current: a scale on a powerbank or battery runs a little shorter. Lower means less current, but less range and more gaps. Go down to +6 dBm if the scale stands right next to your phone or computer or you want less radio around you. The lowest choice is +6 dBm: below that the connection already breaks up at 2-3 metres (measured: 0 dBm gave about 12 dB less signal than +15 dBm). The battery of your phone doesn't change. The scale also asks every phone or computer for a steady link (a connection event every 15-30 ms, and a short gap of up to 4 seconds is no disconnect - the app still locks the weight after 1.25 seconds without data).
Encrypted Link
On PRO and ENTERPRISE scales the scale and the app encrypt what they send each other over Bluetooth: the weight packets, the settings, the sales, everything on the three data channels of the scale (AES-128 with a 128-bit tag). For every connection the scale makes a one-time key, signs it with its own key, and agrees a new key with the app by ECDH P-256; the app checks that signature, so nobody can sit in between. A listener sees only random bytes. Because the one-time key is thrown away, a recording of a connection stays closed even if somebody reads out the scale later. It is on by default; the switch is in the settings box USB, BLE & ESP-NOW and is greyed out on a free scale.
BLE FOR ALL is off on a new scale and goes off when you switch the encrypted link on, because it sends the weight openly to every device nearby. You can switch it on again if you need it.
Not covered by the encryption: the weight that BLE FOR ALL sends on purpose (if you switch it on), the Decent Scale service for coffee machines and apps (switch it off in the settings if you do not use it), USB serial and ESP-NOW. Your own Bluetooth programs (like the example sketches for developers) cannot read an encrypted link: switch it off for them.
The key of your scale: on an ENTERPRISE scale with a seal certificate the app checks the key against the certificate from UP↑SCALE. Otherwise the app remembers the key at the first connection and asks you if it ever changes - say no if you did not reset the scale.
Registered apps only (ENTERPRISE & COMPLIANCE, off by default, in the same box): only the browsers and phones you registered can connect. Each one keeps its own key that cannot be copied out of the browser; the scale keeps up to 8.
On every device you want to use: REGISTER THIS APP (with users: logged in as an ADMIN).
Switch Registered apps only to ON (only a registered device can do that).
A new device later: on a registered device tap LET A NEW APP IN (2 MIN.), then register the new device within 2 minutes.
All registered devices lost: connect the scale by USB, open a serial terminal (115200 baud) and send LINKOPEN. That switches it off.
Users and passwords stay as they are; this is one more lock in front of them. Every change is written to the activity log.
The limits: a sniffer still sees that a connection exists and how big and how often the packets are (so it can tell that the weight changes). A connection that sends 16 packets that do not open is dropped. The key of the scale sits in its memory without a secure chip: somebody with the scale in their hands and the right tools can copy it and then pose as the scale for new connections. We say "encrypted", not "certified". All of it in plain words, with the algorithms for your IT: Security.
USB Serial Output
If you switch on the USB SERIAL OUTPUT at your scale settings, then you are able to send live data from the scale via the USB port - and also to receive commands (like TARE) via USB! For the USB output you have several different options:
The weight will be sent as ASCII in HEX (or plain text), as soon as requested via a command from the user. (S for the next stable- or Q for direct output.)
Multiple data-points will be sent continuously as human readable text!
Configuration
We are sending with: 115200 Bits/s; 8 Data Bits; NO PARITY; ONE STOP BIT
LIVE- & ON REQUEST MODE:
In this 2 modes, the data will be delivered as ASCII in HEX! This is for the old-school computers and scale software. Optionally you also can switch to a plain text ASCII output! Check out the EXTENDED++ Mode for exhaustive outputs as readable data for modern data-loggers etc.!
Request Data (only REQUEST MODE)
In bidirectional command mode (ON REQUEST), the weight can be immediately retrieved by sending the command "Q" followed by Carriage Return and Line Feed to the scale. The next stable weight can be requested with "S" and will be received once after stabilization in this case. If you send "T" you can tare the scale.
Nr.:
1
2
3
1
2
3
1
2
3
ASCII:
Q
CR
LF
S
CR
LF
T
CR
LF
Hex:
51
0D
0A
53
0D
0A
54
0D
0A
Serial Data Formats:
The Scale always sends 19 bytes for every measurement. This are ASCII characters as HEX (or optionally as plain ASCII characters as decimals) in the following format:
Nr.:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ASCII:
U
S
,
-
0
0
0
0
4
2
5
.
9
8
g
CR
LF
HEX:
55
53
2C
2D
30
30
30
30
34
32
35
2E
39
38
20
20
67
0D
0A
DEC:
85
83
44
45
48
48
48
48
52
50
53
46
57
56
32
32
103
13
10
The first 2 characters are the header
1
2
S
T
Stable Weight (Weighing Mode)
U
S
Unstable Weight (Weighing Mode)
S
Q
Stable Quantity (Counting Mode)
U
Q
Unstable Quantity (Counting Mode)
The header is separated from the measured value by a comma.
The measured value consists of 11 characters and always begins with a sign (+/-; + is used for a value of zero). The measured value is transmitted right-aligned, unused positions are filled with zeros. The decimal separator is a point by default.
After the measured value, 3 characters for the unit are transmitted. Also right-aligned, with spaces for unused characters. The last 2 characters are always a CR/LF (Carriage Return/Line Feed) and indicate the end-of-line.
Example Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
S
T
,
+
0
0
0
0
2
3
.
4
2
0
o
z
CR
LF
23.420 oz (stable weight)
S
Q
,
+
0
0
0
0
0
0
0
4
2
0
P
C
CR
LF
420 pcs (stable count)
U
S
,
-
0
0
0
0
0
0
3
.
9
1
g
CR
LF
-3.91 g (unstable weight)
We've also prepared some code examples for html/javascript and Arduino which will read in this data wireless! Use this scripts to see how to receive and process this data via BLE!
EXTENDED++ MODE:
This mode will blast out weight data 40 times each second via the USB Serial Port (1 line each 25 milliseconds)!
Its possible to select between- and show up to 7 different weight-data-points from the scale at the same time, starting from the raw sensor data, via the unfiltered and filtered averages, up to the final weight on the display! (Also a raw gross weight is available!). Additionally/Optionally you can add a 3-line-summery every second about the amount of grabbed data-points within the last second, including their deviations! Otherwise just leave this untouched.
The scale only sends this output if a program on the computer reads the USB port. Without one (or with the port closed), the lines are skipped, so the scale never waits for the computer.
Use this mode to connect to data-loggers etc. to output the weight as live graph or so, or to monitor the scale with a serial monitor - for example to fine-tune it with the extended scale settings. Or, if you want, build your own software with our scale! Btw.: This data will NOT come as HEX, like the simple output, but directly as human-readable ASCII text!
Example Output for 1 sec.
ESP-NOW Connectivity
⭐ PRO: ESP-NOW devices (a free scale keeps ESP-NOW off; the saved setting comes back with PRO; free on the UPCENT↑420 for its pump relay) - gray in the free version; try it with the free trial (free and PRO).
ESP-Now Peripherals
You are able to connect up to 5 devices via ESP-NOW.
This standard will transmit data by 2.4 GHz radio, but without the need of internet, a rooter or any passwords or logins!
Just add the MAC-Address of the peripheral to the scale once, and everything is working as soon both devices are powered! It could not be more simple!
Connected devices will get live data from the scale (5, 10 or 20 times a second)
Connected devices also can send commands (tare, ok, reset). The scale only accepts commands from devices whose MAC address you have added.
5 devices can be connected at the same time!
To connect ESP-NOW devices, which could be our peripherals or your own microcomputers, simply switch on the ESP-NOW options at your scale settings page.
Select a send interval and the radio channel, add at least one MAC address - and ready you are!
Check out the following example code if you want to program your own device!
Example Code
If you like to create your own device based on an ESP32 or ESP8266 microcomputer, you're welcome! Receive live data from the scale and simply show it on a display - and/or transmit it to some other devices, monitors, relays, home-automation-systems or to your website! Here you can find a small example sketch, the [UP↑SCALE MasterBlaster], made for an ESP32 at the Arduino IDE. This small script receives live data and will send commands on button clicks. Check out how (and what kind of) data is incoming from the scale, and how simple it is, to send commands back. Use this as inspiration and example/base for your own programs :)
Example: ESP-NOW in Sorting Mode
While a sorting program is running, the scale sends everything you need to let other machines react on the sorted items:
Current weight and the category of the item on the scale (number, label, its count and total weight). Lighter than the first category is category 0 (UNDER), heavier than the last one is the number after the last category (OVER).
Status (like in factory mode): weighing (item on the scale, not counted yet), counted (remove the item now) and taring. You get it as three flags and as one status number.
Ping: in the moment an item gets counted, the scale sends one extra packet with the ping flag set, the counted category (number and label) and the counted weight. Use this signal to trigger an other machine, a gate, a conveyor or a light. A ping number goes up with every count, so your device can find out if it has missed one.
Counted amounts: total items and total weight, plus the whole category table: one row (label, max. weight, count, total weight, incl. UNDER and OVER) in every packet, row by row.
Active ingredient (if the program has one): title, unit and the amount of the weight on the scale, of all counted items and of the last counted item.
Commands: TARE tares the scale, OK counts the item on the scale now and RESET resets all counts of the running program.
Example: ESP-NOW in Tracking Mode
During a tracking run every packet contains its state (0 no run, 1 recording, 2 stopped, 3 waiting for the start), the amount of points, the last point and the start weight, the target and the interval - and the alarms (1 target reached, 2 constant weight, 4 jump, 8 restart, 16 peak, 32 above / 64 below the average band) until they are seen in the app. The packets go out 5 to 20 times a second, also while the app shows another page, so a receiver sees every new point (the amount goes up by one, the last point is the new one) - even at 0.25 s per point. A new alarm comes at once in an extra packet (with a number that goes up with every alarm). The example code switches its ALARM_PIN on while there is an alarm.
All weights are sent in the weight unit selected on the scale. The MasterBlaster example sketch contains the complete data structure and shows the ping on the serial port. (The sorting data is added at the end of the data structure, so your own devices stay compatible.)
Example: ESP-NOW in Factory Mode (filling machines)
With the predictive cut-off switched on, the scale controls a filling machine: fill_run is true while the machine should fill, fill_stop comes early by flow rate × lag (in an extra packet at once), plus a stop number, the flow rate per second and the lag. (Also added at the end of the data structure.)
Example: ESP-NOW in the Espresso Timer (pump relay)
With the early stop switched on, the same values control the pump of an espresso machine: coffee_shot is true (the fill_ values belong to the shot), coffee_target is the target yield, fill_run is true with the cup on the scale and while the shot runs, and fill_stop is STOP NOW (until the next shot). The MasterBlaster example switches the relay on FILL_VALVE_PIN with them. Lever or switch machines: switch the brew switch off after the shot. (Added at the end of the data structure.)
Energy Saving Mode
If there are no connected devices around you (any more), then the radio module of your scale will automatically shut down to save energy. In that case you would need to restart the scale to start transmitting ESP-NOW data again (just unplug and plug the scale once). You can set up this standby/shutdown time by self (standard is 5 minutes) or you can switch to "Always ON", if you don't care at all!
⚖ UP↑SCALE DIY on the ESP32-C3 RS232 Adapter
Our RS-232 firmware also runs on the small ESP32-C3 RS232 Adapter (sold by TinyTronics): buy the board, install our free firmware, try it - and unlock PRO with a licence. More on the UP↑SCALE DIY page.
First install
You need a computer (Windows, macOS, Linux, Chromebook) with Chrome, Edge or Opera and a USB-C data cable (many charger cables carry no data). No driver, no program: it runs in the browser.
Open the update page (UP↑SCALE DIY) - the DIY firmware starts with the pins of this adapter, nothing to choose - and click INSTALL at the newest version (on top).
Choose the port of the board in the window of the browser (the one that appears when you plug it in, often "USB JTAG/serial debug unit", a COM port on Windows, usbmodem/ttyACM on macOS/Linux) → Connect.
No port, or "failed to connect"? Download mode: hold BOOT, press and release RESET (RST), release BOOT - then INSTALL again.
"Erase device?" - on a new board you may tick it. Next → Install, wait for "Installation complete" (about 1 minute, don't unplug).
Press RESET once (or unplug and plug in the cable) so the firmware starts.
Open the app, CONNECT, choose "UP⬆SCALE (DIY) #..." - the free version runs. Then connect it to your scale.
Problems: no port → another (data) cable or USB port, then download mode; on Linux add your user to the group dialout (sudo usermod -a -G dialout $USER, log out and in). "Port busy" → close other programs that use it (Arduino IDE, serial monitor).
Activate PRO
In the app (adapter connected): tap ⭐ FREE VERSION - UPGRADE TO PRO (or SCALE ✰ INFO) → the LICENCE box shows the Device ID.
GET PRO opens the order form with the Device ID filled in. After the payment you get a link and a QR code by email.
With the adapter connected: open the link on the same device, or 📷 SCAN LICENCE the QR code, or PASTE KEY. The adapter checks the key and switches to PRO - forever.
Updates
The app tells you when a new firmware is out ("UPDATE YOUR SCALE"). Updates are free.
Board by USB-C to the computer → update page → INSTALL at the newest version → choose the port (download mode is usually not needed).
"Erase device?" - do NOT tick it: an erase deletes the RS-232 settings, THINGS and recipes on the board. (The licence comes back: the app sends it again, or offers to look it up online - see below.)
"Installation complete" → press RESET → connect in the app.
Connect it to your scale
The adapter has a DB9 male plug wired like a PC (pin 2 RX, pin 3 TX, pin 5 GND; RTS on pin 7 is switched on). Plug it in where the PC cable of your scale would go - with the scale's own RS-232/PC cable or a gender changer.
Power: USB-C (charger or power bank) - it gets no power from the scale.
No signal at all (AUTO-DETECT says so): switch on the interface of your scale (continuous output, or send with the print key). If it is on, the wires are crossed the wrong way: use a null-modem adapter (or a straight cable instead of a null-modem cable) - the direction is fixed in the RS-232 chip of the board and can not be switched in the firmware.
Data, but unreadable: choose the preset of your scale, or set baud rate, data bits and parity by hand.
UP↑SCALE is not affiliated with TinyTronics or LEOTRO. Product names belong to their owners.
⚖ UP↑SCALE DIY: build your own RS-232 adapter
For makers: the same RS-232 firmware runs on almost every ESP32-S3 or ESP32-C3 board with at least 4 MB flash, together with a 3.3 V RS-232 board. Our recommended set: a Seeed XIAO ESP32S3 (pre-soldered) + the Waveshare RS232 Board + 4 female-female jumper wires - about 15 EUR of parts, no soldering. Shopping list with shops, wiring and help: UP↑SCALE DIY page. We support the firmware and the app, not the hardware you build.
Install: board by USB-C to the computer → update page for the DIY → INSTALL: the installer picks the S3 or C3 version by itself. Then connect "UP⬆SCALE (DIY) #..." in the app.
Pins: a XIAO ESP32S3 wired like on the DIY page works at once. XIAO ESP32C3 and other boards: BOARD PINS in the RS-232 settings.
Connect to the scale: the Waveshare board has a DB9 male plug wired like a device (pin 2 sends, pin 3 receives - the other way round than the ESP32-C3 RS232 Adapter): with the scale's PC cable you usually need a null-modem adapter. Then set it up like every RS-232 scale (preset or AUTO-DETECT).
PRO: the PRO licence (from 3.32 EUR a month, 34.90 EUR a year or 119.00 EUR once, incl. VAT) is made for the Device ID of your board, exactly like on the ESP32-C3 RS232 Adapter.
ENTERPRISE & COMPLIANCE: the third level (from 8.78 EUR a month, 99.00 EUR a year or 399.00 EUR once, incl. VAT, includes everything of PRO; 14 days free to try) adds the sealed, checkable test reports (PDF/HTML) and the final report of the scale test suite, the equipment register with test history, users with ADMIN, login and an activity log, report extras (company header, report number, integrity code) and the table exports in your format, sealed by the scale (plain reports, your logo and plain CSV exports are already in PRO). Order it with the Device ID of the same board at the order form (see month, year or once). The tests themselves and their results on the screen stay free for everybody. Buttons of this level look greyed out without it; a click tells you how to get it.
UP↑SCALE is not affiliated with Seeed Studio, Adafruit, SparkFun or Waveshare. Product names belong to their owners.
⚖ Legal for Trade: your verified scale + the 232 UP↑SCALER
You sell by weight or pack ℮ prepackages? Then you need a verified (legal for trade) scale - and you probably have one already. Our 420 and 710 are not verified. But plug the 232 UP↑SCALER (our own box is a prototype - the same firmware runs on the ESP32-C3 RS232 Adapter) into the RS-232 port of your verified scale and it gets the whole app - with the weight of your verified scale.
Set it up in 5 steps
Connect the 232 UP↑SCALER to the RS-232 port of your scale (null-modem cable) and power it with USB-C.
In the menu of your scale: set the serial output to continuous (also called stream, auto or always send) and, if you can, the weight unit to grams.
In the app: ⚙ SETTINGS → RS232 Scale Settings. Select the maker of your scale (or "RS232 WEIGHING SCALE"), set capacity and precision like on the label of your scale, or press 🔍 AUTO-DETECT for the baud rate.
Switch on LISTEN ONLY (the dongle never sends anything to your scale) and EXACT WEIGHT (the app shows exactly the weight and the stable mark of your scale, without our filters). SAVE.
Check: put a weight on the scale - the app must show the same value as the display of your scale.
What you get
℮ prepackage control (EU 76/211/EEC and German FPackV): mean, T1 and T2, the sample plan for your lot size and a printable lot report with your company header - on a 232 with LISTEN ONLY and EXACT WEIGHT it states in bold: "Weighed on a verified scale, in listen-only plus exact-weight mode", the line an inspector wants to read.
Statistics with run chart, histogram and Cp/Cpk, check-weighing with tolerances, counting (also with a second scale for the piece weight), sorting, factory filling with predictive cut-off.
Recipes with batch reports and lot numbers, the inventory and the sales log, labels and label printers, the log - and everything else of the app, on your phone, tablet or laptop.
The interfaces that scale makers sell for their verified scales (USB, network, wireless) often cost a lot and come without software - the 232 UP↑SCALER comes with the app.
What stays legal - and what you have to check
Your scale stays as it is: with LISTEN ONLY the dongle only reads, it sends no requests and no tare signals and changes nothing in the scale. (Many verified scales have a protective interface that also allows requests or tare - check the manual of your scale.)
The display of the verified scale stays the legal reading. The app shows its exact weight (minus your software tare), but the app itself is not verified. When you tare in the app (or use a container) and Net/Gross is switched on in the basic settings (off by default), the line below the weight shows "NET: tare ... gross ..." as soon as more than 2 d are tared (also on a load-cell scale, however small the tare) - the tare and the gross weight (what is really on the plate - on an RS-232 scale that is what its own display shows). So nobody mixes up the two numbers. A virtual weight is named on its own ("virtual weight included"): it is no weighing result. With EXACT WEIGHT the tare is the last value of your scale, so the net weight stays on the steps of your scale.
℮ packs: the label shows the nominal quantity (like "500 g ℮"), the filling is checked with your verified scale and the app keeps your records. Inspectors still check their own samples.
Weight or price labels in trade (variable-weight packs, price tags, receipts): these are legally relevant. Ask your verification office (in Germany the Eichamt) which setup is allowed - the usual way for PC software is a scale with an alibi memory.
Check the rules of your country. This is our help for your own work, not a legal certificate.
⚖ UPCENT↑420 (experimental)
You have a Half Decent Scale? Try running it with our firmware and app: you get all the options of an UP↑SCALE on your coffee scale - counting, recipes with baker's percentages, the nutrition diary, THINGS with units and prices, check-weighing, labels, statistics, the coffee timer, tracking and much more. And your coffee machine or coffee app still works with it. UPCENT↑420 is our name for the UP↑SCALE firmware on a Half Decent Scale. It is free; the app then shows a small donation box at the bottom of the page.
Still experimental: it is new and not tested on many scales yet. Please write us if something does not work, or if you need an extra option!
What exactly happens
The install takes over the full hardware of your scale (sensor, display, buttons, battery), installs a new operating system (our firmware) and deletes everything that was on the chip before: the Decent firmware, its settings and its calibration.
Make a backup first - if you can ;-) Write down your settings of the Decent firmware; nothing of it can be taken over.
Afterwards the scale works only with our app, not with its original software anymore. (To go back, you would have to flash the Decent firmware again yourself with their updater.)
Coffee machines and apps still work: the Decent Scale protocol is on by default, so the DE1, GaggiMate and Beanconqueror find the scale as "Decent Scale UP-HDS #...".
Install
Open the update page on a computer (Chrome, Edge or Opera) and choose UPCENT↑420.
Connect the scale with USB-C. No button is needed: the scale shows up as "USB Serial", "wchusbserial" or "Half Decent Scale" (on a Mac you may need the CH34x USB driver).
Click INSTALL. If the scale does not restart afterwards, press the reset hole under the scale with a paperclip.
Connect the app: pick "Decent Scale UP-HDS #..." in the list of the browser. The app asks for the PCB version of your scale: choose it in the settings ("Scale hardware": V8 auto, V8.0 or V8.1 - only V8 boards so far) and save.
Calibrate the scale with a known weight: the app opens the calibration by itself as long as the scale is not calibrated (see Calibration).
Display, buttons & battery
Display
The weight (or the count in the counting mode) in the unit of the scale, "STABLE", the running time of the coffee timer, the connection (BLE, +DECENT when a machine/app gets the weight) and the battery.
○ button
Click: tare. Hold (1.5 s): switch off.
□ button
Click on the weighing page: start the coffee timer; in the coffee modes: start/stop/OK; in other modes: OK. Hold: back to the weighing page.
Display & buzzer
In the settings: "Display" turned (like the Decent firmware) or standard, if the weight is upside down. "Buzzer" (V8.0 boards): off by default, on, or on (inverted) - if it beeps all the time or never.
Switch on
Hold a button for half a second (a short touch is ignored, so it does not switch on by accident in the bag).
Battery & auto-off
The app shows the battery top left (tap it for the voltage) and in the settings ("Battery", or "USB: charging"). The scale switches itself off after the "Auto-off" time of the settings (5 - 120 minutes or never; 10 by default) without weight changes, clicks or a connected app/machine - never while charging. At an empty battery it switches off too. Switch it on with a button.
Decent, Decent Scale, Half Decent Scale and DE1 are names of Decent Espresso International Ltd. UP↑SCALE is not affiliated with or endorsed by Decent Espresso. The firmware is our own code for this open hardware.
Start with the free version - the board costs under 15 EUR and you may never need more. If you do, unlock PRO from 3.32 EUR a month, 34.90 EUR a year or once for 119.00 EUR incl. VAT - or ENTERPRISE & COMPLIANCE from 8.78 EUR a month (once: 399.00 EUR). The lifetime licences are once and forever, no subscription needed; no advertisements, everything works offline, updates stay free.