SMA Wechselrichter - brauche ein wenig Hilfe...für Modul

Begonnen von svenkoethe, 05 September 2013, 08:33:03

Vorheriges Thema - Nächstes Thema

Byllyy

Hallo und Danke für die schnelle Antwort,

könntest Du mir (Anfänger) bitte noch erklären wie und wo Du den Code einbindest?

Vielen Dank für die Hilfe

Klaus Rubik

Schau in das Modul rein,  dort findest du den Aufruf von SBFspot etwa in der Form:

$ret .= qx( /opt/fhem/smaspot/bin/Release/SBFspot -nocsv  -v );

und den musst Du eben um die Timeout Parameter ergänzen:

$ret .= qx( timeout --kill-after=5 --signal=9 10 /opt/fhem/smaspot/bin/Release/SBFspot -nocsv  -v );

OK?
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

diesaege

#242
Hallo,

ich nutze im Filelog die Aufzeichnung der "device_temperatur" um die Temperatur des SMA-Wechselrichters auszuwerten (dieser ist bei mir leider nicht ideal verbaut und daher möchte ich mich hier etwas gegen Überraschungen vorbereiten).

Solar:.*etod.*|Solar:.*string.*_pdc|Solar:.*total_pac|Solar:.*usage.*|Solar:.*device_temperature.*

Im Logfile wird der Wert auch fein mitgeloggt. Allerdings steht dort "°C" hinter den Wert was eine grafische Auswertung verhindert.

2016-02-16_17:53:55 Solar device_temperature: 0.0°C

