Abfrage HTTP POST

Ich bekomme Messwerte via HTPP POST. https://data.sensor.community/airrohr/v1/sensor/71364/
Wie kann ich diese Daten in Symcon implementieren?

Vielen Dank für Tipps

Hi,
gehe ich recht in der Annahme das es sich um einen Feinstaub-Sensor handelt? Dafür gibt es ein Modul Luftdaten.

Ralf

Nein, es handelt sich um einen Geigerzähler. Ich kann die Daten direkt vom Gerät abfragen und bekomme diese in dem beigefügten Format

Kannst eine JSON Decoder Instanz anlegen und im Gateway direkt die URL hinterlegen.

Hi,
da bietet sich ein web-Hook an. Du müsstest den Post an :/hook/<Name den Du möchtest> schicken und dann im webhook für diesen Namen auf ein Script zeigen lassen. Im Script kommst Du an die Daten u.B. so:

$kommando = $_POST['cmd'];

ich verschicke im Post sowas wie cmd=garage-auf und habe dann in $kommando garage-auf stehen. In deinem Fall werden es vermutlich json encoded werte sein die Du dann noch dekodieren müstest. Wenn Du in dem Script mal ein var_dump($_POST); machst sollten die kompletten Informationen auch im Log von Symcon landen damit Du weißt was ankommt.

Ralf

Vielen Dank, nun wird mir alles angezeigt, aber wie kann nur den TimeStamp und einen Wert speichern und auch speichern damit ich mir einen Graphen anzeigen lassen kann.

Hi,
zeig mal ein var_dump vom dem was Du bekommst. Wenn Du schon json_decode benutzt hänge mal ein , true ran dann erhälst Du gleich ein array und Du kannst einzelne Elemente so abspeichern wie Du willst.

Ralf

Dann per script, sowas in der Art. der JSON Decoder haut immer alles raus…

<?php

//Start writing your code here
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.sensor.community/airrohr/v1/sensor/71364/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
//var_dump($data);
$JSON = json_decode($data,true);
print_r($JSON[0]['sensordatavalues'][1]['value'].chr(10));
print_r($JSON[0]['timestamp'].chr(10));
var_dump($JSON);

Vielen Dank, jetzt bekomme ich

396
2023-05-31 14:58:40
array(2) {
  [0]=>
  array(6) {
    ["sensordatavalues"]=>
    array(4) {
      [0]=>
      array(3) {
        ["id"]=>
        float(35207111333)
        ["value_type"]=>
        string(17) "counts_per_minute"
        ["value"]=>
        string(2) "67"
      }
      [1]=>
      array(3) {
        ["id"]=>
        float(35207111335)
        ["value_type"]=>
        string(9) "hv_pulses"
        ["value"]=>
        string(3) "396"
      }
      [2]=>
      array(3) {
        ["id"]=>
        float(35207111337)
        ["value_type"]=>
        string(6) "counts"
        ["value"]=>
        string(3) "170"
      }
      [3]=>
      array(3) {
        ["id"]=>
        float(35207111338)
        ["value_type"]=>
        string(14) "sample_time_ms"
        ["value"]=>
        string(6) "150827"
      }
    }
    ["timestamp"]=>
    string(19) "2023-05-31 14:58:40"
    ["sampling_rate"]=>
    NULL
    ["id"]=>
    float(15640162017)
    ["sensor"]=>
    array(3) {
      ["sensor_type"]=>
      array(3) {
        ["id"]=>
        int(35)
        ["manufacturer"]=>
        string(10) "EcoCurious"
        ["name"]=>
        string(16) "Radiation SBM-19"
      }
      ["id"]=>
      int(71364)
      ["pin"]=>
      string(2) "19"
    }
    ["location"]=>
    array(7) {
      ["indoor"]=>
      int(0)
      ["exact_location"]=>
      int(0)
      ["id"]=>
      int(59173)
      ["country"]=>
      string(2) "NL"
      ["altitude"]=>
      string(3) "3.5"
      ["latitude"]=>
      string(4) "52.1"
      ["longitude"]=>
      string(5) "5.116"
    }
  }
  [1]=>
  array(6) {
    ["sensordatavalues"]=>
    array(4) {
      [0]=>
      array(3) {
        ["id"]=>
        float(35207051455)
        ["value_type"]=>
        string(17) "counts_per_minute"
        ["value"]=>
        string(2) "57"
      }
      [1]=>
      array(3) {
        ["id"]=>
        float(35207051456)
        ["value_type"]=>
        string(9) "hv_pulses"
        ["value"]=>
        string(3) "399"
      }
      [2]=>
      array(3) {
        ["id"]=>
        float(35207051457)
        ["value_type"]=>
        string(6) "counts"
        ["value"]=>
        string(3) "144"
      }
      [3]=>
      array(3) {
        ["id"]=>
        float(35207051458)
        ["value_type"]=>
        string(14) "sample_time_ms"
        ["value"]=>
        string(6) "151271"
      }
    }
    ["timestamp"]=>
    string(19) "2023-05-31 14:56:09"
    ["sampling_rate"]=>
    NULL
    ["id"]=>
    float(15640136598)
    ["sensor"]=>
    array(3) {
      ["sensor_type"]=>
      array(3) {
        ["id"]=>
        int(35)
        ["manufacturer"]=>
        string(10) "EcoCurious"
        ["name"]=>
        string(16) "Radiation SBM-19"
      }
      ["id"]=>
      int(71364)
      ["pin"]=>
      string(2) "19"
    }
    ["location"]=>
    array(7) {
      ["indoor"]=>
      int(0)
      ["exact_location"]=>
      int(0)
      ["id"]=>
      int(59173)
      ["country"]=>
      string(2) "NL"
      ["altitude"]=>
      string(3) "3.5"
      ["latitude"]=>
      string(4) "52.1"
      ["longitude"]=>
      string(5) "5.116"
    }
  }
}

