ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount", "litepub": "http://litepub.social/ns#", "directMessage": "litepub:directMessage", "blurhash": "toot:blurhash", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" }, "Hashtag": "as:Hashtag" } ], "id": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580", "type": "Note", "summary": null, "inReplyTo": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113154895996286210", "published": "2024-09-19T18:32:29Z", "url": "https://infosec.exchange/@GuillaumeRossolini/113165647871802580", "attributedTo": "https://infosec.exchange/users/GuillaumeRossolini", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://infosec.exchange/users/GuillaumeRossolini/followers" ], "sensitive": false, "atomUri": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580", "inReplyToAtomUri": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113154895996286210", "conversation": "tag:infosec.exchange,2024-09-06:objectId=191694493:objectType=Conversation", "content": "<p>This morning my ISP had an outage and I restarted their router, which happens to power my rpi0 with the web server for this project</p><p>And I forgot to restart that web server, so I lost all data from today</p><p>But before that, it was performing beautifully. There were 844 records for each node since last night, like clockwork. I happen to have cleared my previous data last night, so all the nodes were running and already on a stable mesh at the time.</p><p>Each sensor has been broadcasting its readings every three seconds, at which point my server decides to ignore most readings until the 1 minute mark (per sensor) and I’m happy that not one minute was lost for half a day of recording</p><p>I am less happy that after the web server was restarted, none of the microcontrollers found it by themselves. It looks like the entire mesh collapsed because the root node couldn’t bridge both networks again.</p><p>I understand that the root node didn’t restart the bridge between both WiFi (I didn’t set it up that way), but I would have thought that the iot mesh should have continued independently? Perhaps because it is declared as the root node? I’ll have to test this more.</p><p>I reset the ESP32 root node and it picked up the home WiFi fine, but none of the probes connected to it again (this mesh should have self healed within minutes, at most)</p><p>I went around the house to reset each ESP8266 node and yes, that is when the mesh self organized again and I started seeing the web server collecting readings again, as their BME680 sensor finished its self calibration routine</p><p><a href=\"https://infosec.exchange/tags/meshnetwork\" class=\"mention hashtag\" rel=\"tag\">#<span>meshnetwork</span></a> <a href=\"https://infosec.exchange/tags/AirQuality\" class=\"mention hashtag\" rel=\"tag\">#<span>AirQuality</span></a> <a href=\"https://infosec.exchange/tags/esp32\" class=\"mention hashtag\" rel=\"tag\">#<span>esp32</span></a> <a href=\"https://infosec.exchange/tags/esp8266\" class=\"mention hashtag\" rel=\"tag\">#<span>esp8266</span></a> <a href=\"https://infosec.exchange/tags/bme680\" class=\"mention hashtag\" rel=\"tag\">#<span>bme680</span></a> <a href=\"https://infosec.exchange/tags/raspberrypi\" class=\"mention hashtag\" rel=\"tag\">#<span>raspberrypi</span></a></p>", "contentMap": { "en": "<p>This morning my ISP had an outage and I restarted their router, which happens to power my rpi0 with the web server for this project</p><p>And I forgot to restart that web server, so I lost all data from today</p><p>But before that, it was performing beautifully. There were 844 records for each node since last night, like clockwork. I happen to have cleared my previous data last night, so all the nodes were running and already on a stable mesh at the time.</p><p>Each sensor has been broadcasting its readings every three seconds, at which point my server decides to ignore most readings until the 1 minute mark (per sensor) and I’m happy that not one minute was lost for half a day of recording</p><p>I am less happy that after the web server was restarted, none of the microcontrollers found it by themselves. It looks like the entire mesh collapsed because the root node couldn’t bridge both networks again.</p><p>I understand that the root node didn’t restart the bridge between both WiFi (I didn’t set it up that way), but I would have thought that the iot mesh should have continued independently? Perhaps because it is declared as the root node? I’ll have to test this more.</p><p>I reset the ESP32 root node and it picked up the home WiFi fine, but none of the probes connected to it again (this mesh should have self healed within minutes, at most)</p><p>I went around the house to reset each ESP8266 node and yes, that is when the mesh self organized again and I started seeing the web server collecting readings again, as their BME680 sensor finished its self calibration routine</p><p><a href=\"https://infosec.exchange/tags/meshnetwork\" class=\"mention hashtag\" rel=\"tag\">#<span>meshnetwork</span></a> <a href=\"https://infosec.exchange/tags/AirQuality\" class=\"mention hashtag\" rel=\"tag\">#<span>AirQuality</span></a> <a href=\"https://infosec.exchange/tags/esp32\" class=\"mention hashtag\" rel=\"tag\">#<span>esp32</span></a> <a href=\"https://infosec.exchange/tags/esp8266\" class=\"mention hashtag\" rel=\"tag\">#<span>esp8266</span></a> <a href=\"https://infosec.exchange/tags/bme680\" class=\"mention hashtag\" rel=\"tag\">#<span>bme680</span></a> <a href=\"https://infosec.exchange/tags/raspberrypi\" class=\"mention hashtag\" rel=\"tag\">#<span>raspberrypi</span></a></p>" }, "updated": "2024-09-19T18:49:24Z", "attachment": [ { "type": "Document", "mediaType": "image/jpeg", "url": "https://media.infosec.exchange/infosec.exchange/media_attachments/files/113/165/589/917/290/429/original/ae546351649b844b.jpeg", "name": "Screenshot of the serial log from the root node once it connected to the home WiFi again. It gradually started seeing other nodes connecting through the mesh, and eventually started receiving their readings as they finished their self calibration", "blurhash": "UEJk.YDi4TNEWnjZt7fkIUWCnit7t6a{V[fP", "focalPoint": [ -0.53, 0.52 ], "width": 2102, "height": 986 }, { "type": "Document", "mediaType": "image/jpeg", "url": "https://media.infosec.exchange/infosec.exchange/media_attachments/files/113/165/710/058/236/831/original/b9c480ee2a7f6c66.jpeg", "name": "Screenshot of the topography of the mesh network after all the nodes connected back, presented in a hierarchical way", "blurhash": "U59Q~yL4S%oe}@kDNHNG_2xZb_NeogofWXR+", "focalPoint": [ 0, 0 ], "width": 1257, "height": 1650 } ], "tag": [ { "type": "Hashtag", "href": "https://infosec.exchange/tags/meshnetwork", "name": "#meshnetwork" }, { "type": "Hashtag", "href": "https://infosec.exchange/tags/airquality", "name": "#airquality" }, { "type": "Hashtag", "href": "https://infosec.exchange/tags/esp32", "name": "#esp32" }, { "type": "Hashtag", "href": "https://infosec.exchange/tags/esp8266", "name": "#esp8266" }, { "type": "Hashtag", "href": "https://infosec.exchange/tags/bme680", "name": "#bme680" }, { "type": "Hashtag", "href": "https://infosec.exchange/tags/raspberrypi", "name": "#raspberrypi" } ], "replies": { "id": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580/replies?min_id=113188853841790164&page=true", "partOf": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580/replies", "items": [ "https://infosec.exchange/users/GuillaumeRossolini/statuses/113188853841790164" ] } }, "likes": { "id": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580/likes", "type": "Collection", "totalItems": 0 }, "shares": { "id": "https://infosec.exchange/users/GuillaumeRossolini/statuses/113165647871802580/shares", "type": "Collection", "totalItems": 0 } }