Konfiguration des Datenloggers per "settings.example-bob.py" verbessern

Hi Andreas,

Das sieht eigentlich schon ziemlich hervorragend aus. Gerade "Telemetry status: SUCCESS (2/2)" macht Hoffnung. Hm, was war nochmal Deine Frage? ;]

Ich würde sagen: Die Telemetrie klappt ganz gut, Meßwerte kommen an. D.h. es sind vermutlich keine signifikanten Änderungen mehr notwendig – allerdings wichtiges Feintuning gerade der Einstellungen für die Waage.

Waage justieren

"weight": -47003.88 liegt auf jeden Fall weit daneben und wird von der BEEP-Anwendung vermutlich ignoriert. Damit das besser wird, müssen die Werte "scale" und "offset" richtig eingestellt werden. Sie sind im Konfigurationsabschnitt beim HX711 untergebracht:

'hx711': {
    'address': 0x00,
    'pin_dout': 'P22',
    'pin_pdsck': 'P21',
    'scale': 4.424242,
    'offset': -73000.0,
}

Wie man dabei genau vorgeht, hat @clemens versucht, unter Adjust scale for the Micropython firmware zu beschreiben. Diese Anleitung noch ein wenig präziser (und u.U. hier im Forum auch auf Deutsch) zu haben, wäre vermutlich praktisch – es ist nämlich alles ganz einfach: Unbelastet ablesen, Belastet ablesen, Subtrahieren, Eintragen, Fertig.

Ausblick: Das GitHub - Hiverize/Webinterface bringt diese Schritte zwar schon schön komfortabel in eine Benutzermaske (danke @vinz und @Diren!), leider sind unsere Softwarestücke jedoch noch nicht interoperabel, das tut uns leid. Hier drüben bei Developing Terkin for MicroPython - #16 by Andreas haben wir das auf dem Schirm.

Fehlende Temperaturwerte

Bei den Temperaturwerten kann ich keinerlei Probleme erkennen. Außer vielleicht, dass t_i_7 nicht mehr durchgeht, weil es nicht im System zur Verfügung steht. Ich glaube es geht nur bis t_i_6 oder vielleicht sogar nur t_i_5? @vinz und @Diren könnten wir vielleicht kurz unter der Haube schauen.

Viele Grüße,
Andreas.

Hallo @Andreas,

vielen Dank für deine Hilfe.
Den 7. Temperaturwert habe ich entfernt, dennoch scheint ein Temperatursensor zu fehlen (im Vergleich zu vorher). Hier werde ich wohl noch mal die Sensor ID’s überprüfen.

Die Waage habe ich inzwischen auch justiert. Die Anleitung ist ja recht einfach. Der einzige Punkt der jetzt noch etwas merkwürdig ist, ist, dass ich die Gewichtsdaten nicht in der Bob-App sehen kann. In der Grafana Auswertung tauchen die Gewichtsdaten ganz normal auf.

Hast du hierzu eine Idee?

Viele Grüße aus dem Norden

Andreas

Kann es an scale vs. weight liegen?

Wie sollte ich meine Settings.py Datei anpassen, damit es richtig übermittelt wird?

Das ist seltsam. Laut der Log-Ausgabe ist alles in Ordnung und die Werte sollten passabel ankommen.

 2104.5275 [terkin.telemetry         ] DEBUG  : Payload:     {"t_i_4": 23.125, "p": 1002.46, "t_i_1": 22.875, "t_i_2": 22.5625, "t_i_3": 22.3125, "h": 53.32, "t_i_6": 22.625, "weight": -47003.88, "t_i_7": 29.82608, "key": "{redacted}", "t_i_5": 22.0, "t": 22.63}

An dieser Stelle hat vermutlich nur "weight": -47003.88 anfangs dafür gesorgt, dass die Werte u.U. maskiert wurden, weil sie einer möglichen eingebauten Plausibilitätsprüfung nicht standhielten. Das sind aber reine Vermutungen.

Hallo @Andreas,

