Skip to content

SpoolmanScale v0.8.0 Beta

Choose a tag to compare

@github-actions github-actions released this 27 Sep 15:04
· 7 commits to main since this release

Everything since v0.7.3. Deutsche Fassung weiter unten.

⚠ One quick update over USB

This release changes how the scale's memory is divided, and that can only be done once over a USB cable. Open the web flasher in Chrome or Edge on a computer, connect the scale and choose "Update". It takes about 2 minutes, and WiFi, calibration and backend settings are kept. If the flasher offers "Install" instead of "Update", leave the "Erase" box unticked, or WiFi and calibration are gone.

A scale that skips this step keeps working and gets this version over the air. It reminds you at every start, with a QR code to the flasher. Later updates need more room and will no longer install over the air once they are larger than the old layout allows.

🔧 A big rebuild under the hood

The firmware moves to the latest foundation: Arduino core 3.3 on ESP-IDF 5.5 (was core 2.0.17, which gets no more updates). This was needed for Bluetooth: on core 2 the scale crashed with WiFi and Bluetooth running together. It turned out there was not enough free memory for that. So I put everything on the test bench and trimmed memory wherever it was used. That took an enormous amount of time, but it was needed for everything to run smoothly and to leave room for future features, such as filament managers that do not run on your own network.

  • New memory layout: the area for the firmware grows from 3 to 6 MB per slot, with a core dump area for crash analysis and 3.9 MB of data space for future features. This is what the one-time USB update above sets up.
  • Memory on demand: the interface takes memory only when it needs it. Free internal memory at idle went from 115 to 187 KB. With Bluetooth off, another 36 KB go back to the system.
  • More stable: no more watchdog resets while large inventories load, and better diagnostics after a crash or a watchdog reset.

⚡ Faster and smoother

  • Linking new spools is much faster. With one or two new spools that is nice to have. When you set up the scale and link your whole stock one spool after another, it saves a great deal of time.
    • "Link" right after an unknown tag is instant instead of loading everything again (Spoolman 0.05 s instead of 1.5 s, FilaMan up to 0.5 s instead of 2.9 s, BamBuddy no request at all).
    • For two minutes after a download, the next unknown tag is answered from memory in under a second instead of 2 to 7 s.
    • Before anything is written, the spool you tapped is read fresh from the server. A list from memory shows its age and has a "Reload" button.
  • Touch is read 100 times a second instead of 33, so dragging in lists follows the finger. The display bus runs faster and every line is drawn in 27 % less time.
  • Loading the inventory no longer freezes the screen. When a spool is not found right away, the whole inventory is loaded on the second processor core. Screen, scale and NFC reader keep working, and the AMS and location questions can be answered while the search is still running.
  • An unknown tag on the pad no longer freezes the touch every few seconds while the scale checks whether it was linked elsewhere.
  • FilaMan loads its archived spools in 12 KB instead of the whole 450 KB inventory a second time.
  • The WiFi scan shows a spinner instead of holding the screen, and the log page in the browser no longer slows the scale down.
  • The location question after lifting a spool comes after about 1.5 s instead of 4, because the scale now reads the removal from the weight. It also comes when the reader had lost the tag of a spool that was still lying there, and again every time the same spool is taken off.

🏷️ New: Bluetooth and label printing (first version)

  • Bluetooth in the connection menu: master switch, device scan, device list.
  • Label printer: Phomemo M220 (M110 experimental). The scale renders the label itself: manufacturer, material, name, colour with hex code, date (first use or when the spool was added), backend with spool ID, and a QR code that opens the spool in your backend.
  • Printing from "More info", plus a test print. A card follows every step and shows the printer's answer.
  • Label sizes: 40x30 and 50x30 mm.
  • Thanks to @akira69, whose printer support in his fork was the groundwork and proof of concept for this feature.
  • What comes next:
    • Labels from the backend: @akira69 is working on label printing in FilaMan. Once FilaMan takes it in, FilaMan will be the first backend the scale can fetch labels from and print them. For the other backends I still have to work out how to integrate this, and whether their developers want such a feature at all. The label the scale renders itself always stays as the fallback.
    • A small label editor in the browser, to choose what a label shows or to pick one of a few presets.
    • More printers and label sizes. I cannot buy every printer to test, so ideas and help from the community are very welcome.

