NEWS
Adapter "smartmeter"
-
Vielen Dank, schau ich mal rein
-
Berechne den Wert des aktuellen Verbrauches des Hauses nun mit folgenden Skript, vielleicht kann es ja noch jemand gebrauchen:
// Aktuelle Stromaufnahme des Hauses berechnen // // 08.02.2018 Thorsten Walk // // PV.AC.Aktuell + Zähler.Haustrom.Aktuell = aktuelle Leistungsaufnahme Haus var debug = false; // jede min //var cron = '*/1 * * * *'; // alle n s var cron = '*/30 * * * * *'; var instanz = 'javascript.' + instance; var pfad = '.Strom.'; // Ausgabe Objekt var leistung_haus = instanz + pfad + 'Leistungsaufnahme_Haus'; // Objekt anlegen createState(leistung_haus, { type: 'number', name: 'Aktuelle Leistungsaufnahme Haus', desc: 'Aktuelle Leistungsaufnahme Haus', unit: "W", role: 'value' }); function berechne() { //var leistung_haus = instanz + pfad + 'Leistungsaufnahme_Haus'; // Aktuelle Leistung Zwei-Richtungs-Zähler var ac_haus = "smartmeter.1.1-0:16_7_0*255.value"; // Aktuelle Leistung von PV (AC-Aktuell) var ac_pv ="javascript.0.Strom.Photovoltaik.Leistung_aktuell"; // Daten in lokale var laden var get_ac_haus = getState(ac_haus).val; var get_ac_pv = getState(ac_pv).val; // Wert berechnen var get_leistung_haus = (get_ac_haus + get_ac_pv); setState(leistung_haus, get_leistung_haus, true); if(debug) log("Berechnung: " + "AC_HAUS " + get_ac_haus +" - AC_PV "+ get_ac_pv + " = " + get_leistung_haus); } // Skript ausführen schedule(cron, function () { berechne(); });
-
Bekomme seit dem Update folgende Meldung im Log:
smartmeter.0 2018-02-07 09:47:24.128 warn ERROR CLOSING SERIALPORT smartmeter.0 2018-02-07 09:47:24.126 warn No or too long answer from Serial Device after last request.
Hier die Einstelungen:
Habe einen Volkszähler dran, Adapter habe ich auch schon neu gestartet ohne Erfolg.
-
Bei mir ist der Sensor so konfiguriert:
-
Bekomme seit dem Update folgende Meldung im Log:
smartmeter.0 2018-02-07 09:47:24.128 warn ERROR CLOSING SERIALPORT smartmeter.0 2018-02-07 09:47:24.126 warn No or too long answer from Serial Device after last request.
Hier die Einstelungen:
filename="smart.PNG" index="0">~~
Habe einen Volkszähler dran, Adapter habe ich auch schon neu gestartet ohne Erfolg. `
Bitte mal prüfen ob sich eventuell der USB Port geändert hat.
Das kommt schon mal vor.
Gesendet von iPhone mit Tapatalk Pro
-
Hat sich erledigt, Cubie neu gestartet. Geht wieder
-
Habe das Skript von mir zur Berechnung der aktuellen Leistungsaufnahme des Haus oben im Post aktualisiert.
-
Ich berechne aktuell mit dem Skript von A200 die Tages,Wochen,Monats Werte. Allerdings habe ich da gerade festgestellt das die Berechnung des Tags nicht passt, siehe Screenshot:
Das Skript aktuell so aus:
! ````
// NEU - Zählerstand vom Anfang der akt. Stunde wird ermittelt
//
// http://forum.iobroker.net/viewtopic.php?p=51017#p51017
//
// In History Optioen "nur bei Änderung" aktivieren
! var debug = false;
! var cronH = "0 * * * *";
var cronD = "59 23 * * *";
var cronW = "0 0 * * 1";
var cronM = "0 0 1 * ";
! var instanz = 'javascript.' + instance;
var pfad = '.Strom.Statistik.Hausstrom-Bezug.';
! var idHAGTotH = instanz + pfad + 'tmp.Total-h';
var idHAGTotD = instanz + pfad + 'tmp.Total-d';
var idHAGTotW = instanz + pfad + 'tmp.Total-w';
var idHAGTotM = instanz + pfad + 'tmp.Total-m';
! var idHAGZielH = instanz + pfad + 'Stunde';
var idHAGZielD = instanz + pfad + 'Tag';
var idHAGZielW = instanz + pfad + 'Woche';
var idHAGZielM = instanz + pfad + 'Monat';
! / Berechnungsquelle /
var idHAGTotal = "smartmeter.1.1-0:1_8_0255.value";
! var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM];
var DPUnit = "kWh";
! DPArray.forEach(function(wert, index, array) {var DPType = wert.split("."); var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]); if(index > 3) DPUnit = "Wh"; createState(wert, 0, { name: DPDescr, desc: DPDescr, type: 'number', unit: DPUnit, role: 'value' });
});
! function haupt (VorId, ZielId) {
var nVorwert = getState(VorId).val; var nAktuell = getState(idHAGTotal).val; var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100; setState(ZielId, nDiff, true); if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff); var shandler = on ({id: ZielId, change: 'any'}, function(data) { setState(VorId, (nAktuell*10)/10, true); unsubscribe(shandler); });
}
! // regelmässige Wiederholungen
// -----------------------------------------------------------------------------
! schedule(cronH, function () {
haupt(idHAGTotH, idHAGZielH);
});
schedule(cronD, function () {
haupt(idHAGTotD, idHAGZielD);
});
schedule(cronW, function () {
haupt(idHAGTotW, idHAGZielW);
});
schedule(cronM, function () {
haupt(idHAGTotM, idHAGZielM);
});
! ````Hat jemand eine Idee warum das so ist (Der Wert bei den Objekten von Tag & Tag TMP entspricht dem Zählerstand?)
@Apollon: Danke für den Adapter, ist echt super einfach an die Stromdaten zukommen - spart man sich den Volkszähler
Was hälst du davon die Berechnung solchen Statistik Werten (Verbrauch Tag, Woche, Monat) direkt mit in den Adapter aufzunehmen?
-
@Apollon: Danke für den Adapter, ist echt super einfach an die Stromdaten zukommen - spart man sich den Volkszähler
Was hälst du davon die Berechnung solchen Statistik Werten (Verbrauch Tag, Woche, Monat) direkt mit in den Adapter aufzunehmen? `
Nicht viel :-)) Ich bin der Überzeugung das jeder Adapter seine Augabe haben sollte und je mehr man an Zusatzkram reinpackt desto unübersichtlicher wird es. Und am Ende ist diese Idee zu generisch um Sie an nur einen Adapter zu verschwenden.
Die Idee ist eher (steht auf meiner leider zu lange Ideenliste) ein generischer "Aggregator"-Adapter. Bei dem kann man Datenounkte wählen und sagen was man braucht, Min, max, Average, Differenzen, what ever und der legt dann die Ergebnisse in entsprechenden Datenpunkten ab.
-
Ok, der Ansatz klingt auch Sinnvoll! Bin gespannt
Heute war der Tageswert in der DB wieder ok, muss das einfach mal weiter beobachten:
Was mich ein bisschen "stört", ist die Tatsache das durch Neustart des SQL Adapters immer ein aktueller Wert eingetragen wird - so muss ich immer wieder (nachdem ich an den System gearbeitet habe) von Hand die Tabelle aufräumen um korrekte Tagesverbräuche angezeigt zu bekommen.
Jemand eine Idee wie man das umgehen kann?
-
Hallo allerseits,
habe das Problem etwas anders gelöst. Habe SML und EBUS in Tasmota eingebaut und sende die Daten über MQTT an iobroker.sonoff.
Da braucht man für SML nur ein Sonoff Basic und einen Phototransistor am REC pin mit 470 Ohm Pullup. (unter 10 Euro zusammen) Ein Gehäuse für den Transistor habe ich mit dem 3D Drucker gedruckt.
Für den EBUS braucht man natürlich einen Pegel Anpasser.
Habe allerdings nur meine Zähler EHZ (Zweirichtungszähler für Eigenverbrauchsanlage) und meinen Hager Einspeisezähler (nur Einspeisung), sowie den EBUS für Wolf Therme mit Solarkollektor angepasst, alles nur lesend.
Andere Zähler müsste man in Tasmota hinzufügen.
Wenn jemand Interesse hat kann ich gerne die Quellen posten.
Gruß
Gerhard
-
Helau und alaaf alle zusammen,
vielen Dank für diesen tollen Adapter, er funktioniert mit meinem Zweirichtungszähler EasyMeter Q3D einwandfrei und ich kann alle Register sauber auslesen:
-
Zählwerk Einspeisung (kWh)
-
Zählwert Bezug (kWh)
-
Momentanleistung über alle Phasen (Watt)
-
Momentanleistung für L1 / L2 / L3 (Watt)
Leider habe ich ein kleines Problem, vielleicht kann mir ja jemand von euch weiterhelfen:
Und zwar versuche ich, die Momentanwerte per history-Adapter aufzuzeichnen und dann per flot-Adapter in einem Chart grafisch darzustellen, zusammen mit der Momentanleistung meiner Photovoltaikanlage, welche ich bereits per Modbus-Adapter aus meinem Wechselrichter (SMA Sunny Boy 3600TL-21) auslese.
Mein Problem ist, dass die Werte aus dem History-Adapter bereits nach etwa 20 Minuten gelöscht werden. Klickt man auf das Zahnrädchen eines per history-Adapter aufgezeichneten Datenpunkts und dann auf den Reiter "Tabelle", dann sieht man dass sich die Tabelle nach einiger Zeit komplett leert und dann wieder von Neuem mit der Aufzeichnung begonnen wird.
Das gleiche Vorgehen mit dem Datenpunkt der Momentanleistung meines Wechselrichters aus dem Modbus-Adapter funktioniert problemlos, hier werden die History-Werte nicht schon nach kurzer Zeit geleert. Anbei noch ein Screenshot von dem Chart mit den abgeschnittenen Werten sowie die Einstellungen der Historie.
4205_flot-chart.png
4205_historie-smartmeter.png -
-
Die Einstellung deiner Konfiguration der History des Datenpunktes sorgt schon mal dafür, dass die Daten nach 1 Tag gelöscht werden.
Außerdem loggst du nur Änderungen. Wenn also der Wert gleich bleibt gibt es keine neuen.
Dass die Tabelle geleert wird liegt daran, dass dort nur ein Ausschnitt gezeigt wird (Im Admin v3 wirst du dieses konfigurieren können), in der Datenbank aber mehr Daten liegen sollten, sofern sie eben geänderte Werte sind, maximal aber nur 1 Tag.
Gruß
Rainer
-
Hallo dj.tifosi
Wie ist denn der Abfrageintervall im Smartmeter Adapter eingestellt?
Der Easymeter liefert alle zwei Sekunden neue Daten, benötigst du das so häufig?
Ich frage meinen alle 60 sec ab, dieser Intervall ist für mich ausreichend.
Ich hatte damals den Volkszähler mit alle zwei Sekunden neue Daten am laufen, damit starb die SD-Karte innerhalb von 6-8 Wochen.
Warum hast du im History-Adapter eine Entprellzeit von 10000 ms anstelle default 1000 ms eingestellt?
-
Kannst du das bitte beschreiben - vor allem an welcher Stelle in Tasmota hast du welchen Code eingefügt? Wie kannst du mit dem Sonoff Adapter darauf zugreifen? - verwendest du dazu bereits vorhandene Datenpunkte?
Dieses Konzept könnte man ja auch für andere Sachen verwenden die Tasmota nicht unterstützt werden (z.B. Füllstadssensor mittels Ultraschall)
LG Schubi
Hallo allerseits,
habe das Problem etwas anders gelöst. Habe SML und EBUS in Tasmota eingebaut und sende die Daten über MQTT an iobroker.sonoff.
Wenn jemand Interesse hat kann ich gerne die Quellen posten.
Gruß
Gerhard `
-
Hallo dj.tifosi
Wie ist denn der Abfrageintervall im Smartmeter Adapter eingestellt?
Der Easymeter liefert alle zwei Sekunden neue Daten, benötigst du das so häufig?
Ich frage meinen alle 60 sec ab, dieser Intervall ist für mich ausreichend.
Ich hatte damals den Volkszähler mit alle zwei Sekunden neue Daten am laufen, damit starb die SD-Karte innerhalb von 6-8 Wochen.
Warum hast du im History-Adapter eine Entprellzeit von 10000 ms anstelle default 1000 ms eingestellt? `
Hallo Röstkartoffel,
willkommen im Club, das gleiche ist mir mit der SD-Karte meines Raspbis auch passiert, als ich noch SBFspot und Volkszähler am laufen hatte und alle Daten in kurzen Intervallen in einer MySQL Datenbank speichern ließ.
Ich bin also mittlerweile auch davon geheilt, die Daten allzu lange aufzuheben und sie in sehr geringen Abständen zu speichern. Daher hebe ich sie erst einmal nur einen Tag lang auf. Das reicht um beurteilen zu können, wann man einen zusätzlichen Verbraucher anschalten könnte, um den Direktverbrauch an selbst erzeugtem PV-Strom zu optimieren.
Das Abfrageintervall im Smartmeter-Adapter habe ich auf 30 Sekunden gestellt, die Entprellzeit sollte ja in diesem Fall unerheblich sein, da sie kürzer ist als das Intervall, in dem neue Daten rein kommen (Abfrageintervall), oder hab ich hier falsch gedacht? Hab sie testweise auch mal auf 1000 ms herunter gesetzt, ändert aber leider nichts an meinem Problem, dass die Daten nach etwa 20 min aus der Historie verschwinden.
Die Einstellung deiner Konfiguration der History des Datenpunktes sorgt schon mal dafür, dass die Daten nach 1 Tag gelöscht werden.
Außerdem loggst du nur Änderungen. Wenn also der Wert gleich bleibt gibt es keine neuen.
Dass die Tabelle geleert wird liegt daran, dass dort nur ein Ausschnitt gezeigt wird (Im Admin v3 wirst du dieses konfigurieren können), in der Datenbank aber mehr Daten liegen sollten, sofern sie eben geänderte Werte sind, maximal aber nur 1 Tag.
Gruß
Rainer `
Hallo Homoran,
ja, das mit dem Löschen nach einem Tag ist schon ok, allerdings sollten die Daten wegen dieser Einstellung ja nicht bereits nach 20 min verschwinden. Und ja, ich logge bewusst nur Änderungen, um das Datenvolumen möglichst zu reduzieren, denn wenn der Wert gleich bleibt muss ja nicht alle 30 Sekunden gleich ein neuer Datensatz gespeichert werden, oder habe ich hier einen Denkfehler?
Der Ausschnitt, der mir im Admin gezeigt wird, ist beim Modbus-Adapter aber zeitlich rolliehrend, das heißt wenn ein neuer Wert hinzu kommt, verschwindet der aktuell älteste aus der Anzeige und so weiter. Beim Smartmeter-Adapter hingegen ist das Verhalten aber, dass zu einem bestimmten Zeitpunkt alle Werte aus der Anzeige verschwinden und ab dann wieder neue Werte gesammelt werden, bis sich der Rhythmus von neuem wiederholt. Das unterschiedliche Verhalten verstehe ich eben nicht.
Gibt es denn eine Möglichkeit, auf die Rohdaten der Datenbank zuzugreifen? Soweit ich weiß ist das ein Redis-Cache, oder? Gibt's da vielleicht einen Client, der bei iobroker mit dabei ist? Leider habe ich noch nicht das Admin V3 am Laufen, da ich darauf warte, bis es stable ist.
Dankeschön für eure Hilfe und viele Grüße,
Marco
-
Die files der History liegen als json files auf der Platte unter /opt/iobroker/iobroker-data. Der Redis (wenn du ihn nutzt) speichert nur den aktuellen State wert.
-
Hi,
mir ist was doofes passiert: Hab mir die Instanz gelöscht. Eigentlich kein Problem - hab ja die Einstellungen als Screenshot abgelegt.
Also neue Instanz installiert (V1.1.0), eingestellt, gestartet - keine Objekte? Hab ein bisschen rumgetüftelt und komm jetzt nicht mehr weiter.
Typ: Iskraemeco MT691
Im log steht das hier:
` > smartmeter.0 2018-02-11 21:30:23.645 warn No or too long answer from Serial Device after last request.smartmeter.0 2018-02-11 21:30:23.643 info Error: No or too long answer from Serial Device after last request. `
Kann mich nicht erinnern, dass ich das Problem schon mal hatte.
Setz ich den log auf Debug scheint die Kommunikation was zu machen:
` > smartmeter.0 2018-02-11 21:35:43.317 debug MATCH-RESULT SIGNON: "\u0000�\u001b\u001b\u001b\u001b\u0001\u0001\u0001\u0001v\u0005\u0001xw�b\u0000b\u0000rc\u0001\u0001v\u0001\u0001\u0005\u0000}}P\u000b\n\u0001ISK\u0000\u0004 \u0015\u000erb\u0001smartmeter.0 2018-02-11 21:35:43.316 debug CURRENT PROCESS STEP 0 IN CHECKMESSAGE
smartmeter.0 2018-02-11 21:35:43.316 debug ADD NEW DATA (3593 + NEW 13) `
Anbei auch noch meine Einstellungen - vielleicht ist der Fehler so offensichtlich, dass ich ihn nicht sehe?
Hab auch schon mal neu gebootet - hat auch nicht geholfen.
Danke !
Georg
1643_unbenannt.png -
Also an sich sieht es nach falschen kommunikationseinstellungen aus. Für d0 gelten an sich besondere Einstellungen und du hast nur die Baudrate fest gesetzt. Setze die anderen auch mal korrekt. States werden erst nach dem Empfang der ersten korrekten Nachricht angelegt.
-
ich hab mal 8/1/none versucht - hilft nicht