FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: klausmrkor am 11 Januar 2017, 16:09:45

Titel: Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 11 Januar 2017, 16:09:45
Hallo,
ich habe meinen Gaszäher mit einer Kamera ausgelesen

+*00:01:00 {system ("
sudo raspistill -vf -hf -o /opt/fhem/www/pgm2/webcambild.jpg -w 640 -h 480&
sudo convert /opt/fhem/www/pgm2/webcambild.jpg -rotate 3 -crop 350x50+70+14 /opt/fhem/www/pgm2/AUSGABEBILD.png&
sudo convert /opt/fhem/www/pgm2/AUSGABEBILD.png  /opt/fhem/www/pgm2/AUSGABEBILD.tif&
sudo tesseract /opt/fhem/www/pgm2/AUSGABEBILD.tif /opt/fhem/www/pgm2/Zahl -l deu&
")}

jetzt komme ich aber nicht weiter,
kann mir vielleicht jemand vom Team sagen wie ich die Datei "Zahl.txt" jetzt in Fhem bekomme?

MfG
Klaus
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: dev0 am 11 Januar 2017, 16:36:26
Besser alle Befehle in ein shell script packen und das im Huntergrund aufrufen. Am Ende des Scripts mit netcat an fhem übergeben:

cat Zahl.txt|nc <fhem-ip> <fhem_telnet-port>


Edit: sorry vergessen, dass Du noch 'setrading <device> <reading>...' mit einbauen mußt...
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: betateilchen am 11 Januar 2017, 16:51:01
Einlesen von Textdateien ist in fhem grundsätzlich ganz einfach möglich.


my $fileName = <pathToFile>;
my ($err, @content) = FileRead({FileName => $fileName, ForceType => "file"});


Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: betateilchen am 11 Januar 2017, 16:54:00
Frage am Rande: Welchen Sinn macht es, einen Gaszähler im Minutentakt abzulesen?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 11 Januar 2017, 17:42:31
Danke Betateilchen, aber ich kann damit leider nichts anfangen. entweder ich bin zu .............

Soll es so aussehen?

define Leistung_notify notify  Leistung.* { my $fileName = /opt/fhem/www/pgm2/Zahl.txt;
my ($err, @content) = FileRead({FileName => $fileName, ForceType => "file"}); }

define Leistung dummy

An Dev0
die 1 min ist nur vorläufig und wird später nach Funktionierung auf eine andere Zeit festgelegt.
Ich will nur nicht zu lange warten müssen.

Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 12 Januar 2017, 19:56:00
Kann mir denn keiner helfen,
ich hänge jetzt schon Stunden damit herum.
Jetzt bin ich soweit und es klappt immer noch nicht

define leistung at +*00:01:00 { fhem  'set Leistung'  my ($err, @content) = FileRead ({FileName => fhem/www/pgm2, ForceType => "Zahl.txt"});}

Was mache ich falsch?

MfG
Klaus :'(
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 12 Januar 2017, 23:03:15

Letzter Versuch für Heute

define leistung at+*00:01:00  { fhem 'set Leistung'  my $fileName = <fhem/www/pgm2>;  my ($err, @content) = FileRead({FileName => FileName , ForceType => "Zahl.txt"});;

Dann Fehlermeldung:
2017.01.12 22:57:55 3: leistung: Unknown command {, try help.
Unknown command my, try help.

MfG Klaus
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 07:54:40
Zitat von: klausmrkor am 12 Januar 2017, 23:03:15
Letzter Versuch für Heute

define leistung at+*00:01:00  { fhem 'set Leistung'  my $fileName = <fhem/www/pgm2>;  my ($err, @content) = FileRead({FileName => FileName , ForceType => "Zahl.txt"});;

Dann Fehlermeldung:
2017.01.12 22:57:55 3: leistung: Unknown command {, try help.
Unknown command my, try help.

MfG Klaus

Hallo Klaus,

bei Dir fehlt zwischen at und dem + ein Leerzeichen --> aber es wird immer noch nicht gehen ;-)

Gehen wir das ganze einmal Logisch durch

Du hast eine Datei wo eine Zahl drinnen steht
FileRead gibt dir die Datei als Array zurück
Du hast ein Reading welches aktualisiert werden muss

ergo sollte folgende Vorgehensweise zum Erfolg führen

Einlesen Datei in Array
benötigte Zeile Zwischenspeichern
Reading mit Zwischenspeicher setzen ...

also ungefähr folgendes

{
  my $fileName = <pathToFile>;
  my ($err, @content) = FileRead({FileName => $fileName, ForceType => "file"});

  fhem "setreading ('MeinDummyInFHEM'', 'MeinReadingVomDummy', @Content[ZeileWoDerWertDrinnenSteht]";
}


Achtung die erste Zeile ist @Content[0]

Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 11:52:59
 Hallo,
das war eine gute Beschreibung.
aber ich stehe immer noch auf dem Schlauch.

+*00:01:00  {
  my $fileName = <fhem/www/pgm2>;
  my ($err, @content) = FileRead({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading ('Leistung'', 'abgelesen', @Content[0])";
}

Fehlermeldung:
2017.01.13 13:19:50 1: ERROR evaluating {
  my $fileName = <fhem/www/pgm2>;
  my ($err, @content) = FileRead({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading ('Leistung','abgelesen',@Content[0])";
}: Global symbol "@Content" requires explicit package name at (eval 1169) line 5.

2017.01.13 13:19:50 3: leistung: Global symbol "@Content" requires explicit package name at (eval 1169) line 5.

fhem/www/pgm2 in spitze Klammern??
hinter Leistung 2x Striche
MeinReadingVomDummy(abgelesen)  wie in Leistung Dummy
Klammer hinter @Content[0]



Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 13:19:14
naja,das Blaue musst Du schon entsprechend Deinen persönlichen Gegebenheiten entsprechend anpassen ...

und bei Deinen Sudo Aufrufen am Anfang - Du schickst diese mit & in den Hintergrund - jetzt die Frage: Warten diese entsprechend aufeinander?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 13:24:58
Ich habe gerade abgeändert.
Bitte nochmals schauen
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 13:28:49
<fhem/WWW/pgm> --> 'ich/bin/irgenwo/der/Pfad/im/Dateisystem/Beispiel/opt/fhem/'

bei dem Content aka content hast Du nicht richtig gelesen .... mein Fehler Dein Problem ;-)
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: micomat am 13 Januar 2017, 13:29:52
der Pfad sollte vermutlich eher so aussehen: /fhem/www/pgm2 und nicht in eckigen Klammern stehen
das zweite Hochkomma sieht fuer mich auch fehl am Platz aus
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 14:13:26
Ich muss nochmals fragen
Datei :  /opt/fhem/www/pgm2/Zahl.txt

mein Define at  sieht so aus:

+*00:01:00  {
  my $fileName = /opt/fhem/www/pgm2 ;
  my ($err, @content) = FileRead({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @Content[0] )";
}

Dann kommt Fehlermeldung;

2017.01.13 14:08:13 1: ERROR evaluating {
  my $fileName = /opt/fhem/www/pgm2 ;
  my ($err, @content) = FileRead({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @Content[0] )";
}: syntax error at (eval 1297) line 2, near "/opt/fhem"
Global symbol "$fileName" requires explicit package name at (eval 1297) line 3, <GEN8> line 4970.
Global symbol "@Content" requires explicit package name at (eval 1297) line 5, <GEN8> line 4970.

2017.01.13 14:08:13 3: leistung: syntax error at (eval 1297) line 2, near "/opt/fhem"
Global symbol "$fileName" requires explicit package name at (eval 1297) line 3, <GEN8> line 4970.
Global symbol "@Content" requires explicit package name at (eval 1297) line 5, <GEN8> line 4970.

Wie geht es Weiter ???????????????????????????
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: micomat am 13 Januar 2017, 14:22:59
my $fileName = '/opt/fhem/www/pgm2';

hier haben jetzt Hochkomma gefehlt :)
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 15:19:06
C     c     sieht Du jetzt den Unterschied beim englischem Inhalt?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 16:56:33
+*00:01:00  {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => 'Zahl.txt'});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @Content[0] )";
}

Und Fehlermeldung:

2017.01.13 16:53:03 1: ERROR evaluating {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => 'Zahl.txt'});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @Content[0] )";
}: Global symbol "@Content" requires explicit package name at (eval 1589) line 5, <GEN8> line 5332.

2017.01.13 16:53:03 3: leistung: Global symbol "@Content" requires explicit package name at (eval 1589) line 5, <GEN8> line 5332.

Gibt es denn keine andere Möglichkeit an die Daten zu kommen?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 17:22:38
schreib den Content doch mit kleinem C am Anfang ...

Perl ist Case sensitive
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 13 Januar 2017, 17:24:03
betateilchen? Hast Du noch Popcorn?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 13 Januar 2017, 17:27:36
Zitat von: CoolTux am 13 Januar 2017, 17:24:03
betateilchen? Hast Du noch Popcorn?
Wagonweise :-)

aber ich gebe bald auf ...

auf skimmen und copy paste habe ich keine große Lust ...

Hilfe zur Selbsthilfe, das ist mein Motto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 13 Januar 2017, 17:37:15
An den Threadersteller. Bitte sei so lieb und schreibe Deinen Code und Logausgaben in Codetags. So kann man das kaum lesen.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 18:03:16
Entschudigung, manchmal hat man Tomaten auf den Augen, ich habe einfach das "C" nicht gesehen.
Es sieht jetzt schon anderst aus.
aber

2017.01.13 17:46:22 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 1613) line 5.
2017.01.13 17:46:22 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => 'Zahl.txt'});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @content[0] )";
}
2017.01.13 17:46:22 1: PERL WARNING: Use of uninitialized value in join or string at (eval 1613) line 5.
2017.01.13 17:46:22 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => 'Zahl.txt'});

  fhem "setreading ( 'Leistung' , 'abgelesen' , @content[0] )";
}
2017.01.13 17:46:22 1: devspec2array (: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE ()$/ at fhem.pl line 1185.

2017.01.13 17:46:22 3: setreading ( 'Leistung' , 'abgelesen' ,  ) : Please define ( first
2017.01.13 17:46:22 3: leistung: Please define ( first


was soll ich denn noch definieren?

ich habe
define Leistung dummy
nur wie bekomme ich das "abgelesen" hinein?

Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 13 Januar 2017, 18:13:14

fhem "setreading Leistung abgelesen " . $content[0];

Versuche mal so.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 19:18:49
Ich habe es gemacht, aber kein Erfolg

+*00:01:00  {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading Leistung abgelesen " . $content[0];
}


2017.01.13 19:15:23 1: PERL WARNING: Use of uninitialized value $content[0] in concatenation (.) or string at (eval 1744) line 5.
2017.01.13 19:15:23 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => "Zahl.txt"});

  fhem "setreading Leistung abgelesen " . $content[0];
}