um bei diesem Thema eventuell weiter zu kommen habe ich noch einmal einen Blick in die Log Daten geworfen nachdem ich die Waage justiert habe. Aktuell sieht dies so aus:

 9732.4762 [terkin.datalogger        ] INFO   : Reading 8 sensor ports
 9732.4886 [terkin.datalogger        ] INFO   : Reading sensor port "SystemMemoryFree"
 9732.5649 [terkin.datalogger        ] INFO   : Reading sensor port "SystemTemperature"
 9732.7042 [terkin.datalogger        ] INFO   : Reading sensor port "SystemBatteryLevel"
 9732.7232 [terkin.sensor.system     ] DEBUG  : Reading battery level on pin P16 with voltage divider 1000/1000
 9732.8310 [terkin.sensor.system     ] DEBUG  : SystemBatteryLevel: Mean of ADC readings (0-4095) = 1630.4720878601074
 9732.8482 [terkin.sensor.system     ] DEBUG  : SystemBatteryLevel: Mean of ADC voltage readings (0-1899mV) = 819.9999809265137
 9732.8625 [terkin.sensor.system     ] DEBUG  : SystemBatteryLevel: Variance of ADC readings = 16.6498031616211
 9732.8787 [terkin.sensor.system     ] DEBUG  : SystemBatteryLevel: 10**6*Variance/(Mean**2) of ADC readings = 6.0000000000000
 9732.8978 [terkin.sensor.system     ] DEBUG  : Battery level: 1.64
 9732.9140 [terkin.datalogger        ] INFO   : Reading sensor port "SystemUptime"
 9732.9292 [terkin.datalogger        ] INFO   : Reading sensor port "SystemWiFiMetrics"
 9732.9502 [terkin.datalogger        ] INFO   : Reading sensor port "HX711Sensor"
 9735.1093 [terkin.datalogger        ] INFO   : Reading sensor port "DS18X20Sensor"
 9744.4258 [terkin.datalogger        ] INFO   : Reading sensor port "BME280Sensor"
 9744.5059 [terkin.datalogger        ] INFO   : Sensor data:  {'temperature.282657799704036e.onewire:0': 33.75, 'temperature.0x77.i2c:0': 19.13, 'system.temperature': 26.0, 'temperature.2863e879970403d0.onewire:0': 32.875, 'scale.0.kg': 20.934, 'system.wifi.rssi': -85, 'system.wifi.country': 'DE', 'temperature.284ba979970403e3.onewire:0': 31.5, 'system.time': 9737, 'scale.0.offset': -137750.9, 'system.wifi.channel': 11, 'humidity.0x77.i2c:0': 54.5, 'temperature.28becd7997040374.onewire:0': 32.625, 'system.memfree': 2391376, 'temperature.28d5f979970403d4.onewire:0': 32.75, 'system.voltage': 1.64, 'scale.0.raw': -426453.7, 'pressure.0x77.i2c:0': 1013.33, 'weight.0': 20.934, 'scale.0.scale': -13791.3, 'system.wifi.max_tx_power': 78, 'system.wifi.bandwidth': 2, 'system.uptime': 9737.761, 'system.runtime': 9722, 'temperature.282df57997040326.onewire:0': 14.5}
 9744.6051 [terkin.telemetry         ] DEBUG  : MQTT topic:   hiveeyes/testdrive/Waggi-micropyton/FiPY-Test/data.json
 9744.6184 [terkin.telemetry         ] DEBUG  : MQTT payload: {"temperature.282657799704036e.onewire:0": 33.75, "temperature.0x77.i2c:0": 19.13, "system.temperature": 26.0, "temperature.2863e879970403d0.onewire:0": 32.875, "scale.0.kg": 20.934, "system.wifi.rssi": -85, "system.wifi.country": "DE", "temperature.284ba979970403e3.onewire:0": 31.5, "system.time": 9737, "scale.0.offset": -137750.9, "system.wifi.channel": 11, "humidity.0x77.i2c:0": 54.5, "temperature.28becd7997040374.onewire:0": 32.625, "system.memfree": 2391376, "temperature.28d5f979970403d4.onewire:0": 32.75, "system.voltage": 1.64, "scale.0.raw": -426453.7, "pressure.0x77.i2c:0": 1013.33, "weight.0": 20.934, "scale.0.scale": -13791.3, "system.wifi.max_tx_power": 78, "system.wifi.bandwidth": 2, "system.uptime": 9737.761, "system.runtime": 9722, "temperature.282df57997040326.onewire:0": 14.5}
 9748.8947 [terkin.telemetry         ] INFO   : Sending HTTP request to https://bee-observer.org/api/sensors
 9748.9071 [terkin.telemetry         ] DEBUG  : Payload:     {"p": 1013.33, "t_i_2": 32.75, "t_i_3": 32.625, "t_i_4": 33.75, "h": 54.5, "t_i_6": 31.5, "weight": 20.934, "key": "******", "t": 19.13, "t_i_5": 32.875, "t_i_1": 14.5}
 9751.4791 [terkin.datalogger        ] INFO   : Telemetry status: SUCCESS (2/2)
 9751.6184 [terkin.device            ] INFO   : Entering light sleep for 2.0 seconds
 9753.6316 [terkin.datalogger        ] INFO   : --- loop ---

Das Gewichts sollte wieder im “normalen” Bereich liegen. Hilft diese Information irgendwie weiter? Ich hatte schon überlegt, ob ich den Sensor komplett neu anlege um zu testen ob die Daten dann angezeigt werden.

Grüße

Andreas

Hatte ich gestern auch schon gedacht, wenn sich da BOB verschluckt hat durch einen zu hohen Wert könnte das ein neu anlegen bei BOB und entsprechender Anpassung in der settings.py lösen, würde ich mal probieren!

Ok. Dieser Versuch brachte mich nicht weiter. Ich habe einen neuen Sensor in der Bob App angelegt. Das Ergebnis bleibt das gleiche. Ich bekomme kein Gewicht angezeigt und auch nur Werte von 5 Temperatur Sensoren plus der Temperatur des Hygrometers.


Daher gehe ich davon aus, dass anscheinend doch etwas in meiner Konfiguration der Settings.py nicht stimmt. Hat jemand noch ein anderes Beispiel wie diese Datei aussehen sollte?

Kann gerade nicht testen und nachsehen glaube “weight_kg” anstatt “weight” ist richtig.

Gruß Michael

1 Like

Das wäre natürlich die plausibelste Erklärung! Dann ist es in der Vorlage falsch und es kann nicht funktionieren, wenn man es so nachmacht. a) Tut mir leid und b) bin gespannt, ob das die Ursache ist.

Aus der hiverize/FiPy Software.

data['weight_kg'] = hx711.get_value(times=5)

In meiner priv. testconfig hatte ich das auch glaube ich geändert. In der die ich dir als example gepostet hatte hab ich es leider nicht beachtet @waggi.

2 Likes

Sorry, unser Fehler, mir ist es bisher auch nicht aufgefallen, da ich nur geschaut habe, ob Daten fließen, waren bei mir aber auch nur die Temperaturen, Feuchte, … auch bei mir hat das Gewicht gefehlt!

Die Angaben zum Gewicht in der settings.example-bob.py sind falsch!

"weight.0": "weight",

korrekt ist:

"weight.0": "weight_kg",

2 Likes

Merged. Thanks, @MKO and @clemens.

1 Like

Hallo @clemens,
ich habe die Settings.py entsprechend angepasst. Fantastisch – kaum macht mans richtig, schon funktionierts. Die Gewichtsdaten kommen jetzt wie gewohnt in der Bob-App an. Vielen Dank für die Hilfe hierbei.

Jetzt fehlt mir nur noch ein Temperaturwert…

Ich sammele ja insgesamt 7 Werte mit dem Sensor: 6 separate Temperatur Sensoren plus den Temperatur Wert aus dem BME280. Alle Werte werden übertragen, jedoch nur 6 angezeigt.

Gibt es hier auch einen Wert der angepasst werden muss?

Gruß

Andreas

1 Like

Vermutlich ist die Anzahl der Temperatursensoren hard gecodet, nimm doch einfach

"system.temperature": "t_i_7",

am Ende deiner settings.py raus, das ist nur ein Wert des Prozessors und für uns eigentlich nicht relevant.

Die Anzahl der Innensensoren “t_i_x” Sensoren ist auf 5 begrenzt. Der Außensensor heißt “t_o”.

Beispiel:
image

Ergebnis:

gruß Michael

3 Likes

Super. Vielen Dank. Diesen Hinweis sollten wir unbedingt in die settings.example-bob.py mit aufnehmen!

2 Likes

Ja, Versuche nachher nochmal meine Git Jungfräulichkeit zu verlieren. Hatte gestern Abend schon Mal versucht ein Pull request deswegen zu machen Bin aber wegen eines Authentifizierungsproblemes gescheitert.

2 Likes

Hab noch ein paar Variablen für BOB im Code von Bob gefunden gefunden.

"system.wifi.rssi": "rssi", #signalstärke
"system.wifi.max_tx_power": "snr", #Sendeleistung
"system.voltage":"bv", #Batteriespannung 

wird auch schön in Bob in einem extra Diagramm angezeigt. Die dB werte sind aber wie es aussieht eher für GSM und co gemacht die Max Pegel passen nicht so ganz.
image

es sind noch weitere Variablen vorhanden, die aber für mich noch keinen sinn machen. Will sie euch aber nicht vorenthalten.

'w' => ['name'=>'weight_sum', 'unit'=>''],
'l' => ['name'=>'light', 'unit'=>'lux'],
'weight_kg_corrected' => ['name'=>'weight_kg_corrected', 'unit'=>'Kg'],
'w_o' => ['name'=>'weight_offset', 'unit'=>'Kg'],
's_fan_4' => ['name'=>'sound_fanning_4days', 'unit'=>''],
's_fan_6' => ['name'=>'sound_fanning_6days', 'unit'=>''],
's_fan_9' => ['name'=>'sound_fanning_9days', 'unit'=>''],
's_fly_a' => ['name'=>'sound_flying_adult', 'unit'=>''],
's_tot' => ['name'=>'sound_total', 'unit'=>''],
'bc_i' => ['name'=>'bee_count_in', 'unit'=>'#'],
'bc_o' => ['name'=>'bee_count_out', 'unit'=>'#'],
2 Likes

Die kg-Variablen sind noch von der alten Beep-Waage, die mit 4 Wägezellen gearbeitet hat, die Sound-Geschichten von ersten Experimenten von Wouter, der einen M0 und die Arduino FFT testweise verwendet hat. Von einem bee counter habe ich im Beep-Umfeld bisher nichts gehört.