NEWS
Growatt Wechselrichter über Modbus auslesen - gelöst -
-
hab mal das Growatt Skript um die Amotisierung angepasst und kleine Änderungen eingebaut.
/* Skript berechnet Tagesersparnis / Ertrag , Gesamtersparnis / Ertrag sowie die Gesamtlaufzeit*/ // Anlegen der States für Vis createState('javascript.0.Messwerte.PV_Huette.Ertrag_Heute',{read: true,write: true,desc: "Errsparnis PV Anlage Heute",type: "number",def:0, unit: "EUR"}); createState('javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt',{read: true,write: true,desc: "Ersparnis PV Anlage Gesamt",type: "number",def:0, unit: "EUR"}); createState('javascript.0.Messwerte.PV_Huette.Laufzeit',{read: true,write: true,desc: "Betriebsstundenzähler",type: "number",def:0, unit: "h"}); createState('javascript.0.Messwerte.PV_Huette.Amotisierung',{read: true,write: true,desc: "Amotisierung Anschaffungskosten",type: "number",def:0, unit: "EUR"}); //Variablen var logging = false; // true = log aktivieren / false = log deaktivieren var Ersparnis = 0.31; //Strompreis für kw/h in € hier eintragen var Anschaffungskosten = 3,50; // hier Anschaffungskosten eintragen //Konstante const idErtragHeute = 'modbus.1.inputRegisters.30028Erzeugte_Leistung heute'/*Erzeugte Leistung heute*/; const idErtragGesamt = 'modbus.1.inputRegisters.30030Erzeugte_Leistung gesamt'/*Erzeugte Leistung gesamt*/; const idErsparnisHeute = 'javascript.0.Messwerte.PV_Huette.Ertrag_Heute'; const idErsparnisGesamt = 'javascript.0.Messwerte.PV_Huette.Ertrag_Gesamt'; const idLaufzeitLow = 'modbus.1.inputRegisters.30032Laufzeit_low'/*Laufzeit gesamt*/; const idLaufzeitHigh = 'modbus.1.inputRegisters.30031Laufzeit_high'/*Laufzeit gesamt*/; const idLaufzeit = 'javascript.0.Messwerte.PV_Huette.Laufzeit'; const idRestkosten = 'javascript.0.Messwerte.PV_Huette.Amotisierung'; // Funktion Restkosten Berechnen function BerechnenRestkosten() { var Ersparnis = getState(idErsparnisGesamt).val; if(Ersparnis>0){ setState(idRestkosten,Anschaffungskosten-Ersparnis,true); if(logging)log("Restkosten Wechselrichter berechnet"); } } //Funktion Laufzeit berechnen function BerechnenLaufzeit() { var High = getState(idLaufzeitHigh).val; var Low = getState(idLaufzeitLow).val; if(Low>0 || High>0){ setState(idLaufzeit,High*18.203+Low/3600,true) if(logging)log("Gesamtlaufzeit Wechselrichter berechnet"); } } //Funktion Ertrag in € heute berechnen function BerechnenHeute() { var ErtragHeute = getState(idErtragHeute).val; if(ErtragHeute>0){ setState(idErsparnisHeute,ErtragHeute*Ersparnis,true); if(logging)log("Tagesstrom Ertrag berechnet"); } } // Funktion Ertrag in € Gesamt berechnen function BerechnenTotal(){ var ErtragGesamt = getState(idErtragGesamt).val; if(ErtragGesamt>0){ setState(idErsparnisGesamt,ErtragGesamt*Ersparnis,true); if(logging)log(" Gesamtstrom Ertrag berechnet "); } } // Scriptstart BerechnenHeute(); BerechnenTotal(); BerechnenLaufzeit(); BerechnenRestkosten(); // Trigger Berechnen Ertrag in € heute on(idErtragHeute, function(obj) { if(logging)log(" Trigger Ertrag Heute Ersparnis berchnen "); BerechnenHeute(); }); // Trigger Berechnen Ertrag in € Gesamt und Amotisierung on(idErtragGesamt, function(obj) { if(logging)log(" Trigger Ertrag Gesamt Ersparnis berchnen "); BerechnenTotal(); BerechnenRestkosten(); }); // Trigger High zum Berechnen Laufzeit gesamt on(idLaufzeitHigh, function(obj) { if(logging)log(" Trigger High Laufzeit berchnen "); BerechnenLaufzeit(); }); // Trigger Low zum Berechnen Laufzeit gesamt on(idLaufzeitLow, function(obj) { if(logging)log(" Trigger Low Laufzeit berchnen "); BerechnenLaufzeit(); });
-
ja die Steuerung per http Request funktioniert. Wenn ich die Position jetzt manuell verändere, wird bei Neustart des Scripts der erste Request ausgeführt. Eigentlich müsste ja der zweite Request ausgeführt werden....
Großen Danke im Voraus...
-
Dein Script werde ich mal an meine Datenpunkte anpassen und ins VIS einfügen. So langsam ist mein Bildschirm aber voll. Vor einem Jahr wollte ich eigentlich nur meinen Torantrieb smart machen....
-
@Wiednitz Also wills bei Neustart prüfen welcher Astro aktiv ist? Kein Ding hab ich im Bad mit der Ambientbeleuchtung auch so gemacht...
-
Nein das Script soll immer laufen und täglich bei Tag PTZ Position 1 (0) einnehmen und bei Nacht Position 6 (5) .
Mit dem Neustart wollte ich nur den Request überprüfen und ob das Script überhaupt etwas bewirkt....
-
Hab jetzt mal die Rquest vertauscht. Der erste Request wird ausgeführt obwohl jetzt der zweite dran wäre !? Oder hab ich hier einen Denkfehler !?
-
ich hab mit dem bildchen schieben nix am hut....ich programiere dir nen javascript...
-
-
@Wiednitz
hier mal der 1. schuss....schau mal ob ich die links richtig zugeordnet habe.siehe unten
-
//Skript Kameraposition anfahren nach Astro smartboart 01.12.2019 V0.03 // states für Vis Kamerapos zur Kontrolle der Skriptlogig und als Merker zum speichern der Tageszeit // Beim Anlegen der States Tag oder Nacht entsprechend der Tageszeit gleich festlegen... / def: true oder false createState ('javascript.0.Kamera.Tagesposition', {def: 'false', type: 'boolean', name: 'Kameraposition Tag'}); createState ('javascript.0.Kamera.Nachtposition', {def: 'true', type: 'boolean', name: 'Kameraposition Nacht'}); // Konstante const idPosTag = 'javascript.0.Kamera.Tagesposition'; const idPosNacht = 'javascript.0.Kamera.Nachtposition'; // Variable logging aktivieren deaktivieren var logging = true; // Funktionslogik Sonnenaufgang function Sonnenaufgang(){ request('http://192.168.10.68/cgi-bin/hi3510/preset.cgi?-act=goto&-number=0?usr=xxxxx&pwd=xxxx'), function (error, response){ if (logging)log('Kamera angesteuert für Position Sonnenaufgang '); setState(idPosTag,true,true); setState(idPosNacht,false,true); } } // Funktionslogik Sonnenuntergang function Sonnenuntergang(){ request('http://192.168.10.68/cgi-bin/hi3510/preset.cgi?-act=goto&-number=5?usr=xxxxxx&pwd=xxxxx'), function (error, response){ if (logging)log('Kamera angesteuert für Position Sonnenuntergang '); setState(idPosTag,false,true); setState(idPosNacht,true,true); } } // Skriptstart Scriptstart(); // Funktion Skriptstart function Scriptstart(){ var Tag = getState(idPosTag); var Nacht = getState(idPosNacht); if (Tag) { Sonnenaufgang(); if (logging)log('Skriptstart Tagprogramm'); }else{ Sonnenuntergang(); if (logging)log('Skriptstart Nachtprogramm'); } } // Trigger Sonnenaufgang schedule({astro: "sunrise"}, function () {//Sonnenaufgang Sonnenaufgang(); }); // Trigger Sonnenuntergang schedule({astro: "sunset"}, function () {//Sonnenuntergang Sonnenuntergang(); });
-
@Wiednitz was hast da für ne Kamera? kann ich ja auch für meine benutzen...Steuer meine aber über das onvif Protokoll...Mal probieren ob das bei mir auch tut...Hab untere anderem ne Foscam FI9928P - Full HD Outdoor Kamera
-
Großes Danke für das Script, läuft erstmal. Wenn ich die Kamera jetzt wo anders positioniere, dann nimmt sie die korrekte Position bei Start des Scriptes ein. Mal sehen ob morgen Früh dann die Position 1(0) eingenommen wird.
Ich habe eine Wanscam HW0045. Soll in etwa baugleich mit Foscam 9928 sein, das "hi3510" in meiner Request URL steht für den Chip, der in den Kameras verbaut ist. Das ganze Cgi Zeug war bei meiner Cam nicht dokumentiert, alles durch probieren herausgefunden. Ebenfalls funktionieren bei mir auch Cgi Kommandos von FDT, hier im speziellen "setimageattr" und "setldcattr". Letzteres vermindert mit Wert 511 den Fischaugeneffekt.
Bei Angabe der PTZ mit CGI muss immer -1 angegeben werden. Ich speichere zum Beispiel in tinycam PTZ 1, muss aber bei CGI Request 0 angeben. -
@Wiednitz hab vor parr minuten noch was geändert....schau malob du die aktuelle hast
-
ja hab version 2 genommen
-
@Wiednitz ja wenn die v0.02 im skript steht ist aktuell..
Nachtrag..V0.03 noch die beiden Variablen Tag / Nacht oben entfernt und die Trigger nach unten gepackt...
-
-
hier gehts mit Foscam weiter.... wegen off Topic
https://forum.iobroker.net/topic/27255/ipcam-fi9928p-position-nach-astro-http-request -
@Wiednitz
sag mal um auf Growatt zurück zu kommen. Wo liegt denn gerade dein Ertrag in diesen Tagen?
Oder hast mal ne Verlaufskurve Leistung für mich? Würde gerne mal vergleichen, was meine absolut ungünstig positionierten Panels im Vergleich zu gut ausgerichteten so machen. Aktuell habe ich nur 3 Strings aktiv, weil mir noch 2 Sperrdioden fehlen, welche im Zulauf sind... -
Kannst Du damit was anfangen ? Bei dem trüben Wetter ist der Ertrag pro Tag auch meist bei 0,? kwh.
November
Oktober
-
Hi
Mal ne Frage:
Kann ich mit einen RS232 -> USB Adapter schon die Daten empfangen und in iobroker verwenden? Falls ja, was muss ich wo einstelle bzw. installieren?
Danke