Daten per HTTP und PHP ans Backend auf swarm.hiveeyes.org übertragen


#1

Ich richte gerade meine Datentelemetrie ein und könnte einfach zwei Übertragungsvorgänge nebeneinander laufen lassen, einen auf meine alte private Plattform und einen auf die gemeinsame.
Für letzteres wäre es schön, wenn Du mich auf die Stellen in der Dokumentation hinweisen könntest, wo ich mir die Einzelheiten zum “wie” zusammensuchen kann:

  • Wie muss ich den GET-befehl (oder was auch immer) zusammensetzen?
  • An welche Adresse muss ich den HTTP request absetzen?
  • Welche credentials muss ich benutzen?

Ich brauche auch keine komplette Erklärung, sondern nur eine grobe Richtung.

Vielen Dank schon mal!


Welcome, Mois!
Zuwachs aus Potsdam, DE
Daten per MQTT ans Backend auf swarm.hiveeyes.org übertragen
Welcome, Clemens!
Ausfall der Datenannahme am 1. Juli 2018 um 06:45 Uhr
#2

Hi Markus!

Wir hatten dazu Mitte 2016 schon einmal etwas für @clemens vorbereitet:

Wie versprochen ist unsere HTTP API nun scharf geschaltet, man kann also ab sofort Daten auch per HTTP anliefern. Die zu verwendende Methode ist POST, akzeptiert werden die Formate application/json sowie application/x-www-form-urlencoded und die Basis URL lautet https://swarm.hiveeyes.org/api.

Weitere Details zur HTTP Schnittstelle finden sich in der Dokumentation unter Data acquisition via HTTP. Damit die Anbindung über PHP einfacher und weniger fehleranfällig ist, findest Du unter Data acquisition with PHP entsprechende Bibliotheken und Beispielcode. Da @clemens mir erzählt hatte, dass er leider noch auf PHP4 festgenagelt ist, findest Du dort auch entsprechende Clients zur Datenanlieferung für PHP4. Sag jederzeit Bescheid, falls dabei irgendwas klemmen sollte. Ansonsten viel Spaß beim Daten durchleiten! :-)

Informationen zur Adressierung (welche Informationen müssen in die URL?) findest Du unter Data acquisition » Addressing. Du musst Dir also frei wählbare, anonyme Identifizierer für network, gateway und node ausdenken. network sollte im UUID Format sein, über den Online UUID Generator kannst Du Dir eine entsprechende Adresse selbst generieren.

Da wir auf dieses Konzept der anonymen Datenübermittlung setzen und die Plattform derzeit von noch nicht so vielen Leuten benutzt wird, haben wir vorerst auf Authentifizierungsmechanismen weitgehend verzichtet. Sobald man Datenpakete schickt, wird automatisch ein Standard Dashboard im Grafana angelegt, das man dann nach Belieben selber interaktiv modifizieren kann. Nur um dieses Grafana Dashboard bearbeiten zu können, brauchst Du einen Login, den ich Dir gleich per PM mitteile.

Wie oben erwähnt benutzt Du am besten die bereits vorhandene PHP API und siehst Dir den PHP Beispielcode dazu an:

// Put this file into the folder of your PHP program
include("hiveeyes.php");

// Acquire API library
use Hiveeyes\HiveeyesNode;

// Create a "Node API" telemetry client object
$telemetry = new HiveeyesNode(
    array(
        "network"   => "4be26ecf-c53e-4dea-9e1b-4f72a1c8451d",
        "gateway"   => "test-42",
        "node"      => "node-1",
    )
);

// Transmit data
$data = array("temperature" => 42.84, "humidity" => 83, "weight" => 37.4);
$telemetry->transmit($data);

Melde Dich einfach, wenn Du weitere Fragen dazu hast.

Viele Grüße,
Andreas.

P.S.: Siehe auch Daten per MQTT ans Backend auf swarm.hiveeyes.org übertragen.


#3

Es gibt da auch einen CSV-upload, du hast die Daten ja schon so für dygraphs vorbereitet.

Ich muss das für mich auch noch machen - bei mir publizieren und parallel auf swarm.hiveeyes.org - die Infos in der Doku sind da etwas gestreut, wenn’s läuft kann ich ein paar Zeilen howto und code schreiben.


#4

Ja, die Infos zum CSV Upload gibt es unter Data acquisition » HTTP CSV.

Falls es Dir möglich ist, bevorzugen wir allerdings den strukturierten Upload mit benannten Datenfeldern unter Zuhilfenahme der entsprechenden PHP API Bibliotheken hiveeyes.php sowie terkin-http.php. Auf diese Weise haben wir eine definierte Schnittstellengrenze mit entsprechender API Wrapper Bibliothek, die die Sache damit deutlich besser wartbar macht.


#5

jawoll! heute abend bin ich da zu gekommen und das ganze lief ja mehr als intuitiv.
hier fließen jetzt meine daten rein:
https://swarm.hiveeyes.org/grafana/dashboard/db/mois

Nachtrag 17.3.2017: Habe jetzt für alle meine Files ein Repository auf GitHub eingerichtet:

Die PHP Datei, die die Daten empfängt und auf die Hiveeyes Plattform weiterleitet, findet sich hier:

Vielen Dank!


Open Hive GSM and WiFi Firmware: Telemetrie an Hiveeyes Backend anpassen
#6

Hi @mois ,

perfekt! Schön, Dich nun auch mit an Bord zu haben und lieben Dank fürs Teilen Deiner Quelltexte!

Viele Grüße,
Andreas.


#7

kann ich so eigentlich auch daten überschreiben? ausfälle z.b. die ich aber von der lokalen sd-karte ziehen und nachtragen kann?


Ausreißer erkennen und ggf. beheben (Backend)
#8

Hi Markus,

das Überschreiben von Daten ist bisher nicht vorgesehen, sorry!

Viele Grüße,
Andreas.


#9

@Andreas, thema “überschreiben”: ich hake da nochmal nach: streng genommen will ich ja gar nichts überschreiben, sondern fehlende datensätze in einer existierenden datenreihe nachtragen. ginge das denn?
konkret war gestern abend ein ddos bei in-berlin, währenddessen nichts verarbeitet wurde.

ich könnte die daten aber von der lokalen sd ziehen und nachtragen. bei meiner traditionellen dygraphs-kurve hab ich das schon so gemacht.


#10

Hi @mois!

Daten lassen sich in der Tat per Zeitstempel nachtragen, hier findet sich ein einfaches Beispiel:
https://getkotori.org/docs/handbook/acquisition/protocol/http.html#readings-with-timestamp

Auch per CSV Format lassen sich Daten mit Zeitstempel nachtragen:
https://getkotori.org/docs/handbook/acquisition/protocol/http.html#csv-format

Ich bin gerade auf Achse, deshalb kann ich derzeit nicht ausführlicheren hands-on Support leisten. Sag Bescheid, wenn Du weitere Fragen hast.

Viele Grüße,
Andreas.


#11

ok, klingt bewältigbar. die hauptkunst wird wohl darin bestehen, den field name announcement header korrekt zusammen zu basteln, damit die daten an der richtigen stelle landen. ich probiers demnächst und meld mich dann zurück.
vielen dank @Andreas