[-] captcha_incorrect@lemmy.world 2 points 4 hours ago

I have to follow this now!

[-] captcha_incorrect@lemmy.world 2 points 4 hours ago

Glad to hear that you got it working! The hard part for me was to figure out how to transform a JSON string into an array of n8n objects. I had already done that before so now I just copy that node whenever I need something like again.

I’m doing a bit of tweaking

I figured you would have. But that is half the fun. :-)

[-] captcha_incorrect@lemmy.world 2 points 19 hours ago

Do you have a link? OOTL

were pretty eager with that trmove button for that.

Yeah, I only noticed that after it had been pointed out recently. I hope it didn't scare anyone away.

I had to implement drag and drop in a Windows application recently. Since you don't know the content type nor the size of the content, pointers has to be used, which makes sense. For the most part when working within the bounds of my own application, I haven't found a good use case for pointers. That could of course be because I am not used to thinking in that way.

[-] captcha_incorrect@lemmy.world 2 points 1 day ago* (last edited 1 day ago)

Sharing a workflow requires a paid plan but could should be able to paste this in the editor to get the same effect.

I made two different sample flows, on that call the api and responds with directly with the response data (transformed). The other workflow is to same the data in a data table, and call the weather api on a schedule. You could even use ntfy and send notifications on a schedule if it will rain within an hour.

Edit the nodes to suite your need (URL, content of response etc).

n8n sample workflow (copy and paste in n8n's editor)

{
  "nodes": [
    {
      "parameters": {
        "url": "https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        656,
        336
      ],
      "id": "d47a17c9-9bc7-448c-841a-f3b2d787b2cb",
      "name": "Sample weather JSON data"
    },
    {
      "parameters": {
        "jsCode": "let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n  output.push({\n    Time: item.time,\n    \"Current temperature\": item.data.air_temperature + ' °C'\n    // Add more as needed\n  });\n}\n\nreturn output;\n\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        240
      ],
      "id": "cf4f11a6-0ecc-4e96-afcb-a7903113da19",
      "name": "Convert json to array"
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "={\n  \"Time\": {{ $json.timeSeries[0].time }},\n  \"Current temperature\": {{ $json.timeSeries[0].data.air_temperature }},\n}\n",
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        880,
        432
      ],
      "id": "2f3765ba-6ee5-44b7-ac45-c5a407ed43e9",
      "name": "Manual mapping of one item",
      "disabled": true
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1104,
        240
      ],
      "id": "badd76a3-2920-4592-baa6-5202b4badba0",
      "name": "Respond to Webhook"
    },
    {
      "parameters": {
        "operation": "upsert",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1.1,
      "position": [
        1104,
        16
      ],
      "id": "c76d9dfa-9ec1-421f-a96b-d1a65efb0dd7",
      "name": "insert (or update if exists) table with data"
    },
    {
      "parameters": {
        "content": "Create the table first, then edit and select how to map the fields\n\n",
        "height": 224,
        "width": 320
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        992,
        -48
      ],
      "typeVersion": 1,
      "id": "51347b11-fcb8-49db-bd17-405ec8719ec0",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "jsCode": "let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n  output.push({\n    Time: item.time,\n    \"Current temperature\": item.data.air_temperature + ' °C'\n    // Add more as needed\n  });\n}\n\nreturn output;\n\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        16
      ],
      "id": "3967c4c5-5443-40d2-b1fe-830aa9327118",
      "name": "Convert json to array1"
    },
    {
      "parameters": {
        "url": "https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        656,
        16
      ],
      "id": "f0043f80-c940-43cf-a5ef-2f7fe6dcc6a7",
      "name": "Sample weather JSON data1"
    },
    {
      "parameters": {
        "path": "1572b231-edc5-4516-935c-f205b737c5d2",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        432,
        336
      ],
      "id": "30953c4e-7627-4646-8b8d-ca46cc06c841",
      "name": "Webhook - Respond after API call",
      "webhookId": "1572b231-edc5-4516-935c-f205b737c5d2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        448,
        16
      ],
      "id": "e242dea7-dc3c-4c0a-9630-786bf2a39b8a",
      "name": "Schedule to get weather data"
    },
    {
      "parameters": {
        "path": "1572b231-edc5-4516-935c-f205b737c5d2",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        448,
        -240
      ],
      "id": "1c1ac8d1-5f64-4bab-a3ac-20f223b1411e",
      "name": "Webhook - respond with table data",
      "webhookId": "1572b231-edc5-4516-935c-f205b737c5d2"
    },
    {
      "parameters": {
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1.1,
      "position": [
        656,
        -240
      ],
      "id": "7433815b-229c-4ad8-88ce-2bcff688ece5",
      "name": "Get row(s)"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        864,
        -240
      ],
      "id": "76cd6bfe-da95-41c0-a3ee-812956eab79f",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1072,
        -240
      ],
      "id": "3c83ebc3-2c09-4d80-8278-e325237ae0e2",
      "name": "Respond to Webhook1"
    },
    {
      "parameters": {
        "content": "No code behind these nodes, only a skeleton sample for the workflow could look like",
        "height": 208,
        "width": 944
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -304
      ],
      "typeVersion": 1,
      "id": "db35642a-04dd-427b-9a21-d4ad64dd5522",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## Via data tabel\n",
        "height": 592,
        "width": 1088,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -384
      ],
      "typeVersion": 1,
      "id": "877a2308-c70f-4b9e-8ef7-5dea94a812b8",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## Direct response from remote API",
        "height": 400,
        "width": 1088,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        224
      ],
      "typeVersion": 1,
      "id": "d06d7c02-a8eb-494b-8d10-142fb2c04037",
      "name": "Sticky Note3"
    }
  ],
  "connections": {
    "Sample weather JSON data": {
      "main": [
        [
          {
            "node": "Convert json to array",
            "type": "main",
            "index": 0
          },
          {
            "node": "Manual mapping of one item",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert json to array": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert json to array1": {
      "main": [
        [
          {
            "node": "insert (or update if exists) table with data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sample weather JSON data1": {
      "main": [
        [
          {
            "node": "Convert json to array1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - Respond after API call": {
      "main": [
        [
          {
            "node": "Sample weather JSON data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule to get weather data": {
      "main": [
        [
          {
            "node": "Sample weather JSON data1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - respond with table data": {
      "main": [
        [
          {
            "node": "Get row(s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s)": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "139fc1c0283616d9fae3813879a161cf8e8e0992eea7a9e87dc980c7d4ed97ec"
  }
}

[-] captcha_incorrect@lemmy.world 2 points 3 days ago

Since you are using n8n, pull the data on a schedule and save it in a data table. Then create a webhook to serve the content as you want it. N8n can transform the JSON data, I can provide a sample tomorrow.

[-] captcha_incorrect@lemmy.world 1 points 3 days ago* (last edited 3 days ago)

~~Have you tried running it but not exposing any ports using docker compose?~~ EDIT: Saw that it worked with 4443:443.

[-] captcha_incorrect@lemmy.world 12 points 3 days ago

In addition, rule 7 (low effort posts) is deleted as everyone seems to agree its handled just fine with votes.

Completely agree with this one. I like to browse new and I'd rather keep the occasional low effort post than delete them. There are relatively few posts at it is.

[-] captcha_incorrect@lemmy.world 2 points 3 days ago

I still don't get the point of pointers.

I want my language to pass by reference. I give a variable to a function and the variable in the function scope should be a reference to the same place in memory as the original variable.

How can pointers help me here? What value does it provide? Genuine question.

[-] captcha_incorrect@lemmy.world 1 points 5 days ago

From article: Staff got worried, checked his house and no one answered. They called an ambulance (”medical services”) and he was taken to the hospital.

[-] captcha_incorrect@lemmy.world 56 points 2 months ago

1% CPU usages, 50% RAM usage. That checks out.

50

I just installed Radicale and could not at first figure out how to add a calendar that I could edit in the app. And since I could not find any decent post on the topic, here is how to do it (as of iOS 18.7.3 on an iPhone 13 pro, but I imagine the process being very similar on other devices):

  1. Open the Settings application.
  2. Scroll to the bottom and open the Apps options.
  3. Open settings for the Calendar application.
  4. Open Calendar accounts.
  5. Add a new account.
  6. Chose "other".
  7. Chose "CalDav-account".
  8. Enter URL and credentials for your Radicale server.

I have SSL set up with Let's Encrypt managed with Caddy so that was all I had to do. I say this because I read one discussion about SSL being needed.

view more: next ›

captcha_incorrect

0 post score
0 comment score
joined 4 months ago