bzw als HTLM:

396 2023-05-31 14:58:40 array(2) { [0]=> array(6) { [„sensordatavalues“]=> array(4) { [0]=> array(3) { [„id“]=> float(35207111333) [„value_type“]=> string(17) „counts_per_minute“ [„value“]=> string(2) „67“ } [1]=> array(3) { [„id“]=> float(35207111335) [„value_type“]=> string(9) „hv_pulses“ [„value“]=> string(3) „396“ } [2]=> array(3) { [„id“]=> float(35207111337) [„value_type“]=> string(6) „counts“ [„value“]=> string(3) „170“ } [3]=> array(3) { [„id“]=> float(35207111338) [„value_type“]=> string(14) „sample_time_ms“ [„value“]=> string(6) „150827“ } } [„timestamp“]=> string(19) „2023-05-31 14:58:40“ [„sampling_rate“]=> NULL [„id“]=> float(15640162017) [„sensor“]=> array(3) { [„sensor_type“]=> array(3) { [„id“]=> int(35) [„manufacturer“]=> string(10) „EcoCurious“ [„name“]=> string(16) „Radiation SBM-19“ } [„id“]=> int(71364) [„pin“]=> string(2) „19“ } [„location“]=> array(7) { [„indoor“]=> int(0) [„exact_location“]=> int(0) [„id“]=> int(59173) [„country“]=> string(2) „NL“ [„altitude“]=> string(3) „3.5“ [„latitude“]=> string(4) „52.1“ [„longitude“]=> string(5) „5.116“ } } [1]=> array(6) { [„sensordatavalues“]=> array(4) { [0]=> array(3) { [„id“]=> float(35207051455) [„value_type“]=> string(17) „counts_per_minute“ [„value“]=> string(2) „57“ } [1]=> array(3) { [„id“]=> float(35207051456) [„value_type“]=> string(9) „hv_pulses“ [„value“]=> string(3) „399“ } [2]=> array(3) { [„id“]=> float(35207051457) [„value_type“]=> string(6) „counts“ [„value“]=> string(3) „144“ } [3]=> array(3) { [„id“]=> float(35207051458) [„value_type“]=> string(14) „sample_time_ms“ [„value“]=> string(6) „151271“ } } [„timestamp“]=> string(19) „2023-05-31 14:56:09“ [„sampling_rate“]=> NULL [„id“]=> float(15640136598) [„sensor“]=> array(3) { [„sensor_type“]=> array(3) { [„id“]=> int(35) [„manufacturer“]=> string(10) „EcoCurious“ [„name“]=> string(16) „Radiation SBM-19“ } [„id“]=> int(71364) [„pin“]=> string(2) „19“ } [„location“]=> array(7) { [„indoor“]=> int(0) [„exact_location“]=> int(0) [„id“]=> int(59173) [„country“]=> string(2) „NL“ [„altitude“]=> string(3) „3.5“ [„latitude“]=> string(4) „52.1“ [„longitude“]=> string(5) „5.116“ } } }

wieder alles retour.

Vielen Dank für die Hilfe

Ich habe mir jetzt einen anderen Sensor zugelegt. Dieser liefert Werte an eine Homepage und ich kann diese mit: https://www.gmcmap.com/historyData-plain.asp?Param_ID=18271924101&n=1 abfragen.
Es wird immer der letzte aktuelle Werte angezeigt.
Zwei Probleme habe ich:
Der Zeitstempel stimmt und 10 Stunden nicht
Wie bekomme ich den WErte uSv in eine Variable zum anzeigen?

Vielen Dank für Tipps

Ein Beitrag wurde in ein neues Thema verschoben: Wie http Post zum lesen und Put zum schreiben nutzen?

Hi,
so hast Du die Daten in einem Array und kannst dann speichern was Du gerne hättest:

<?php
$ret = get_web_page("https://www.gmcmap.com/historyData-plain.asp?Param_ID=18271924101&n=1");
$array = json_decode($ret, true);
var_dump($array);

function get_web_page($url) {
    $options = array (CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_ENCODING => "", // handle compressed
    CURLOPT_USERAGENT => "test", // who am i
    CURLOPT_AUTOREFERER => true, // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
    CURLOPT_TIMEOUT => 120, // timeout on response
    CURLOPT_MAXREDIRS => 10 ); // stop after 10 redirects

      $ch = curl_init ( $url );
      curl_setopt_array ( $ch, $options );
      $content = curl_exec ( $ch );
      $err = curl_errno ( $ch );
      $errmsg = curl_error ( $ch );
      $header = curl_getinfo ( $ch );
      $httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );

      curl_close ( $ch );

      $header ['errno'] = $err;
      $header ['errmsg'] = $errmsg;
      $header ['content'] = $content;
      return $header ['content'];
}
?>

Ralf