Hi,
als erstes einmal vielen Dank für das spitzenmäßige Modul.
Soeben innerhalb von 5 Minuten zum Laufen gebracht, lüppt wie am Schnürchen, aber ich habe ein Problem:
Der eingesetzte Zähler ist ein
EBZ DD3 2R06 ETA ODZ1
liefert die Daten im alten Format, leider nicht die Ströme der einzelnen Phasen, nein, er sendet
OBIS Werte, hier die einzelnen Momentanleistungen 36.7.0, 56.7.0 und 76.7.0 !
Die kennt die Tibber API aber nicht, oder?
Du könntest unter Tibber Developer deinen token eintragen und dann rechts beim button „load an example“ dir die realtimesubscription anschauen (nicht vergessen links auf den play button drücken)… ich denke aber nicht dass das die cloud hergibt.
Ggf könntest du versuchen die lokale bridge direkt anzuzapfen und das obis modul zu nutzen… dazu gibt es einen extra thread.
Also ein Problem mit der API von Tibber, welche den hoffentlich gelieferten Leistungswert der einzelnen Phase nicht übernimmt; denn der Netzbetreiber hatte zugesichert dass dieser die o.g. Werte zur Verfügung stellt.
Mein Problem: der Zähler ist 40 km entfernt, also kurz mal einen Volkszähler Kopf rauf und sehen was kommt geht nicht.
Muss wohl mal schauen wie ich schnell an die Daten der Pulse Bridge komme.
mfg
Bernd Jung
BTW: hab gegen 19 Uhr ne Anfrage an Tibber gestellt ob sie diese OBIS mit aufnehmen können; denn die möglichen Stromwerte der einzelnen Phasen sind ja im Grunde genommen nicht aussagefähig wenn man keine Ahnung hat wo die jeweiligen Werte der Phasenverschiebung liegen. Da halte ich saubere Leistungswerte jeder Phase für wesentlich eleganter.
Im API Explorer sind bei den Examples nicht alle Möglichkeiten auf der linken Seite aufgelistet!
daher liefert die Antwort auf der rechten Seite natürlich nur die links angefragten Werte.
Also ergänzt um:
powerFactor
voltagePhase1
voltagePhase2
voltagePhase3
currentL1
currentL2
currentL3
und schon kommen auch hier einige Werte:
„timestamp“: „2023-11-07T23:33:04.000+01:00“,
„power“: 598,
„accumulatedConsumption“: 8.810327,
„accumulatedCost“: null,
„currency“: null,
„minPower“: 201,
„averagePower“: 374,
„maxPower“: 2573,
„powerFactor“: null,
„voltagePhase1“: 235.9,
„voltagePhase2“: 234.5,
„voltagePhase3“: 237.2,
„currentL1“: null,
„currentL2“: null,
„currentL3“: null
überall wo als Ergebnis: null erscheint bekommt Tibber keine Werte vom Pulse.
Der Versuch powerL1 als zusätzlichen Abfragewert zu setzen wird bereits beim Aufruf mit einer Fehlermeldung belohnt.
Schön beim Versuch etwas einzugeben ist die zusätzliche Einblendung von Befehlen; leider ist da nicht mehr ausser power.
Also ran an die Daten der Pulse Bridge voller Hoffnung das der Tibber Progger schneller sein könnte.
ich habe die Version 1.4 im Beta-Kanal. Diese wird, wenn keine Fehler auftreten, als Release Candidate veröffentlicht.
README wurde angepaßt und vervollständigt
Die zwei Funktionen GetHomesData() und CheckRealtimeEnabled() waren „normal“ nutzbare Funktionen, machen aber außerhalb des Moduls keinen Sinn und sind nun private funktionen
Bis vor dem letzten Update stieg bei mir das Realtime-Modul immer um 12,52 Uhr aus.
Wohlbemerkt bei 2 unterschiedlichen Tibber Accounts,
einer von beiden wurde mit 2 unterschiedlichen IP WAN Adressen doppelt abgefragt;
immer exakt derselbe Zeitpunkt.
Jetzt nach dem letztem Update dachte ich: Klasse, Fehler beseitigt!
Bis jetzt um 14,41 Uhr, keine Aktualisierung mehr.
Rein in die Management Console des ersten Rechners auf welchem beide laufen:
Beim ersten tibber Account Schnittstelle schliessen → speichern → öffnen → speichern: und schon trudeln wieder Daten ein!
Diese Routine half auch vorher, war aber täglich um exakt dieselbe Uhrzeit nötig.
Zweiter Account auf erstem Rechner: keine Daten, same Procedure, lüppt!
Rüber in die Console des entfernten Rechner via VPN:
Huch, ist von alleine wieder losgelaufen,
vermutlich durch die Aktion auf dem ersten Rechner.
Das verwirrt mich gerade… Also du hast zwei Accounts, ein Account benutzt zwei unterschiedliche Wan Adressen?
Es gibt zwei Limitierungen…
max. 100 Anfragen innerhalb von 5 min. pro (externe) IP Adresse
max 2 gleichzeitige Websocketverbindungen pro Account
das hört sich tatsächlich so an, als würde er in ein limit laufen oder aus einem anderem Grund die Verbindung verlieren.
Das ist komisch. Der Rechner wird ja eine andere IP und einen anderen Account haben, oder nicht?
Ich habe so ein Problem nicht, bei mir verliert er durch das testen die Verbindung und baut sie nicht mehr auf.
Das wollte ich noch robuster machen, auch das wenn einige Zeit lang keine Daten kommen, soll der Websocket automatisch geschlossen und wieder neu geöffnet werden (was dein Problem zum Teil lösen könnte).
der zweite Rechner (natürlich entfernt und anderer Provider) nutzt denselben Account, welcher als Nr.2 des ersten Rechners gesetzt ist.
Heute um die von mir genannte Zeit keinen Stillstand bei Deinen Daten gehabt?,
habe irgend wie das Gefühl in der Magengegend dass Tibber da ein unerfreuliches Script am Laufen hat.
Hilft es evtl. wenn in das Modul ein kurzes Neuverbinden alle 48 Stunden eingebunden wird?
hab mal einen kleinen Fix hochgeladen, @berndj1 probiere mal ob das dein Problem löst, wenn nicht, habe ich noch eine andere idee, aber probieren wir erstmal die hier.
Hab das Modul auch auf Anhieb erfolgreich einsetzen können. Auch wenn ich erst zum 01.01.24 starten kann, bekomme ich trotzdem schon die vollen Daten, weil ich ja schon als Kunde registriert bin.
Ich habe mir noch ein paar Daten aus dem „Preis Array“ per Skript extrahiert, damit ich diese als Variablen habe und ggf. weiterverwenden kann.
Falls es jemand braucht oder man integriert es in das Modul:
<?php
//"Preis Array" aus dem Modul Tibber wird eingelesen
$Array=json_decode(getvalue(43671), true);
// Initialisiere der Variablen
$minPrice = PHP_INT_MAX;
$minPriceIdent = '';
$maxPrice = PHP_INT_MIN;
$maxPriceIdent = '';
$levelCount = array('VERY_CHEAP'=>0,'CHEAP'=>0,'NORMAL'=>0,'EXPENSIVE'=>0,'VERY_EXPENSIVE'=>0);
//durchlaufe das Array, um den geringste und höchsten Preis inkl. Stunde (Ident) für morgen zu finden
for ($i = 24; $i <= 47; $i++)
{
$currentPrice = $Array[$i]['Price'];
//geringster Preis
if ($currentPrice < $minPrice)
{
$minPrice = $currentPrice;
$minPriceIdent = $Array[$i]['Ident'];
}
//höchster Preis
if ($currentPrice > $maxPrice)
{
$maxPrice = $currentPrice;
$maxPriceIdent = $Array[$i]['Ident'];
}
}
//durchlaufe das Array, um die Anzahl der verschiedenen Preislevel für morgen zu ermitteln
for ($i = 24; $i <= 47; $i++)
{
$level = $Array[$i]['Level'];
$levelCount[$level]++;
}
//gib den geringsten und höchsten Preis aus
SetValueFloat(43781, $minPrice);
$minTime=intval(substr($minPriceIdent, 9)); //Uhrzeit (Stunde), in welcher der niedrigste Preis gilt
SetValueInteger(20177, $minTime);
SetValueFloat(56419, $maxPrice);
$maxTime=intval(substr($maxPriceIdent, 9)); //Uhrzeit (Stunde), in welcher der hächste Preis gilt
SetValueInteger(58619, $maxTime);
$Spanne=$maxPrice-$minPrice; //Preisspanne zwischen min und max
SetValueFloat(26593, $Spanne);
//Zuordnung der Preislevel zu Variablen
//Anzahl der Preislevel am Folgetag
SetValueInteger(50577, $levelCount['VERY_CHEAP']);
SetValueInteger(37736, $levelCount['CHEAP']);
SetValueInteger(55914, $levelCount['NORMAL']);
SetValueInteger(49177, $levelCount['EXPENSIVE']);
SetValueInteger(19442, $levelCount['VERY_EXPENSIVE']);
war gestern vor Ort und hab als erstes mal dieses Problem:
durch Einsatz dieses:
gelöst.
Ich bin zwar Informatik-Betriebswirt, aber das Modul war dann doch eine Herausforderung um es zum Leben zu erwecken.
Fazit: dort bekomme ich jetzt alle 3 Leistungswerte der jeweiligen Phasen!
Tibber selbst antwortete auf den Wunsch diese 3 Werte in die API mit aufzunehmen sehr schwammig, evtl. hilft es ja wenn ich nicht der einzige wäre, deshalb hier als Hilfestellung meine Antwort an tibber:
Hallo xxx,
Ihr macht Werbung mit dem Hinweis: Wir helfen euch Energie einzusparen und
diese 3 sehr wichtigen Werte,
welcher dieser Zähler glücklicherweise liefert, werden dem Kunden vorenthalten?
Die API unterstützt die einzelnen Ströme der 3 Phasen (bei wenigen Zählern), liefert aber leider nicht die zwingend notwendigen Daten zur Phasenverschiebung, welche man benötigen würde um die Leistung selber zu berechnen.
Ärgerlich ist es bei Kunden welche einen Zähler mit 3 getrennten Rücklaufsperren besitzen und eine der sogenannten PV-Balkonanlagen nutzen;
aber keine Ahnung haben auf welcher Phase ihre Balkonanlage sitzt.
Da kann es dann schon mal passieren dass man 600 Watt auf L1 einspeist, 250 an L2 und 400 Watt an L3 verbraucht und einem dann 650 Watt berechnet werden.
Ich würde mir von euch eine Liste wünschen, ähnlich der „White“ Liste der kompatiblen Zähler zum Pulse auf welcher detailliert die von tibber zur Verfügung gestellten Werte der API gelistet wären.
Anderes Thema: Probleme mit Logarex Zählern, kurzer Tip an eure Entwicklungsabteilung:
die Firma ELV in Leer empfiehlt die Modifikation Ihrer IR Leseköpfe aus folgendem Grund:
das IR Signal ist derart niedrig; da muss der Verstärkungsfaktor im Empfangsteil erhöht werden.
Googeln hilft.
mfg
Nun zum Problem mit dem Abbrechen bei dem Livedatenmodul.
Fehlermeldung:
Konnte Konfigurationsform nicht laden
Instanz hat diese Funktion nicht implementiert (Code: -32603)
Mir ist aufgefallen, wenn die Verbindung ausfiel, bekam ich auf der Instanz (nicht in der IO Instanz) keinen Zugriff mehr auf den Token und die weitere Auswahl, evtl. hilft es ja.
Zum aktuellem Stand bei mir:
die Spielereien auf einem System beide Tibberaccounte abzufragen habe ich verworfen; die laufen beide getrennt vor sich hin.
Erstaunlicherweise sind beide trotzdem gestern zur selben Zeit ausgefallen, werde sie jetzt erneut aufsetzen und dann melde ich mich dazu.
neues Problem beim erstellen einer zweiten Instanz, Fehlermeldung:
Konnte Instanz nicht erstellen
Warning: Das Registrieren von einer ‚Property‘ ist nur in der Create-Methode möglich. in /var/lib/symcon/modules/.store/de.treasy79.tibber/Tibber_Realtime/module.php on line 38
(Code: -32603)
Aber seit wann rechnet ein Versorger einzelne Phasen ab? Die Rücklaufsperre soll nur dafür sorgen das der Zähler nicht rückwärts läuft. In Deinem Beispiel würde nur 50 Watt berechnet da über die Gesamtleistung abgerechnet wird.
[quote=„berndj1, post:27, topic:135112“]
Mir ist aufgefallen, wenn die Verbindung ausfiel, bekam ich auf der Instanz (nicht in der IO Instanz) keinen Zugriff mehr auf den Token und die weitere Auswahl, evtl. hilft es ja.[/quote]
Ich habe den Websocket mal ein paar tage auf meinem Testsystem laufen lassen, nebenher auch einige MB DEBUG erzeugt. Das Teil lief stabil durch.
Gestern habe ich wieder auf mein livesystem geschaltet (natürlich ohne debug) da ist er mir auch irgendwann ausgestiegen