Erfahrung mit Tibber und Symcon?

Hallo Community,

ich bin komplett neu bei Symcon.
Habe im EFH KNX, Hue, Milight,MiBoxer,Zigbee, Alexa Echo,…

Habe eine Symcon Lizenz, da ich alles auf eine Oberfläche zusammenführen möchte und ich gelesen habe, dass Symcon alle Daten speichern kann.

Jetzt bin ich auf Tibber gestoßen und würde es auch gerne mit in Symcon verwenden.

Gibt es Erfahrungen/Module?

Vielen Dank.
Grüße Sebastian

Du kannst dieses Modul verwenden, [Modul] Energierechner, Tibber und aWattar Modul aWATTar verwenden die Börsenstrompreise, daraus kannst du alle möglichen Bedingungen zB. Script mit PHP ableiten.

Gruß Lutz

Nein, noch nicht, aber wir sollten mit Scripten anfangen.

Bei mir läuft ein Pulse, deshalb kann ich mit den vorhandenen Modulen, welche auf die Discovergy Zähler aufsetzten, nichts anfangen.

Hab mal was aus dem Forum zusammen getragen und bekomme zumindest bei Verwendung des richtigen Token Daten ausgelesen:

<?php

//$json = '{"query":"{viewer {name }}"}'; //lüppt so
//$json = '{"query":"{viewer {homes {address {address1 address2 address3 postalCode city country latitude longitude }}}}"}'; //lüppt so
//$json = '{"query":"{viewer {homes {address {address1 postalCode city country latitude longitude }}}}"}'; //lüppt so
//$json = '{"query":"{viewer {homes {timeZone address {address1 postalCode city }}}}"}';  //mag jetzt auch
//$json = '{"query":"{viewer {homes {owner {firstName lastName contactInfo {email mobile }}}}}"}'; //lüppt so

//$json = '{"query":"{viewer {homes {consumption(resolution: HOURLY, last: 12) {nodes {from to cost unitPrice unitPriceVAT consumption consumptionUnit }}}}}"}'; //lüppt jetzt
//$json = '{"query":"{viewer {homes {consumption (resolution: HOURLY, last: 10) {nodes {from to consumption consumptionUnit unitPrice unitPriceVAT }}}}}"}'; //lüppt so
//$json = '{"query":"{viewer {homes {consumption (resolution: HOURLY, last: 10) {nodes {from to unitPrice unitPriceVAT }}}}}"}'; //mag jetzt auch

//$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {current {total energy tax startsAt }}}}}}"}'; //lüppt so aktueller Preis
$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {today {total energy tax startsAt }}}}}}"}'; //lüppt so Preise heute !!
//$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {tomorrow {total energy tax startsAt }}}}}}"}'; //lüppt so Preise morgen !!
//$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {current {total energy tax startsAt }}}}}}"}';  //lüppt jetzt, wie Zeile 9

// Push Nachrichten
//$json = '{mutation {sendPushNotification (input: {title: "Notification through API" ,message: "Hello from me!!" ,screenToOpen: CONSUMPTION }){successful pushedToNumberOfDevices }}}'; //mag nicht

//Befehlsrefenz:
//https://developer.tibber.com/docs/reference

//$response = SendCommand($json);
//function SendCommand($json)
//{
    # Create a connection
$ch = curl_init('https://api.tibber.com/v1-beta/gql');
# Setting our options
curl_setopt($ch, CURLOPT_URL, 'https://api.tibber.com/v1-beta/gql');
curl_setopt($ch, CURLOPT_HTTPHEADER, 
   array('Content-Type: application/json',  
   'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')); // persönliches Token rein setzen
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

# Get the response
$response = curl_exec($ch);
curl_close($ch);
      
echo '<pre>';
echo $json.'<br>';
echo json_encode(json_decode($response), JSON_PRETTY_PRINT);

mfg

Bernd Jung

Multiplus II 48 V 5000 GX, 2x Pylontech US3000C, Inselbetrieb mit 160 bis 250 Watt

