Welcome to EnviroDIY, a community for do-it-yourself environmental science and monitoring. EnviroDIY is part of WikiWatershed, an initiative of Stroud Water Research Center designed to help people advance knowledge and stewardship of fresh water.
New to EnviroDIY? Start here

enviroDIY server not responding to POST

Home Forums Monitor My Watershed enviroDIY server not responding to POST

Viewing 5 reply threads
  • Author
    Posts
    • #3214
      Patrick Lorch
      Participant

        I am new to IOT and REST APIs.

        I have been trying for several days to debug a problem with one of the examples from here:

        https://github.com/EnviroDIY/EnviroDIY_Mayfly_Logger

        In the Logging_to_data.EnviroDIY example, I cannot get the server to respond or take my POST.
        I believe the xBee is set up correctly and connecting to the local wireless node. I am able to see the MAC address on Airport Utility, for example.

        Here is an example of my post request and the response from Serial.io (with my tokens replaced with placeholders).

        — Request —
        POST /api/data-stream/ HTTP/1.1
        Host: data.envirodiy.org
        TOKEN: –My token here–
        Cache-Control: no-cache
        Content-Length: 195
        Content-Type: application/json

        {“sampling_feature”: “–my sampling feature UUID here–“, “timestamp”: “2018-02-11T17:
        35:35-05:00”, “–my feature UUID here–“: 24.25, “–my feature UUID here–“: 1.47}

        Request to data.envirodiy.org timed out, no response from server or insufficient signal t
        o send message.


        — Request —

        I am wondering if the server API has changed recently.

        Any suggestions for ways to debug this problem would be appreciated.

        I have tried submitting the post directly to http://data.envirodiy.org/api/data-stream/

        with this response:

        HTTP 400 Bad Request
        Allow: POST, OPTIONS
        Content-Type: application/json
        Vary: Accept

        {
        “detail”: “JSON parse error – No JSON object could be decoded”
        }

      • #3707
        Sara Damiano
        Moderator

          I haven’t tried running that particular example in a long time, but I don’t think the POST request format has changed since it was first developed. The server definitely *is* accepting data right now; my online loggers have up-to-date data. I’ll go back to that example and see what happens for me.

        • #3720
          Patrick Lorch
          Participant

            Thanks for your help. I could see that some loggers are posting, but since many are not, it is hard to tell if something has changed. I also know you have been working on the modular sensor code and wondered if that worked differently. I tried to get that working, but had trouble, and thought I should get the simple example working first.

          • #3769
            Sara Damiano
            Moderator

              Ok, I hate to admit this, but I’m baffled as to why that example is failing. It really should be working. You do need to change the server IP address (DL) on your XBee to 129.123.41.212 because the server’s IP address has changed. Other than that, everything looks great to me… but the server isn’t responding to the request.

              So, in the meantime, don’t use that example to try to send data to the EnviroDIY portal. Instead, use the EnviroDIY logger library in the ModularSensors library. There are a lot of sensors that the library already supports and we’d love your contributions if you want to add more.

              To use ModularSensors, you’ll need a whole bunch of other libraries installed. You can get them all here: https://github.com/EnviroDIY/Libraries.

              The coding structure has changed enough that you cannot just paste the “code snippet” for your site into the example, but it sounds like you’ve already figured out how to get the GUID’s you need, so you shouldn’t have trouble placing them where they need to go.

              Please let me know if that doesn’t work for you! If you want to try making the post requests by hand, I’d recommend the ‘Postman’ app for google chrome. Make sure you add in the request body; it looks like that’s why your other test to the server failed.

            • #3770
              Patrick Lorch
              Participant

                Thanks Sara. I am betting that just changing the IP address will fix the problem. I was not aware it had changed. I will change that in the README.md and submit a pull request.

                After I discovered the modular library, I had intended to use that for real deployments, but wanted a simple working example to show folks at work first. I will gladly contribute when I can.

                Knowing how to make the post request by hand will be handy for debugging.

                Thanks again for you help.

              • #3939
                Patrick Lorch
                Participant

                  Fixing the IP address did the trick. Thanks. I forked to ix in README, but saw you had already done it.

              Viewing 5 reply threads
              • You must be logged in to reply to this topic.