Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

json error in get #9

Open
jerryneedell opened this issue Feb 20, 2019 · 32 comments
Open

json error in get #9

jerryneedell opened this issue Feb 20, 2019 · 32 comments
Labels
bug Something isn't working

Comments

@jerryneedell
Copy link
Contributor

I was trying to test @brentru adafruit_io library and started getting jason errors when trying to use his "get_all_feeds" function -- I then tried the same "get" just using esp32spi (via wifimanager) and get the same error so there seems to be an underlying issue in esp32spi

here is the test case

import time
import board
import busio
from digitalio import DigitalInOut

from adafruit_esp32spi import adafruit_esp32spi
from adafruit_esp32spi import adafruit_esp32spi_wifimanager

print("ESP32 SPI webclient test")

# Get wifi details and more from a settings.py file
try:
    from esp32spi_settings import settings
except ImportError:
    print("WiFi settings are kept in esp32spi_settings.py, please add them there!")
    raise

esp32_cs = DigitalInOut(board.D9)
esp32_ready = DigitalInOut(board.D10)
esp32_reset = DigitalInOut(board.D5)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, settings, board.NEOPIXEL)
esp._debug=True
while True:
    try:
        print("Get data...", end='')
        response = wifi.get(
            "https://io.adafruit.com/api/v2/"+settings['aio_username']+"/feeds",
            headers={bytes("X-AIO-KEY","utf-8"):bytes(settings['aio_key'],"utf-8")})
        print(response.json())
        response.close()
        print("OK")
    except (ValueError, RuntimeError) as e:
        print("Failed to get data, retrying\n", e)
        wifi.reset()
        continue
    response = None
    time.sleep(15)


here is the log -- with some repeated lines removed



Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-beta.2-97-g0dc260058 on 2019-02-19; Adafruit Feather nRF52840 Express with nRF52840
>>> 
>>> import aio_get_esp32spi
ESP32 SPI webclient test
Get data...Connection status
Conn status: 0
Connection status
Conn status: 0
Connect to AP b'REDACTED' b'REDACTED'
Connection status
Conn status: 1

repeated lines removed

Connection status
Conn status: 1
Connection status
Conn status: 3
Connection status
Conn status: 3
*** Get host by name
*** Get socket
Allocated socket #0
*** Socket connect mode 2
*** Open socket
Writing: b'GET /api/v2/REDACTED/feeds HTTP/1.0\r\n'
Writing: b'Host: io.adafruit.com\r\n'
Writing: b'User-Agent: Adafruit CircuitPython\r\n'
Writing: b'X-AIO-KEY'
Writing: b': '
Writing: b'REDACTED'
Writing: b'\r\n'
Writing: b'\r\n'
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available

repeated lines removed

ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 8308 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 4308 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 308 bytes available
Reading 308 bytes from ESP socket with status 4
ESPSocket: 0 bytes available
Failed to get data, retrying
 syntax error in JSON
Reset ESP32
@jerryneedell
Copy link
Contributor Author

I realize the response was big - 8308 bytes -- is there a limit?

@jerryneedell
Copy link
Contributor Author

jerryneedell commented Feb 20, 2019

hmm -- I changed "feeds" to "groups" and it works fine.

In this case there seem to be 2 responses one of 8308 byte then one of 5030 bytes
and it is happy parsing the second one

SPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 8308 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 4308 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 308 bytes available
Reading 308 bytes from ESP socket with status 4
ESPSocket: 5030 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 1030 bytes available
Reading 1030 bytes from ESP socket with status 4
ESPSocket: 0 bytes available
[{'updated_at': '2019-01-28T17:51:10.944124Z',  FULL RESPONSE deleted to save space'}]
OK

@makermelissa
Copy link
Collaborator

Good question. I didn’t even realize there was a limit before you found this. I think ideally it should attempt to grab it in chunks and assemble it if that’s possible.

@jerryneedell
Copy link
Contributor Author

i'm not sure there is a limit, but it looked suspicious.

@ladyada
Copy link
Member

ladyada commented Feb 20, 2019

the socket/requests code should do it all for you - in chunks o' 4K - we've downloaded 250KB bitmaps so that works for sure :)

@jerryneedell
Copy link
Contributor Author

so any idea what failed?

@ladyada
Copy link
Member

ladyada commented Feb 20, 2019

sorry no :/ i haven't run this demo yet - perhaps in requests or esp32spi have it dump the socket buffer?

@jerryneedell
Copy link
Contributor Author

OK - no problem -- I misunderstood :-) Will keep looking into it.

