Werte aus CSV Auslesen und in Reading schreiben.

Begonnen von eddi79, 04 November 2022, 16:58:39

Vorheriges Thema - Nächstes Thema

eddi79

Ich möchte gern aus unserem Kako-Wechselrechter die aktuelle Leistung bzw. den Tageserstrag auslesen und in einem Reading ablegen. Der WR erzeugt hierzu jeweils eine CSV Datei aus welcher man den Wert auslesen kann.
Nun hab ich etwas recherchiert und folgenden Ansatz gefunden:

define atKacoCSVdaily at +*00:05:00 {\
\
#\
# bitte den abzufragenden Webserver konfigurieren:\
#\
my $adresse = "http://xxx.xxx.xxx.xxx:85";;\
\
my ($jahr, $monat, $tag) = (localtime(time))[5,4,3];;\
$jahr += 1900;;\
$monat += 1;;\
my $abfragedatum = sprintf("%04d%02d%02d", $jahr, $monat, $tag);;\
\
Log 3,"KACO CSV Ertrag: Heute=$jahr $monat $tag";;\
\
my $text = `wget –read-timeout=30 –quiet –tries=3 -O – "${adresse}/${abfragedatum}.csv" | sed -e 's/\x0d/;;/g'`;;\
\
if ($text) {\
my $impValue = (split(';;', $text))[9];;\
\
fhem("setreading WechselrichterErtrag Tagesertrag ${impValue}");;\
} \
else {\
Log 1, "Es liegt noch keine aktuelle csv vom Wechselrichter vor!";;\
\
fhem("setreading WechselrichterErtrag Tagesertrag 0");;\
}\
}\

attr atKacoCSVdaily alignTime 00:00:00
attr atKacoCSVdaily room 6_AT-Befehle


Laut Log liest er auch eine Datei an, es steht jedoch scheinbar nichts in der Variable $text und die IF-Bedingung liefert immer den ELSE Status "Es liegt noch keine aktuelle csv vom Wechselrichter vor!"

Der Code ist nicht von mir, soll aber angeblich funktionieren. Woran könnte es noch liegen ? Die XXX hab ich natürlich durch die IP des WR ersetzt.
Weiß einfach nicht mehr weiter...

Hier noch der LOG:
--2022-11-04 21:20:00--  http://iriwk8jyikqbnfue.myfritz.net:85/20221104.csv
Auflösen des Hostnamens iriwk8jyikqbnfue.myfritz.net (iriwk8jyikqbnfue.myfritz.net)... 79.219.147.100
Verbindungsaufbau zu iriwk8jyikqbnfue.myfritz.net (iriwk8jyikqbnfue.myfritz.net)|79.219.147.100|:85 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 200 OK
Länge: 11777 (12K) [text/html]
Wird in »20221104.csv.66« gespeichert.

     0K .......... .                                          100% 74,4K=0,2s

2022-11-04 21:20:03 (74,4 KB/s) - »20221104.csv.66« gespeichert [11777/11777]

BEENDET --2022-11-04 21:20:03--
Verstrichene Zeit: 3,2s
Geholt: 1 Dateien, 12K in 0,2s (74,4 KB/s)
2022.11.04 21:20:03 1: Es liegt noch keine aktuelle csv vom Wechselrichter vor!

Danke
Markus

Otto123

#1
Hallo Markus,

copy und paste aus dem Web Problem?
versus -

Der Code ist damit eigentlich komplett als Schrott zu betrachten und Du musst diesen Code Zeichen für Zeichen prüfen. Auf alle Fälle ist das falsch (rot):
Zitat`wget –read-timeout=30 –quiet –tries=3 -O "${adresse}/${abfragedatum}.csv" | sed -e 's/\x0d/;;/g'`
Dort muss ein Bindestrich hin -
Analyse
Zitatpi@raspib3:~ $ echo '–'|hexdump
0000000 80e2 0a93
0000004
pi@raspib3:~ $ echo '-'|hexdump
0000000 0a2d
0000002

Weiter auf den schnellen Blick: --read-timeout --quiet --tries -> da stehen bei Dir immer diese lange Striche.

und lösche diese ganzen ungewollten Dateien:
Zitat2022-11-04 21:20:03 (74,4 KB/s) - »20221104.csv.66« gespeichert [11777/11777]
Die waren ja so nicht vorgesehen. Dadurch bin ich aber drauf gekommen ;)

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

eddi79

Hallo Otto,

1000 Dank fürs Durchsehen. Es lag wirklich an den Zeichen (der falsche "-" ). Habs jetzt gefunden, ausgebessert und es funktioniert. Weiß gar nicht was ich sagen soll. Habs gestern X mal versucht und bin nicht drauf gekommen. Hätte ich wohl nie gefunden.

Jetzt kanns weitergehen.

Danke nochmal und schönes WE
Markus