-
Autor
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");