Hallo Bernd,

wie rufst du denn den aktuellen Stundenpreis endgültig ab?

Ein …

$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {current {total }}}}}}"}';

gibt dann dieses Ergebnis …

object(stdClass)#4 (1) {
  ["currentSubscription"]=>
  object(stdClass)#1 (2) {
    ["status"]=>
    string(7) "running"
    ["priceInfo"]=>
    object(stdClass)#3 (1) {
      ["current"]=>
      object(stdClass)#2 (1) {
        ["total"]=>
        float(0,4053)
      }
    }
  }
}

Aber wie bekomme ich damit den Wert "total" in ein Variable?
JSON ist irgendwie noch nicht so mein Ding ...

Danke u. viele Grüße,
Doc

edit: mit viel rumprobieren klappt es jetzt mit …

$current = $data->data->viewer->homes[0]->currentSubscription->priceInfo->current->total;

Vielen Dank Euch beiden.
Habe Tibber Pulse bestellt und werde das bald mal testen.

Habt ihr einen Tibber Tarif, oder „nur“ den Pulse?

Grüße

Also ich habe auch den Pulse (bestellt), da ich in Kombination mit PV, Akku und WP die günstigeren Stunden ausnutzen möchte.

Scripte zum Abrufen der Daten habe ich schon einige erstellt bzw. die hier angebotenen Scripte für mich abgeändert.

Falls wer z.B. die Stundenpreise von heute und morgen im Diagramm sehen möchte, hier mal ein Beispiel.
Die hellblaue Farbe sind immer die Preise von heute und die dunkelblaue die von morgen.
Der Rest sind Zusatzinfos nach belieben.

Mit der geloggten Variablen kann man dann auch schön weitere Werte berechnen, um den „günstigsten“ Zeitpunkt zu bestimmen.

Viele Grüße,
Doc

# tibber Chart heute und morgen erstellen
# Stundenpreise in geloggte Variable schreiben um Diagramm von heute und morgen zu erstellen
# Script Ausführung immer um 13:30 (ab 13:00 liegen neue Daten für morgen bei tibber vor)

# *** Konfiguration ***
$ID_Variable = 32725;                                                                       // ID der zu loggenden Variablen eintragen (leere Float-Variable, Cent)
$Token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';                                     // eigenen tibber Token einsetzen

$ID_Archive = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];

# =============== ab hier nichts mehr ändern! ================
$json = '{"query":"{viewer {homes {currentSubscription {priceInfo {tomorrow{ total energy tax startsAt }}}}}}"}';

# Create a connection
$ch = curl_init('https://api.tibber.com/v1-beta/gql');

# Setting options
curl_setopt($ch, CURLOPT_URL, 'https://api.tibber.com/v1-beta/gql');

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: Bearer '.$Token));

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

# Get the response and close connection
$response = curl_exec($ch);
curl_close($ch);

# decode data
$data = json_decode($response);

$prices_tomorrow = $data->data->viewer->homes[0]->currentSubscription->priceInfo->tomorrow;

# write data to variable
$zaehler = 0;
foreach($prices_tomorrow as $price)
{
    $timestamp = strtotime($price->startsAt);
    $total = ($price->total) * 100;                                                    // Wert in Ct

    AC_AddLoggedValues($ID_Archive, $ID_Variable, [
  [
    'TimeStamp' => strtotime('-2 days', $timestamp),
    'Value' => $total
    ]
]);
    $zaehler++;
}
IPS_Sleep(500);
AC_ReAggregateVariable($ID_Archive,$ID_Variable);

Erfahrung mit Tibber und Symcon? - #5 von seppiri?

Habt ihr einen Tibber Tarif?

Jo, seit dem 4.1.2023.

Vorsicht, wenn die im Nachhinein anfangen und rückwirkend schätzen!
(sieht man an den ausgegrauten Balken)

Dann sind alle Deine Bemühungen zeitlich den Akku zum optimalem Zeitpunkt zu laden hin;
die Verbräuche werden linearisiert und liegen dann schön verteilt auf den ganzen Tag.

