Hallo, hat mir jemand ein funktionierendes Skript, mit welchem ich Überschussladen machen kann. Dies mit Tibber und dem Tibber Puls. Ziehl ist es bei Überschuss ein Ladegerät mit Shelly Plug + zu starten. Tibber ID und Token ist vorhanden. Alle gefundenen Vorlagen funktionieren nicht. Lege einmal ein Muster Skript unten bei- welches leider nicht schaltet.
// Konfigurationswerte
let tibberApiUrl = "https://api.tibber.com/v1-beta/gql"; // Tibber API URL
let tibberApiToken = "xxxxxx mein Token xxxxxx"; // Tibber API Token
let refreshInterval = 30; // Datenabrufintervall in Sekunden
let shellyPlugRelayIndex = 0; // Index des Relays im Shelly Plug (meist 0)
function getEnergyPriceQuery() {
return JSON.stringify({
query: "{\n viewer {\n homes {\n currentSubscription {\n priceInfo {\n current {\n total\n }\n }\n }\n }\n }\n}"
});
}
function controlSwitchBasedOnPrice() {
Shelly.call(
"HTTP.POST",
{
url: TIBBER_CONFIG.apiEndpoint,
method: "POST",
headers: {
"Authorization": "Bearer " + TIBBER_CONFIG.accessToken,
"Content-Type": "application/json"
},
body: getEnergyPriceQuery()
},
function (response) {
if (response.code === 200) {
let data = JSON.parse(response.body);
let power = data.viewer.home.power; // Aktuelle Leistung in Watt
handlePowerData(power);
} else {
print("Fehler beim Abrufen der Tibber-Daten:", response.code, response.body);
}
}
);
}
// Funktion zur Verarbeitung der Leistungsdaten
function handlePowerData(power) {
if (power < 0) {
// Überschüssiger Strom wird eingespeist
print("Einspeisung erkannt: ", power, "Watt - Shelly Plug einschalten.");
Shelly.call("Switch.Set", { id: shellyPlugRelayIndex, on: true });
} else {
// Kein Überschuss oder Verbrauch
print("Kein Überschuss erkannt: ", power, "Watt - Shelly Plug ausschalten.");
Shelly.call("Switch.Set", { id: shellyPlugRelayIndex, on: false });
}
}
// Regelmäßige Abfrage einrichten
Timer.set(refreshInterval * 1000, true, function () {
getTibberData();
});
print("Script gestartet. Abfrageintervall: ", refreshInterval, "Sekunden");