Aubau von der Gasflaschen Waage
Für meine Waage habe ich mir ein Stück Bett genommen mit 35×35 cm und einer Stärke von 1.5 cm. Es gibt zwei unterschiedliche Load-Cells einmal nur aus Metal und eine kleiner Version die einen Gummi unten angebracht hat. Für beide Versionen gibt es Halterungen die man mit einem 3D Drucker drucken kann. Ich verwende eine Drucker von Bambulab und dort im Store kann man die Halterungen einfach suchen oder auch auf Thingiverse sind viele Model vorhanden. Danach habe ich auf der Unterseite Fräsungen gemacht für die Kabel und damit man den ESP32-C3 und das HX711 Modul.
Hier findet ihr das benötigte Material!
| Produkt | Amazon |
|---|---|
| 2er Set, ESP32-C3 Super Mini | shopping_cart Bei Amazon kaufen |
| 4 x Halbbrücken Wägezelle und HX711 Modul | shopping_cart Bei Amazon kaufen |
Material bei Aliexpress
Alle Material-Links sind Affiliate Links.
Verdrahtung der Schaltung
Zum Vergrössern auf das Bild klicken.
Einstellungen in der Arduino IDE
Projekt Beschreibung
Die entwickelte Waage basiert auf einem ESP32-C3 und einem HX711-Verstärker zur präzisen Erfassung des Gewichts einer Gasflasche.
Nach dem Einschalten verbindet sich das System mit dem WLAN und einem MQTT-Broker.
Das aktuelle Gesamtgewicht wird regelmäßig gemessen, gefiltert und in Kilogramm berechnet.
Aus dem Leer- und Vollgewicht der Flasche wird der prozentuale Füllstand bestimmt.
Alle relevanten Werte werden per MQTT an Home Assistant übertragen.
Eine Tare-Funktion ermöglicht das Zurücksetzen des Nullpunkts bei leerer Waage.
Zusätzlich kann eine Kalibrierung mit einem definierten Referenzgewicht durchgeführt werden.
Die Messwerte werden nur bei relevanter Änderung übertragen, um MQTT-Traffic zu reduzieren.
Nach einer definierten Messdauer wechselt das Gerät automatisch in den Deep-Sleep-Modus.
Die Schlafdauer hängt davon ab, ob eine Flasche erkannt wurde oder nicht, um Energie zu sparen.
Kurze Zusammenfassung
Die Gas Cylinder Scale misst mit einem HX711 und einer Wägezelle das Gesamtgewicht einer Gasflasche und berechnet daraus den Füllstand in Prozent.
Das System verbindet sich per WLAN mit einem MQTT-Broker und überträgt Gewicht, Status und Füllstand an Home Assistant.
Eine Tare-Funktion setzt den Nullpunkt bei leerer Waage, eine Kalibrierfunktion erlaubt die Justierung mit einem Referenzgewicht.
Zur Reduktion von MQTT-Traffic wird nur bei relevanter Gewichtsänderung gesendet.
Nach einer definierten Messzeit wechselt das Gerät automatisch in den Deep-Sleep-Modus, um Energie zu sparen.
Einstellbare Variablen
Hardware:
HX_DT– Data-Pin des HX711HX_SCK– Clock-Pin des HX711
Flaschenparameter:
BOTTLE_EMPTY_KG– Leergewicht der GasflascheBOTTLE_FULL_KG– Gesamtgewicht bei voller Flasche
Kalibrierung:
CAL_REF_KG– Referenzgewicht für Kalibrierung
Messverhalten:
MEASURE_INTERVAL_MS– Messintervall während WachphaseMEASURE_WINDOW_MS– Gesamtdauer der Wachphase
Erkennung & Filter:
BOTTLE_THRESHOLD_KG– Mindestgewicht zur FlaschenerkennungCHANGE_THRESHOLD_KG– Minimale Gewichtsänderung für MQTT-Update
Energiesparen:
SLEEP_EMPTY_MIN– Sleep-Dauer ohne erkannte FlascheSLEEP_BOTTLE_MIN– Sleep-Dauer bei erkannter Flasche
Dashboard in Home Assistant
YAML - Dashboard
type: vertical-stack
title: Gasflasche Waage
cards:
- type: horizontal-stack
cards:
- type: button
entity: binary_sensor.gas_bottle_present
name: Gasflasche
icon: mdi:gas-cylinder
show_state: true
show_name: true
tap_action:
action: none
state_color: true
styles:
icon:
- width: 64px
- height: 64px
name:
- font-size: 14px
- padding-top: 8px
- type: button
name: Neu tarieren
icon: mdi:scale-balance
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: gasbottle/command
payload: TARE
show_state: false
show_name: true
state_color: true
styles:
icon:
- width: 64px
- height: 64px
name:
- font-size: 14px
- padding-top: 8px
- type: button
name: Kalibrieren (1kg)
icon: mdi:tune
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: gasbottle/command
payload: CALIBRATE
show_state: false
show_name: true
state_color: true
styles:
icon:
- width: 64px
- height: 64px
name:
- font-size: 14px
- padding-top: 8px
- type: gauge
entity: sensor.gas_bottle_fill_level
name: Füllstand Gasflasche
unit: "%"
min: 0
max: 100
needle: true
severity:
green: 30
yellow: 10
red: 0
- type: sensor
entity: sensor.gas_bottle_weight
name: Aktuelles Gewicht
icon: mdi:weight-kilogram
graph: none
- type: entities
title: System Status
state_color: true
entities:
- entity: sensor.gas_bottle_info
name: Status / Info
icon: mdi:information-outline
secondary_info: last-changed
/homeassistant/configuration.yaml
mqtt:
sensor:
- name: "Gas Bottle Weight"
unique_id: gasbottle_weight_kg
state_topic: "gasbottle/weight"
unit_of_measurement: "kg"
device_class: weight
state_class: measurement
icon: mdi:weight-kilogram
value_template: "{{ value | float(0) | round(2) }}"
- name: "Gas Bottle Fill Level"
unique_id: gasbottle_fill_level
state_topic: "gasbottle/fill_level"
unit_of_measurement: "%"
state_class: measurement
icon: mdi:gas-cylinder
value_template: "{{ value | float(0) | int }}"
- name: "Gas Bottle Info"
unique_id: gasbottle_info
state_topic: "gasbottle/info"
icon: mdi:information-outline
binary_sensor:
- name: "Gas Bottle Present"
unique_id: gasbottle_present
state_topic: "gasbottle/status"
payload_on: "BOTTLE"
payload_off: "NO_BOTTLE"
device_class: occupancy
button:
- name: "Gas Bottle Scale Tare"
unique_id: gasbottle_scale_tare
command_topic: "gasbottle/command"
payload_press: "TARE"
retain: false
icon: mdi:scale-balance
availability_topic: "gasbottle/availability"
payload_available: "online"
payload_not_available: "offline"
- name: "Gas Bottle Scale Calibrate"
unique_id: gasbottle_scale_calibrate
command_topic: "gasbottle/command"
payload_press: "CALIBRATE"
retain: false
icon: mdi:tune
availability_topic: "gasbottle/availability"
payload_available: "online"
payload_not_available: "offline"
Alle Code Beispiele findet ihr natürlich auch auf Git-Hub!