Ist mir 2 mal passiert:

zum ersten weil der Pulse am ersten Tag noch nicht eingebunden war,

zum zweiten nachdem ich den aktuellen Zählerstand nach einigen Tagen erneut meldete.

mfg

Bernd

Welche ID muss ich denn da eintragen bzw. wie bekomme ich diese?

EDIT: Habs grad gefunden, da muss man ja gar nix anpassen, das ist die ID vom Archive Control Modul…

Grüße
BBK

Richtig,
du brauchst nur einen Tibber Token und eine Variable.
Da die Werte nur rückwirkend ins Archiv geschrieben werden können, hast du erst nach 2 Tagen den richtigen Chart mit dem morgigen Tag zur Verfügung.

Viele Grüße,
Doc

Das Script läuft soweit fehlerfrei durch, nur leider wird die Variable nicht beschrieben. Welche Ursache kann das haben? Beim Tiber Access Token hatte ich alle scopes ausgewählt…

Für die Tibber Darstellung im Diagramm frägst Du dann ein- und dieselbe Variable zweimal ab, mit jeweils einem Zeitversatz, richtig?

Danke und viele Grüße
Björn

Mach doch mal ein …

var_dump($prices_tomorrow);

am Ende hinzu führe das Script noch mal manuell aus.
Bekommst du da Daten?
Bist du überhaupt schon Tibber Kunde, das dein Token funktioniert?

Ja genau, einmal vorgestern (-2) für die Werte von heute, und gestern (-1) für die Werte von morgen.
Und keinen Knoten davon im Kopf kriegen beim darüber nachdenken … :wink:


Falls noch jemand mit dem Gedanken spielt Tibber mal auszuprobieren oder mal den Anbieter wechseln möchte oder muss, kann das gerne über diesen Link tun oder direkt mit dem Einladungscode g5suontq.
Wir bekommen dann beide je €50.- auf den Tibber Store gutgeschrieben und man kann diese Gutschrift nach der Anmeldung auch gleich wieder für den Tibber Puls verwenden und so direkt €50.- sparen.

Viele Grüße,
Doc

Also da bekomme ich korrekte Daten rein - warum die aber nicht in meine Variable geschrieben werden ist mir schleierhaft…

Und ja, ich bin schon Tibber Kunde…

Grüße
Björn

Na dann poste mal doch mal dein Script und auch die Ausgabe, wie soll man sonst helfen?

Das Logging in der Variable hast du aber aktiv, oder?

Nur um keine Missverständnisse zu haben, du schaust im Archive nach, ob da Daten drin sind, oder?
Die Variable selber ändert ihren Zeitstempel und Wert nämlich nicht …

1 „Gefällt mir“

Ups, ich hatte tatsächlich nur auf die Variable geschaut, weil die in Deinem Screenshot auch einen Wert anzeigt und bei mir auch nach dem manuellen Ausführen immer noch auf null stehengeblieben ist. Im Archiv (wieder was gelernt) stehen tatsächlich stündliche Werte drin…

Tut mir echt leid, dass ich euch mit so vielen Anfängerfragen nerve, ich hoffe das hat bald ein Ende…

Grüße
Björn

Ja prima das es jetzt doch klappt.
Die Variable selber wird eigentlich gar nicht benutzt, sondern nur die Daten im Archiv dahinter und dann die Werte in die Vergangenheit geschrieben, da das Archive keine Werte in der Zukunft unterstützt.
Die Variable darfst du ab jetzt aber dennoch nicht ändern, weil jede Änderung dann auch ins Archiv geschrieben wird und du das dann 2 Tage später im Diagramm sehen würdest.
Vielleicht lassen sich Daten auch irgendwann mal für die Zukunft ablegen.

Viele Grüße,
Doc