@ladyada
Copy link
Member

ladyada commented Feb 20, 2019

np - its a mystery - and maybe i have a bug too...not sure :D also json parser may not be so great ;)

@makermelissa
Copy link
Collaborator

I can take a closer look this evening. I don’t have my computer with me at the moment.

@makermelissa
Copy link
Collaborator

Ah yeah, ok. I think @ladyada is correct about the JSON parser. This looks like the error message is syntax error in JSON, which means that it probably wan't valid JSON (this can be verified by running it through a JSON parser online). Some JSON parsers can still parse imperfect JSON, but I'm guessing ujson (the library used) is meant to be small so doesn't have really any margin of error. The thing is, there's not much we can really do in this library. Perhaps write out own parser that handles imperfect json in CP? If you want to take a look at the source of ujson, you can see it at https://github.com/adafruit/circuitpython/blob/master/extmod/modujson.c

@makermelissa
Copy link
Collaborator

As a follow-up after looking at the code, it doesn't appear to handle single quotes, or capitalized True, False, Null, etc.

@makermelissa
Copy link
Collaborator

Just noticed this in the comments which I formatted a little better.

"The JSON specification is at http://www.ietf.org/rfc/rfc4627.txt
The parser here will parse any valid JSON and return the correct corresponding Python object. It allows through a superset of JSON, since it treats commas and colons as "whitespace", and doesn't care if brackets/braces are correctly paired. It will raise a ValueError if the input is outside its specs."

So yeah, it probably was outside its specs.

@jerryneedell
Copy link
Contributor Author

jerryneedell commented Feb 21, 2019

FYI - an update -- I have been running the "cheerlights" demo for a long time (>24 hours) but I notice that it had stopped updating so I connected to the REPL and saw that it was connecting but reporting JSON syntax errors! I had not seen these with this demo before. However, rebooting the system made the problem go away - it connected and is updating normally again. That makes no sense to me...
I hope to have some time to dig into this this weekend. Something fishy is going on....

@xelll
Copy link

xelll commented Mar 29, 2019

the socket/requests code should do it all for you - in chunks o' 4K - we've downloaded 250KB bitmaps so that works for sure :)

did you use this esp32 firmware?
https://cdn-learn.adafruit.com/assets/assets/000/071/843/original/NINA_W102_Feb_17_2018.bin?1550892535

@ladyada
Copy link
Member

ladyada commented Mar 29, 2019

yep thats what we use

@xelll
Copy link

xelll commented Mar 30, 2019

yep thats what we use

ok, did you test how fast is it? i test it about 160KB/s ,but not very stable.

@ladyada
Copy link
Member

ladyada commented Mar 30, 2019

yes its not stable compared to a USB wifi adapter, its meant for simple microcontrollers!

@xelll
Copy link

xelll commented Mar 30, 2019

yes its not stable compared to a USB wifi adapter, its meant for simple microcontrollers!

ok, how fast can it work stable.

@ladyada
Copy link
Member

ladyada commented Apr 1, 2019

there's no speed relation, it is a completely different system of using the internet. really, we recommend using a USB wifi adapter if you are on linux

@xelll
Copy link

xelll commented Apr 1, 2019

there's no speed relation, it is a completely different system of using the internet. really, we recommend using a USB wifi adapter if you are on linux

ok...

@ladyada
Copy link
Member

ladyada commented May 28, 2019

