[gelöst] Datei erzeugen mit nur einem einzigen Wert (Reading)

Begonnen von Vize, 30 Oktober 2018, 14:53:52

Vorheriges Thema - Nächstes Thema

Vize

Hallo zusammen,

ich bräuchte mal zu folgender "Aufgabenstellung" Hilfe:

Mit meiner Selbstbaulösung einer Ladestation (Wallbox) für mein Elektroauto bestünde die Möglichkeit, den Ladevorgang über die am Netzeinspeisepunkt anliegende Überschussleistung aus einer Photovoltaik-Anlage so zu steuern, dass dabei kein (unnötiger) Netzbezug entsteht.
Dazu müsste die Ladestation natürlich den Wert des Überschusses kennen. Dies wäre möglich, indem die Ladestation eine Datei ausliest, in der der aktuelle Wert steht.

Den gewünschten Wert habe ich zur Zeit nur als ein Reading in einem Device vorliegen. Dieses wird alle fünf Minuten aktualisiert.

Ist es möglich, mittels FHEM eine Datei zu erzeugen, in der nur dieser eine Wert aus dem Reading steht? Diese Datei müsste dann auch alle fünf Minuten aktualisiert werden, d.h. der darin befindliche Wert müsste überschrieben werden.
Wenn ja, wie könnte sowas funktionieren?

Ich glaube, die Option über eine Log-Datei führt hier nicht zum gewünschten Ergebnis, da in dieser ja immer wieder ein Wert beigefügt und nichts überschrieben wird.
Laut Software der Ladestation muss eine Datei mit genau einem Wert vorliegen, der dann ausgelesen und genutzt werden kann.

Ich würde mich über jegliche Hilfe und Tipps freuen.

Vielen Dank schonmal!

Andreas

Otto123

Hallo Andreas,

mit Perl geht alles :)
Es gibt in FHEM extra eine Funktion, suche mal nach FileWrite -> https://wiki.fhem.de/wiki/DevelopmentModuleAPI#FileWrite

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Vize

Hallo Otto,

danke für die schnelle Rückmeldung...jetzt muss ich die von dir verlinkten Sachen nur noch verstehen...  :-[

Wird denn bei Nutzung dieser Funktion der Wert in der Datei immer wieder überschrieben, oder wird immer ein neuer Wert hinzugefügt?
Oder wird die Datei bei jedem Aufruf der Funktion neu erstellt bzw. überschrieben?

VG
Andreas

Otto123

Probier es doch einfach aus?
Ansonsten im Link einfach etwas nach oben scrollen - FileDelete.
Wenn Du das so willst, also erst löschen dann neu schreiben.
Aber Du kannst Dein Problem auch in jeder anderen Sprache lösen, nur Perl wäre sozusagen schon drin.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz


Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Vize

Hallo,

so, ich habe mal noch ein bischen in den Weiten des Netzes geforscht...

Ausgangslage:
Device "httpmod_senec_lan" mit dem Reading "Netzbezug" vorhanden.

Darauf würde ich dann dieses notify loslassen
define Einspeisung notify httpmod_senec_lan:Netzbezug:.* { openWB() }

und das in der 99_myUtils ergänzen
sub
openWB ()
{
my $E = ReadingsVal("httpmod_senec_lan","Netzbezug",0");
open(DATEI, ">/opt/fhem/Einspeisung.txt") or die $!;
print DATEI $E;
close (DATEI);
}


Dann müsste doch die Datei Einspeisung.txt bei jeder Änderung des Readings mit dem aktuellen Wert überschrieben werden, oder?

Vielleicht könnte jemand auch nochmal über den code schauen, da ich in perl nicht wirklich sattelfest bin...  :-[

Dankeschöööön!

VG
Andreas

DS_Starter

Also

Zitator die $!

ist keine gute Idee, es sei denn du willst dein Fhem gleich mit ausschalten.  ;)

Grüße
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Vize

Hallo Heiko,

also weglassen?

Stand aber in so ziemlich allen Beispielen, die ich dazu gefunden habe...

Wo ich weiterhin noch Schwierigkeiten habe, ob alle "Gänsefüßchen" im code korrekt sind. Manchmal sieht man ' und manchmal "...

VG
Andreas

DS_Starter

Eine Logausgabe oder sowas statt dessen damit man sieht dass ein Felercpassiert ist. Ja die wird häufig verwendet aber innerhalb von fhem nicht gut. Aber du kannst es ja gerne probieren  ;)

Wenn ich daran denke schreibe ich dir einen Auszug aus meinem DbRep Modul. Dort verwende ich auch eine Schreibroutine für Datenexport.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Vize

Alles klar, danke dir!

Ja, wäre nett, wenn du mir den Auszug mal senden könntest.

Ist denn wohl der restliche code in Ornung so?

VG
Andreas

TomLee

Versuchs doch mal wie Otto schon erwähnt hat mit Filewrite.

Sollte so klappen, der vorhandene Wert im Textfile wird immer überschrieben :

defmod Einspeisung notify httpmod_senec_lan:Netzbezug:.* {FileWrite({ FileName=>"/opt/fhem/Einspeisung.txt", ForceType=>"file", NoNL => 0},split(/\,/,$EVTPART1))}

Gruß

Thomas

Vize

Hi Thomas,

erstmal danke für deinen Tipp!

Aber ist dein code allgemein gültig? Ich finde die von dir aufgeführten Parameter im Wiki zu FileWrite unter dem Punkt "Nutzung von configDB".
Ich nutze aber configDB nicht, sondern "nur" die fhem.cfg...

VG
Andreas

betateilchen

FileWrite ist eine Funktion von FHEM, nicht explizit von configDB.

Glaub doch einfach mal, was Dir die Leute hier schreiben. Und wenn Du es nicht glaubst, probier es einfach aus, bevor Du alles in Deinem Unwissen in Frage stellst.

Ich hasse das Wiki.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Vize

Liebes betateilchen, halt dich doch bitte einfach raus, wenn es dir nicht passt, dass es Anfänger gibt, die nicht sofort gottgleich alles wissen können.

Allen anderen danke ich nochmals für die Anregungen und Tipps!

VG
Andreas