Und hier noch ein kleines Script für alle Tibberfreunde und Stromsparfüchse :smiley: um den aktuellen Preis und den aktuellen PreisLevel von Tibber zu bekommen.
Der PriceLevel gibt an, ob man sich bezogen auf ein 3 Tagesfenster gerade im günstigen Preissegment oder im teureren Preisbereich befindet. (in der Tibber App die orangen und grünen Linien).
Damit lassen sich dann ganz gut die Zeiten für Großverbraucher regeln …

$Token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$json = '{"query":"{viewer {homes {currentSubscription {status priceInfo {current {total level }}}}}}"}';

# Create a connection
$ch = curl_init('https://api.tibber.com/v1-beta/gql');

# Setting our options
curl_setopt($ch, CURLOPT_URL, 'https://api.tibber.com/v1-beta/gql');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: Bearer '.$Token));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

# Get the response
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response);
$price = $data->data->viewer->homes[0]->currentSubscription->priceInfo->current->total;
$level = $data->data->viewer->homes[0]->currentSubscription->priceInfo->current->level;

$Parent = IPS_GetParent($_IPS['SELF']);

if ($price != 0) {                              // wenn mal keine Daten gelesen werden konnten
    SetValueFloat($Parent, $price * 100);       // aktueller Strompreis in Ct.
    SetValueString(23232, $level);              // aktueller PriceLevel von tibber direkt
}

//var_dump($data);

Und nochmal der Hinweis, wenn jemand ggf. sich auch den Tibber Pulse bestellen möchte oder muss …
Die Kündigungsfrist bei Tibber liegt übrigens bei kundenfreudlichen 2 Wochen.


Falls noch jemand mit dem Gedanken spielt Tibber mal auszuprobieren oder mal den Anbieter wechseln möchte oder muss, kann das gerne über diesen Link tun oder direkt mit dem Einladungscode g5suontq.
Wir bekommen dann beide je €50.- auf den Tibber Store gutgeschrieben und man kann diese Gutschrift nach der Anmeldung auch gleich wieder für den Tibber Pulse verwenden und so direkt die €50.- sparen.

Viele Grüße,
Doc

Vielen Dank für deinScript läuft super.

Sind die Preise die brutto Endpreise inkl. alle Gebühren und Steuern ?

Ja,
die Preise sind die Endpreise.
Wenn du die Preise anders brauchst, kann man sie auch netto abrufen, aber das sollte im Privatbereich eher unbedeutend sein.
Für heute sieht der Strompreis ja echt super aus, geht runter auf 18 Cent.
Diese Woche soll auch der Pulse kommen, dann werde ich den mal mit dem Akku kombinieren.

Aber auch jetzt aktuell noch mit der monatlichen Abrechnung hat sich das für Februar auch so schon gelohnt. Der Strompreis lag hier deutlich unter dem der aktuell angebotenen Festverträge.
Ich logge da mein normales Verbrauchsverhalten bei Tibber und anderen Anbietern mit um mal den Unterschied zu sehen.

Viele Grüße,
Doc

Hi Doc,

vielen Dank für deine Mühe - hab deinen Einladungscode genutzt & morgen startet der Vertrag. Hast du mittlerweile den Pulse im Einsatz?

Ich habe ihn eben mit dem 50€ Bonus bestellt - jetzt geht’s Warten los. Im nächsten Schritt möchte ich versuchen die Live-Daten vom Tibber auszulesen (Watt & Zählerstände) - um dann im Weiteren Verlauf Verbraucher, E-Auto und Akku-Ladung dynamisch regeln zu können… also ähnliche Ziele wie du :slight_smile:

Viele Grüße,
Markus

Hallo Markus,
Die Gutscheinpromo ist angekommen, vielen Dank.
Meinen Pulse habe ich heute bekommen, liege aber aktuell flach und bin noch nicht zum Einbau gekommen.
Die Lieferzeit des Pulse ist aktuell übrigens ca. 4-5 Wochen.

Wenn ich den Pulse installiert habe schreibe ich hier meine Codeschnipsel wieder rein, hatte schon etwas damit gemacht, die API liefert ja viele Werte.

Viele Grüße,
Doc

1 „Gefällt mir“