Readings von verschiedenen Devices in einem Textfile

Begonnen von uwirt, 14 Juli 2019, 10:28:06

Vorheriges Thema - Nächstes Thema

Byte09

Zitat von: TomLee am 15 Juli 2019, 19:48:55
Kann ich jetzt nachvollziehen  [emoji14]

Genau, nur aufrufen der Detailansicht oder aktualisieren der Seite.

Der Fehler kommt nur auf dem Tablet (Android) mit dem Standard-Browser der sich "Internet" schimpft. Mit allen anderen, ob  Tablet oder PC klappt alles einwandfrei.
Danke, ich schaue mir das morgen mal an.

grussByte09

Gesendet von meinem ELE-L29 mit Tapatalk


uwirt

Ich habe das jetzt mal versucht. Das erstellen vom Device und so ging ohne Probleme - nur leider wird keine Datei erstellt:
cmd1 ist:

{
my $test = ReadingsVal( 'HM_WDS100', 'temperature', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDC7000', 'temperature', 0 );
open (DATEI, ">/volume1/@appstore/fhem/opt/FHEM/datain38.ini") or die $!;
print DATEI $test;
close (DATEI);
}



Im Logfile steht dazu:


2019-07-15 20:55:00 MSwitch datain38_ini last_activation_by: timer
2019-07-15 20:55:00 MSwitch datain38_ini EVENT: datain38_ini:execute_timer_P3:20:55
2019-07-15 20:55:00 MSwitch datain38_ini EVTFULL: datain38_ini:execute_timer_P3:20:55
2019-07-15 20:55:00 MSwitch datain38_ini EVTPART1: datain38_ini
2019-07-15 20:55:00 MSwitch datain38_ini EVTPART2: execute_timer_P3
2019-07-15 20:55:00 MSwitch datain38_ini EVTPART3: 20:55
2019-07-15 20:55:00 MSwitch datain38_ini last_exec_cmd:   {my $test = ReadingsVal( 'HM_WDS100', 'temperature', 0 );$test.=" ";$test.= ReadingsVal( 'HM_WDC70....
2019-07-15 20:55:00 MSwitch datain38_ini last_cmd: 1

FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Byte09

da kann ich jetzt auf die schnelle nichts zu sagen . sicher ist , das er entsprechenden befehl ausgeführt hat , und eskeine fehlermeldung gab . auf was für einem system bist du unterwegs ?

habe es eben nochmal probiert, bei mir wird die datei einwandfrei geschrieben .

ich müsste mir das ansonsten morgen noch mal in ruhe anschauen.

gruss Byte09


TomLee

Zitat/volume1/@appstore/fhem/opt/FHEM/datain38.ini

Auch wenn nichts im Log steht, bei mir gabs noch nie ein opt/FHEM mglw. kann man da ansetzen ;)

uwirt

#19
Zitat von: Byte09 am 15 Juli 2019, 21:29:46
... auf was für einem system bist du unterwegs ?

Mein FHEM läuft auf einem Synology NAS


Zitat von: TomLee am 15 Juli 2019, 21:56:06
Auch wenn nichts im Log steht, bei mir gabs noch nie ein opt/FHEM mglw. kann man da ansetzen ;)

Das Unterverzeichnis exisitert auf der NAS tatsächlich. Ich hab auch schon andere Verzeichnisse ausprobiert, aber alles ohne Erfolg. Die Datei wird einfach nicht geschrieben - egal wohin ich sie auch hinsetzen will.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Byte09

kannst du bitte mal versuchen auf die fhemeigene filewrite routine umzustellen. ist zwar mal ein schuss ins blaue, aber einen versuch wert.

ersetze mal den code im FreeCmd durch folgenden und versuche ob er die datei dann schreibt.

{
my $test = ReadingsVal( 'Aussenpflanze', 'temperature', 0 );
$test.=" ";
$test.= ReadingsVal( 'Aussenpflanze1', 'temperature', 0 );
my @content;
push( @content, $test );
my $filename = "/opt/fhem/datain39.ini";
my $error = FileWrite($filename, @content);
Log3( "TEST" ,0 , "test ".$error);

}


... datei und readings musst du natürlich an dein system anpassen
gruss Byte09

uwirt

Es sieht folgendermassen aus:


2019-07-17 08:52:00 MSwitch datain38_ini last_activation_by: timer
2019-07-17 08:52:00 MSwitch datain38_ini EVENT: datain38_ini:execute_timer_P3:08:52
2019-07-17 08:52:00 MSwitch datain38_ini EVTFULL: datain38_ini:execute_timer_P3:08:52
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART1: datain38_ini
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART2: execute_timer_P3
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART3: 08:52
2019-07-17 08:52:00 MSwitch datain38_ini last_exec_cmd:   {my $test = ReadingsVal( 'HM_WDS100', 'temperature', 0 );$test.=" ";$test.= ReadingsVal( 'HM_WDC70....
2019-07-17 08:52:00 MSwitch datain38_ini last_cmd: 1


Leider wird immer noch keine Datei geschrieben. Gibt es ein Logfile mit den Details? Ich habe Debug im MSwitch auf 4 gestellt.

Was meinst du mit:
Zitat von: Byte09 am 16 Juli 2019, 20:07:55
kannst du bitte mal versuchen auf die fhemeigene filewrite routine umzustellen. ist zwar mal ein schuss ins blaue, aber einen versuch wert.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Byte09

Zitat von: uwirt am 17 Juli 2019, 08:55:40
Es sieht folgendermassen aus:


2019-07-17 08:52:00 MSwitch datain38_ini last_activation_by: timer
2019-07-17 08:52:00 MSwitch datain38_ini EVENT: datain38_ini:execute_timer_P3:08:52
2019-07-17 08:52:00 MSwitch datain38_ini EVTFULL: datain38_ini:execute_timer_P3:08:52
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART1: datain38_ini
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART2: execute_timer_P3
2019-07-17 08:52:00 MSwitch datain38_ini EVTPART3: 08:52
2019-07-17 08:52:00 MSwitch datain38_ini last_exec_cmd:   {my $test = ReadingsVal( 'HM_WDS100', 'temperature', 0 );$test.=" ";$test.= ReadingsVal( 'HM_WDC70....
2019-07-17 08:52:00 MSwitch datain38_ini last_cmd: 1


Leider wird immer noch keine Datei geschrieben. Gibt es ein Logfile mit den Details? Ich habe Debug im MSwitch auf 4 gestellt.

Was meinst du mit:
Der debugmode vom MSwitch ist hier nicht erheblich, da das MSwitch fehlerfrei durchläuft.  den kannst du also wieder auf 1 oder 0 stellen.

die Datei wird aus einem anderen Grund nicht geschrieben. Daher müsstest du den perl Code im MSwitch mal gegen den oben angegebenen ersetzen. Ist ja ähnlich so das du siehst welcher auszutauschen ist.

danach versuch es bitte nochmal.

mit set device exec_cmd_1 in der set list kannst du das MSwitch direkt den Code ausführen lassen und musst nicht warten bis der timer greift.

gruss Byte09

Gesendet von meinem ELE-L29 mit Tapatalk


uwirt

#23
Es funktioniert jetzt mit folgendem code:


{
my $test = ReadingsVal( 'HM_WDS100', 'temperature', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDC7000', 'temperature', 0 );
my @content;
push( @content, $test );
my $filename = "datain39.ini";
my $error = FileWrite($filename, @content);
Log3( "TEST" ,0 , "test ".$error);
}


Es hatte offenbar tatsächlich auch mit dem Pfad zur Datei zu tun.

Weil es ja jetzt mit dem Beispiel oben geht wollte ich mein komplettes Script mit der Speicherung auf dem anderen Pfad ausprobieren:


{
my $test = ReadingsVal( 'HM_WDS100', 'windSpeed', 0 );
$test.=" 0.00 ";
$test.= ReadingsVal( 'HM_WDS100', 'temperature', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDS100', 'humidity', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDC7000', 'airpress', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDS100', 'rain', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDS100', 'windDirection', 0 );
$test.=" 0.0 ";
$test.= ReadingsVal( 'HM_WDC7000', 'temperature', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDC7000', 'humidity', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDS100', 'sunshine', 0 );
$test.=" ";
$test.= ReadingsVal( 'HM_WDS100', 'brightness', 0 );
my @content;
push( @content, $test );
my $filename = "/volume1/web/home/consolewdfiles/datain39.ini";
my $error = FileWrite($filename, @content);
Log3( "TEST" ,0 , "test ".$error);
}


Das geht leider nicht. Wie kann ich einen absoluten Pfad definieren? Scheinbar hat FHEM ein Problem mit Perl und Pfaden.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Byte09

Ich gehe jetzt einfach mal davon aus, das fhem einfach nicht die erforderlichen Rechte hat in diesem Ordner zu schreiben. Ich schaue mir das heute abend nochmal an.

gruss Byte09

Gesendet von meinem ELE-L29 mit Tapatalk


uwirt

Ich kriege das irgendwie nicht hin. Ich kann die datain39.ini datei in irgendein FHEM unterverzweichnis kopieren - das funktioniert. Nur sobald ich diese Datei in /volume1/web/home/consolewdfiles kopieren möchte wird keine Datei erstellt Ich dachte ich hätte mit



chmod 777 -R /volume1/web/home/consolewdfiles



allgemeine Lese- und Schreibrechte vergeben.

das consolewdfiles unterverzeichnis sieht folgendermassen aus:


drwxrwxrwx 1 http http 694 Jul 13 20:41 consolewdfiles
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

uwirt

Das Thema hat sich erledigt - die Schreibberechtigung in einem übergeordneten Verzeichnis hat gefehlt.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya