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
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
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