NEWS
Newbie Wert aus Datei in einen neuen Datenpunkt schreiben.
-
Hallo,
ich habe eine Datei auf /temp/a.txt liegen in der steht ein Wert drin. Z.B.
21.5
Diese Zahl möchte ich in einen neuen Datenpunkt schreiben ich weiß aber nicht wie.
Probiert habe ich schon das (und das das auskommentiert ist):
! ````
var x;
! /**- Beschreibe diese Funktion …
/
function JS_Funktion_mit_Ergebnis(x) {
/
function PoolTemp_Schreiben ()
{
var PoolTemp = "cat /tmp/a.txt";
console.log('PoolTempState = ' + PoolTemp);
setState('PoolTempState', parseInt(PoolTemp));
//}
//return 0
/
schedule(" * * * * *", function () {
setState("PoolTempState"/Wohnzimmer-Chromecast.status.volume/, PoolTemp);
//setState("chromecast.0.Wohnzimmer-Chromecast.status.volume"/Wohnzimmer-Chromecast.status.volume/, 10);
});
return 0;
! }
! ````Wer kann mir helfen?
Danke und viele Grüße
Marcel Jaud
- Beschreibe diese Funktion …
-
Dafür ist https://github.com/ioBroker/ioBroker.javascript#readfile gedacht.
var fn = '/temp/a.txt'; var idPooltemp = 'PoolTempState'; function getPooltemp() { readFile(fn, function (error, data) { if(error) log('Fehler beim Lesen von ' + fn, 'error'); else setState(idPooltemp, parseFloat(data)); }); } schedule('*/1 * * * *', getPooltemp); // Jede Minute
-
Hi,
Danke.
Da kommt aber:
19:21:51.023 [info] javascript.0 Stop script script.js.common.Pool_Temp
19:21:51.059 [info] javascript.0 Start javascript script.js.common.Pool_Temp
19:21:51.060 [info] javascript.0 script.js.common.Pool_Temp: registered 0 subscriptions and 1 schedule
19:22:00.064 [error] javascript.0 script.js.common.Pool_Temp: Fehler beim Lesen von /tmp/a.txt
19:23:00.067 [error] javascript.0 script.js.common.Pool_Temp: Fehler beim Lesen von /tmp/a.txt
19:24:00.065 [error] javascript.0 script.js.common.Pool_Temp: Fehler beim Lesen von /tmp/a.txt
da ist sie aber:
pi@raspberrypi:~ $ ls /tmp/a.txt
/tmp/a.txt
Und wohin wird dann der Wert geschrieben? Ich will den dann in vis benutzen.
Danke und viele Grüße
Marcel
-
Kommentiere mal die Zeile mit if(error) aus und lösche das else.
@Jautze:Und wohin wird dann der Wert geschrieben? `
In den Datenpunkt mit der ID 'javascript.0.PoolTempState' vom Typ 'number' (Zahl), der vorher im Reiter Objekte erzeugt werden muss (http://www.iobroker.net/docu/?page_id=5495&lang=de#6hinzufuegen). -
Falls das nicht funktioniert, gibt es noch diese Variante:
var fs = require('fs'); var fn = '/tmp/a.txt'; var idPooltemp = 'PoolTempState'; function getPooltemp() { fs.readFile(fn, 'utf8', function(error, data) { if(error) log('Fehler beim Lesen von ' + fn, 'error'); else setState(idPooltemp, parseFloat(data)); }); } schedule('*/1 * * * *', getPooltemp); // Jede Minute
-
Hi,
geht leider immer noch nicht.
19:59:42.350 [info] javascript.0 Start javascript script.js.common.Pool_Temp
19:59:42.351 [info] javascript.0 script.js.common.Pool_Temp: schedule(cron=*/1 * * * *)
19:59:42.351 [info] javascript.0 script.js.common.Pool_Temp: registered 0 subscriptions and 1 schedule
20:00:00.345 [info] javascript.0 script.js.common.Pool_Temp: readFile(adapter=null, fileName=/tmp/a.txt)
20:00:00.351 [info] javascript.0 script.js.common.Pool_Temp: setForeignState(id=javascript.0.PoolTempState, state=null)
20:00:00.352 [warn] javascript.0 script.js.common.Pool_Temp: setForeignState(id=javascript.0.PoolTempState, state=null) - was not executed, while debug mode is active
20:01:00.346 [info] javascript.0 script.js.common.Pool_Temp: readFile(adapter=null, fileName=/tmp/a.txt)
20:01:00.350 [info] javascript.0 script.js.common.Pool_Temp: setForeignState(id=javascript.0.PoolTempState, state=null)
20:01:00.352 [warn] javascript.0 script.js.common.Pool_Temp: setForeignState(id=javascript.0.PoolTempState, state=null) - was not executed, while debug mode is active
Danke und viele Grüße
Marcel Jaud
-
Hi,
Ok dein 2. Post geht.
Super danke.
Viele Grüße
Marcel Jaud