2017.01.13 19:15:23 3: setreading Leistung abgelesen  : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.

2017.01.13 19:15:23 3: leistung: Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 13 Januar 2017, 19:34:48
Suche Dir bitte einen anderen Weg oder versuche Dir Perl Grundkenntnisse zu zu legen. So wird das nichts. Dein Array wird nicht gefüllt. Zu mindest sieht es so aus. Schaue doch mal ob Dein err nicht einen Wert hat der dir verrät was los ist. Gib mal err aus.
print oder printf

Ich bin weg
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 13 Januar 2017, 22:59:33
Kann mir vielleicht jemand sagen, wie ich ein "Test.pl" aus fhem aufrufen kann?

define Test at +*00:01:00  {fhen "/opt/fhem/www/pgm2/Test.pl")}
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: hartenthaler am 14 Januar 2017, 00:20:07
Zitat von: klausmrkor am 13 Januar 2017, 22:59:33
Kann mir vielleicht jemand sagen, wie ich ein "Test.pl" aus fhem aufrufen kann?

define Test at +*00:01:00  {fhen "/opt/fhem/www/pgm2/Test.pl")}
Wozu denn das? Mit fhen geht es sicher nicht. Jeder Buchstabe zählt.

Wieso gehst Du nicht den eingeschlagenen Weg weiter? Was steht in $err und was steht in @content nach dem Einlesen der Datei? Ich habe jetzt nicht speziell nach der Funktion FileRead in fhem gesucht, aber naheliegenderweise wäre für mich plausibler