=Update 18.02.2016==
Hab es selbst herausgefunden.
Im Plot einfach in der Spalte die "Function" ->  "int" eintragen. Schon werden nur die Zahlen am Anfang des Strings ausgewertet (die °C werden dann für die Darstellung abgeschnitten).
Dies herauszufinden war aber Zufall... (auf dieser Seite: http://fhem.de/commandref.html#FileLogget).
Falls jemand eine besser Doku zu den "Function" kennt, wäre ich sehr dankbar!

Wenn ich im Logfile die °C im Nachhinein lösche, kann ich den Wert weiter verarbeiten (z.B. im Plot).
Hat hier jemand einen Tipp wie ich das °C im Filelog verhindern kann?

Danke!

Byllyy

@ Klaus Rubik,

Ich habe Deinen Code mit dem Timeout Parameter jetzt eingetragen.
Leider bekomme ich nun keine Werte mehr in die Logdatei.
Statt meines alten Eintrages :
$ret .= qx( /opt/fhem/sbfspot/bin/Release/SBFspot -nocsv -v );
habe ich jetzt Deinen Code in die 99_SMAUtils.pm eingetragen:
$ret .= qx( timeout --kill-after=5 --signal=9 10 /opt/fhem/sbfspot/bin/Release/SBFspot -nocsv  -v );

In der Logdatei erscheint auch "SMAspot called", aber es erscheinen keine Daten im Log.
Mit dem alten Code kommen Daten.
Gibt es da noch ein Problem das ich nicht beachte? 



Klaus Rubik

Hallo Byllyy,

ich bin auch nicht Spezialist, hier nochmal die gesamte Subroutine:

sub
Get_Inverterdata
{
Log 3, "SMAspot call";
my $ret = "";
$ret .= qx( timeout --kill-after=5 --signal=9 10 /opt/fhem/smaspot/bin/Release/SBFspot -nocsv  -v );

# Log 3, "Inverter returned: $ret";
Log 4, "SMAspot called";

return $ret;
}


Evtl. kannst Du noch die auskommentierte Log 3 Zeile mit einbauen und den Kommentar wegnehmen, dann siehst Du ob Werte kommen

FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

Byllyy

Habe jetzt nochmal den Code mit TimeOut eingetragen :
$ret .= qx( timeout --kill-after=5 --signal=9 10 /opt/fhem/sbfspot/bin/Release/SBFspot -nocsv  -v );

Wenn ich jetzt in meine Logs schaue kommt nur:
2016.02.19 12:23:48 3: Inverter returned: SBFspot V3.1.2
Yet another tool to read power production of SMA solar inverters
(c) 2012-2015, SBF (https://sbfspot.codeplex.com)
Compiled for Linux (LE) 32 bit

Commandline Args: -nocsv -v
Reading config '/opt/fhem/sbfspot/bin/Release/SBFspot.cfg'
Fri Feb 19 12:23:38 2016: INFO: Starting...

2016.02.19 12:23:48 3: SMAspot called


Es kommen keine Daten! Wird das Timeout vielleicht zu schnell ausgeführt?
Kann ich die Variablen ändern und wenn ja was bedeuten die genau?

Danke und LG

Byllyy

Habe jetzt den Befehl noch mal über Putty abgesetzt und bekomme folgendes:
pi@raspberrypi ~ $ timeout --kill-after=5 --signal=9 10 /opt/fhem/sbfspot/bin/Release/SBFspot -nocsv  -v
SBFspot V3.1.2
Yet another tool to read power production of SMA solar inverters
(c) 2012-2015, SBF (https://sbfspot.codeplex.com)
Compiled for Linux (LE) 32 bit

Commandline Args: -nocsv -v
Reading config '/opt/fhem/sbfspot/bin/Release/SBFspot.cfg'
Sat Feb 20 09:19:12 2016: INFO: Starting...
sunrise: 07:47
sunset : 18:05
Connecting to 00:80:25:0B:19:5A (1/10)
Initializing...
SUSyID: 125 - SessionID: 919750414 (0x36D2470E)
SMA netID=01
Serial Nr: 7D2DB080 (2100146304)
BT Signal=67%
Logon OK
Local Time: 20/02/2016 09:19:14
TZ offset (s): 3600 - DST: Off
Killed


Für mich sieht das aus, als wenn der Prozess "gekillt" wird bevor er zuende ist.
Wie kann man das ändern?

Danke und LG

Klaus Rubik

setz doch einfach mal den Wert --kill-after=5 auf 10 oder 15
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

Byllyy

Habe den Wert schon bis kill-after=150 hoch gesetzt.
Aber immer nach der gleichen Zeit ( ca 5Sek) kommt die Antwort (Killed)

Ich kenne die Parameter des Befehls leider nicht. Sind es Sekunden hinter dem "kill-after="
Wundere mich das es bei Dir problemlos klappt. Nutzt Du bluetooth oder Lan ?

Danke und LG

Klaus Rubik

FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

Byllyy

Da ich nicht so richtig weiter gekomme bin, habe ich den Befehl mal so abgekürzt :
$ret .= qx( timeout 45s /opt/fhem/sbfspot/bin/Release/SBFspot -nocsv  -v );

Ob er jetzt noch die Funktion hat die er soll, werde ich dann merken.
Oder kann jemand schon sagen, dass es so nichts bringt?

Danke

Edi77

Hallo,

Ich wollte mal fragen ob es auch möglich ist das SMA Multigate anzulesen, das über LAN angebunden ist?

Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

Tottbeck

Hallo,

Als FHEM-Noob verwende ich auf meinem RasPi3 SBFspot3.14 um die Daten dem Wandler zu entlocken und
diese zu PVoutput.org (per SQLite3) und PVlog.ocm (per csv-Datei) weiterzugeben.

Nun wollte ich die Daten auch in FHEM unterbringen
Zunächst habe ich die 99_SBFspotUtils (als 98_*) aus https://forum.fhem.de/index.php/topic,14624.msg180381.html#msg180381 integriert, da hier die nicht mehr benötigten Bluetooth-Anteile und Subfunktionen fehlen und die Value-Einheiten entfernt werden.
Da beide SBFspot und FHEM unabhängig voneinander laufen sollen, aber nicht beide mit dem Wandler kommunizieren sollen, habe ich SBFspotUtils so geändert, dass ich nicht mehr direkt SBFspot aufrufe sondern den letzten SBFspot-Output parse der in einer Datei abgelegt wird.

Außerdem habe ich noch die Einleseroutine geändert, so dass mir die BT-Signalstärke als reading erscheint (ich wollte wissen wie zuverlässig die Raspi3-BT-Verbindung zum Wandler ist)
Das ganze funktioniert auch soweit, aber nun meine Fragen:

1. Den zyklischen Aufruf von SBFspotUtils_GetStatus brauche ich eigentlich nicht mehr,
wenn ich das FHEM-Script von außen durch den cronjob trigger, das auch per SBFspot den Wandler ausliest.
Geht das? Wenn ja wie ?

2. Mit der BT signal einbau wird etoday auch Nachts im FileLog abgespeichert bis der Wert morgens wieder auf 0 springt.
Das war vorher nicht und stört natürlich die grafische Darstellung
Wie kann man das verhindern ? Im script, Log oder per "event-on-change-reading" ?

3. Wofür ist in der FileLog_Solar-Defintion das letzte "Solar:.*usage.*" ?
Ich dachte das wäre überflüssig, aber ohne wird der letzte Wert nicht eingelesen.

Danke

Tottbeck

Was ich zu meinen Punkten inzwischen selber herausgefunden habe:

1+2. Dies habe ich nun so gelöst, dass ich die Aktualität der Log-Datei prüfe (per find -mmin xx)
und die Datei nur auswerte wenn diese verändert wurde, damit habe ich auch sofort den Punkt 2 erledigt.
Wahrscheinlich gibt es elegantere Lösungen, aber funktionieren tut es so jedenfalls.

3. Das .*usage.* ist wirklich überflüssig, aber am letzen RegEx-Ausdruck muß noch das gierige ".*" stehen.

Durch Modifikation des SBFspot kann man für die Temperatur und das BT-Signal übrigens noch eine höhere Genauigkeit erreichen.
https://sbfspot.codeplex.com/discussions/653959

vmax

#254
ARGGGHHHH! >:(

Ich bin vielleicht zu alt für diesen  Job, aber Unvermögen versuche ich durch Eifer wett zu machen.... Zur Sache:

Habe mittlerweile SBFspot gleich zweimal laufen. Einmal streng nach den Angaben auf der Homepage von SBFspot. Ergebnis: Läuft tadellos, Daten werden vom WR geholt und an PVoutput geliefert, alle 5 Minuten sehe ich im Internet die Werte meiner Stromproduktion! 8)
(Wenn man sklavisch nach der og Installationsanweisung vorgeht, findet das Ganze in einem Verzeichnis namens SBFspot.3 statt) So weit - so gut!

Nun sollen die Ergebnisse auch graphisch in der entstehenden FHEM-Oberfläche dargestellt werden. Also genauso sklavisch dem Wiki-Eintrag und den Instruktionen hier Thread nachgegangen. Ergebnis: Ich bekomme einen zusätzlichen Menüpunkt Energie, eine hübsche, aber leere Tabelle und ein genauso leeres Logfile. :( :( :(
(hier findet das Ganze zunächst ja in einem Verzeichnis SBFspot statt, aus welchem im weiteren Verlauf die Dateien nach FHEM kopiert werden. Habe also nun je ein komplette Installation unter SBFspot und SBFspot.3)

Auf dem PI gesucht, wächst und gedeiht jedoch unter /home/pi/smadata/logs/ für jeden Tag ein Logfile. Einzig bringe ich FHEM nicht dazu, diese auch zu verwenden.

Jemand von den Pro's hier den entscheidenden Hinweis?

Resignierende Grüße, Mike