Kontinuierliche Verbesserungen des Terkin-Datenloggers (600er)

Guten Tag,

mit @waggi, @clemens und @MKO haben sich ein paar Leute zusammengefunden, den Hiveeyes MicroPython Datenlogger produktionsreif zu machen. Anfangs fehlten noch ein paar Essentials wie Deep Sleep und natürlich gibt es im Verlauf der Weiterentwicklung auch ab und an Regressionen.

Hier wollen wir uns darum kümmern, dass zukünftig alles rund läuft. Vielen Dank für Euer Engagement.

Herzliche Grüße,
Andreas.

Hi Andreas,
warte bitte noch einen kleinen Augenblick. Ist auf alle fälle etwas Aufwändiger und erfordert etwas fundiertes Grundwissen. Die Doku hierzu ist Aktuell auch anscheinend auch noch nicht gerade Perfekt.
Ich bin gerade selbst dabei mich in die Programierung und die Software einzuarbeiten. wenn man ein wenig Quer liest ist eigentlich alles benötigte hier im Forum zu finden.

Wenn du schon ein wenig mit einem Raspi gespielt hast ist das aber schon mal ein guter Anfang.wenn Du dazu auch noch ein Linux System zur Hand hast noch besser (Win 10 scheint aber zur Not auch zu gehen)
Es gibt 2 Wege um die Software Aufzuspielen allerdings muß diese aktuell noch Manuell um deine Persönlichen Einstellungen in einer Json Datei ergänzt werden. Ein Webinterface gibt es dort noch nicht.
Die erste Möglichkeit wäre “Atom” mit dem Pymakr Plugin, welches aber hier im Forum aus gewissen gründen nicht genutzt wird.

Die andere Möglichkeit ist etwas Aufwändiger einzurichten, zumindest wenn man wie ich nur ein Win 7 bzw. Win10 System hat. Unter Linux geht das sicher einiges einfacher.
Dabei hänge ich gerade noch etwas. Verbunden mit dem Board habe ich aber bereits. muß jetzt schauen wie ich in dieser Umgebung die settings.json editieren kann.
mache jetzt aber erstmal eine Schaffenspause. Edit: (gefunden nano gibt es da z.B. auch und ich dachte, ich müsste jeden kleinen pups nachinstallieren)


Wenn es bei mir klappt werde ich mal den Weg bis dahin in Reinform als Wiki Posten. Da fehlt in der Doku (zumindest für Win10) doch so einiges. Mitgeschrieben habe ich auf jeden Fall.

Ich will versuchen den Jungs und Mädels den Rücken an der Micropython-Front Frei zu halten, damit sie dort mehr Zeit investieren können und sie nicht durch unsere Problemchen aufgehalten werden. ;-)

Gruß Micha

Hallo Michael,

schön dass Du schon reinschaust. Wenn make list-boards schonmal klappt, solltest Du weiterkommen per

make setup
make install

Dann die settings.example.py zur settings.py kopieren und anpassen (educated guessing oder einfach hier nachfragen). Danach dann

make sketch-and-run

Have fun!

Viele Grüße,
Andreas.

Ja, läuft soweit. Allerdings nicht gerade stabil. Er bleibt ab und an während der Übertragung einfach hängen.
Hab aber hier im Forum schon gelesen, das das an Win10 liegt und @clemens auch Probleme damit hat/hatte.

Übertragung dann ins Testdrive oder?
Habe im Code und den Settings nichts über Username und Passwort in Verbindung mit der imkerID gefunden.
Da ihr anscheinend auch keine Standard Bibliothek verwendet, wüsste ich jetzt auf die schnelle nicht, wie ich das implementiert bekomme.

Hast Du noch einen Wunsch wie wir sie benennen sollen, damit ihr sie auch leichter identifizieren könnt?

Gruß Michael

Exzellent.

Du meinst bei der Übertragung des Codes auf das Gerät oder bei der Telemetriedatenübermittlung (WiFi/MQTT)?

Ja, damit kannst Du wunderbar erstmal loslegen. Wir schicken Dir aber natürlich gerne entsprechende credentials, damit Du Deinen eigenen Übertragungskanal bekommst, in den Du beliebig viele Geräte einhängen kannst.

Bei der Übertragungsvariante “JSON over MQTT”

# JSON over MQTT: Kotori/MqttKit
{
    # Enable/disable this telemetry target.
    'enabled': True,

    # Define telemetry endpoint and address information.
    'endpoint': 'mqtt://swarm.hiveeyes.org',
    'topology': 'mqttkit',
    'address': {
        "realm": "hiveeyes",
        "network": "testdrive",
        "gateway": "area-42",
        "node": "node-01",
    },
}

kann man gateway und node jederzeit selbständig beliebig benennen und so beliebige Szenarien realisieren. gateway entspricht hier dem Standort und node dem Bienenstock. network=testdrive wird dann zu Deiner eigenen Imker-ID.

Detailinformationen zum Thema Adressierung bei der Datenakquise findest Du unter Meßdaten an die Hiveeyes Plattform übermitteln.