🧵 Spoolman 0.27: native tags

  • With Spoolman 0.27 the scale stores tags natively in Spoolman. New setups use this by default, and existing scales on extra.tag move over once by themselves. The old fields stay filled.
  • New switch "For OpenSpoolman": Bambu spools also get their UUID in extra.tag, because OpenSpoolman does not know the native tags yet.
  • Missing Spoolman fields (drying date, tag field and others) are created by the scale on the first write. The "extra fields" step in the setup is gone, and the extra fields screen lives in the settings, clearer and without the test field.

📇 Tags: reading, writing, linking

  • The NFC chip in the header opens a view of the tag on the reader, with erase and write.
  • Writing and erasing show a card with a progress bar that asks you to leave the spool in place, and the result appears on the same card.
  • Second tag: the question stands on the result card with a counting-down "Done". It now also comes after linking from FilaMan, and works in the browser too: after writing, the tags page offers a second tag with a countdown, and the overwrite question can be answered there.
  • Tags page in the browser:
    • Shows Bambu and Snapmaker tags next to the spool on the scale.
    • Links the tag on the reader to a spool without writing it.
    • Shows a visible status while writing.
    • Is fully translated.
    • Live view, multi-page NTAG reading, spool ID and protocol, and the raw data window come from Simon-CR (PR #37, #38), thank you.
  • Clear and translucent Bambu filaments get the right colour swatch and are drawn as glass on every screen. Link and Copy handle them reliably, and "PETG Translucent" is no longer cut short.
  • Faster and calmer reader:
    • A MIFARE Classic card the backend knows is found in 3 to 5 s instead of 10.
    • A 4-byte tag that is not a Bambu tag no longer stalls the reader for 34 s.
    • An NTAG with nothing readable is tried three times and then left alone (found by Simon-CR).
  • Snapmaker tags can be read, tested with real Snapmaker spools. It is an option in the web settings, off by default (decoding by Simon-CR).

📋 Copying a spool

  • A copy now ends exactly like a link: tag write question, second tag question, the offer to move a tag that belongs to another spool, and a clear message if something fails. All of this was missing before, on all three backends.
  • One confirmation instead of two, on a card showing colour, filament, vendor, the template and the weights of the new spool.
  • Template lists come from memory and show their age, and the template you tap is read fresh before the copy. With an NTAG, spools that already have a tag are offered as templates too.

🗂️ AMS

  • On an AMS 2 Pro the bay card offers to record the drying for every spool in the unit at once.
  • With BamBuddy the tiles show the weight from the inventory in grams, and a running drying cycle shows as well.
  • When the printer reports a different material than the spool filed for the bay, the card says so. An AMS HT no longer shows "-1 °C".

📡 When the server does not answer

  • A lookup, link or unlink that never reached the server now says "No connection to Spoolman" (or FilaMan, or BamBuddy) instead of reading like an answer. The header badge turns red at once.
  • An unlink that did not arrive leaves the spool on screen and does not offer to erase the tag.
  • Messages on the status line stay for 8 s instead of being painted over.
  • BamBuddy: after switching its inventory back to its own database, lookups no longer end in "API Error".

📝 Log without an SD card

  • The log can be written to the scale's internal memory: 4,096 lines, the oldest are overwritten, and it survives a restart.
  • In the browser under Logs: destination Off, SD card or Internal, and scope Minimal, Normal or Verbose. The page lists both stores, with a filter. For a bug report, please set the scope to Verbose first.
  • A scale whose SD log switch was never touched moves to Internal with scope Minimal. verbose.txt on the card is no longer read.

⬆️ Updates

  • An update that no longer fits the scale's memory is not offered. The scale shows the way to the web flasher instead, and the same goes for a file that is too large in the browser upload.
  • Browser upload with a progress bar, and the page waits by itself until the scale has restarted. On the scale, a full-screen progress bar shows the upload instead of a frozen screen.

🌍 French

  • The scale and the web interface speak French, contributed by nanostra (Frédéric Dubus). Thank you! The newest texts are drafts until he has reviewed them.

✨ Smaller things

  • Questions after lifting a spool close by themselves: the location list and BamBuddy's bay choice after 30 s, with a Cancel button that drains meanwhile. With FilaMan's AMS question, the button the countdown will pick drains. Opened from "More info", the location list waits as before.
  • The fill bar and its colour are right at once after "Update weight".
  • Sliding a finger off a pressed button no longer counts as a tap, and scrolling no longer highlights the row under your finger.
  • A spool left on the scale no longer keeps the screen at full brightness; it dims like an idle scale (found by Simon-CR).
  • A tag placed before WiFi was up is looked up as soon as the network is there. An NTAG put down after a Bambu tag without lifting the spool is looked up too.
  • An archived spool named by FilaMan's tag scan shows as archived again.
  • FilaMan: setting a spool to full (or copying one) no longer stores the weight without the empty spool, which showed more than 100 %.
  • Info screen: a fifth QR code, to the manual.
  • The X at the top right leads to the main screen on every screen of linking and copying.
  • FilaMan default port is 8083 (PR #31), and web interface and backend also start when WiFi comes up after boot (PR #32), both by nanostra.

Known

  • Writing or erasing a tag holds the screen for 2 to 4 s.
  • FilaMan: archiving from the scale does not reset the remaining weight. FilaMan accepts the value but does not apply it.

A great many hours of work went into this update. If you are happy with your scale, I would be glad about a coffee on Ko-fi.


SpoolmanScale v0.8.0 Beta, deutsch

Alles seit v0.7.3.

⚠ Einmalig kurz per USB aktualisieren

Diese Version ändert die Aufteilung des Speichers in der Waage, und das geht nur einmal per USB-Kabel. Öffne den Web-Flasher in Chrome oder Edge an einem Computer, schließe die Waage an und wähle "Update". Das dauert etwa 2 Minuten, WLAN, Kalibrierung und Backend-Einstellungen bleiben erhalten. Bietet der Flasher "Install" statt "Update" an, das Häkchen bei "Erase" nicht setzen, sonst sind WLAN und Kalibrierung weg.

Eine Waage, die diesen Schritt auslässt, läuft weiter und bekommt diese Version noch drahtlos. Sie erinnert bei jedem Start daran, mit einem QR-Code zum Flasher. Spätere Updates brauchen mehr Platz und lassen sich drahtlos nicht mehr installieren, sobald sie größer sind, als die alte Aufteilung erlaubt.

🔧 Großer Umbau unter der Haube

Die Firmware steht auf der neuesten Grundlage: Arduino Core 3.3 auf ESP-IDF 5.5 (vorher Core 2.0.17, der keine Updates mehr bekommt). Das war nötig für Bluetooth: Unter Core 2 stürzte die Waage ab, sobald WLAN und Bluetooth gleichzeitig liefen. Dabei stellte sich heraus, dass dafür nicht genug freier Speicher da war. Also habe ich alles auf den Prüfstand gestellt und an jeder Stelle Speicher optimiert. Das hat enorm viel Zeit gekostet, war aber nötig, damit alles flüssig läuft und genug Platz für künftige Funktionen bleibt, etwa Filament-Manager, die nicht im eigenen Netz laufen.

  • Neue Speicheraufteilung: Der Bereich für die Firmware wächst von 3 auf 6 MB je Slot, dazu ein Bereich für Absturzberichte und 3,9 MB Datenspeicher für künftige Funktionen. Genau das richtet das einmalige USB-Update oben ein.
  • Speicher nach Bedarf: Die Oberfläche holt sich Speicher nur, wenn sie ihn braucht. Freier interner Speicher im Leerlauf: 115 → 187 KB. Ist Bluetooth aus, bekommt das System weitere 36 KB zurück.
  • Stabiler: keine Watchdog-Neustarts mehr beim Laden großer Inventare, und bessere Diagnose nach einem Absturz oder Watchdog-Neustart.

⚡ Schneller und flüssiger

  • Neue Spulen verknüpfen geht viel schneller. Bei ein, zwei neuen Spulen ist das angenehm. Wer die Waage einrichtet und seinen ganzen Bestand Spule für Spule verknüpft, spart damit sehr viel Zeit.
    • "Spule verknüpfen" direkt nach einem unbekannten Tag kommt sofort, statt alles noch einmal zu laden (Spoolman 0,05 s statt 1,5 s, FilaMan bis 0,5 s statt 2,9 s, BamBuddy ganz ohne Anfrage).
    • Zwei Minuten lang nach einem Download wird der nächste unbekannte Tag aus dem Speicher in unter einer Sekunde beantwortet statt in 2 bis 7 s.
    • Bevor etwas geschrieben wird, liest die Waage die angetippte Spule frisch vom Server. Eine Liste aus dem Speicher zeigt ihr Alter und hat einen Knopf "Neu laden".
  • Touch wird 100-mal pro Sekunde gelesen statt 33-mal, Wischen in Listen folgt dem Finger. Der Display-Bus läuft schneller, jede Zeile ist in 27 % weniger Zeit gezeichnet.
  • Das Laden des Inventars friert den Bildschirm nicht mehr ein. Wird eine Spule nicht sofort gefunden, lädt der zweite Prozessorkern das ganze Inventar. Bildschirm, Waage und NFC-Leser arbeiten weiter, und die AMS- und Lagerort-Fragen lassen sich beantworten, während die Suche noch läuft.
  • Ein unbekannter Tag auf der Waage friert den Touch nicht mehr alle paar Sekunden ein, während die Waage prüft, ob er anderswo verknüpft wurde.
  • FilaMan lädt seine archivierten Spulen mit 12 KB statt noch einmal das ganze Inventar mit 450 KB.
  • Der WLAN-Scan zeigt einen Spinner, statt den Bildschirm festzuhalten, und die Log-Seite im Browser bremst die Waage nicht mehr.
  • Die Lagerort-Frage nach dem Abnehmen kommt nach etwa 1,5 s statt nach 4, weil die Waage die Entnahme jetzt am Gewicht erkennt. Sie kommt auch, wenn der Leser den Tag einer noch liegenden Spule verloren hatte, und jedes Mal wieder, wenn dieselbe Spule abgenommen wird.

🏷️ Neu: Bluetooth und Etikettendruck (erste Version)

  • Bluetooth im Verbindungsmenü: Hauptschalter, Gerätesuche, Geräteliste.
  • Etikettendrucker: Phomemo M220 (M110 experimentell). Die Waage erstellt das Etikett selbst: Hersteller, Material, Name, Farbe mit Hex-Code, Datum (Erstnutzung oder Anlagedatum), Backend mit Spulen-ID und ein QR-Code, der die Spule im Backend öffnet.
  • Druck aus "Mehr Info" und ein Testdruck. Eine Karte zeigt jeden Schritt und die Antwort des Druckers.
  • Etikettengrößen: 40x30 und 50x30 mm.
  • Danke an @akira69: Seine Druckerunterstützung in seinem Fork war die Vorarbeit und der Proof of Concept für diese Funktion.
  • Wie es weitergeht:
    • Etiketten vom Backend: @akira69 arbeitet am Etikettendruck in FilaMan. Sobald FilaMan das übernimmt, ist FilaMan das erste Backend, von dem die Waage Etiketten holen und drucken kann. Für die anderen Backends muss ich noch klären, wie sich das einbinden lässt und ob deren Entwickler so eine Funktion überhaupt wollen. Das Etikett, das die Waage selbst erstellt, bleibt immer als Rückfall.
    • Ein kleiner Etiketten-Editor im Browser, um auszuwählen, was ein Etikett zeigt, oder eine von wenigen Vorlagen zu wählen.
    • Weitere Drucker und Etikettengrößen. Ich kann nicht jeden Drucker zum Testen kaufen, deshalb sind Ideen und Hilfe aus der Community sehr willkommen.

🧵 Spoolman 0.27: native Tags

  • Mit Spoolman 0.27 speichert die Waage Tags nativ in Spoolman. Neue Einrichtungen nutzen das von Anfang an, bestehende Waagen mit extra.tag ziehen einmal von selbst um. Die alten Felder bleiben gefüllt.
  • Neuer Schalter "Für OpenSpoolman": Bambu-Spulen bekommen ihre UUID zusätzlich in extra.tag, weil OpenSpoolman die nativen Tags noch nicht kennt.
  • Fehlende Spoolman-Felder (Trocknungsdatum, Tag-Feld und andere) legt die Waage beim ersten Schreiben selbst an. Der Schritt "Extra-Felder" in der Einrichtung entfällt, der Extra-Felder-Screen ist nur noch in den Einstellungen, übersichtlicher und ohne Testfeld.

📇 Tags: lesen, schreiben, verknüpfen

  • Der NFC-Chip in der Kopfzeile öffnet eine Ansicht des Tags auf dem Leser, mit Löschen und Schreiben.
  • Schreiben und Löschen zeigen eine Karte mit Fortschrittsbalken, die bittet, die Spule liegen zu lassen, und das Ergebnis steht auf derselben Karte.
  • Zweiter Tag: Die Frage steht auf der Ergebniskarte, mit einem "Fertig", das herunterzählt. Sie kommt jetzt auch nach dem Verknüpfen aus FilaMan und funktioniert auch im Browser: Nach dem Schreiben bietet die Tags-Seite einen zweiten Tag mit Countdown an, und die Frage zum Überschreiben lässt sich dort beantworten.
  • Tags-Seite im Browser:
    • Zeigt Bambu- und Snapmaker-Tags neben der Spule auf der Waage.
    • Verknüpft den Tag auf dem Leser mit einer Spule, ohne ihn zu beschreiben.
    • Zeigt beim Schreiben einen sichtbaren Status.
    • Ist vollständig übersetzt.
    • Live-Ansicht, Lesen mehrseitiger NTAGs, Spulen-ID und Protokoll sowie das Fenster mit den Rohdaten stammen von Simon-CR (PR #37, #38), danke.
  • Klare und transluzente Bambu-Filamente bekommen das richtige Farbfeld und werden auf jedem Screen als Glas gezeichnet. Verknüpfen und Kopieren kommen zuverlässig mit ihnen zurecht, und "PETG Translucent" wird nicht mehr abgeschnitten.
  • Schnellerer und ruhigerer Leser:
    • Eine MIFARE-Classic-Karte, die das Backend kennt, wird in 3 bis 5 s gefunden statt in 10.
    • Ein 4-Byte-Tag, der kein Bambu-Tag ist, blockiert den Leser nicht mehr 34 s lang.
    • Ein NTAG ohne lesbaren Inhalt wird dreimal versucht und dann in Ruhe gelassen (gefunden von Simon-CR).
  • Snapmaker-Tags lassen sich lesen, getestet mit echten Snapmaker-Spulen. Das ist eine Option in den Web-Einstellungen, standardmäßig aus (Dekodierung von Simon-CR).

📋 Spule kopieren

  • Eine Kopie endet jetzt genau wie eine Verknüpfung: Frage zum Tag-Schreiben, Frage nach dem zweiten Tag, das Angebot, einen Tag umzuziehen, der zu einer anderen Spule gehört, und eine klare Meldung, wenn etwas schiefgeht. Das alles fehlte vorher, bei allen drei Backends.
  • Eine Bestätigung statt zwei, auf einer Karte mit Farbe, Filament, Hersteller, der Vorlage und den Gewichten der neuen Spule.
  • Vorlagenlisten kommen aus dem Speicher und zeigen ihr Alter, die angetippte Vorlage wird vor dem Kopieren frisch gelesen. Mit einem NTAG werden auch Spulen, die schon einen Tag haben, als Vorlage angeboten.

🗂️ AMS

  • Bei einem AMS 2 Pro bietet die Fachkarte an, die Trocknung für alle Spulen der Einheit auf einmal einzutragen.
  • Mit BamBuddy zeigen die Kacheln das Gewicht aus dem Inventar in Gramm, und ein laufender Trocknungszyklus wird ebenfalls angezeigt.
  • Meldet der Drucker ein anderes Material als die Spule, die für das Fach hinterlegt ist, sagt die Karte das. Ein AMS HT zeigt nicht mehr "-1 °C".

📡 Wenn der Server nicht antwortet

  • Eine Suche, Verknüpfung oder Entknüpfung, die den Server nie erreicht hat, meldet jetzt "Keine Verbindung zu Spoolman" (bzw. FilaMan oder BamBuddy), statt wie eine Antwort auszusehen. Das Symbol in der Kopfzeile wird sofort rot.
  • Eine Entknüpfung, die nicht angekommen ist, lässt die Spule auf dem Bildschirm und bietet nicht an, den Tag zu löschen.
  • Meldungen in der Statuszeile bleiben 8 s stehen, statt übermalt zu werden.
  • BamBuddy: Nach dem Zurückstellen seines Inventars auf die eigene Datenbank enden Suchen nicht mehr in "API Error".

📝 Log ohne SD-Karte

  • Das Log lässt sich in den internen Speicher der Waage schreiben: 4.096 Zeilen, die ältesten werden überschrieben, und es übersteht einen Neustart.
  • Im Browser unter Logs: Ziel Aus, SD-Karte oder Intern, und Umfang Minimal, Normal oder Ausführlich. Die Seite listet beide Speicher, mit Filter. Für einen Fehlerbericht bitte vorher den Umfang auf Ausführlich stellen.
  • Eine Waage, deren SD-Log-Schalter nie angefasst wurde, wechselt auf Intern mit Umfang Minimal. verbose.txt auf der Karte wird nicht mehr gelesen.

⬆️ Updates

  • Ein Update, das nicht mehr in den Speicher passt, wird nicht angeboten. Die Waage zeigt stattdessen den Weg zum Web-Flasher, ebenso bei einer zu großen Datei im Browser-Upload.
  • Browser-Upload mit Fortschrittsbalken, und die Seite wartet von selbst, bis die Waage neu gestartet ist. Auf der Waage zeigt ein bildschirmfüllender Balken den Upload statt eines eingefrorenen Bildschirms.

🌍 Französisch

  • Waage und Weboberfläche sprechen Französisch, beigesteuert von nanostra (Frédéric Dubus). Danke! Die neuesten Texte sind Entwürfe, bis er sie durchgesehen hat.

✨ Kleineres

  • Fragen nach dem Abnehmen schließen sich selbst: die Lagerort-Auswahl und die BamBuddy-Fachwahl nach 30 s, mit einem "Abbrechen"-Knopf, der in dieser Zeit leerläuft. Bei der AMS-Frage von FilaMan läuft der Knopf leer, den der Ablauf wählen wird. Aus "Mehr Info" geöffnet wartet die Lagerort-Auswahl wie bisher.
  • Füllstandsbalken und seine Farbe stimmen nach "Gewicht updaten" sofort.
  • Einen Finger von einem gedrückten Knopf wegzuziehen zählt nicht mehr als Tipp, und Scrollen hebt die Zeile unter dem Finger nicht mehr hervor.
  • Eine Spule, die auf der Waage liegen bleibt, hält den Bildschirm nicht mehr auf voller Helligkeit; er dimmt wie bei einer leeren Waage (gefunden von Simon-CR).
  • Ein Tag, der aufgelegt wurde, bevor das WLAN stand, wird gesucht, sobald das Netz da ist. Ein NTAG, der nach einem Bambu-Tag aufgelegt wird, ohne die Spule anzuheben, wird ebenfalls gesucht.
  • Eine archivierte Spule, die FilaMans Tag-Scan nennt, erscheint wieder als archiviert.
  • FilaMan: Eine Spule auf voll setzen (oder kopieren) speichert das Gewicht nicht mehr ohne die leere Spule, was mehr als 100 % anzeigte.
  • Info-Screen: ein fünfter QR-Code, zur Anleitung.
  • Das X oben rechts führt auf jedem Screen des Verknüpfens und Kopierens zum Hauptscreen.
  • FilaMan-Standardport ist 8083 (PR #31), und Weboberfläche und Backend starten auch, wenn das WLAN erst nach dem Start kommt (PR #32), beides von nanostra.

Bekannt

  • Tag schreiben oder löschen hält den Bildschirm 2 bis 4 s fest.
  • FilaMan: Archivieren von der Waage setzt das Restgewicht nicht zurück. FilaMan nimmt den Wert an, übernimmt ihn aber nicht.

In diesem Update stecken sehr viele Stunden Arbeit. Wenn du mit deiner Waage zufrieden bist, freue ich mich über einen Kaffee auf Ko-fi.