NEWS
Adapter "smartmeter"
-
Was kommt bei
node -v npm -v
?!
Ansonsten gehst Du im Admin auf "Custom Install" und wählst dort smartmeter aus der Liste aus. Das ist der einfachste Weg.
-
@bongo22@gmx.de … Any more feedback?
-
@ bahnuhr
> Sollte gehen, Hatte glaube schon jemand. Ansonsten kriegen wir das hin :-)
Das war glaube ich… :lol:
Geht super mit ioBroker, derzeit Abtastrate 20sek...
Werte so einiges an Statistiken an und "live" Anzeige in mediola
Wenn du fragen hast, mach einfach Meldung.
VG Torsten
-
@bongo22@gmx.de … Any more feedback? `
Ja geht jetzt perfekt. Konnte es über admin installieren.
Hat den Smartmeter sofort erkannt. Danke dir!
-
Ok, dann bereite ich das als offizielles Update vor
-
Hallo an alle,
das Projekt "Strom ablesen" ist abgeschlossen.
Klappt wunderbar.
Für alle die dies noch vor sich haben; anbei mal eine kleine Todo.
Danke an apollon und alle die mir Antwort gegeben haben.
1. Kauf Stromzähler
Wie oben geschrieben habe ich nun auch diesen bestellt:
https://www.amazon.de/gp/product/B01B8N … UTF8&psc=1
Gekauft habe ich über Ebay (und das 2 x; für normaler Zähler und Photovoltaik).
Nils von der Seite "volkszähler" hat nun nach 3 Wochen auch auf meine Mail geantwortet. Er will 25,- Euro/Stück + Versand.
Er ist billiger, kam aber leider zu spät (ich hatte die Dinger ja nun jetzt schon).
2. Raspi 3 gekauft.
image von der iobroker Seite drauf.
Raspi als slave eingerichtet.
Smartmeter installiert; Device zugewiesen, fertig.
3. Ein paar Variablen angelegt. Im einzelnen folgende:
// Stromzähler ------------------------------------------------------------------------------------------------------------- createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Stunde.Bezogen_Zähler_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Stunde.Eingespeist_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Stunde.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Stunde.Produziert_in_Wh', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Stunde.Produziert_Zähler_alt', 0, {type: 'number',name: 'Stunde',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Bezogen_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Bezogen_Zähler_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Eingespeist_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Produziert_in_Wh', 0, {type: 'number',name: 'Tag',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Tag.Produziert_Zähler_alt', 0, {type: 'number',name: 'Tag',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Bezogen_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Bezogen_Zähler_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Eingespeist_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Eingespeist_Zähler_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Produziert_in_Wh', 0, {type: 'number',name: 'Monat',min: 0,unit: 'Wh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Monat.Produziert_Zähler_alt', 0, {type: 'number',name: 'Monat',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Aktuell.Bezogen_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Aktuell.Eingespeist_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Aktuell.Produziert_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'W',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'}); createState('javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung', 0, {type: 'number',name: 'Aktuell',min: 0,unit: 'kWh',read: true,write: true,role: 'per Script'});
Sieht dann bei den Objekten so aus:
Dann noch ein kleines Script geschrieben:
// Werte aus smartmeter auslesen und in Variablen schreiben var java = 'javascript.0.Status.Stromzähler'; var Stand_bezogen = "smartmeter.1.1-0:1_8_0*255.value"; // Zähler links 180 var Stand_eingespeist = "smartmeter.1.1-0:2_8_0*255.value"; // Zähler links 280 var Stand_produziert = "smartmeter.0.1-0:2_8_0*255.value"; // Zähler rechts 280 var Gesamtwirkleistung = "smartmeter.1.1-0:16_7_0*255.value"; // Zähler links Wirkleistung aktuell var Tag = "hm-rega.0.29681"; var Monat = "hm-rega.0.29682"; schedule("59 * * * *", function () { // jede Stunde Werte schreiben var akt_bezogen = parseInt(getState(Stand_bezogen).val * 1000); // dann in Wh var alt_bezogen = parseInt(getState(java + '.Stunde.Bezogen_Zähler_alt').val * 1000); setState(java + '.Stunde.Bezogen_in_Wh', akt_bezogen - alt_bezogen); setState(java + '.Stunde.Bezogen_Zähler_alt', akt_bezogen / 1000); var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000); var alt_eingespeist = parseInt(getState(java + '.Stunde.Eingespeist_Zähler_alt').val * 1000); setState(java + '.Stunde.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist); setState(java + '.Stunde.Eingespeist_Zähler_alt', akt_eingespeist / 1000); var akt_prod = parseInt(getState(Stand_produziert).val * 1000); var alt_prod = parseInt(getState(java + '.Stunde.Produziert_Zähler_alt').val * 1000); setState(java + '.Stunde.Produziert_in_Wh', akt_prod - alt_prod); setState(java + '.Stunde.Produziert_Zähler_alt', akt_prod / 1000); }); schedule("59 23 * * *", function () { // jeden Tag Werte schreiben var akt_bezogen = parseInt(getState(Stand_bezogen).val * 1000); var alt_bezogen = parseInt(getState(java + '.Tag.Bezogen_Zähler_alt').val * 1000); setState(java + '.Tag.Bezogen_in_Wh', akt_bezogen - alt_bezogen); setState(java + '.Tag.Bezogen_Zähler_alt', akt_bezogen / 1000); var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000); var alt_eingespeist = parseInt(getState(java + '.Tag.Eingespeist_Zähler_alt').val * 1000); setState(java + '.Tag.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist); setState(java + '.Tag.Eingespeist_Zähler_alt', akt_eingespeist / 1000); var akt_prod = parseInt(getState(Stand_produziert).val * 1000); var alt_prod = parseInt(getState(java + '.Tag.Produziert_Zähler_alt').val * 1000); setState(java + '.Tag.Produziert_in_Wh', akt_prod - alt_prod); setState(java + '.Tag.Produziert_Zähler_alt', akt_prod / 1000); }); schedule("0 0 1 * *", function () { // jeden Monat Werte schreiben var akt_bezogen = parseInt(getState(Stand_bezogen).val* 1000); var alt_bezogen = parseInt(getState(java + '.Monat.Bezogen_Zähler_alt').val * 1000); setState(java + '.Monat.Bezogen_in_Wh', akt_bezogen - alt_bezogen); setState(java + '.Monat.Bezogen_Zähler_alt', akt_bezogen / 1000); var akt_eingespeist = parseInt(getState(Stand_eingespeist).val * 1000); var alt_eingespeist = parseInt(getState(java + '.Monat.Eingespeist_Zähler_alt').val * 1000); setState(java + '.Monat.Eingespeist_in_Wh', akt_eingespeist - alt_eingespeist); setState(java + '.Monat.Eingespeist_Zähler_alt', akt_eingespeist / 1000); var akt_prod = parseInt(getState(Stand_produziert).val * 1000); var alt_prod = parseInt(getState(java + '.Monat.Produziert_Zähler_alt').val * 1000); setState(java + '.Monat.Produziert_in_Wh', akt_prod - alt_prod); setState(java + '.Monat.Produziert_Zähler_alt', akt_prod / 1000); }); // aktuelle Werte ----------------------------------------------------------------------------------------------------------------------------------------------- on({id: Stand_bezogen, change: "ne"}, function(obj) { // Wert hat sich geändert. setState('javascript.0.Status.Stromzähler.Aktuell.Bezogen_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000)); setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang').val * 1000)); }); on({id: Stand_eingespeist, change: "ne"}, function(obj) { // Wert hat sich geändert. setState('javascript.0.Status.Stromzähler.Aktuell.Eingespeist_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000)); setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang').val * 1000)); }); on({id: Stand_produziert, change: "ne"}, function(obj) { // Wert hat sich geändert. setState('javascript.0.Status.Stromzähler.Aktuell.Produziert_in_W', parseInt(obj.newState.val * 1000) - parseInt(obj.oldState.val * 1000)); setState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W', parseInt(obj.newState.val * 1000) - parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang').val * 1000)); }); // Hochrechnung auf Jahr ----------------------------------------------------------------------------------------------------------------------------------------- schedule("*/5 * * * *", function () { var Tage = getState(Tag).val + (getState(Monat).val-1) * 30; setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Bezogen_in_W').val / Tage * 365 / 100) / 10); setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_in_W').val / Tage * 365 / 100) / 10); setState('javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung', parseInt(getState('javascript.0.Status.Stromzähler.Jahr.Produziert_in_W').val / Tage * 365 / 100) / 10); }); // am 31.12\. um 23:59 jeden Jahres Werte setzen ----------------------------------------------------------------------------------------------------------------------------------------- schedule("59 23 31 12 *", function () { // jeden Monat Werte schreiben setState('javascript.0.Status.Stromzähler.Jahr.Bezogen_Stand_Jahresanfang', parseInt(getState(Stand_bezogen).val)); setState('javascript.0.Status.Stromzähler.Jahr.Eingespeist_Stand_Jahresanfang', parseInt(getState(Stand_eingespeist).val)); setState('javascript.0.Status.Stromzähler.Jahr.Produziert_Stand_Jahresanfang', parseInt(getState(Stand_produziert).val)); });
Und eine VIS zusammengebastelt:
Nochmals Danke für die Hilfe; insbesondere apollon für den Adapter.
mfg
Dieter
-> nächstes Projekt - Wasserzähler
Mal schauen.
-
Hallo Dieter,
warum wertest du denn bei der Spülmaschine und Waschmaschine mA aus und nicht auch Watt, dann wäre das Ganze doch mehr konsistent.
bei mir sieht das so aus:
Mistwetter hierGruß
Rainer
-
Mistwetter hier `
Bei uns wars heute schöner!
Aber richtig perfekt waren die letzten Tage mit -10°C und ohne Wolken!
Enrico
-
weiß ich auch nicht so genau.
Habe schon immer bei Spülmaschine und Waschmaschine mA; muss mal überlegen vielleicht ändere ich das noch.
Kannst du mal deine view zur Verfügung stellen; deine widgets sehen super aus.
Kann man bestimmt davon was brauchen.
mfg
Dieter
-
Aber richtig perfekt waren die letzten Tage mit -10°C und ohne Wolken! `
korrekt! etwa so:
Aber ausgerechnet am kältesten Tag musste der Solarteur mit dem Dachdecker ran, weil die Kabel abgesoffen waren
und hier der View:
! ````
Hier ist nix - der war zu groß
kommt gleich als AnhangGruß Rainer
-
Bei uns waren die Nächte ja auch schön kalt, so bis zu -15°C, dass kann man an der Grafik erkennen, da geht die elektrische Fußbodenheizung (ca.1000W) immer wieder an. Dank Smartmeter-Adapter kann man alles schön auslesen!
Die Sollkurve des Sonnenstandes ist nicht so genau abgeglichen.
Enrico
-
-> nächstes Projekt - Wasserzähler
Mal schauen. `
Schau mal in ein paar Stunden ins "Tester-Forum" … da wären wir dann beim M-Bus Adapter der denke nachher noch neu kommt
-
Hallo zusammen,
ich habe meinen Smartmeter Adapter nun zum laufen bekommen. Leider bekomme ich aus meinem Zähler nur den aktuellen Zählerstand. Kann mir jemand behilflich sein, wie ich wenn ich alle 60s den Zählerstand abfrage mir daraus den Aktuellen Stromverbrauch errechnen kann? Ich habe leider mit Skripten keine Erfahrung oder Kenntnisse.
-
Berechnungen gibt es bereits einige hier im Forum.
Darf man fragen welchen Zähler du hast? Ich kann gar nicht glauben das nur der Zählerstand übermittelt wird.
-
Da die Suche bei mir aktuell nicht funktioniert und ich wie gesagt keine Ahnung habe wie Scripte aussehen müssen hatte ich hier gefragt. Die Sripte Sammlung für Verbrauch für Stunde, Tag, Woche läuft bei mir erfolgreich.
Ich habe einen Logarex Zähler. Die genaue Bezeichnung müsste ich zu Hause nochmal gucken. Aber laut Google Recherchen gibt er nur 1.8.0 aus.
1861_c50790a2-1248-4697-a27a-bd4021c87a09.png -
Hallo
Hätte da eine kurze Frage:
Ich bin mit meinem iobroker von meinem raspi auf einen Intel Nuc mit Windows 10 umgezogen, hat soweit alles prima geklappt. Beim smartmeter adapter hab ich aber ein kleines Problem bei dem ich gerade nicht weiter komme.
Udos IR Lesekopf hängt per USB am Nuc und läuft dort unter COM 3, wie wähle ich diesen im Adapter aus? Was gebe ich bei Name Serielles Gerät ein??
Hat jemand den Adapter in Windows laufen??
Bin für jede Hilfe Dankbar
Grüsse
Daniel
Gesendet von meinem LG-H870 mit Tapatalk
-
COM3 geht nicht?
-
Hi Ingo,
ich weiß das ich es schon mal gefragt hatte, kann aber den Beitrag nicht mehr finden :oops:
Im Admin 3.3.9 wird mir wenn ich hinter deinem Adapter das "?" Drücke folgendes angezeigt:
Da stimmt ja etwas nicht.
GitHub Issue bei dir oder im Admin machen?
Gruß
Mirko
-
Kommt bei den anderen adaptern die richtige Seite? Wenn nein dann admin, sonst bei mir
-
Ist mir bisher nur bei dem Smartmeter Adapter aufgefallen.
Ich öffne es mal bei dir
EDIT: ISSUE geöffnet: https://github.com/Apollon77/ioBroker.smartmeter/issues/11