Viele Grüße,
Andreas.


P.S.: Ausblick…

# JSON over HTTP: Basic
{
    # Enable/disable this telemetry target.
    'enabled': False,

    # Define telemetry endpoint and address information.
    'endpoint': 'https://bee-observer.org/api/sensors',
    'topology': 'beep-bob',
    'data': {
        'key': '## BEEP_SENSOR_KEY ##',
    },
}
1 Like

OK schlecht ausgedrückt. Bei ‘make install’, also der Übertragung zum Gerät. Trotz Firmware 1.20.0 rc11 hab ich da 3 Anläufe gebraucht.

Hab ich schon! Allerdings mit Username und Passwort für die MQTT Übertragung.

Bei dem Wunsch über die Benennung, war die Frage von mir nicht wie, sondern ob ich “node” oder “gateway” einen besonderen Namen oder Kürzel geben soll.
Falls ihr sie finden wollt,
um zu schauen, ob die Daten auch keine groben ausweicher/aussetzer haben. Ich kann sie natürlich auch in Grafana in einen extra Ordner kopieren und nach Softwarestand und Einstellungen umbenennen.

Plane derzeit 3 in Testbetrieb zu nehmen. Einen im Stock und 2 Regengeschützt mit Gewichten einer davon mit deep Sleep.

Gruß Michael

Preview

… für die alternative Firmware.

image

   27.2490 [terkin.telemetry         ] INFO   : Sending HTTP request to https://bee-observer.org/api/sensors
   27.2600 [terkin.telemetry         ] DEBUG  : Payload:     
{
  "t": 27.59,
  "h": 35.74,
  "p": 1008.39,
  "weight": 86786.33,
  "t_i_1": 24.9375,
  "t_i_2": 25.125,
  "t_i_5": 43.21738,
  "key": "## redacted ##"
}

Pre-release notes

# Map sensor field names to telemetry field names.
# Right now, please adapt this according to your sensor configuration by
# looking at the console output of the line 
# `[terkin.datalogger] INFO: Sensor data`. Thanks!
#
# Remark:
# This will be replaced by runtime configuration through
# HTTP API and captive portal.
sensor_telemetry_map = {
    "_version": "1.0.0",
    "temperature.0x77.i2c:0": "t",
    "humidity.0x77.i2c:0": "h",
    "pressure.0x77.i2c:0": "p",
    "weight": "weight",
    "temperature.28ff641d8fdf18c1.onewire:0": "t_i_1",
    "temperature.28ff641d8fc3944f.onewire:0": "t_i_2",
    "system.temperature": "t_i_5",
}

Links: Sensornamen (autodiscovery). Rechts: BEEP-BOB Telemetriefeldnamen.

1 Like

Traumhaft @Andreas.
schaut ja schon sehr vielversprechend aus, das wir das auch bald testen können.
Ist den dann auch eine Duale Datenübertragung zu Beep und swarm.hiveeyes möglich?
Die manuelle Konfiguration stört mich aktuell nicht, mal muß ja teoretisch nur einmal gemacht werden und man sieht wenigstens, was da für arbeit hinter steckt.

Die Wlan Verbindung hat bei mir im Gegensatz zur anderen Firmware übrigens gleich auf Anhieb funktioniert.
Muß nur noch die Sensoren richtig einstellen.
hiveeyes-testdrive-mko-micropython-firmware-wipy-mqtt-json
Werde aber erstmal eine Anleitung zum aufspielen für Win10 schreiben, bevor ich wieder alles vergesse.

1 Like
git pull
make setup
make install

Senden

   17.4109 [terkin.device            ] INFO   : Starting telemetry
   17.4324 [terkin.telemetry         ] INFO   : Telemetry channel topology: MqttKitTopology
   17.4487 [terkin.telemetry         ] INFO   : Telemetry channel URI: mqtt://swarm.hiveeyes.org/hiveeyes/testdrive/area-38/fipy-workbench-01
   17.4594 [terkin.telemetry         ] INFO   : Starting Terkin TelemetryClient
   17.4848 [terkin.telemetry         ] INFO   : Telemetry channel topology: MqttKitTopology
   17.5024 [terkin.telemetry         ] INFO   : Telemetry channel URI: mqtt://weather.hiveeyes.org/workbench/testdrive/area-38/fipy-workbench-01
   17.5134 [terkin.telemetry         ] INFO   : Starting Terkin TelemetryClient
   17.5339 [terkin.telemetry         ] INFO   : Telemetry channel topology: BeepBobTopology
   17.5476 [terkin.telemetry         ] INFO   : Telemetry channel URI: https://bee-observer.org/api/sensors

Wiegen

Dieser kleine Fauxpas wurde nun auch behoben. scale und offset werden nun zwar honoriert, wir arbeiten jedoch noch an der Kalibriermöglichkeit. (ZeroDivisionError: division by zero). Sekunde noch.

2 Likes

