Energy EAGLE Discussion
Re: Energy EAGLE Discussion
Great! Glad to hear it.
Re: Energy EAGLE Discussion
I ended getting the Eagle , and Installed it last night with 6.0 . Everything went smooth.
Thanks Nathan.
Is there a list for All the Trigger definitions.
I want to create a Trigger where , when my Electrical Consumption hits -400 KW ( Solar Power Energy ) , I can Set an Action to Turn on My Dish Washer.
I assume "Current Load (Kw)" would do the trick , but I want some kind of thresh hold. say from -300 to -400 Watts Triger the Action , and check every 15 mins , Or Trigger only Once ?
I'm afraid of the Trigger going off multiple times when , there is a sudden drop , clouds , etc.
Thanks a bunch for the hard work you put into this.
Manny
Thanks Nathan.
Is there a list for All the Trigger definitions.
I want to create a Trigger where , when my Electrical Consumption hits -400 KW ( Solar Power Energy ) , I can Set an Action to Turn on My Dish Washer.
I assume "Current Load (Kw)" would do the trick , but I want some kind of thresh hold. say from -300 to -400 Watts Triger the Action , and check every 15 mins , Or Trigger only Once ?
I'm afraid of the Trigger going off multiple times when , there is a sudden drop , clouds , etc.
Thanks a bunch for the hard work you put into this.
Manny
Re: Energy EAGLE Discussion
Hey Manny.
Glad to hear it's working for you!
So, I'm assuming that by "Electrical Consumption" (which is how much energy you've used so far) you actually mean "Current Load" (which is how much power you're currently drawing). If that's the case, then yes, the "Current Load (kW)" device state would be the one to create a trigger on. You could set the trigger to execute whenever the Current Load drops below -300 Watts (-0.300 kW). In the Conditions for the trigger, you could specify that it should only execute if your dish washer wasn't already on. That way it wouldn't fire if the dish washer were already on. If you only want it to execute once a day, you could add an action to the Actions of the trigger that disables itself once fired. Then create a Schedule to run every day (maybe around 1:00 PM so you know you'll have dishes in the dish washer) that re-enables the trigger. That way, once the Current Load trigger fires, it won't again until the next day when your solar system is producing at least 0.3 kW more power than your house is currently using.
Glad to hear it's working for you!
So, I'm assuming that by "Electrical Consumption" (which is how much energy you've used so far) you actually mean "Current Load" (which is how much power you're currently drawing). If that's the case, then yes, the "Current Load (kW)" device state would be the one to create a trigger on. You could set the trigger to execute whenever the Current Load drops below -300 Watts (-0.300 kW). In the Conditions for the trigger, you could specify that it should only execute if your dish washer wasn't already on. That way it wouldn't fire if the dish washer were already on. If you only want it to execute once a day, you could add an action to the Actions of the trigger that disables itself once fired. Then create a Schedule to run every day (maybe around 1:00 PM so you know you'll have dishes in the dish washer) that re-enables the trigger. That way, once the Current Load trigger fires, it won't again until the next day when your solar system is producing at least 0.3 kW more power than your house is currently using.
Re: Energy EAGLE Discussion
Nathan ,
I will have to try that.
Thanks a bunch.
I will have to try that.
Thanks a bunch.
Re: Energy EAGLE Discussion
Version 0.9.16 Posted
(See main announcement thread for download link).
Changes from 0.9.16:
(See main announcement thread for download link).
Changes from 0.9.16:
- Fixed a bug that would cause the plugin to crash if the EAGLE was unavailable for some reason.
Re: Energy EAGLE Discussion
Hi,
Stupid question but where do I set the Advanced Pricing? When I enter the device configure and check the Advanced Pricing option, this is what I get
Stupid question but where do I set the Advanced Pricing? When I enter the device configure and check the Advanced Pricing option, this is what I get
Last edited by Skiddy on Tue Jun 03, 2014 9:32 pm, edited 1 time in total.
Re: Energy EAGLE Discussion
Hi.
The first time you enable the Advanced Pricing option, you have to scroll down within the device configuration to see all the parameters like Limit 1, etc. The next time you edit the parameters, the dialog will open large enough to show all the options.
Hope that helps.
The first time you enable the Advanced Pricing option, you have to scroll down within the device configuration to see all the parameters like Limit 1, etc. The next time you edit the parameters, the dialog will open large enough to show all the options.
Hope that helps.
Re: Energy EAGLE Discussion
Thanks for the quick reply... never thought to scroll down in that window
Re: Energy EAGLE Discussion
With the latest firmware upgrade, v2.1, it is possible to add entries to the Cloud Provider menu. Each entry is a http url. Once configured, the eagle sends data like:
at frequent intervals.
"IF" (big word, I know) the Energy Eagle plugin were to implement a simple html server (about 50 lines if you import SimpleHTTPServer ) the plugin could dynamically update at least some of the states based on pushed data.
Any thought of going in this direction?
Code: Select all
FieldStorage(None, None, '<?xml version="1.0"?><rainForest macId="0xd8d5b900057a" version="1.1" timestamp="1416015156s">\n
<InstantaneousDemand>\n
<DeviceMacId>0xd8d5b90000000ece</DeviceMacId>\n
<MeterMacId>0x0013500100c1f22a</MeterMacId>\n
<TimeStamp>0x1bf969b0</TimeStamp>\n
<Demand>0x0006a4</Demand>\n
<Multiplier>0x00000001</Multiplier>\n
<Divisor>0x000003e8</Divisor>\n
<DigitsRight>0x03</DigitsRight>\n
<DigitsLeft>0x0f</DigitsLeft>\n
<SuppressLeadingZero>Y</SuppressLeadingZero>\n
</InstantaneousDemand>\n
\n
</rainForest>\n')
"IF" (big word, I know) the Energy Eagle plugin were to implement a simple html server (about 50 lines if you import SimpleHTTPServer ) the plugin could dynamically update at least some of the states based on pushed data.
Any thought of going in this direction?
Re: Energy EAGLE Discussion
Hi Richard.
The custom URL push functionality for the EAGLE is certainly the more efficient and all around better way to go for better near-real-time readings with the Energy EAGLE plugin. However, the current version of Energy EAGLE was never designed to receive those pushed updates so it would require nearly a complete rewriting of the code. It could also cease to function properly (without even more branching code) with pre-2.1 EAGLE firmware. I'm not really ready to commit that much time to the plugin at this point. If you're interested in working on something like that, you're more than welcome to use my existing code, such as it is, to get started. If there is a real interest, I could also put it up on GitHub too.
The custom URL push functionality for the EAGLE is certainly the more efficient and all around better way to go for better near-real-time readings with the Energy EAGLE plugin. However, the current version of Energy EAGLE was never designed to receive those pushed updates so it would require nearly a complete rewriting of the code. It could also cease to function properly (without even more branching code) with pre-2.1 EAGLE firmware. I'm not really ready to commit that much time to the plugin at this point. If you're interested in working on something like that, you're more than welcome to use my existing code, such as it is, to get started. If there is a real interest, I could also put it up on GitHub too.
Re: Energy EAGLE Discussion
nsheldon wrote:...If you're interested in working on something like that, you're more than welcome to use my existing code, such as it is, to get started. If there is a real interest, I could also put it up on GitHub too.
Thanks for the offer... but, at the moment I am about to take off for 2+ weeks in New Zealand, then I have a back-log of work on my own plugins. So... maybe sometime in 2016
BTW, Having looked at the architecture a bit, adding an http listener class to the plugin would be pretty simple, I already have something like 90% of the code. The hard part would be to integrate the pushed updates into the same "state" space as the polled data. Though, that is based on an assumption that you get more data by polling than by the push API, and that may not actually be the case. Possibly, the push only updates changed elements. I really need to read the docs. In any case, I think the plugin could be kept "whole" with a configuration option to run the http listener.
Re: Energy EAGLE Discussion
Nathan,
OK, I updated to Energy Eagle firmware version 2.2.0.7515, and broke the plug-in.
I'm running Plug-in v9.16 on Indigo 6.1.0
Here are the error messages:
WITH DEBUG ON:
OK, I updated to Energy Eagle firmware version 2.2.0.7515, and broke the plug-in.
I'm running Plug-in v9.16 on Indigo 6.1.0
Here are the error messages:
Code: Select all
Energy EAGLE Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Energy EAGLE Error Error in plugin execution runConcurrentThread:
Traceback (most recent call last):
File "plugin.py", line 662, in runConcurrentThread
File "plugin.py", line 1137, in eagleDeviceData
<type 'exceptions.IndexError'>: list index out of range
Energy EAGLE Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Energy EAGLE Error Error in plugin execution runConcurrentThread:
Traceback (most recent call last):
File "plugin.py", line 662, in runConcurrentThread
File "plugin.py", line 1137, in eagleDeviceData
<type 'exceptions.IndexError'>: list index out of range
Energy EAGLE Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Energy EAGLE Error Error in plugin execution runConcurrentThread:
Traceback (most recent call last):
File "plugin.py", line 662, in runConcurrentThread
File "plugin.py", line 1137, in eagleDeviceData
<type 'exceptions.IndexError'>: list index out of range
Energy EAGLE Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Code: Select all
Reloading plugin "Energy EAGLE 0.9.16"
Stopping plugin "Energy EAGLE 0.9.16" (pid 53685)
Energy EAGLE Debug Stopping device: Rainforest Gateway
Stopped plugin "Energy EAGLE 0.9.16"
Starting plugin "Energy EAGLE 0.9.16" (pid 53989)
Energy EAGLE Debug Initializing Plugin.
Started plugin "Energy EAGLE 0.9.16"
Energy EAGLE Debug Starting device: Rainforest Gateway
Energy EAGLE Debug Device outdated. Updating device state list.
Energy EAGLE Debug Starting runConcurrentThread.
Energy EAGLE Debug eagleDeviceData called. Device: Rainforest Gateway
Energy EAGLE Debug sendCommand called.
Energy EAGLE Debug connect called.
Energy EAGLE Debug Attempt # 1 to connect to EAGLE.
Energy EAGLE Debug Sending command
<LocalCommand>
<Name>get_device_data</Name>
<MacId>******REMOVED*********</MacId>
</LocalCommand>
to "Rainforest Gateway".
Energy EAGLE Debug Reading data from "Rainforest Gateway".
Energy EAGLE Debug disconnect called.
Energy EAGLE Debug Data returned:
<NetworkInfo>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<Status>Connected</Status>
<CoordMacId>******REMOVED*********</CoordMacId>
<ExtPanId>******REMOVED*********</ExtPanId>
<ShortAddr>0x2bc2</ShortAddr>
<Channel>25</Channel>
<LinkStrength>0x64</LinkStrength>
</NetworkInfo>
<LocalCommand>
<Name>get_device_data</Name>
<MacId>******REMOVED*********</MacId>
</LocalCommand>
<DeviceInfo>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<InstallCode>******REMOVED*********</InstallCode>
<LinkKeyHigh>******REMOVED*********</LinkKeyHigh>
<LinkKeyLow>******REMOVED*********</LinkKeyLow>
<FWVersion>1.4.48 (6952)</FWVersion>
<HWVersion>3.2.3</HWVersion>
<Manufacturer>Rainforest Automation, Inc.</Manufacturer>
<ModelId>Z109-EAGLE</ModelId>
<DateCode>20121201EC051052</DateCode>
<ImageType>0x1001</ImageType>
</DeviceInfo>
<InstantaneousDemand>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<TimeStamp>0x1cf807b8</TimeStamp>
<Demand>0x000703</Demand>
<Multiplier>0x00000001</Multiplier>
<Divisor>0x000003e8</Divisor>
<DigitsRight>0x03</DigitsRight>
<DigitsLeft>0x06</DigitsLeft>
<SuppressLeadingZero>Y</SuppressLeadingZero>
</InstantaneousDemand>
<CurrentSummation>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<TimeStamp>0x1cf80720</TimeStamp>
<SummationDelivered>0x03f8f675</SummationDelivered>
<SummationReceived>0x00000000</SummationReceived>
<Multiplier>0x00000001</Multiplier>
<Divisor>0x000003e8</Divisor>
<DigitsRight>0x01</DigitsRight>
<DigitsLeft>0x06</DigitsLeft>
<SuppressLeadingZero>Y</SuppressLeadingZero>
</CurrentSummation>
<PriceCluster>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<TimeStamp>0x1c9de9f0</TimeStamp>
<StartTime>0xffffffff</StartTime>
<Duration>0xffff</Duration>
<Price>0x0000001f</Price>
<Currency>0x0348</Currency>
<TrailingDigits>0x02</TrailingDigits>
<Tier>4</Tier>
<RateLabel>Tier 4</RateLabel>
</PriceCluster>
<MessageCluster>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<TimeStamp>0x00000000</TimeStamp>
<StartTime>0x00000000</StartTime>
<Duration>0x0000</Duration>
<Id>0x00000000</Id>
<ConfirmationRequired>N</ConfirmationRequired>
<Confirmed>N</Confirmed>
<Read>Y</Read>
<Queue>active</Queue>
</MessageCluster>
<MeterInfo>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<Enabled>Y</Enabled>
</MeterInfo>
<Threshold>
<DeviceMacId>******REMOVED*********</DeviceMacId>
<MeterMacId>******REMOVED*********</MeterMacId>
<UpperDemand>5.000000</UpperDemand>
<LowerDemand>-2.000000</LowerDemand>
</Threshold>
Energy EAGLE Debug Energy EAGLE version: 0.9.13
Energy EAGLE Debug eagleDeviceData received XML from sendCommand:
Class: <type 'str'>
Data:
<Data><NetworkInfo> <DeviceMacId>******REMOVED*********</DeviceMacId> <Status>Connected</Status> <CoordMacId>******REMOVED*********</CoordMacId> <ExtPanId>******REMOVED*********</ExtPanId> <ShortAddr>0x2bc2</ShortAddr> <Channel>25</Channel> <LinkStrength>0x64</LinkStrength></NetworkInfo><LocalCommand> <Name>get_device_data</Name> <MacId>0xd8d5b90000000eda</MacId></LocalCommand><DeviceInfo> <DeviceMacId>0xd8d5b90000000eda</DeviceMacId> <InstallCode>******REMOVED*********</InstallCode> <LinkKeyHigh>******REMOVED*********</LinkKeyHigh> <LinkKeyLow>******REMOVED*********</LinkKeyLow> <FWVersion>1.4.48 (6952)</FWVersion> <HWVersion>3.2.3</HWVersion> <Manufacturer>Rainforest Automation, Inc.</Manufacturer> <ModelId>Z109-EAGLE</ModelId> <DateCode>20121201EC051052</DateCode> <ImageType>0x1001</ImageType></DeviceInfo><InstantaneousDemand> <DeviceMacId>******REMOVED*********</DeviceMacId> <MeterMacId>******REMOVED*********</MeterMacId> <TimeStamp>0x1cf807b8</TimeStamp> <Demand>0x000703</Demand> <Multiplier>0x00000001</Multiplier> <Divisor>0x000003e8</Divisor> <DigitsRight>0x03</DigitsRight> <DigitsLeft>0x06</DigitsLeft> <SuppressLeadingZero>Y</SuppressLeadingZero></InstantaneousDemand><CurrentSummation> <DeviceMacId>******REMOVED*********</DeviceMacId> <MeterMacId>******REMOVED*********</MeterMacId> <TimeStamp>0x1cf80720</TimeStamp> <SummationDelivered>0x03f8f675</SummationDelivered> <SummationReceived>0x00000000</SummationReceived> <Multiplier>0x00000001</Multiplier> <Divisor>0x000003e8</Divisor> <DigitsRight>0x01</DigitsRight> <DigitsLeft>0x06</DigitsLeft> <SuppressLeadingZero>Y</SuppressLeadingZero></CurrentSummation><PriceCluster> <DeviceMacId>******REMOVED*********</DeviceMacId> <MeterMacId>******REMOVED*********</MeterMacId> <TimeStamp>0x1c9de9f0</TimeStamp> <StartTime>0xffffffff</StartTime> <Duration>0xffff</Duration> <Price>0x0000001f</Price> <Currency>0x0348</Currency> <TrailingDigits>0x02</TrailingDigits> <Tier>4</Tier> <RateLabel>Tier 4</RateLabel></PriceCluster><MessageCluster> <DeviceMacId>******REMOVED*********</DeviceMacId> <MeterMacId>******REMOVED*********</MeterMacId> <TimeStamp>0x00000000</TimeStamp> <StartTime>0x00000000</StartTime> <Duration>0x0000</Duration> <Id>0x00000000</Id> <ConfirmationRequired>N</ConfirmationRequired> <Confirmed>N</Confirmed> <Read>Y</Read> <Queue>active</Queue></MessageCluster><MeterInfo> <DeviceMacId>0xd8d5b90000000eda</DeviceMacId> <MeterMacId>0x0007810000226b9b</MeterMacId> <Enabled>Y</Enabled></MeterInfo><Threshold> <DeviceMacId>******REMOVED*********</DeviceMacId> <MeterMacId>******REMOVED*********</MeterMacId> <UpperDemand>5.000000</UpperDemand> <LowerDemand>-2.000000</LowerDemand></Threshold></Data>
Energy EAGLE Debug Parsing Device Data XML from "Rainforest Gateway".
Energy EAGLE Debug Parsed data:
<?xml version="1.0" ?>
<Data>
<NetworkInfo>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<Status>
Connected
</Status>
<CoordMacId>
******REMOVED*********
</CoordMacId>
<ExtPanId>
******REMOVED*********
</ExtPanId>
<ShortAddr>
0x2bc2
</ShortAddr>
<Channel>
25
</Channel>
<LinkStrength>
0x64
</LinkStrength>
</NetworkInfo>
<LocalCommand>
<Name>
get_device_data
</Name>
<MacId>
******REMOVED*********
</MacId>
</LocalCommand>
<DeviceInfo>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<InstallCode>
******REMOVED*********
</InstallCode>
<LinkKeyHigh>
******REMOVED*********
</LinkKeyHigh>
<LinkKeyLow>
******REMOVED*********
</LinkKeyLow>
<FWVersion>
1.4.48 (6952)
</FWVersion>
<HWVersion>
3.2.3
</HWVersion>
<Manufacturer>
Rainforest Automation, Inc.
</Manufacturer>
<ModelId>
Z109-EAGLE
</ModelId>
<DateCode>
20121201EC051052
</DateCode>
<ImageType>
0x1001
</ImageType>
</DeviceInfo>
<InstantaneousDemand>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
******REMOVED*********
</MeterMacId>
<TimeStamp>
0x1cf807b8
</TimeStamp>
<Demand>
0x000703
</Demand>
<Multiplier>
0x00000001
</Multiplier>
<Divisor>
0x000003e8
</Divisor>
<DigitsRight>
0x03
</DigitsRight>
<DigitsLeft>
0x06
</DigitsLeft>
<SuppressLeadingZero>
Y
</SuppressLeadingZero>
</InstantaneousDemand>
<CurrentSummation>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
******REMOVED*********
</MeterMacId>
<TimeStamp>
0x1cf80720
</TimeStamp>
<SummationDelivered>
0x03f8f675
</SummationDelivered>
<SummationReceived>
0x00000000
</SummationReceived>
<Multiplier>
0x00000001
</Multiplier>
<Divisor>
0x000003e8
</Divisor>
<DigitsRight>
0x01
</DigitsRight>
<DigitsLeft>
0x06
</DigitsLeft>
<SuppressLeadingZero>
Y
</SuppressLeadingZero>
</CurrentSummation>
<PriceCluster>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
******REMOVED*********
</MeterMacId>
<TimeStamp>
0x1c9de9f0
</TimeStamp>
<StartTime>
0xffffffff
</StartTime>
<Duration>
0xffff
</Duration>
<Price>
0x0000001f
</Price>
<Currency>
0x0348
</Currency>
<TrailingDigits>
0x02
</TrailingDigits>
<Tier>
4
</Tier>
<RateLabel>
Tier 4
</RateLabel>
</PriceCluster>
<MessageCluster>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
******REMOVED*********
</MeterMacId>
<TimeStamp>
0x00000000
</TimeStamp>
<StartTime>
0x00000000
</StartTime>
<Duration>
0x0000
</Duration>
<Id>
0x00000000
</Id>
<ConfirmationRequired>
N
</ConfirmationRequired>
<Confirmed>
N
</Confirmed>
<Read>
Y
</Read>
<Queue>
active
</Queue>
</MessageCluster>
<MeterInfo>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
******REMOVED*********
</MeterMacId>
<Enabled>
Y
</Enabled>
</MeterInfo>
<Threshold>
<DeviceMacId>
******REMOVED*********
</DeviceMacId>
<MeterMacId>
0x0007810000226b9b
</MeterMacId>
<UpperDemand>
5.000000
</UpperDemand>
<LowerDemand>
-2.000000
</LowerDemand>
</Threshold>
</Data>
Energy EAGLE Error Error in plugin execution runConcurrentThread:
Traceback (most recent call last):
File "plugin.py", line 662, in runConcurrentThread
File "plugin.py", line 1137, in eagleDeviceData
<type 'exceptions.IndexError'>: list index out of range
Energy EAGLE Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
Energy EAGLE Debug Starting runConcurrentThread.
Energy EAGLE Debug eagleDeviceData called. Device: Rainforest Gateway
Energy EAGLE Debug sendCommand called.
Energy EAGLE Debug connect called.
Energy EAGLE Debug Attempt # 1 to connect to EAGLE.
Energy EAGLE Debug Sending command
Re: Energy EAGLE Discussion
Hi. Thanks for the report.
Regrettably, I probably won't be able to fix this. It looks like Rainforest Automation has changed the XML output from pervious firmware versions, which is likely the cause of this error. Since we recently moved to an apartment which doesn't have a SmartMeter nearby, I no longer own an Eagle and I can't update the firmware to test out code changes in order to fix the bug.
So, this means you have 2 options, as I see it. You can either ask Rainforest Automation to restore your Eagle to the last firmware version (they should be able to do this remotely), or you can try to fix the Python code in the plugin yourself (or with the help of others).
Sorry I'm not able to fix this one for you.
Regards,
Nathan
Regrettably, I probably won't be able to fix this. It looks like Rainforest Automation has changed the XML output from pervious firmware versions, which is likely the cause of this error. Since we recently moved to an apartment which doesn't have a SmartMeter nearby, I no longer own an Eagle and I can't update the firmware to test out code changes in order to fix the bug.
So, this means you have 2 options, as I see it. You can either ask Rainforest Automation to restore your Eagle to the last firmware version (they should be able to do this remotely), or you can try to fix the Python code in the plugin yourself (or with the help of others).
Sorry I'm not able to fix this one for you.
Regards,
Nathan
Re: Energy EAGLE Discussion
Nathan,
OK, thanks. Any clues or suggestions from what you see in the log that might point me to the error?
OK, thanks. Any clues or suggestions from what you see in the log that might point me to the error?
Re: Energy EAGLE Discussion
Nathan,
Also if you have the old docs on the Rainforest XML interface, that would help me out. I can't find the "LocalCommand" XML interface specs anywhere on the rainforest site, only a newer API spec.
Also if you have the old docs on the Rainforest XML interface, that would help me out. I can't find the "LocalCommand" XML interface specs anywhere on the rainforest site, only a newer API spec.