@jerryneedell is this resolvedish?

@jerryneedell
Copy link
Contributor Author

I think so -- At least I have not seen it in a long time -- Closing...

@jerryneedell
Copy link
Contributor Author

jerryneedell commented May 28, 2019

oops -- closed too soon -- this issue is still present


Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.1-5-g63b253c33 on 2019-05-24; Adafruit PyPortal with samd51j20
>>> import aio_test
ESP32 SPI webclient test
Get data...Connection status
Conn status: 0
Connection status
Conn status: 0
Connect to AP b'Needell Airport' b'REDACTED'
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 3
Connection status
Conn status: 3
*** Get host by name
*** Get socket
Allocated socket #0
*** Socket connect mode 2
*** Open socket
Writing: b'GET /api/v2/jerryn/feeds HTTP/1.0\r\n'
Writing: b'Host: io.adafruit.com\r\n'
Writing: b'User-Agent: Adafruit CircuitPython\r\n'
Writing: b'X-AIO-KEY'
Writing: b': '
Writing: b'REDACTED'
Writing: b'\r\n'
Writing: b'\r\n'
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 15421 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 11421 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 7421 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 3421 bytes available
Reading 3421 bytes from ESP socket with status 4
ESPSocket: 0 bytes available
Failed to get data, retrying
 syntax error in JSON
Reset ESP32
Get data...Connection status
Conn status: 0
Connection status

here is the test code

import time
import board
import busio
from digitalio import DigitalInOut

from adafruit_esp32spi import adafruit_esp32spi
from adafruit_esp32spi import adafruit_esp32spi_wifimanager

print("ESP32 SPI webclient test")

# Get wifi details and more from a settings.py file
try:
    from secrets import secrets
except ImportError:
    print("WiFi settings are kept in secrets.py, please add them there!")
    raise

esp32_cs = DigitalInOut(board.ESP_CS)
esp32_ready = DigitalInOut(board.ESP_BUSY)
esp32_reset = DigitalInOut(board.ESP_RESET)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, None)
esp._debug=True
while True:
    try:
        print("Get data...", end='')
        response = wifi.get(
            "https://io.adafruit.com/api/v2/"+secrets['aio_username']+"/feeds",
            headers={"X-AIO-KEY":secrets['aio_key']})
        print(response.json())
        response.close()
        print("OK")
    except (ValueError, RuntimeError) as e:
        print("Failed to get data, retrying\n", e)
        wifi.reset()
        continue
    response = None
    time.sleep(15)

as before - replacing "feeds" with "groups" works OK.

@jerryneedell jerryneedell reopened this May 28, 2019
@jerryneedell
Copy link
Contributor Author

jerryneedell commented May 28, 2019

retested after merging #44 and it still fails as above.

also noticed that while using "groups" usually works, it does occasionally fail as well.

@ladyada
Copy link
Member

ladyada commented May 28, 2019

what do you see when you print the text out before json parsing?

@jerryneedell
Copy link
Contributor Author

I'm not sure what you are looking for... what do you want me to print out?

@ladyada
Copy link
Member

ladyada commented May 29, 2019

response.text or somethin :)

@jerryneedell
Copy link
Contributor Author

jerryneedell commented May 29, 2019

OK -- added print(response.text) before print(response.json())
it ends with