my $fileName = "/opt/fhem/www/pgm2/Zahl.txt";
my ($err, @content) = FileRead({FileName => $fileName, ForceType => "file"});


Ein alternativer Ansatz ist oben auch schon einmal angerissen worden. Du kannst in Deinem Shell-Script direkt einen dummy-Wert in fhem setzen.

perl "$fhemdir"/fhem.pl 7072 $myTelnetPW "trigger $dev $reading $filecontent

Dabei enthält die Shell-Variable fhemdir den Pfad zu fhem auf Deinem System und myTelnetPW das eventuell nötige Passwort. dev enthält den Namen Deines dummy-Devices und reading den Namen des Readings, das gesetzt werden soll. In filecontent müsste die Zahl aus Deinem File Zahl.txt stehen. Dann kannst Du in fhem mit einem notify darauf reagieren sobald Dein shell-Script durchgelaufen ist und einen Wert geschrieben hat (sonst müsstest Du noch irgendwie den cron-job für das shell-script und das at in fhem synchronisieren).
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 14 Januar 2017, 00:56:16
mach mal dieses ....

+*00:01:00  {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 Debug, 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}


und schreib dann mal was im Logfile dazu drinnen steht - ich vermute einfach, das Zahl.txt in dieser Schreibweise nicht als Datei vorliegt ...

und setzt mal das Verbose vom Notify auf 5
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 14 Januar 2017, 01:26:16
Hier der Fehlercode:

2017.01.14 01:18:25 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 2063) line 5.
2017.01.14 01:18:25 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => "Zahl.txt"});

  Log3 Debug, 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}
2017.01.14 01:18:25 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 2063) line 7.
2017.01.14 01:18:25 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => "Zahl.txt"});

  Log3 Debug, 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}