Wahnsinn!!!, ich kann gar nicht so schnell testen, wie Ihr Entwickelt. Ihr macht echt einen großartigen Job.

Edit:
jetzt hab ich mal das neue Git gezogen echt beeindruckend für den Kurzen Zeitraum.
image

1 Like

Ein wenig hemdsärmlig, geht jetzt aber:

  1. Starten, z.B. per make sketch-and-run.
  2. In der Log-Ausgabe aus INFO: Sensor data den Wert für scale.0.raw notieren. Dieser entspricht dem offset.
  3. Adjust scale for the Micropython firmware folgen und daraus Werte für offset und scale gewinnen.
  4. Werte für offset und scale in der settings.py eintragen.
  5. settings.py aufspielen und neustarten per make sketch-and-run.
3 Likes

Hi @waggi , hab jetzt mal versucht eine Anleitung zu erstellen.

wenn du dir zutraust die Settings.py zu konfigureren. kannst du damit loslegen die Anleitung + Firmware zu testen.
Wenn du Probleme hast sag bescheid, dann versuche ich die Anleitung anzupassen.
Gruß Michael

2 Likes

MicroPython Datalogger 0.3.0
Habe ein kleines Problem festgestellt, da meine Fritzbox anscheinend manchmal nicht schnell genug antwortet habe schafft sie alle 3-4 Neustarts keine Verbindung aufzubauen.
Micropython erkennt zwar den Fehler, aber anscheinend fehlt noch ein Flag der sie nach einer weile nochmal versuchen lässt die Verbindung aufzubauen.
image.
das Programm läuft dann normal durch, und gibt dann bei jeder Übertragung eine Fehlermeldung aus das die Übertragung nicht geklappt hat.
image

Wenn einmal verbunden wurde läuft es aber offensichtlich perfekt. Wenn die Verbindung einmal abreißt, pausiert das Programm, bis wieder eine Verbindung hergestellt wurde.
und macht dann normal weiter.

Fazit: Nach einem Stromausfall oder Neustart kann sein das man nochmal Resetten muß.

1 Like

Die aktuelle firmware sendet gerade zu beep, aber nicht an hiveeyes, daher vermute ich kein WLAN-Problem, sondern was in der config oder beim Zugang zu hiveeyes

   26.8236 [terkin.telemetry         ] INFO   : Sending HTTP request to https://bee-observer.org/api/sensors
   26.8338 [terkin.telemetry         ] DEBUG  : Payload:     {"p": 1011.05, "h": 39.49, "t_i_4": 26.6875, "weight": 0.121, "key": "BwExxxxxxxxxxxxx", "t": 28.11, "t_i_2": 26.5, "t_i_3": 26.625, "t_i_1": 26.75, "t_i_5": 35.56522}
   29.6488 [terkin.datalogger        ] WARNING: Telemetry status: FAILURE. 1 out of 2 targets failed. Status: {'https://bee-observer.org/api/sensors': True, 'mqtt://swarm.hiveeyes.org': False}

26.7088 [terkin.telemetry ] ERROR : MQTT publishing failed

“interval” wird in der firmware gerade glaube ich nicht korrekt umgesetzt, mit

'interval': 60.0,
'deepsleep': True,

config-Fehler von mir? Es sind nur gefühlte 5 Sekunden, die der WiPy bei mir schläft.

Nein in der settings.beispiel-bob.py fehlt noch eine zeile.
image
dann klappt es

2 Likes

Danke @MKO! Das war es!

   25.4462 [terkin.telemetry         ] INFO   : Connecting to MQTT broker at swarm.hiveeyes.org
   25.5976 [terkin.telemetry         ] INFO   : Connecting to MQTT broker at ('46.4.251.66', 1883) succeeded 

I filed a bug report (nächstes mal wirds gleich ein pull request) add topology mqttkit to all settings.example files · Issue #7 · hiveeyes/hiveeyes-micropython-firmware · GitHub

@MKO funktioniert bei dir deep sleep in Verbindung mit einem geänderten intervall in der settings.py?

Noch was komisches, im debug kommt jetzt

'weight.0': -0.003, 

was richtig ist, auf hiveeyes landet aber mit

https://swarm.hiveeyes.org/api/hiveeyes/testdrive/area-005/fipy-cg-01/data.txt?from=now-10m&to=now&include=weight

nichts

2019-06-15T10:24:30.279309Z,
2019-06-15T10:25:01.648215Z,
2019-06-15T10:25:32.965187Z,
2019-06-15T10:26:04.339107Z,

Export-Problem, weil neue Variablen dazu gekommen sind?

Auch bei BOB / Beep scheint nichts anzukommen vom Gewicht

Erledigt, mapping ist jetzt anders statt weight ist es jetzt weight.0

Hab Deep Sleep noch gar nicht getestet. Hab ich aber heute Abend vor.

Hier nochmal mein Setup für die Programmierung und Überwachung im zusammengebauten Zustand. Die 4 Leitungen habe ich einfach unten an die Pin gelötet und mit Heißkleber fixiert.