Hauptmenü

Solarlog 200

Begonnen von ma7ja5, 30 Juni 2013, 19:38:38

Vorheriges Thema - Nächstes Thema

ma7ja5

Hallo,

anbei ein Modul für den Solarlog 200.
Je nach Wechselrichterkonfiguration muss die REGEXP angepasst werden.
Das Modul fragt die Javascript-Konstanten mittels http get ab und wertet sie aus.

Gruß
Manfred

Tobias

sollte zumindest ins fhem Repository ins Contrib Verzeichnis
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Olga123

Hallo Manfred,

aber wie sieht der "define" aus bzw. hast du ein kleines Bsp. mit Plot für mich?

Gruss

FHEM anfänger!

ma7ja5

Hallo,
siehe unten das Define und im Anhang der Plot.
-----------------------------------------------------------------
define PV Solarlog 192.168.xxx.yyy 300
attr PV delay 300
attr PV room Photovoltaik

define FileLog_PV FileLog ./log/PV-%Y.log PV:*
attr FileLog_PV room Unsorted

define wl_FileLog_PV_1 weblink fileplot FileLog_PV:wl_FileLog_PV_1:CURRENT
attr wl_FileLog_PV_1 room Photovoltaik
-------------------------------------------------------------------

Olga123

Super Danke,

kannst du noch schnell die Plot Datei "wl_FileLog_PV_1" anhängen?

Gruss und Danke

Mark

ma7ja5

# Created by FHEMWEB, 2013-07-10 20:08:13
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Photovoltaik'
set ytics
set y2tics
set grid ytics
set ylabel "Leistung"
set y2label "Ertrag "
set yrange [0:10000]
set y2range [0:75000]

#FileLog 7:PV.Pac\x3a::
#FileLog 4:PV.Pac\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Ertrag (Wh)' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Leistung (W)' ls l0 lw 1 with lines

MacReiner

Hallo zusammen,

ich habe mir erlaubt, deinen Code bei mir einzubauen. Meine Hardware sieht allerdings etwas anders aus: Statt Kako habe ich Fronius IG60 und IG40 mit einer RS485 Schnittstelle im Einsatz.
Mein SolarLog ist der 400.
Die aktuelle Anzeige in FHEM klappt gut (momentaner Ertrag und Tagesertrag)
Das Diagramm wird auch dargestellt, es kommen aber keine Einträge (Ertragslinien).

Dummerweise werden die vergangenen Tage im SolarLog gelöscht bzw. werden unsinnige Werte angezeigt.

Auf www.macreiner.de könnt ihr das bewundern ;-)

Leider habe ich nicht so viel Wissen, um das Ganze auf meine Konstellation anpassen zu können.

Vielleicht kann sich ein Wissender mal äussern, ob das zu lösen ist...

Danke
Reiner
viele Grüße
Reiner

Reinemann67

Super - nun habe ich es auch geschafft, das Script auf meine zwei Wechselrichter anzupassen. Die Daten kommen von einem Solarlog 1000.  Die Peak Werte waren schon mit dem vorhandenem Script ok, aber der Tagesertrag passte nicht.

Die Lösung war möglich, nachdem ich einfach mal http://192.168.xy.120/pc.js?min0 in meinen Browser eingab und in der letzten Zeile
da[dx++]="18.10.13|0;0|0;4"   (Werte von heute früh 8:05)
die Erträge beider Wechselrichter identifizieren konnte. Das Script liest diese sogar schon ein, nur die Addition und Übergabe an die Log-Datei musste angepasst werden. Das konnte ich dann mit meinen bescheidenen Perl-Kenntnissen dann auch schaffen.

Vielen Dank für die Vorarbeit.

extraem

Hallo

ich habe das Modul gerade inst. und nach der Anleitung eingerichtet bekomme aber keinen Ertrag ob die PAC richtig ausgelesen wird weiß ich nicht da es dazu jetzt schon zu spät ist

Im Filelog steht 2013-12-28_17:56:29 PV Pac: 0 W, Ertrag: 0 Wh

Und im fhem Log mid verbose 5 das