2017.01.14 01:18:25 1: ERROR evaluating {
  my $fileName =  '/opt/fhem/www/pgm2' ;
  my ($err, @content) = FileRead ({FileName => $fileName, ForceType => "Zahl.txt"});

  Log3 Debug, 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}: Not enough arguments for main::Debug at (eval 2063) line 5, near "Debug,"

2017.01.14 01:18:25 3: leistung: Not enough arguments for main::Debug at (eval 2063) line 5, near "Debug,"
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 14 Januar 2017, 01:35:41
+*00:01:00  {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}


bitte noch einmal ... hatte meinen letzten Code noch einmal editiert
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Wuppi68 am 14 Januar 2017, 02:07:14
btw ...

deine Grafikkonvertierung kannst Du auch optimieren

das tesseract kann auch direkt jpg lesen .... brauchst diese also nicht wirklich vorher via png nach tif zu convertieren

bin jetzt erst mal die Bettkante besuchen
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Prof. Dr. Peter Henning am 14 Januar 2017, 05:43:49
Könnte mir jemand mal eine PM schicken, wenn das heute fortgesetzt wird ? Hat einen hohen Unterhaltungswert.

@klausmrkor: Um den Unterhaltungswert etwas zu verringern, schlage ich vor, ein wenig hier zu blättern:

https://wiki.selfhtml.org/wiki/Perl

Etwa anfangen hier: https://wiki.selfhtml.org/wiki/Perl/Listen_bzw._Arrays#Auf_einzelne_Listenelemente_zugreifen

LG

pah
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 14 Januar 2017, 09:05:54
Anbei die letzte Fehlermeldung:

2017.01.14 08:51:34 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 2129) line 5.
2017.01.14 08:51:34 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}
2017.01.14 08:51:34 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 2129) line 7.
2017.01.14 08:51:34 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];
}
2017.01.14 08:51:34 1: PERL WARNING: Use of uninitialized value $err in concatenation (.) or string at (eval 2129) line 5.
2017.01.14 08:51:34 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: @content[0]";

  fhem "setreading Leistung abgelesen " . @content[0];2017-01-14 08:54:34 dummy Leistung abgelesen: 0093b43
2017-01-14 08:54:34 at leistung Next: 08:55:34
}
2017.01.14 08:51:34 0: Error:  Content[0]: 0093b43


Er hat die Datei ausgespuckt

2017-01-14 08:54:34 dummy Leistung abgelesen: 0093b43
2017-01-14 08:54:34 at leistung Next: 08:55:34


und für sie Prof. Dr. Peter Henning : es freud mich daß ich einen großen unterhaltswert habe. Ich hoffe, daß sie sich gut unterhalten haben.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: micomat am 14 Januar 2017, 09:43:51
@pah, cooltux & Co.
mal komplett off topic... das ist das anfaengerfragen-board, nicht das sich "ueber leute lustig machen und vergraulen"...
wir haben alle irgendwann mal angefangen
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 14 Januar 2017, 10:30:02
Also wenn unsere Tips bezüglich Perl lernen und wie man Debuged als verkraulen angesehen werden, dann muss ich mich in aller Form entschuldigen.
Weiß dann aber auch in welchen Forumsbereich ich nicht mehr schreiben werde.


Grüße
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Paul.baumann am 14 Januar 2017, 10:39:58
Ersetze mal @content[0] durch $content[0]:

+*00:01:00  {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: $content[0]";

  fhem "setreading Leistung abgelesen " . $content[0];
}


Paul
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: klausmrkor am 14 Januar 2017, 11:50:47
Hier der Fehlercode 

2017.01.14 11:43:04 1: PERL WARNING: Use of uninitialized value $err in concatenation (.) or string at (eval 2525) line 5.
2017.01.14 11:43:04 3: eval: {
  my $fileName =  '/opt/fhem/www/pgm2/Zahl.txt' ;
  my ($err, @content) = FileRead ($fileName);

  Log3 'TestNotify', 0, "Error: $err Content[0]: $content[0]";

  fhem "setreading Leistung abgelesen " . $content[0];

}
2017.01.14 11:43:04 0: Error:  Content[0]: oosäsjos};


jetzt muss ich nur noch Tesseract OCR anlernen

Ich bedanke mich schon jetzt für die grosse Mühe die ihre mit mir hattet.

Klaus

Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Prof. Dr. Peter Henning am 14 Januar 2017, 12:17:13
Leute, contenance bitte.

Es steht jedem frei zu entscheiden, WIE er programmieren lernen möchte. Allerdings darf man sich über den eigenen Unterhaltungswert nicht beklagen, wenn man Anfängerfragen zur Programmierung (die mit der Anwendung FHEM gar nichts zu tun haben), in einem anwendungsspezifischen Forum stellt. Es ist nämlich sicher nicht der Sinn des FHEM-Forums "Anfängerfragen", jemanden Zeichen für Zeichen durch seinen Code zu leiten, wenn derjenige sogar die Fehlermeldung

