Bitcoin koers en homeyscript naar flow

Ik ben een script aan het schrijven om BTC / crytokoersen in een flow te gaan gebruiken, nu heb ik de basis werkend, ik kan de koersen ontvangen via homescript, maar hoe zet ik deze waardes nu om in waardes die ik in een flow kan gebruiken ?? Thnx voor het meedenken.

// Functie om de informatie van de HomeyScript app op te halen
async function haalHomeyScriptInfoOp() {
  const res = await fetch('https://apps-api.athom.com/api/v1/app/com.athom.homeyscript');
  if (!res.ok) {
    throw new Error(res.statusText);
  }

  const body = await res.json();

  console.log(`${body.liveBuild.name.en} (${body.id}) v${body.liveVersion}`);

  // Print rating
  const stars = Array(Math.round(body.rating)).fill('⭐️').join('');
  console.log(`Rating: ${stars}`);
}

// Functie om de huidige prijs van Bitcoin op te halen in zowel EUR als USD, en de drempelwaarden te controleren
async function haalBitcoinPrijsOpEnControleerDrempels(drempelwaardeEUR, drempelwaardeUSD) {
  const response = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur,usd');
  if (!response.ok) {
    throw new Error(response.statusText);
  }

  const data = await response.json();
  const bitcoinPrijsEUR = data.bitcoin.eur;
  const bitcoinPrijsUSD = data.bitcoin.usd;
  console.log(`De huidige prijs van Bitcoin is €${bitcoinPrijsEUR} / $${bitcoinPrijsUSD}`);

  if (bitcoinPrijsEUR >= drempelwaardeEUR) {
    console.log(`Bitcoin heeft de drempelwaarde van €${drempelwaardeEUR} in euro's bereikt of overschreden!`);
  } else {
    console.log(`Bitcoin heeft de drempelwaarde van €${drempelwaardeEUR} in euro's nog niet bereikt.`);
  }

  if (bitcoinPrijsUSD >= drempelwaardeUSD) {
    console.log(`Bitcoin heeft de drempelwaarde van $${drempelwaardeUSD} in dollars bereikt of overschreden!`);
  } else {
    console.log(`Bitcoin heeft de drempelwaarde van $${drempelwaardeUSD} in dollars nog niet bereikt.`);
  }
}

// Voer beide functies uit
async function voerScriptUit() {
  await haalHomeyScriptInfoOp();
  await haalBitcoinPrijsOpEnControleerDrempels(58676, 69000); // Stel hier de gewenste drempelwaarden in voor EUR en USD
}

voerScriptUit();

Return een object met bijv een json object als string.
Die kun je vervolgens met standaard json logic kaarten, of flowkaarten van de JSON Handler app, uitlezen en als tags gebruiken.

Als het gelukt is wil ik graag meer weten.
:smile:

klinkt als abracadabra, ben geen programmeur, bovenstaande code met chatGTP gemaakt…

Hahaha, okay :slight_smile:

Dan probeer ik het ook even simpel te houden, hier een voorbeeld waarbij je alleen BTC in euro krijgt:

Voeg deze flowkaart toe:
image

Plaats daar de volgende code in:

  const response = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur,usd');
  if (!response.ok) {
    throw new Error(response.statusText);
  }

  const data = await response.json();
  const bitcoinPrijsEUR = data.bitcoin.eur;
  const bitcoinPrijsUSD = data.bitcoin.usd;
  
return bitcoinPrijsEUR;

Nu krijg je als Nummer-Tag de BTC-Euro:

image

1 Like

Yessssss thnx, elke 10 minuten word er nu gecheked of BTC al een nieuwe ATH heeft, via advanced flow. Thnx, en zodra dit zo is, (of tussen 1500-1600 uur ziezo) krijg ik een push melding voor zowel BTC € als $.

1 Like

Er is ook een mogelijkheid om dit zelfde script voor ethereum te gebruiken.
Ik had overal Bitcoin al vervangen voor Ethereum maar dit werkt helaas niet.

yes, kom ik morgen op terug, zal hem aanpassen, kan voor alle crypto

om etc en BTC te verwerken gebruik : https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=eur,usd’);

voor alleen eth : https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=eur,usd’);

het script word dan :

const response = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=eur,usd');
  if (!response.ok) {
    throw new Error(response.statusText);
  }

  const data = await response.json();
  const ethereumPrijsEUR = data.ethereum.eur;
  const ethereumPrijsUSD = data.ethereum.usd;
  
return ethereumPrijsEUR;

Super bedankt en het ophalen van de koers gaat nu goed.

Echter wil ik deze koers ook gebruiken om mijn etherium waarde te bepalen.

Ik had als test de waarde keer 2 gedaan, maar helaas blijft de uitkomst 0.

dien je de waarde dan ook niet vast te leggen in een variabele??

Volgens mij doe ik dat bij de stap rechts onderin.
Ethereum_Waarde wordt aangemaakt en gevuld met de soms 2*ethereum koers.

Daar gaat het ook ergens mis alleen snap ik niet waarom.

ipv haakjes (( )) accolades {{ }} gebruiken, helpt dat ?

1 Like

Super dat was het!!

1 Like