Gibt es eine maximale Anzahl von Sensoren auf OSeM?

Ich habe mit Bockly ein Programm geschrieben, das 9 Sensor-Werte auf die OSeM schreibt. Das funktioniert auch weitgehend. Leider kommen nur 6-7 Werte auf der Map an. Die 2-3 Werte, die zuletzt hochgeladen werden fehlen regelmäßig in der OSeM. Am Code bzw. den Parametern in Blockly scheint es nicht zu liegen, da ein Vertauschen der Reihenfolge der Werte nur das Problem auf die erneut letzten Werte verschiebt.

Was könnte die Ursache sein?

Hallo @Pitti,

eine maximale Anzahl von Sensoren git es nicht auf der openSenseMap.

Aber es gibt eine Erklärung für deine Beobachtung:
Die openSenseMap API hat ein ratelimit. Das ratelimit ist dazu da, den Traffic zu begrenzen.

Das bedeutet folgendes: du darfst von deiner IP Adresse in einer bestimmten Zeit nur eine bestimmte Anzahl an Requests an die API der openSenseMap schicken.

Der Block zum Hochladen von Messungen in Blockly, schickt jedoch jede Messung einzelnd und nicht als ein Gesamtpaket (1x Request mit mehreren Messungen). Aus diesem Grund kommen nur 6-7 Messungen von deiner Station an.

Grüße,
Matthias

Ok, danke! Was mache ich nun? Den Block seltener schicken?

Das ist eine Möglichkeit.

Oder wir fragen mal @mario, ob man den Request in Blockly noch anders zusammenbauen kann?

Ich habe das Problem für mich vorerst gelöst, indem ich den einen Block mit 10 Werten in zwei mit 5 Werten aufgeteilt habe und diese dann abwechselnd jede Minute abschicke.

Hallo @Pitti,

ich habe mir das ganze schonmal angeschaut und ein Issue https://github.com/sensebox/ardublockly-1/issues/139 erstellt.

Ich werde versuchen den Request zu ändern, dass alle Messwerte in einem Request gesendet werden und nicht pro Messwert einer.

Viele Grüße
Mario

1 Like

Hallo @mario, darf ich mal vorsichtig nachfragen, wann es damit weitergeht? :grinning:

Hi @Pitti

du hättest auch unvorsichtig schon früher fragen können :slight_smile: . Ich habe nämlich nur ein paar Sachen ausprobiert aber es noch nicht weiter verfolgt, sorry. Ich setzte es mir nochmal auf die ToDo Liste.

Viele Grüße

Mario

Jetzt frage ich halt mal unvorsichtig nach!:grinning: Wie ist der Stand?
Grüße
Pitti

Hi @Pitti,

ich bin dran und fast fertig. Es gibt noch ein paar Kleinigkeiten, die behoben werden müssen. Die Messwerte werden nun gesammelt innerhalb eines Requestes gesendet. So kann man dann zumindest alle 10s ein Paket mit Messwerten senden.

Das ganze hat sich noch ein wenig gezogen, weil wir zusätzlich eine zweite Instanz der openSenseMap für Workshops und Testzwecken veröffentlichen wollen, die komplett ohne Ratelimit funktioniert, allerdings nicht für das permanente Speichern der Daten gedacht ist. Die Datenbank wird sich dann wahrscheinlich alle 24h zurücksetzen.

Beste Grüße
Mario

Hi @Pitti,

schau mal hier ist nun eine Beta Version mit den neuen Blöcken online! Vielleicht hast du Lust zu testen und uns eine Rückmeldung zu geben ob alles funktioniert.

Beste Grüße
Mario

Hallo @mario

klasse!

Ja, ich mache gern den Beta-Tester. Ich bin aber gerade unterwegs und erst am WE wieder am Sensor - bis dahin muss es leider warten.

Grüße
Pitti

@mario
So, nach den ersten Tests::

  1. die Übertragung in einem Request scheint zu funktionieren.
  2. der Block GPS-Module führt mit den Values time, date und speed zu einem Error: “… was not declared in this scope”. Die anderen Values liefern keinen Error.

@mario
Hallo Mario,

  1. grundsätzlich funktioniert die Übertragung in einem Request in meinem Beta-Test. Allerdings bricht die WiFi-Verbindung jetzt nach wenigen Stunden oder sogar wenigen Minuten ab und baut sich leider dann nicht mehr auf. Nach Neustart der Sensebox beginnt das Spiel von vorne. Ich hatte das früher auch schon aber eher nach mehreren Tagen, jetzt kommt der Abbruch viel schneller.
  2. Das merkwürdige “not declared”-Problem mit dem GPS-Modul scheint (?) etwas mit Groß-/Klein-Schreibung zu tun zu haben. Ich habe dieses Problem allerdings nun auch mit meinen älteren Blockly-Sketches, die schon mal funktionierten. Merkwürdig.

Danke @Pitti,

wir schauen uns das ganze nochmal an und probieren in einem Testlauf den Fehler herauszufinden.

zu 2. Ich bin nicht auf der Höhe der Zeit, was das Programmieren angeht, aber wenn ich mir den Screenshot anschaue, dann ahne ich, warum es mit speed, date und time Probleme gibt. Die werden doch im im Source Code garnicht richtig umgesetzt, oder? Fehlt da nicht ein „item = gps.getSpeed()“ oder so?

Hi @Pitti,

schau mal auf https://blockly.sensebox.de da sollte alles gefixed sein :slight_smile:

Am Problem der openSenseMap sind wir dran. Ich habe seit gestern eine Box hier am laufen, die an workshop.opensensemap.org sendet und dort ist alles okay. Wir vermuten, dass es an der API der “normalen” openSenseMap liegt.

Nachdem ich regelmäßig Probleme mit dem in Blockly geschriebenen Code hatte (vor allem häufige Abbrüche der WiFi-Verbindung), habe ich nun mal die Sensebox nur über die Arduino-App programmiert und zwar unter Verwendung von senseBoxIO.h statt der SenseBoxMCU.h.

Seit dem läuft die SenseBox problemlos durch (zumindest gibt es bislang keine Probleme mehr mit der WiFi-Verbindnung).:grinning:

In dem Sketch für die senseBox:home ist eine automatische Überprüfung ob eine Verbindung hergestellt werden kann. Falls der Test fehlschlägt wird das System neugestartet und auch die Wlan Verbindung wird neu aufgebaut. Ich werde mal versuchen den Test auch in den Blockly Code zu integrieren.