特定の電力価格のしきい値に基づいてトリガーを許可するIFTTTアクションを作成したいと思います。この Xivelyフィード は、現在の価格を JSON、XML、またはCSV 形式で返すことができます。 XivelyのAPIリファレンスは here です。
単一の値を読み取り、これらの形式のいずれかに応じて対応できるようにするIFTTTチャネル/ツールはありますか?または、直接許可しない可能性のあるチャネルで使用するためにデータを変換するために使用できる回避策はありますか?
Normal Human's answer に基づいて、価格のしきい値に基づいてIFTTTを解析してメールで送信するGoogleシートスクリプトを作成しました。 Googleシートのセルは、回避策を使用しても、ImportXml()
またはその他の外部サイトのデータを1時間に1回以上更新しません。ただし、スクリプトを介して外部サイトにアクセスすることはできます。次のスクリプトを使用し、1分ごとに実行するトリガーを設定します。
Xivelyフィードをバイパスして、Comedで source に直接進みました。解析スクリプトを書いているからです。現時点では、IFTTTにはXML/CSV/JSON解析チャネルはありません。
しきい値(現在は5.0)を自由にカスタマイズします。コードを変更し、件名でハッシュタグを使用して、さまざまな価格のしきい値に基づいてIFTTTでより複雑なアクションを作成することもできます。たとえば、価格が5を超える場合、メールに#MEDIUM_PRICEのタグを付け、サーモスタットを78度に設定できます。 10を超える場合は、#HIGH_PRICEにタグ付けして、サーモスタットを82度に設定できます。
function myFunction() {
var lastPriceCell = getThisCell(1,1);
var lastPrice = lastPriceCell.getValue();
var currentPrice = getPrice();
var threshold = 5.0;
var notify = false;
if(currentPrice==null) {
currentPrice = lastPrice;
} else {
// Notify only if last price was below threshold and current price is above threshold
if(lastPrice <= threshold && currentPrice > threshold)
notify = true;
}
lastPriceCell.setValue(currentPrice);
if(notify) {
var text = "Price Alert!" + currentPrice;
MailApp.sendEmail("[email protected]", text, text);
}
}
function getThisCell(i, j) {
return SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(i,j);
}
function getPrice() {
var price = (/([\d\.]+)]]/).exec(getData());
if(price!=null)
return price[1];
}
function getData() {
return UrlFetchApp.fetch("https://rrtp.comed.com/rrtp/ServletFeed?type=pricechartfiveminute");
}
私のおすすめ:
ImportData (CSVの場合)、 ImportXML (XMLの場合)、または ImportFeed (RSS/Atomの場合)のいずれかでGoogleスプレッドシートを作成します。 トリック があり、Googleのデフォルト(それが何であれ)よりも頻繁に更新されます。
Google Appsスクリプト を使用して、特定のセルのデータを特定のしきい値と比較します。 1時間ごとに実行でき、必要に応じて メールの送信 を実行できます。
たとえば、次のスプレッドシートコマンドを使用して、前述のxivelyページをスクレイピングできます。
A1 =IMPORTXML("https://personal.xively.com/feeds/4014","//script[3]")
B1 =REGEXEXTRACT(A2,"current_value[^,]*")
C1 =VALUE(REGEXEXTRACT(B1,"[\d.]+"))
現在、セルC1には2.6が含まれています。