Zitat2017.01.14 01:18:25 1: PERL WARNING: Scalar value @content[0] better written as $content[0] at (eval 2063) line 7.

ignoriert und einfach die gleiche Frage noch einmal stellt. Dafür gibt es Anfängerforen zur Programmierung.

LG

pah
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 27 August 2017, 15:24:00
Hallo Leute,

ist zwar schon etwas her, dass Ihr Euch mit dem Thema befasst habt, aber mein kleines Problem könnte passen.
Nach den ganzen Befehlen, eine Datei einzulesen, habe ich es hinbekommen, die letzte Zeile einer Datei auszulesen und einem Dummy auf´s Auge zu drücken. ;D

Warum ich das mache?

Ich habe eine Solarzelle auf dem Dach und eine Software schreibt alle 2 Sekunden Daten in eine LOG-Datei:

"THK";"26.8.2017 17:50:25";109;2258;000000000000
"THK";"26.8.2017 17:50:28";107;2258;000000000000
"THK";"26.8.2017 17:50:30";106;2258;000000000000
"THK";"26.8.2017 17:50:32";106;2258;000000000000
"THK";"26.8.2017 17:50:35";105;2258;000000000000
"THK";"26.8.2017 17:50:37";104;2258;000000000000
...


Jetzt möchte ich immer die letzte Zeile auslesen.

PROBLEM: Es wird nur der erste Wert (Name) ausgelesen. ("THK")

Ich habe folgendes zum Test gemacht:

Datei erstellt test.txt und ins log Verz. gelegt.

Ich habe ein Dummy erzeugt:
define energieerzeugung dummy

und ein AT erstellt, welches alle 5 Sekunden eine Datei ausliest:

define leistungholen at +*00:00:05 { my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; fhem "set energieerzeugung $content[-1]";;}

In der test-Datei stehen Zeilenweise Daten drin:

"Zeile 1";"ABC"
"Zeile 2";"DEF"
"Zeile 3";"GHI"
"Zeile 4";"JKL"
"Zeile 5";"MNO"

Ergebnis: Im Dummy steht "Zeile 5".

und sonst nix - es fehlt also das "MNO".

Wenn ich das Semikolon durch z.B. ein Komma ersetze, wird die ganze Zeile ausgelesen. ("Zeile 5";"MNO")

Das ich das eingentliche Logfile nicht beeinflussen kann, stehe ich vor dem Problem mit dem ";".

Habt Ihr eine kleine Lösung für mich?

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Prof. Dr. Peter Henning am 29 August 2017, 16:08:51
Gehen wir mal davon aus, dass es sich um ein ordentliches Linux-System handelt. Dann bitte mal über das Konzept von Pipes als virtuellen Dateien informieren, und über sed und awk. Damit lässt sich die ganze Mimik in eine Zeile packen.

LG

pah
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 19:05:28
Ohh... das System, mit dem Ich arbeite, ist kein Linux.

Die Software, die das Logfile erstellt, läuft unter Windows.

Fhem läuft bei mir auch unter Windows.

Und ganz ehrlich, ich weis nicht, was mit Pipes und virtuellen Dateien gemeint ist.

Und eine Zeile?

Die Logdatei?

Puhh - bin gerade etwas überfordert. :o

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 29 August 2017, 19:21:43
Also der einzige der mir da einfällt wäre Michael Winkler. Er könnte in Bezug zu Windows was wissen. Die meisten hier arbeiten mit Mac oder Linux.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 20:17:41
Versuch mal das, es liegt einfach am Semikolon ->defmod leistungholen at +*00:00:05 { my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set energieerzeugung $content[-1]"}

Können die Perl Experten sicher besser, aber ich habe es so probiert und es tut :)

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 20:30:48
Hallo Otto

leider hat es nicht geklappt.