[],"feed_status_changes":[{"created_at":"2019-04-19T20:12:10Z","from_status":"online","to_status":"offline

clearly truncated
full output


Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.1-5-g63b253c33 on 2019-05-24; Adafruit PyPortal with samd51j20
>>> import aio_test
ESP32 SPI webclient test
Get data...Connection status
Conn status: 0
Connection status
Conn status: 0
Connect to AP b'Needell Airport' b'browndog'
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Failed to connect, retrying
 ('No such ssid', b'Needell Airport')
Connection status
Conn status: 1
Connect to AP b'Needell Airport' b'browndog'
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 1
Connection status
Conn status: 3
Connection status
Conn status: 3
*** Get host by name
*** Get socket
Allocated socket #0
*** Socket connect mode 2
*** Open socket
Writing: b'GET /api/v2/jerryn/feeds HTTP/1.0\r\n'
Writing: b'Host: io.adafruit.com\r\n'
Writing: b'User-Agent: Adafruit CircuitPython\r\n'
Writing: b'X-AIO-KEY'
Writing: b': '
Writing: b'94cce1f27dd2caac8da3ed48571946a147be82ee'
Writing: b'\r\n'
Writing: b'\r\n'
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 0 bytes available
ESPSocket: 8324 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 4324 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 324 bytes available
Reading 324 bytes from ESP socket with status 4
ESPSocket: 16384 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 12384 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 8384 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 4384 bytes available
Reading 4000 bytes from ESP socket with status 4
ESPSocket: 384 bytes available
Reading 384 bytes from ESP socket with status 4
ESPSocket: 1514 bytes available
Reading 1514 bytes from ESP socket with status 4
ESPSocket: 0 bytes available
*** Closing socket #0
[{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":648833,"name":"pitemperature","description":"temperature from pi3-1","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"71.04937841796875","created_at":"2017-02-19T17:34:52Z","updated_at":"2019-05-29T10:22:16Z","status_notify":true,"status_timeout":60,"status":"online","key":"pitemperature","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-13T00:32:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-13T00:28:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-12T17:31:08Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-12T15:32:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-03T14:18:20Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T14:12:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":648834,"name":"pihumidity","description":"humidity from pi3-1","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"41.863006591796875","created_at":"2017-02-19T17:35:12Z","updated_at":"2019-05-29T10:22:17Z","status_notify":true,"status_timeout":60,"status":"online","key":"pihumidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-13T00:32:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-13T00:28:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-12T17:31:08Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-12T15:32:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-03T14:18:20Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T14:12:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":648872,"name":"basementtemperature","description":"DHT22 in basement","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"57.940039062500006","created_at":"2017-02-19T21:19:33Z","updated_at":"2019-05-29T10:22:48Z","status_notify":true,"status_timeout":60,"status":"online","key":"basementtemperature","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-15T06:23:20Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-14T08:44:12Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-06T23:00:21Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T19:48:10Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"},{"created_at":"2019-05-06T17:38:43Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T13:48:09Z","from_status":"online","to_status":"offline","email_sent":true,"email_sent_to":"jerryneedell@gmail.com"}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":648873,"name":"basementhumidity","description":"DHT22 in basement","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"60.3889575856284","created_at":"2017-02-19T21:19:54Z","updated_at":"2019-05-29T10:22:48Z","status_notify":false,"status_timeout":60,"status":"online","key":"basementhumidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-15T06:23:20Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-14T08:44:12Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T23:00:22Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T19:48:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T17:38:43Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T13:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":701136,"name":"eco2","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"881","created_at":"2017-08-12T20:54:38Z","updated_at":"2019-05-29T10:24:00Z","status_notify":false,"status_timeout":60,"status":"online","key":"eco2","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-12T17:32:11Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-12T15:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-02T09:36:10Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-01T17:56:11Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:55:06Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T13:52:11Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":717817,"name":"humidity","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"28.5","created_at":"2017-10-08T19:00:56Z","updated_at":"2019-02-27T21:48:09Z","status_notify":false,"status_timeout":60,"status":"offline","key":"humidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-02-27T21:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-02-27T20:02:11Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":744349,"name":"tvoc","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"275","created_at":"2017-12-27T11:14:38Z","updated_at":"2019-05-29T10:24:00Z","status_notify":false,"status_timeout":60,"status":"online","key":"tvoc","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-12T17:32:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-12T15:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-02T09:36:11Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-01T17:56:11Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:55:14Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T13:52:11Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":748434,"name":"Digital","description":"","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"0","created_at":"2018-01-07T13:22:33Z","updated_at":"2019-05-11T18:20:14Z","status_notify":false,"status_timeout":60,"status":"offline","key":"digital","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-11T18:20:14Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-11T17:16:36Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T15:00:21Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T13:58:25Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T12:52:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-06T11:50:07Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":753384,"name":"rfm69temperature","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"60","created_at":"2018-01-20T13:56:43Z","updated_at":"2019-05-29T10:17:30Z","status_notify":false,"status_timeout":60,"status":"online","key":"rfm69temperature","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-26T10:43:22Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-25T13:40:14Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-24T18:52:47Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-24T16:00:27Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-19T09:18:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-19T08:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":817882,"name":"freeheep","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"111168","created_at":"2018-06-07T10:00:54Z","updated_at":"2019-04-04T02:48:09Z","status_notify":false,"status_timeout":60,"status":"offline","key":"freeheep","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-04-04T02:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-04T01:44:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-13T13:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-13T12:29:08Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-01-29T03:48:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-01-29T02:44:45Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":824642,"name":"rfm69humidity","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"58","created_at":"2018-06-20T17:54:20Z","updated_at":"2019-05-29T10:17:30Z","status_notify":false,"status_timeout":60,"status":"online","key":"rfm69humidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-26T10:43:22Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-25T13:40:14Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-24T18:52:47Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-24T16:00:27Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-19T09:18:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-19T08:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":830701,"name":"hose","description":"button to tun on/off hose","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"OFF","created_at":"2018-07-01T14:48:38Z","updated_at":"2018-11-20T00:19:58Z","status_notify":false,"status_timeout":60,"status":"offline","key":"hose","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":841736,"name":"Counter","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"224","created_at":"2018-07-16T19:38:14Z","updated_at":"2018-12-26T15:42:26Z","status_notify":false,"status_timeout":60,"status":"offline","key":"counter","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[{"id":187,"feed_id":841736,"expire_at":null,"token":"a8FMM57fzfbXJusFhmiFiWt5E6E8","enabled":true,"active":true,"use_count":363,"data_rate_limit":null,"feed_key":"counter","hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/a8FMM57fzfbXJusFhmiFiWt5E6E8","raw_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/a8FMM57fzfbXJusFhmiFiWt5E6E8/raw","notify_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/a8FMM57fzfbXJusFhmiFiWt5E6E8/notify"}],"feed_status_changes":[]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":877499,"name":"test","description":null,"license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"8765","created_at":"2018-09-19T20:38:18Z","updated_at":"2019-04-04T02:48:09Z","status_notify":false,"status_timeout":60,"status":"offline","key":"test","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[{"id":163,"feed_id":877499,"expire_at":null,"token":"3o7zCNByWr8zsy1VcwSP53qUZxqY","enabled":true,"active":true,"use_count":3353,"data_rate_limit":null,"feed_key":"test","hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/3o7zCNByWr8zsy1VcwSP53qUZxqY","raw_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/3o7zCNByWr8zsy1VcwSP53qUZxqY/raw","notify_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/3o7zCNByWr8zsy1VcwSP53qUZxqY/notify"}],"feed_status_changes":[{"created_at":"2019-04-04T02:48:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-04T01:44:12Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-17T02:32:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-17T01:28:22Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-15T20:32:11Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-03-15T19:17:35Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":897244,"name":"ttntemperature","description":"","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"67.4638671875","created_at":"2018-10-23T11:13:23Z","updated_at":"2019-05-29T10:22:14Z","status_notify":false,"status_timeout":60,"status":"online","key":"ttntemperature","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-05-10T14:50:23Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T14:00:21Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T12:48:57Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-09T09:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-07T13:33:45Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-07T07:20:14Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":897326,"name":"ttnhumidity","description":"","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"42.2119140625","created_at":"2018-10-23T13:46:49Z","updated_at":"2019-05-29T10:22:14Z","status_notify":false,"status_timeout":60,"status":"online","key":"ttnhumidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[{"id":756,"feed_id":897326,"expire_at":null,"token":"qDQJJjY2J5dKk8sLtu2RawgKpt8L","enabled":true,"active":true,"use_count":null,"data_rate_limit":null,"feed_key":"ttnhumidity","hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/qDQJJjY2J5dKk8sLtu2RawgKpt8L","raw_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/qDQJJjY2J5dKk8sLtu2RawgKpt8L/raw","notify_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/qDQJJjY2J5dKk8sLtu2RawgKpt8L/notify"}],"feed_status_changes":[{"created_at":"2019-05-10T14:50:23Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T14:00:21Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T12:48:57Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-09T09:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-07T13:33:39Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-07T07:20:14Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":955056,"name":"argon_temperature","description":"temperature from particle Argon","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"70.4053","created_at":"2018-12-29T21:35:55Z","updated_at":"2019-05-29T10:23:02Z","status_notify":false,"status_timeout":60,"status":"online","key":"argon-temperature","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[{"id":221,"feed_id":955056,"expire_at":null,"token":"cpnHhNy5XjP6okCXhdY2HBm2qqC6","enabled":true,"active":true,"use_count":21932,"data_rate_limit":null,"feed_key":"argon-temperature","hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/cpnHhNy5XjP6okCXhdY2HBm2qqC6","raw_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/cpnHhNy5XjP6okCXhdY2HBm2qqC6/raw","notify_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/cpnHhNy5XjP6okCXhdY2HBm2qqC6/notify"}],"feed_status_changes":[{"created_at":"2019-05-10T20:21:33Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T13:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T10:49:11Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T07:48:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:55:19Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:28:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":955057,"name":"argon_humidity","description":"humidity from particle argon","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"46.5607","created_at":"2018-12-29T21:36:24Z","updated_at":"2019-05-29T10:23:21Z","status_notify":false,"status_timeout":60,"status":"online","key":"argon-humidity","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[{"id":220,"feed_id":955057,"expire_at":null,"token":"P3Uz35jg6dqL5CKrAgFSWDoYppUt","enabled":true,"active":true,"use_count":21819,"data_rate_limit":null,"feed_key":"argon-humidity","hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/P3Uz35jg6dqL5CKrAgFSWDoYppUt","raw_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/P3Uz35jg6dqL5CKrAgFSWDoYppUt/raw","notify_hook_url":"https://io.adafruit.com/api/v2/webhooks/feed/P3Uz35jg6dqL5CKrAgFSWDoYppUt/notify"}],"feed_status_changes":[{"created_at":"2019-05-10T20:21:54Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-10T13:32:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T10:49:32Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-05-03T07:48:10Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:55:39Z","from_status":"offline","to_status":"online","email_sent":null,"email_sent_to":null},{"created_at":"2019-04-20T16:28:09Z","from_status":"online","to_status":"offline","email_sent":null,"email_sent_to":null}]},{"username":"jerryn","owner":{"id":20772,"username":"jerryn"},"id":977746,"name":"rfm69vbat","description":"battery monitor for rfm69","license":null,"history":true,"enabled":true,"visibility":"private","unit_type":null,"unit_symbol":null,"last_value":"0","created_at":"2019-01-28T17:51:10Z","updated_at":"2019-04-19T20:12:10Z","status_notify":false,"status_timeout":4320,"status":"offline","key":"rfm69vbat","group":{"id":110425,"key":"default","name":"Default","user_id":20772},"groups":[{"id":110425,"key":"default","name":"Default","user_id":20772}],"feed_webhook_receivers":[],"feed_status_changes":[{"created_at":"2019-04-19T20:12:10Z","from_status":"online","to_status":"offline
Failed to get data, retrying
 syntax error in JSON
Reset ESP32
Get data...Connection status
Conn status: 0
Connection status

@ladyada
Copy link
Member

ladyada commented May 29, 2019

yeah looks like its incomplete - dunno why tho

@kattni
Copy link
Contributor

kattni commented May 4, 2020

@jerryneedell Have you made any progress on this?

@kattni kattni added the bug Something isn't working label May 4, 2020
@us3r64
Copy link
Contributor

us3r64 commented Jan 15, 2024

@ladyada it might be related to this: #184

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants