# Getting next hours electric spot-price from Nordpool via nordpool-api-plus

**URL:** https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198
**Category:** General
**Created:** [19 October 2023 19:28 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198 "2023-10-19T19:28:03Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![P-solver](https://avatars.discourse-cdn.com/v4/letter/p/b2d939/32.png) [@P-solver](https://discourse.nodered.org/u/P-solver)
#### Post date: [19 October 2023 19:28 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/1 "2023-10-19T19:28:03Z")

</div>

I need to get hold of the "next hour" electric price from "nordpool-api-plus" node.

I've managed to setup the "nordpool-api-plus" node so I get the array of prices for the actual days spot-prices looking as this in the debug node:

```auto
array[24]
[0 … 9]
0: object
timestamp: "2023-10-18T00:00:00.000Z"
price: 46.68
currency: "SEK"
area: "SE2"
1: object
2: object
3: object
4: object
5: object
6: object
7: object
8: object
9: object
[10 … 19]
[20 … 23]

```

I then connect a function node after the "nordpool-api-plus" node for entering some javascript but this is where I need help;

**1. How do i fetch next hours price?**  
Lets say I run the timestamp each hour, generating a array shown above with the actual days prices.  
So at this time I want to fetch the price for object "23" in the array.

How do I do this with Javascript?

---

<div class="post-metadata">

### Author: ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)
#### Post date: [19 October 2023 20:12 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/2 "2023-10-19T20:12:17Z")

</div>

Welcome @P-solver ,

If the **payload** is just an array of those objects:

**msg.payload[23].price** will get you the price at index 23

---

<div class="post-metadata">

### Author: ![P-solver](https://avatars.discourse-cdn.com/v4/letter/p/b2d939/32.png) [@P-solver](https://discourse.nodered.org/u/P-solver)
#### Post date: [19 October 2023 20:21 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/3 "2023-10-19T20:21:25Z")

</div>

> [@marcus-j-davies](#):
>
> msg.payload[23].price

I get an error "Function tried to send a message of type number" for this code:

```auto
var nexthourprice;
nexthourprice = msg.payload[23].price;
return nexthourprice;

```

Any idea what I'm doing wrong? (I'm not that good at javascript as you probably can tell :))

---

<div class="post-metadata">

### Author: ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)
#### Post date: [19 October 2023 20:25 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/4 "2023-10-19T20:25:07Z")

</div>

You’re not sending an object, in Node RED the message being passed down, needs to be an object.

`return {payload: msg.payload[23].price}`

Or better

```auto

msg.payload = msg.payload[23].price 
return msg

```

---

<div class="post-metadata">

### Author: ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)
#### Post date: [19 October 2023 20:27 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/5 "2023-10-19T20:27:07Z")

</div>

So you need to determine the hour you're in then use that to find the array with that index  
e.g.

```auto
const date = new Date();
///date.setHours(date.getHours()+1); // uncomment for next hour
const index = date.getHours();
msg.payload = msg.payload[index].price
return msg;

```

your error is  
You must return an object to each output.  
eg. set the price to a msg property.

---

<div class="post-metadata">

### Author: ![Buckskin](https://avatars.discourse-cdn.com/v4/letter/b/b9e5f3/32.png) [@Buckskin](https://discourse.nodered.org/u/Buckskin)
#### Post date: [19 October 2023 20:28 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/6 "2023-10-19T20:28:59Z")

</div>

Try

```auto
return {topic: 'Price', payload: nexthourprice}

```

---

<div class="post-metadata">

### Author: ![P-solver](https://avatars.discourse-cdn.com/v4/letter/p/b2d939/32.png) [@P-solver](https://discourse.nodered.org/u/P-solver)
#### Post date: [19 October 2023 20:29 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/7 "2023-10-19T20:29:17Z")

</div>

> [@marcus-j-davies](#):
>
> ```auto
> msg.payload = msg.payload[23].price 
> return msg
> 
> ```

Worked like a charm!

Many thanks!

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [2 November 2023 20:30 UTC](https://discourse.nodered.org/t/getting-next-hours-electric-spot-price-from-nordpool-via-nordpool-api-plus/82198/8 "2023-11-02T20:30:16Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