:'( :'( :'(

Kein Unterschied zu vorher.

Ich denke es liegt am Auslesen der Datei. Sobald das Semikolon erreicht wird, ist für die Zeile Ende.

Bei Dir geht es?

Ev. liegt es dann ev. an der Perlversion.

Ich habe Perl unter Windows installiert (strawberry). Die genaue Version habe ich gerade nicht parat.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 20:38:40
Hallo Thomas,

nein, es liegt am set Befehl, bei dem ist einfach beim Semikolon Schluss.
was liefert Dir diese Codezeilen getrennt jeweils  einfach in der FHEM Kommandozeile zurück?
{ my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; return $content[-1]}
{ my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; return $content[-1]}

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 20:41:22
Hallo Otto

Zeile 1:

Can't find string terminator '"' anywhere before EOF at (eval 7366977) line 1.

Zeile 2:
Can't find string terminator '"' anywhere before EOF at (eval 7367074) line 1.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 20:46:55
Sorry da war ein " zuviel, ich habe es editiert probiere es nochmal.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 20:52:58
Hallo Otto

das scheint zu gehen:

Zeile 1:

"Zeile 5","MNO"

Zeile 2:

"Zeile 5";"MNO"

Scheint also das Auslesen zu gehen.

hmmm
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 20:55:50
Dann probiere noch { my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set energieerzeugung $content[-1]"} ;)

Wenn das richtig im dummy ankommt hast Du ein C&P Fehler :) oder dein anderes at ist noch aktiv?

Ich habe mal in #42 von define auf defmod geändert.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 21:04:12
Hallo Otto

ich habe erst einen Luftsprung gemacht - war umsonst.

geht nicht.

Aber es liegt nicht am Auslesen!

Wenn ich z.B. set energieerzeugung "Zeile 5";"MNO" absetze, kommt auch nur "Zeile 5" im Dummy an.

Also geht die übergabe an´s Dummy mit ; nicht.

Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 21:06:22
Das sage ich doch! Aber die Variante mit Komma muss doch gehen!?!
bei set dummy "Zeile 5";"MNO" ist ab dem ; ein neuer Befehl und das wirft maximal einen Fehler

Du kannst anstatt Komma auch etwas anderes nehmen, bloß semikolon wird schwierig, Brauchst Du ein Semikolon im Dummy?
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 21:12:15
Die ;´s sind mir egal - ich brauche nur die Zahlen dazwischen.

Ich versuche mal alles zusammenzusetzen, sodass nur das , gesetzt wird.

Th.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 21:15:22
Hallo Otto

habe folgenses getestet:

{ my @content = FileRead({FileName => "log/test.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; return $content[-1];; fhem "set energieerzeugung $content[-1]"}

geht aber trotzdem nicht.

Habe ich ev. das falsch zusammengesetzt?
bestimmt - es geht nämlich garnicht...

Irgend etwas habe ich falsch gemacht.

Th.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 21:18:23
Ja  :'(

warum nimmst Du nicht direkt meinen Code aus #48 ? Der ist doch für Dich gemacht?!

das das ersetzen geht hast Du doch in #47 schon bestätigt  :-[

Und lerne bitte Codetags - die # Taste über dem  :-X Smiley
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 21:21:08
Hallo Otto

manchmal steht man vor einem Wald und sucht Bäume.

JEP! Geht.

Puhh - Ich danke Dir nochmal.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 21:42:37
Hallo Otto.

Danke für den # Hinweis - habe nicht dran gedacht.

Trotzdem habe ich ein komisches Phänomen:

Wenn ich aus der Originaldatei folgendes als Befehl absetzte, wird alles sauber an das Dummy übergeben:

{ my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set energieerzeugung $content[-1]"}

raus kommt im Dummy: "THK","29.8.2017 20:16:55",0,6228,000000000000

cool.

Jetzt alles ins AT:

+*00:00:05 { my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set energieerzeugung $content[-1]"}

Das AT aus der Config:

define leistungholen at +*00:00:05 { my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"});;;; $content[-1] =~ s/\;;;;/,/g;;;; fhem "set energieerzeugung $content[-1]"}

Im Dummy kommt nur "THK" an.

:-\

Siehst Du noch einen Fehler?

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 21:53:12
Du hast jetzt den Code für das define in die DEF eingetragen? Schwerer Fehler ...

Die Anzahl der ; ist in beiden Fällen unterschiedlich  ::)
ZitatMehrere FHEM-Kommandos hintereinander werden mittels Semikolon (;) getrennt. Weil Semikola auch in PERL-Code oder SHELL-Programmen benutzt werden, müssen sie mittels doppelten Semikola geschützt werden. Lesen Sie sich bitte die Bermerkungen des notify-Abschnittes zu Kommandoparametern und Regeln durch.
Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.

define lampoff at 07:00 set Lamp1 off; set Lamp2 off
define lampoff at 07:00 set Lamp1 off;; set Lamp2 off

Für jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 für 10 Minuten einzuschalten schreibt man:
define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 29 August 2017, 22:03:49
Hallo Otto

jetzt hab ich´s

Ist irgendwie verwirrend. Einmal müssen zwei Semikolons genommen werden und dann aber wieder nur eines.

Aber jetzt geht es.

So sieht es jetzt in der CFG aus:

define leistungholen at +*00:00:05 { my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; fhem "set energieerzeugung $content[-1]"}

Damit geht es.

Danke nochmal.

Gruß Thomas


PS.: Eine Bitte: Sei nicht so hart zu den Anfängern obwohl ich das verstehen kann, wenn man immer wieder schreiben muss "nimm das #..." - wir sind nicht nur innerhalb von FHEM Anfänger, sondern auch im Forum. Alle Regeln perfekt zu beherschen ist nicht einfach.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 29 August 2017, 22:22:42
Hallo Thomas,

uih da bin ich jetzt wieder zu sehr als Oberlehrer durchgekommen. Sorry das wollte ich nicht.

Weißt Du, ich "kann zwar Windows" aber mein FHEM läuft unter Linux. Das FileRead was bei Dir läuft gibt es bei mir nicht, ich hab es anders nachgestellt ( my @content = `cat /home/pi/test.txt`). Dann versuche ich Deine Umgebung in dem was ich schreibe nach zu "denken" dabei können natürlich Fehler passieren. Wenn Du dann sagst es geht nicht, zweifle ich an mir.

Im geschriebenen Wort steht nur 7 % unserer Kommunikation :) da kann es im schnellen in und her schon mal schief gehen. 

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: betateilchen am 30 August 2017, 10:25:24
Zitat von: Otto123 am 29 August 2017, 22:22:42
Das FileRead was bei Dir läuft gibt es bei mir nicht, ich hab es anders nachgestellt

Das FileRead() gibt es bei Dir auch, Du benutzt es nur nicht. FileRead() ist eine von FHEM bereitgestellte Funktion.
An dieser Stelle mit einem Systemaufruf zu arbeiten, um eine Datei mit cat auszugeben, ist schon ziemlich haarsträubend.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Marlen am 30 August 2017, 12:20:07
Hi,

mal ne Frage zwischendurch, wie kann man denn von einem Bild Zahlen oder/und Buchstaben auslesen?

Würde gerne KFZ Nummernschilder lesen, wenn jemand auf den Hof fährt.

LG
  Marlen
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: dev0 am 30 August 2017, 15:40:17
Zitat von: Marlen am 30 August 2017, 12:20:07
mal ne Frage zwischendurch
Völlig offtopic hier. Such im Web nach: Bilderkennung, OCR, etc...
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: nils_ am 30 August 2017, 15:47:28
alternativ mal in den ersten post geschaut....
die befehle gegoogelt und man wäre bei tesseract fündig geworden.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Marlen am 30 August 2017, 16:53:40
Danke...ihr seid so nett  :-* :-*
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 30 August 2017, 20:34:38
Zitat von: betateilchen am 30 August 2017, 10:25:24
Das FileRead() gibt es bei Dir auch, Du benutzt es nur nicht. FileRead() ist eine von FHEM bereitgestellte Funktion.
An dieser Stelle mit einem Systemaufruf zu arbeiten, um eine Datei mit cat auszugeben, ist schon ziemlich haarsträubend.
Hallo Udo,
ich habe es gerade noch mal probiert, ich hatte einen simplen Fehler in meinem Einzeiler deswegen lief die Variante mit FileRead nicht  :-[
Hab etwas Nachsicht mit einem Halbwissenden - trifft bei mir nun mal bei beidem zu Linux und FHEM  :-[

Gibt es eigentlich irgendwo eine Doku zu den FHEM Funktionen?

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: krikan am 30 August 2017, 21:17:13
Zitat von: Otto123 am 30 August 2017, 20:34:38
Gibt es eigentlich irgendwo eine Doku zu den FHEM Funktionen?
Schau mal in: https://wiki.fhem.de/wiki/DevelopmentModuleAPI
Gruß, Christian
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 02 September 2017, 16:14:14
Hi Ihr

Ihr habt super weiter geholfen und jetzt habe ich "Blut geleckt"

Ich lese jetzt die Log Datei aus und übergebe alles an mein Dummy.

+*00:00:05 { my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"}); $content[-1] =~ s/\;/,/g; $content[-1] =~ s/\"THK\"\,//g; $content[-1] =~ s/\,000000000000//g; $content[-1] =~ s/\"//g; fhem "set energieerzeugung $content[-1]"}

Es wird folgendes an mein Dummy übergeben: 2.9.2017 16:02:46,59,9025

Ich habe die Formel ist bestimmt umständlich ergänzt, aber sie geht.

Erst das Datum mit Uhrzeit - dann der aktuelle Wert und zum Schluss der Summenwert, der immer höher wird.

Wie kann ich die Werte Trennen?

Sind ja mit Komma getrennt.

Könnte man die drei Werte in separate Dummy´s legen oder denke ich gerade zu kompliziert?

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 02 September 2017, 17:29:37
Hi Thomas,

Du hast sie doch schon getrennt. Schreib sie doch einfach mit userreadings in getrennte readings in einem Dummy.
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Beispiele:
attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
attr myMultiMeter userReadings energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0}, energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}
Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 02 September 2017, 18:19:55
Hallo Otto

danke für deine erneute Hilfe.

Das mit den Userreadings habe ich gesehen, aber nicht verstanden.

attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }

Dieser Befehl setzt ein Userreading "energy und füllt ihn mit einem Wert aus einem anderen Reaning.

Das Problem ist aber, wie lese ich die drei Werte per z.B. PerlCode aus?

Ich habe drei Werte die jeweils mit einem Komma getrennt sind.

In mein Dummy habe ich folgende Userreadings erstellt:

LeistungDatum { erstenWertauslesen,std-Datum },
LeistungAktuell { zweitenWertauslesen,0 },
LeistungSumme { drittenWertauslesen,0 }

Jetzt weiß ich nicht wie ich per Perl die Werte auslesen kann.

Gruß Thomas

Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 02 September 2017, 18:27:02
Das ist nur ein Beispiel, der wichtige Satz ist
Zitatindem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird
Also fang doch erstmal an und probiere deinen bisherigen Codeattr energieerzeugung userReadings Wert1 { my @content = FileRead({FileName => "log/SMI_Loggdatei.txt", ForceType => "file"});; $content[-1] =~ s/\;;/,/g;; return $content[-1]}

Da müsste anstatt im state vom Dummy einfach noch ein Reading Wert1 erzeugt werden.
Dann such mal nach dem split Befehl.
Den Rest hast Du doch fast fertig mit Deinem endgültigen Code wo Du die drei Werte mit drei Kommas getrennt hast - oder habe ich das falsch verstanden?

Wie gesagt, ich bin kein Perl Experte  :-[

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 02 September 2017, 18:53:00
JAJA Das habe ich schon getestet - ist genau so wie ich den Wert meinem Dummy zuweise.

Mit Deinem Vorschlag habe ich jetzt ein Reading "Wert1" mit den Werten STATE.

Wert1 = "THK","2.9.2017 18:48:03",6,9226,000000000000

Ich brauche aber nur jeweils einen Wert. z.B. "THK" )der erste Wert vor dem ersten Komma.

Dann im zweiten Wert "2.9.2017 18:48:03" zwischen dem ersten Komma und dem Zweiten

usw.

Dafür weiß ich nicht welchen Perlcode ich nehmen muss.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Otto123 am 02 September 2017, 19:21:51
Mit sowas {my ($W1, $W2, $W3) = split(/,/,'"THK","2.9.2017 18:48:03",6');;return $W1} trennst Du den String z.B. am Komma auf. Kannst Du als Einzeiler direkt ausprobieren.

Aber es ist besser da hilft jetzt Einer der es besser kann als ich. Das erscheint mir so viel zu umständlich.

Gruß Otto
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 02 September 2017, 20:02:40
Habe folgendes eingebaut:

LeistungDatum { return (split(",","2.9.2017 19:39:42,0,9227"))[0]}

Das geht!

Jetzt muss ich nur noch den Wert des Dummy´s einbauen.

Hier stockt es ein wenig.

Wert1 { return (split(",",fhem ("getstate energieerzeugung")))[2]}

läuft aus einen Fehler.

Ich springe mit den {} in Perl und darin mit fhem wieder zurück.

Da fehlt bestimmt nur noch eine Kleinigkeit.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 02 September 2017, 20:43:50
ups - gefunden...

Wert1 { return (split(",",ReadingsVal("energieerzeugung", "state", 0)))[1]}

So habe ich die Readings gemacht:

LeistungDatum { return (split(",",ReadingsVal("energieerzeugung", "state", 0)))[0]},
LeistungAktuell { return (split(",",ReadingsVal("energieerzeugung", "state", 0)))[1]},
LeistungSumme { return (split(",",ReadingsVal("energieerzeugung", "state", 0)))[2]}


geht.

Besser kann man es bestimmt machen...

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Edi77 am 04 September 2017, 17:35:57
@Schmitzkatze

Wie hast du das Reading genau gemacht?


attr energieerzeugung userReadings LeistungSumme { return (split(",",ReadingsVal("energieerzeugung", "state", 0)))[2]}
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: Schmitzkatze am 04 September 2017, 19:35:48
Hallo Edi77

Die Readings im Dummy sehen SO aus (aus meiner CFG)

attr energieerzeugung userReadings LeistungDatum { return (split(",",ReadingsVal("energieerzeugung", "state", "0")))[0]},\
LeistungAktuell { return (split(",",ReadingsVal("energieerzeugung", "state", "0")))[1]},\
LeistungSumme { return (split(",",ReadingsVal("energieerzeugung", "state", "0")))[2]}


Das sind die drei Readings die ich brauche.

Gruß Thomas
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: screetch82 am 09 November 2017, 13:48:20
wie kann ich denn mehr als eine Zeile in der Datei auslesen? Ich habe quasi 2000 Zeilen in der CSV und würde einmal am Tag die Datei vom Vortag einlesen wollen.
Titel: Antw:Datei "Zahl.txt" in Fhem bekommen
Beitrag von: CoolTux am 09 November 2017, 13:59:26
http://www.hidemail.de/blog/datei-komplett-einlesen.shtml