2013.12.28 17:58:30 5: Solarlog_GetStatus
2013.12.28 17:58:30 5: PV: Data request
StatusCodes[0] = "Sending Parameters,Wait Sun/Grid,Checking Grid,Measuring Riso,DcDc Start,Inverter Start,Run,Recovery,Pause,Ground Fault,OTH Fault,Address Setting,Self Test,Self Test Fail,Sensor Test + Meas.Riso,Leak Fault,Waiting for manual reset,Internal Error E026,Internal Error E027,Internal Error E028,Internal Error E029,Internal Error E030,Sending Wind Table,Failed Sending table,UTH Fault,Remote OFF,Interlock Fail,Executing Autotest, , ,Waiting Sun,Temperature Fault,Fan Staucked,Int. Com. Fault,Slave Insertion,DC Switch Open,TRAS Switch Open,MASTER Exclusion,Auto Exclusion, , , ,Waiting, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Erasing Internal EEprom,Erasing External EEprom,Counting EEprom,Freeze,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,  FehlerCodes[0] = " ,Sun Low W001,Input OC E001,Input UV W002,Input OV E002,Sun Low W001,No Parameters E003,Bulk OV E004,Comm.Error E005,Output OC E006,IGBT Sat E007,Bulk UV W011,Internal error E009,Grid Fail W003,Bulk Low E010,Ramp Fail E011,Dc/Dc Fail E012,Wrong Mode E013,Ground Fault ---,Over Temp. E014,Bulk Cap Fail E015,Inverter Fail E016,Start Timeout E017,Ground Fault E018,Degauss error ---,Ileak sens.fail E019,DcDc Fail E012,Self Test Error 1 E020,Self Test Error 2 E021,Self Test Error 3 E019,Self Test Error 4 E022,DC inj error E023,Grid OV W004,Grid UV W005,Grid OF W006,Grid UF W007,Z grid Hi W008,Internal error E024,Riso Low E025,Vref Error E026,Error Meas V E027,Error Meas F E028,Error Meas Z E029,Error Meas Ileak E030,Error Read V E031,Error Read I E032,Table fail W009,Fan Fail W010,UTH E033,Interlock fail E034,Remote Off E035,Vout Avg errror E036,Battery low W012,Clk fail W013,Input UC E037,Zero Power W014,Fan Stucked E038,DC Switch Open E039,Tras Switch Open E040,AC Switch Open E041,Bulk UV E042,Autoexclusion E043,Grid df/dt W015,Den switch Open W016,Jbox fail W017,DC Door Open E044,AC Door Open E045,Module Door Open E047,Fuse DC Fail W020,Liquid Cooler Fail E048,SPD AC protection open W018, da[dx++]="28.12.13|10568;6612"5;9;23;368;370;2"""";6""""""
2013.12.28 17:58:34 5: PV Pac: 0 W, Ertrag: 0 Wh


kann mir jemand sagen wo ich was ändern muss

Danke

Reinemann67

Versuche doch mal deine Werte durch Aufruf des Links (Posting vom 18.10.) abzurufen. In dem Ergebnis sollten Pac und Ertrag korrekt enthalten sein.  Da es unterschiedliche Solarlog Module gibt, sieht das Ergebnis auch untersciedlich aus.

Sind deine Werte da  korrekt ?

extraem

Hallo

wenn ich den Link aufrufe gibt es nur einen Eintrag mit PAC aber keinen mit Ertrag siehe Auszug aus der Ausgabe
Ich habe einen SolarLog 200 mit var Firmware = "2.8.2 Build 52"

var Pac=0
var aPdc=new Array(0,0,0)
var curStatusCode = new Array(1)
curStatusCode[0]=255
var curFehlerCode = new Array(1)
curFehlerCode[0]=0
var PacArr= [[0]];
var PdcArr= [[0,0,0]];
var sStrWIFI = 0
var sStrGPRS = 0
var tBsent = 1605493491
var tBrecv = 130455447
m[mi++]="02.01.14 16:50:00|0;0;0;6168;251;251;11"
m[mi++]="02.01.14 16:45:00|1;0;1;6168;251;251;11"
m[mi++]="02.01.14 16:40:00|2;1;2;6168;253;258;11"
m[mi++]="02.01.14 16:35:00|8;4;5;6168;300;331;11"
m[mi++]="02.01.14 16:30:00|15;8;8;6168;326;357;11"
m[mi++]="02.01.14 16:25:00|51;27;28;6163;356;381;11"
m[mi++]="02.01.14 16:20:00|86;45;47;6154;365;398;10"
m[mi++]="02.01.14 16:15:00|102;56;54;6142;371;402;10"
m[mi++]="02.01.14 16:10:00|134;70;74;6127;380;409;10"
m[mi++]="02.01.14 16:05:00|205;105;114;6110;390;420;10"
m[mi++]="02.01.14 16:00:00|249;128;137;6087;394;423;10"
m[mi++]="02.01.14 15:55:00|216;110;119;6061;390;420;10"
m[mi++]="02.01.14 15:50:00|225;115;124;6037;391;421;10"
m[mi++]="02.01.14 15:45:00|265;135;147;6013;395;425;10"
m[mi++]="02.01.14 15:40:00|367;187;201;5984;402;432;10"
m[mi++]="02.01.14 15:35:00|416;212;229;5947;404;435;10"
m[mi++]="02.01.14 15:30:00|417;214;228;5906;404;435;10"
m[mi++]="02.01.14 15:25:00|385;197;210;5864;402;433;10"
m[mi++]="02.01.14 15:20:00|320;164;175;5826;398;428;10"
m[mi++]="02.01.14 15:15:00|326;166;178;5795;398;428;10"
m[mi++]="02.01.14 15:10:00|330;168;182;5760;398;428;10"
m[mi++]="02.01.14 15:05:00|329;168;180;5728;398;428;10"
m[mi++]="02.01.14 15:00:00|326;167;178;5695;398;428;10"
m[mi++]="02.01.14 14:55:00|306;157;167;5661;397;427;10"
m[mi++]="02.01.14 14:50:00|263;135;145;5629;393;423;10"
m[mi++]="02.01.14 14:45:00|239;121;133;5602;391;421;10"
m[mi++]="02.01.14 14:40:00|262;134;145;5576;393;422;10"
m[mi++]="02.01.14 14:35:00|268;135;149;5548;390;419;10"
m[mi++]="02.01.14 14:30:00|260;134;143;5518;392;422;10"
m[mi++]="02.01.14 14:25:00|340;174;187;5490;397;428;10"
m[mi++]="02.01.14 14:20:00|401;204;220;5455;401;431;10"
m[mi++]="02.01.14 14:15:00|516;264;283;5415;405;436;11"
m[mi++]="02.01.14 14:10:00|523;269;285;5364;405;435;11"
m[mi++]="02.01.14 14:05:00|924;472;507;5313;415;446;11"
m[mi++]="02.01.14 14:00:00|1286;659;702;5225;421;453;11"
m[mi++]="02.01.14 13:55:00|1275;653;696;5107;422;453;11"
m[mi++]="02.01.14 13:50:00|1218;623;666;4990;421;453;11"
m[mi++]="02.01.14 13:45:00|1188;608;649;4880;421;453;11"
m[mi++]="02.01.14 13:40:00|1126;578;614;4773;421;452;11"
m[mi++]="02.01.14 13:35:00|1052;537;574;4670;419;451;11"
m[mi++]="02.01.14 13:30:00|906;464;494;4574;417;448;11"
m[mi++]="02.01.14 13:25:00|997;510;545;4490;419;450;11"
m[mi++]="02.01.14 13:20:00|1143;584;625;4399;421;453;11"
m[mi++]="02.01.14 13:15:00|1122;575;612;4294;421;453;11"
m[mi++]="02.01.14 13:10:00|1052;540;573;4192;421;452;11"
m[mi++]="02.01.14 13:05:00|1076;552;587;4096;421;453;11"
m[mi++]="02.01.14 13:00:00|1028;528;561;3997;421;452;10"
m[mi++]="02.01.14 12:55:00|913;467;499;3904;419;450;10"
m[mi++]="02.01.14 12:50:00|830;426;453;3820;419;449;10"
m[mi++]="02.01.14 12:45:00|943;483;515;3739;419;450;10"
m[mi++]="02.01.14 12:40:00|1045;535;571;3651;421;452;10"
m[mi++]="02.01.14 12:35:00|1060;542;579;3555;421;453;10"
m[mi++]="02.01.14 12:30:00|1087;557;594;3456;421;453;10"
m[mi++]="02.01.14 12:25:00|1042;533;570;3356;421;453;10"
m[mi++]="02.01.14 12:20:00|1040;532;568;3260;421;453;10"
m[mi++]="02.01.14 12:15:00|1015;519;555;3165;421;452;10"
m[mi++]="02.01.14 12:10:00|873;446;478;3072;418;449;10"
m[mi++]="02.01.14 12:05:00|837;431;456;2992;417;449;10"
m[mi++]="02.01.14 12:00:00|858;440;468;2914;417;449;10"
m[mi++]="02.01.14 11:55:00|904;461;496;2835;418;449;10"
m[mi++]="02.01.14 11:50:00|1002;511;547;2751;419;451;10"
m[mi++]="02.01.14 11:45:00|1191;609;651;2659;422;453;10"
m[mi++]="02.01.14 11:40:00|1403;718;766;2550;425;456;10"
m[mi++]="02.01.14 11:35:00|1535;784;840;2423;426;458;10"
m[mi++]="02.01.14 11:30:00|1590;812;871;2284;427;459;10"
m[mi++]="02.01.14 11:25:00|1204;615;659;2140;422;454;10"
m[mi++]="02.01.14 11:20:00|1455;745;795;2032;424;456;10"
m[mi++]="02.01.14 11:15:00|2255;1170;1209;1897;432;465;10"
m[mi++]="02.01.14 11:10:00|1611;832;873;1697;428;460;9"
m[mi++]="02.01.14 11:05:00|1648;850;899;1554;431;463;9"
m[mi++]="02.01.14 11:00:00|1821;936;991;1405;432;464;9"
m[mi++]="02.01.14 10:55:00|1596;820;869;1241;431;464;8"
m[mi++]="02.01.14 10:50:00|1162;596;633;1099;428;460;8"
m[mi++]="02.01.14 10:45:00|918;470;501;994;424;456;8"
m[mi++]="02.01.14 10:40:00|775;396;424;909;421;452;7"
m[mi++]="02.01.14 10:35:00|494;254;270;838;412;443;7"
m[mi++]="02.01.14 10:30:00|546;279;299;790;414;445;7"
m[mi++]="02.01.14 10:25:00|503;257;275;738;413;443;7"
m[mi++]="02.01.14 10:20:00|512;264;280;689;409;438;7"
m[mi++]="02.01.14 10:15:00|326;168;178;640;403;432;7"
m[mi++]="02.01.14 10:10:00|209;108;115;608;393;422;6"
m[mi++]="02.01.14 10:05:00|237;121;131;585;397;426;6"
m[mi++]="02.01.14 10:00:00|389;199;213;560;408;438;6"
m[mi++]="02.01.14 09:55:00|569;291;311;520;417;447;6"
m[mi++]="02.01.14 09:50:00|404;208;220;466;409;439;6"
m[mi++]="02.01.14 09:45:00|269;138;148;428;401;430;6"
m[mi++]="02.01.14 09:40:00|312;160;171;399;403;433;6"
m[mi++]="02.01.14 09:35:00|253;129;140;368;399;429;5"
m[mi++]="02.01.14 09:30:00|223;114;123;342;396;426;5"
m[mi++]="02.01.14 09:25:00|221;113;122;318;396;426;5"
m[mi++]="02.01.14 09:20:00|244;125;134;295;400;430;5"
m[mi++]="02.01.14 09:15:00|305;155;168;269;405;434;5"
m[mi++]="02.01.14 09:10:00|408;208;224;238;412;442;4"
m[mi++]="02.01.14 09:05:00|411;210;226;198;412;442;4"
m[mi++]="02.01.14 09:00:00|291;149;159;158;404;433;4"
m[mi++]="02.01.14 08:55:00|224;115;123;129;399;428;4"
m[mi++]="02.01.14 08:50:00|183;94;102;105;393;423;3"
m[mi++]="02.01.14 08:45:00|133;69;74;85;385;414;3"
m[mi++]="02.01.14 08:40:00|85;44;49;70;374;403;3"
m[mi++]="02.01.14 08:35:00|68;35;38;58;362;390;2"
m[mi++]="02.01.14 08:30:00|45;24;25;48;351;377;2"
m[mi++]="02.01.14 08:25:00|29;15;17;40;317;327;2"
m[mi++]="02.01.14 08:20:00|17;7;12;33;347;350;1"
m[mi++]="02.01.14 08:15:00|14;5;11;0;391;396;1"
m[mi++]="02.01.14 08:10:00|12;6;7;31;320;323;0"
da[dx++]="02.01.14|6168;2255"


Wo finde ich den Ertrag und wo muss ich dann was Eintragen
Ich habe leider keine Ahnung von Perl und RegExP

Danke

ph1959de

@extraem: Deine Ertragszeile sieht so ähnlich aus, wie bei mir. Leider ist (meine Meinung) das Modul noch etwas "speziell". Ich hab's auf die Schnelle für mich angepasst (ich hoffe ich bekomm's hier komplett hin; alle Änderungen im sub Solarlog_GetStatus):

Die RegExp:
my ($Pac2,$Pdc1,$Pdc2,$Earn,$Udc1,$Udc2,$Temp)=( $allines =~ /.+?m\[mi\+\+\]=.+?\|(.+?);(.+?);(.+?);(.+?);(.+?);(.+?);(.+?)\"/ );

Dementsprechend dann später:
$text= "Pac: $Pac2 W, Ertrag: $Earn Wh";

und zu guterletzt:
  if (!$hash->{LOCAL}){
            $hash->{CHANGED}[0] = $text;
            $hash->{STATE} = $text;
            $hash->{READINGS}{Pac}{TIME} = TimeNow();
            $hash->{READINGS}{Pac}{VAL} = $Pac2;
            $hash->{READINGS}{Ertrag}{TIME} = TimeNow();
            $hash->{READINGS}{Ertrag}{VAL} = $Earn;
            DoTrigger($name, undef) if($init_done);   
  }


Alles im Modul 88_Solarlog.pm zu ändern.

Vielleicht finde ich mal Zeit (und einen Weg) das zu generalisieren.

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

extraem

Hallo ph1959de

danke für die Hilfe

ich habe jetzt noch diesen Teil auskommentiert und damit geht es jetzt anscheinend

# if ($Ertrag).
#  { }
# else
# { $Pac = 0;
#    $Ertrag = 0;
# }.


wenn ich die Daten mit dem Browser hole steht das im File
m[mi++]="03.01.14 11:30:00|2153;1184;1095;3303;449;480;11"

und das im Log vom fhem
2014-01-03_11:30:58 PV Pac: 2153 W, Ertrag: 3303 Wh

Weist du für was die anderen Daten in der Zeil sind

Danke

ph1959de

Wenn Du den Solarlog auch .csv erzeugen lässt, könntest Du da nachschauen.

Ich finde z.B. bei mir in der

min140102.csv
#Datum;Uhrzeit;WR;Pac;DaySum;Status;Error;Pdc1;Pdc2;Udc1;Udc2;Temp;Uac
...
02.01.14;12:00:00;1;350;570;1;0;194;170;301;196;21;236

passend dazu in min140102.js
...
m[mi++]="02.01.14 12:00:00|350;194;170;570;301;196;21"


Für Deine Situation auseinanderfieseln musste jetzt aber selbst.

Gruß, Peter


Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Deinjo

Hallo zusammen,

erstmal vielen Dank an Manfred für das gute script zum auswerten des Solarlog.

Ich wollte das script nun für mich anpassen und haben dabei ein Problem mit der Änderung der Regexp.
An meinem Solarlog ist auch ein S0-Zähler angeschlossen. Von diesem möchte ich jetzt nicht den über 5min gemittelten Wert sondern einen aktuelln Wert.

In dem File vom Solarlog ist folgende Zeilen enthalten:
var PacArr= [[858], [1]];

Die "858" ist der aktuelle Verbrauchswert und "1" die aktuelle Solarleistung (gleiche wie in var Pac=1).

Beim auslesen der Zeile habe ich aber nun ein Problem (muss sagen, Perl ist neu für mich). Ich habe es mit folgender Zeile probiert:
my ($Verbrauch,$SolarPac) =( $allines =~ /.+?var PacArr= \[\[(.+?)\],\[(.+?)\]\]/ );

Leider sind immer beide Variablen leer.

Jemand eine Idee?

Danke und Gruß
Deinjo
rPi3, Jessie, FHEM 5.7
CUL, Homematic, WeMos, FritzDect, TableUI,...

majorshark

#15
Hallo Deinjo.

Das interessiert mich auch.
Hast Du für das Problem (var PacArr= [[858], [1]]; ) schon eine Lösung gefunden?

Grüße

Lösung:
my ($Pver,$Pac) = ( $allines =~ /.+?var PacArr=\ \[\[(\d*)\],\ \[(\d*)\]\]/ );
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

maxritti

Hallo zusammen,

da ich auch eine PV Anlage mit einem Solarlog 200 habe, wollte ich das ganze auch mal integrieren.
Pac wird bei mir im Plot auch angezeigt, aber irgendwie komme ich mit dem Ertrag nicht weiter.

Logverbose habe ich mal auf 5 gesetzt und bekomme von meinem Solarlog eintrag das hier:

2014.03.09 15:16:12 5: ##########################################
2014.03.09 15:16:12 5: Solarlog_GetStatus
2014.03.09 15:16:12 5: myPV: Data request
2014.03.09 15:16:12 5: host: 192.168.178.22
2014.03.09 15:16:14 5: name: myPV
2014.03.09 15:16:14 5: ###########################
2014.03.09 15:16:14 5: Data received:
FehlerCodes[1] = "-------,Kommunikation gest?rt,DC ?berstrom,Startbed. nicht erreicht,
2014.03.09 15:16:14 5: myPV Pac: 2223 W, Ertrag: 13165 Wh
2014.03.09 15:16:14 5: Triggering myPV (1 changes)
2014.03.09 15:16:14 5: Notify loop for myPV Pac: 2223 W, Ertrag: 13165 Wh
2014.03.09 15:16:14 4: eventTypes: Solarlog myPV Pac: 2223 W, Ertrag: 13165 Wh -> Pac: .* W, Ertrag: .* Wh
2014.03.09 15:16:14 5: DbLog: logging of Device: myPV , Type: SOLARLOG , Event: Pac: 2223 W, Ertrag: 13165 Wh , Reading: Pac , Value: 2223 W, Ertrag: 13165 Wh , Unit:


Der Eintrag

2014.03.09 15:16:14 5: myPV Pac: 2223 W, Ertrag: 13165 Wh

sieht doch soweit ganz gut aus. Ich frage mich nur, warum der im Plot nicht angezeigt wird?

Meine gplot Datei sieht so aus:

# Created by FHEM/98_SVG.pm, 2014-03-09 15:19:14
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Photovoltaik'
set ytics
set y2tics
set grid ytics
set ylabel "Leistung"
set y2label "Ertrag "
set yrange [0:3240]
set y2range [0:20000]

#DbLog myPV:Ertrag::
#DbLog myPV:Pac::

plot "<IN>" using 1:2 axes x1y2 title 'Ertrag (Wh)' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Leistung (W)' ls l0 lw 1 with lines

     
Irgendwie scheine ich den Zusammenhang zwischen dem Modul, den Einträgen im DB Log und der gplot Datei nicht verstanden zu haben.

Wäre cool, wenn mir dazu jemand den Schubs in die richtige Richtung geben könnte.

maxritti

Also das Problem dürfte mal folgender Eintrag im DB Log sein:

Da steht im Reading Pac alle Werte. So kann das Plot das auch nicht auswerten.

Nur wie stelle ich mich nun an um einzelne Readings gesetzt zu bekommen?
Irgendwie werde ich den Eindruck nicht los, als wenn in dem Modul das mit dem $hash gar keine Auswirkungen hat.
Naja, vielleicht schaut ich im FHEM Wiki mal im Development Bereich vorbei...

# Abrage in dieser Art funktioniert nur mit meiner speziellen Konfiguration: S0-Aktiv und KAKO WR
# Es gibt in dem JavaScript noch andere Stellen um an die Daten zu kommen. Aber leider keine "Einzeiler".
  #my ($Pac) =( $allines =~ /.+?var Pac=(\d*)/ ) ; #Pac Variable suchen
#  my ($Pac2,$Pdc1,$Pdc2,$Ertrag,$Udc1,$Udc2,$Temp)=( $allines =~ /.+?m\[mi\+\+\]=.+?\|.+?\|(.+?);(.+?);(.+?);(.+?);(.+?);(.+?);(.+?$

  my ($Pver,$Pac) = ( $allines =~ /.+?var PacArr=\ \[\[(\d*)\],\ \[(\d*)\]\]/ );
  my ($Ertrag1,$Ertrag,$Temp) =( $allines =~ /.+?da\[dx\+\+\]=.+?\|(.+?);.+?\|(.+?);(.+?)/ );

  if ($Ertrag)
   { }
  else
  { $Pac = 0;
    $Ertrag = 0;
  }
  $text= "Pac: $Pac W, Ertrag: $Ertrag Wh, Pver: $Pver";
  $text= "Pac: $Pac W, Ertrag: $Ertrag Wh $Temp $Ertrag1";

  Log 5,"$name $text";
  if (!$hash->{LOCAL}){
            $hash->{CHANGED}[0] = $text;
            $hash->{STATE} = $text;;
            $hash->{READINGS}{Pac}{TIME} = TimeNow();
            $hash->{READINGS}{Pac}{VAL} = $Pac;
            $hash->{READINGS}{Ertrag}{TIME} = TimeNow();
            $hash->{READINGS}{Ertrag}{VAL} = $Ertrag;
            DoTrigger($name, undef) if($init_done);
  }
  $alldata="$text\n";
  return $alldata;
}

majorshark

Dieses Problem habe ich auch noch.

Beim Öffnen der Seite PV werden alle Readings korrekt angezeigt.
Bei der nächsten Aktualisierung stehen alle Werte dann in der Zeile 'Pac'.

Scheinbar wird dann nur noch $text zurückgegeben. Was auch logisch erscheint, da ja return $alldata auch nur den $text zurück gibt.

Aber warum ist das nicht so beim ersten Aufruf und wie bekommt man es hin, das die Readings fortlaufend einzeln aktualisiert werden.


$text= "Pac: $Pac W, Ertrag: $Ertrag Wh, Verbrauch: $Pver W, Einspeisung: $Pein W";
Log 5,"$name $text";

if (!$hash->{LOCAL}){
            $hash->{CHANGED}[0] = $text;
            $hash->{STATE} = $text;
            $hash->{READINGS}{Pac}{TIME} = TimeNow();
            $hash->{READINGS}{Pac}{VAL} = $Pac;
            $hash->{READINGS}{Ertrag}{TIME} = TimeNow();
            $hash->{READINGS}{Ertrag}{VAL} = $Ertrag;
            $hash->{READINGS}{Verbrauch}{TIME} = TimeNow();
            $hash->{READINGS}{Verbrauch}{VAL} = $Pver;
            $hash->{READINGS}{Einspeisung}{TIME} = TimeNow();
            $hash->{READINGS}{Einspeisung}{VAL} = $Pein;
            DoTrigger($name, undef) if($init_done);
  }
  $alldata="$text\n";
  return $alldata;


(//)
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

maxritti

#19
Zwischenzeitlich habe ich mal ein wenig rumgespielt.
Ich gebe zu mit den Regexp bin ich nach nicht wirklich warm geworden, aber vielleicht wird das ja noch mal.
Manch einer würde das bestimmt eleganter lösen, aber der Zweck heiligt die Mittel. ;)

Im Anhang mal meine aktuelle 99_Solarlog.pm. Die basiert auf dem ersten Modul hier in dem Post.
Da mal einen Dank an Manfred für die Vorarbeit.

Aus der von meinem Solarlog 200 mit einem Wechselrichter zurückgelieferten Antwort habe ich mal diese Zeilen auseinander genommen:

var PacArr= [[293], [128]];
var PdcArr= [[0,0,0], [176,0,0]];


und die letzte Zeile

da[dx++]="21.03.14|8739;2910|5131;1728"

Daraus konnte ich dann alle Werte ermitteln.

Sollten die Zeilen bei Euch anders aussehen, müssten die Regex angepasst werden.
Oder hier mal posten, dann versuche ich mal mein Glück.  8)

majorshark

... läuft einwandfrei! Habe noch ein Reading für die Einspeiseleistung hinzugefügt.

Danke. :)
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

cocojambo

Hallo,
ich habe einen Solarlog 1000 bei mir im Einsatz mit zwei Wechselrichtern von Fronius. Ich habe mir schon alle Posts über die Auswertung und Darstellung des Solarlogs mit Fhem durchgelesen. Aber so richtig steht nirgendwo im Zusammenhang was wo an Dateien einzuspielen und welche Änderung zu machen sind. Wäre es mal möglich hier die einzelnen Dateien zu posten und vielleicht mal eine kurze Anleitung zu machen ist um den solarlog als Plot darzustellen und auszuwerten? Können bestimmt Andere auch noch gebrauchen. Fänd ich ganz gut.
Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

maxritti

Hi,

gib mal in Deinem Browser das hier ein:

http://solarlog-ip/pc.js?min0

Also die IP Deines Solarlogs mit dem /pc.js?min0

Das was da raus kommst, kannst Du gerne posten oder mir zumailen.
Dann schaue ich mal, ob ich da draus schlau werde.

Ach so. Hast Du auch einen S0 Zähler, der den Eigenverbrauch an den Solarlog weitergibt?

cocojambo

@ maxritti

Hab ich gemacht und dir per PM vorgestern zugeschickt. kannst du damit was anfangen und wirst schlau daraus? oder brauchst du noch weitere angaben.
gruß aus köln
norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

maxritti

Hi Norbert,

ich bin dran.
Allerdings bei dem schönen Wetter bieten sich auch andere Aktivitäten an, als am PC zu sitzen  ;)

Melde mich, wenn es weitergegangen ist.

besitzer

Hallo zusammen,

ich habe einen SolarLog 300 und einen SMA Wechselrichter.
Ich habe die ersten Schritte mit der Einrichtung der Anzeige etc erfolgreich durchgeführt. Allerdings bekomme ich bei den Werten für PAC und Ertrag sowie in der Skala nichts angezeigt.
Mein Wechselrichter bzw. Solarlog werden soweit ich weiß auch per S0 Schnittstelle ausgelesen.

Wenn ich http://192.168.xy.47/pc.js?min0 in den Broswer eingeben wird mir allerdings gar nichts angezeigt. Das Brwoserfenster bleibt weiß und ich bekomme keinen Fehler
Leider kenne ich mich mit Dingen wie REGEXP etc. gar nciht aus. Wo und wie stelle ich sowas ein?

Könnt Ihr mir helfen?

Danke. Gruß Sven

besitzer

Ich habe mir gerade nochmal die Konfiguration meines SolarLog angesehen und unter dem Punkt Geräte gesehen, wie die Anbindung zum Wechselrichter ist. Laut dem Bild über RS485, der Verbrauchszähler bei mir im Schaltschrank aber wohl über S0. Hilft das bei der Fehleranalyse?

Siehe Anhang

Gruß Sven

besitzer

Ich habe nun einen anderen Browser (Internet Explorer) zum Abfragen und bekomme die Meldung, dass die Webseite nicht gefunden werden konnte.

maxritti

Zitat von: besitzer am 22 Mai 2014, 16:02:22
Wenn ich http://192.168.xy.47/pc.js?min0 in den Broswer eingeben wird mir allerdings gar nichts angezeigt. Das Brwoserfenster bleibt weiß und ich bekomme keinen Fehler
Leider kenne ich mich mit Dingen wie REGEXP etc. gar nciht aus. Wo und wie stelle ich sowas ein?

Könnt Ihr mir helfen?

Danke. Gruß Sven

Hm.
Über http://192.168.xy.47 kommst Du an das Webinterface von Deinem Solarlog und wenn Du da /pc.js?min0 anhängst, dann kommt nichts?
Merkwürdig.
Selbst bei einem Solarlog 1000 geht das. Das der Solarlog 300 sich so von den beiden Modellen unterscheidet, kann ich mir nicht wirklich vorstellen.
Aber nichts ist unmöglich.

Mail doch direkt mal den Solarlog-Support an, ob das pc.js?min0 mit dem Solarlog 300 nicht funktioniert.
Die geben recht fix Antwort.

Aber dann wissen wir wenigstens, ob es hier mit dem Modul weitergehen kann.

cocojambo

Bei mir wurde gestern bei meinem Solalog 1000 automatisch ein Firmware update gestartet. Dadurch ist auch bei mir nicht mehr möglich über das "pc.js?min0" an den Solarlog zu kommen. Hängt wohl eindeutig mit der neuen Software zusammen, die ja laut Solarlog demnächst für alle Solarlogs gilt, so auf der Firmwareseite zu lesen:
Auszug von den neuen Release Notes:

(Solar-Log™ 3.1.2 Build 67, 21.05.2014)
für Solar-Log 200/500/1000 und Solar-Log 300, 1200 und 2000

Wenn einer was weiß wäre es nett, das hier zu posten. ich werde parallel auch mal eine Anfrage an den Support stellen.

Gruß aus Köln
Norbert

@maxritti : dein Solarlog 200 ist auch dabei
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

maxritti

Hast recht. Da bin ich aber froh, dass kein automatisches Update bei mir gelaufen ist :)

Ich werde mir est mal in Ruhe die 10 Seiten beim Photovoltaikforum von der 3.1.1 durchlesen und dann das von 3.1.2
Auf den ersten Seiten wird ja mal häufig von Datenverlust gesprochen.

http://www.photovoltaikforum.com/sds-allgemein-ueber-solar-log-f38/solarlog-firmware-3-1-1-build-66-t99466.html

maxritti

Nun denn.
Unter denn "Allgemeinen Hinweise" steht, dass die neue FW kein JavaScript mehr nutzt.
Damit hat kann man das Modul dann mit der neuen FW nicht mehr nutzen.

http://www.solar-log.com/fileadmin/BENUTZERDATEN/Downloads/Firmware/ReleaseNotes_3.1.2-68-20140523-DE.pdf

Bleibt dann wohl nur die Nutzung einer anderen Anwendung:

http://www.fhemwiki.de/wiki/SolarView

Ich weiss nur nicht, ob das so der richtige Weg ist. Denn damit werden ja direkt die Wechselrichter ausgelesen.
Was damit verloren geht ist der Eigenverbrauch mit einem S0 Zähler.

Na mal schauen....

besitzer

Hallo zusammen,

ich habe meine Anfrage an den Support von Solar Log heute Morgen gestartet. Melde mich mit der Antwort.

Gruß Sven

oniT

Hallo,

ich möchte ja nicht die Diskussion unterbrechen, aber es gibt bereits eine Möglichkeit mit Modbus TCP die Daten auszulesen. So lese ich meinen SolarLog schon über ein Jahr aus. Ich finde nur auf die Schnelle über die Suche nicht den richtigen Thread.

Wenn diesen niemand findet, stelle ich die Dateien und Codeschnippsel dann hier zur Verfügung.

Gruß,
Tino

BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

maxritti

Hi,

aus meiner Sicht kein Problem. Denn Solarlog schreibt ja eindeutig, dass das mit dem JavaScript nicht mehr geht.

Kannst Du denn mittels Modus TCP auch werte von einzelnen Wechselrichter auslesen?
Laut der Doku meine ich zu lesen, dass nur die Gesamtwerte auslesbar sind.
Ich habe zwar nur einen WR, aber es gibt ja auch PVler, die mehrere WR an dem Solarlog haben.

Vermutlich meinst Du das Posting hier:

http://forum.fhem.de/index.php/topic,13128.0.html

Das werde ich mir mal zu Gemüte führen.

oniT

Hallo,

ah ja richtig diesen meinte ich. Das könnte natürlich sein, dass dies nur mit einem Wechselrichter funktioniert. Schau mal in den ersten Post, da stehen die PDF Dateien von SolarLog.

Grüße,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

maxritti

Okay, das PDF kannte ich noch nicht, bzw hatte es noch nicht geöffnet.

Die kostenlose Basic Variante von Modbus summiert alles auf und die Advanced Variante kostet, kann dafür aber wohl bis zu 3 WR.
Nur wieviel wird auch nirgends verraten.
Eventuell schreibe ich die mal an.

besitzer

Hallo zusammen,

wie versprochen, aber bereits vorher auch schon festgestellt, die Antwort vom SolarLog Support:

...der von Ihnen angegebene Link gab es bis zur Einführung der Firmware 3.x

Es gibt aber eine freie Modbusschnittstelle im Solar-Log™ die Beschreibung des Protokolls finden Sie im Installationshandbuch des Solar-Log™.

Hoffe wir finden so einen Weg an alle Daten zu kommen.

Gruß Sven

oniT

Hallo,

so wie ich das sehe, hat sich an den abfragbaren Daten über Modbus nichts geändert. Es wird immer die Summe aller Wechselrichter zur Verfügung gestellt.

Gruß,
Tino

BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

besitzer

Hallo zusammen,

hat jemand eine Lösung gefunden bzw. kann mir bei meinem Problem weiterhelfen?

Ich habe jetzt laut der Anleitung in diesem Thread http://www.ip-symcon.de/forum/threads/21088-Raspberry-PI-Modbus-TCP-IP-Server?highlight=modbus   Modbus installiert. Ich kann Modbus auch starten aber bekomme keine Verbindung zum SolarLog. Ich weiß auch leider so gar nicht, was ich einstellen müsste um auf den Solarlog zuzugreifen außer die IP Adresse und den Port?!

Wie und wo habt ihr Euer Modbus installiert. Ich habs jetzt auf einem Raspberry installiert.
Habt ihr eine andere Anleitung? Ich stehe echt im Wald, wie man so schön sagt.

Tino, könntest Du mir Deine Codeschnipsel zur Verfügung stellen bzw. posten? Vielleicht kannst Du mir auch kurz erklären, was ich machen muss.
Das wäre echt super. Danke.

Gruß Sven

besitzer

Hallo,

es funktioniert nun. Habe mich an die Anleitung von Tino in diesem Thread http://forum.fhem.de/index.php/topic,13128.30.html gehalten, nachdem Modbus endlich lief.
Danke an alle und besonders Tino.

Jetzt muss ich nur noch versuchen mal eine Plot Datei dafür zu basteln.

Gruß Sven

Harald

Hallo MacReiner, vielleicht liest Du hier ja noch mit.

Ich habe gelesen, dass Du auch Fronius-Wechelrichter mit serieller Schnittstelle hast. Mich würde interessieren, wie Du die seriellen Daten ausliest und an FHEM übergibst.

Ich habe einen Fronius midi plus und einen Datenlogger mit RS232-Schnittstelle. Diese möchte ich an die im Raspi implementierte RS232 anschliesen und die Daten dann in FHEM verarbeiten.
Die Beschreibung des Datenprotokolls liegt mir vor.

Wäre toll, wenn Du mir ein paar Infos zukommen lassen könntest. Leider habe ich noch nichts gefunden, was ich für meine Hardware anpassen könnte.

Vielen Dank im Voraus und viele Grüße

Harald

Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

MacReiner

Hallo Harald,

ich habe mich wieder etwas eingelesen ;-)
und bisher nicht gekümmert. Aber im Moment finde ich das Thema wieder interessant. Der Winter ist lang und vielleicht bekommen wir ja doch noch ein Ergebnis.
http://solarlog-ip/pc.js?min0 funktioniert bei mir noch.
Ich ziehe demnächst mit dem Fhem Server auf einen Einplatinenrechner um. Vielleicht ein Banana Pi oder ein Cubieboard 3, hab mich noch nicht entschieden..
Dann werde ich den Solarlog auch in Angriff nehmen...

viele Grüße
Reiner

Harald

Hallo MacReiner,

vielen Dank, dass Du Dich gemeldet hast. Ich habe das Projekt erstmal auf Eis gelegt. Zwischenzeitlich habe ich von Fronius die Protokollbeschreibung erhalten. Der WR sendet mit 3200 Bd, was der RasPi an der RS 232-Schnittstelle nicht ohne weiteres kann. Schliese ich aber ein USB/RS232-Wandler an, kann diese Konstruktion die Daten einlesen - auch mit 3200Bd.

Leider sind meine Perlkenntnisse und -fähigkeiten nicht ausreichend, ein eigenes Modul für diese Anwendung zu schreiben. Mit anderen, vorhandenen Modulen habe ich ohne Erfolg probiert. Naja, vielleicht findet sich ja noch eine Möglichkeit. Ich habe auch schon nach einem LAN/RS232-Wandler gesucht. Was ich bisher gefunden habe, war mir zu teuer oder die Produkbeschreibung war nicht ausfühlich genug. Module, die mittels LAN die WR auslesen gibt es ja. Da könnte man vllt. etwas anpassen, damit es mit meinem Fronius-WR klappt. Evtl. ginge es dann auch über SolarLog.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

paddyr2

Guten Morgen,

ich versuche mich auch gerade an dem guten Stück.

Modul läuft
Webseite wird angezeigt
Logfile zeig dauerhaft 0W an

S0 Zähler auch vorhanden

und die neueste Firmware 3. irgendwas.

Wo ist mein Fehler.


MacReiner

Soooo, ich habe mich für den Cubietruck entschieden. Gute Entscheidung.
Es läuft jetzt alles erwartungsgemäß. Auch die Plots werden richtig und schnell dargestellt.

Nun kann ich mal versuchen, aus dem Umrichter bzw. meinem Solaog400e Informationen herauszukitzeln.

@paddyr2: Niemand kann dir helfen, wenn du nichts verrätst. Wie wäre es mit etwas Code, Auszug aus dem Logfile,...

viele Grüße
Reiner