Deine frage mit einer txt datei in ein array zu schreiben...
Ob das mit dem neo server und dem automation manager direkt geht in dem man das text file irgendwo ablegt, im neo server ordner, kann ich nicht sagen und habe ehrlich keine lust zu testen...das musste Sebastian hier beantworten...
Aber wenn du einen webserver hast, da du ein macmini hast, könntest du MAMP darauf installieren:
https://www.mamp.info/de/und dort das txt file ablegen, welches in diesem format sein soll:
einfaches zeilenumbruch
lines.txt
mit diesem inhalt z.b.
1.2
3.4
18.5
20.6
25.7
ich nehme an es geht dir wieder mal um deinen müll :)
nun kannst du mit diesem script die datei lines.txt von deinem webserver (lokal MAPM oder im web einen kostenlosen)
einlesen und im array schreiben, bzw. in die gateway variable:
im script die ip adresse des servers anpassen!
var http = require('http');
var aDateStamp = new Date();
var jahr = aDateStamp.getFullYear();
var tag = aDateStamp.getDate();
var monat = aDateStamp.getMonth() + 1;
var aDatum = tag + "." + monat;
schreibeVariable ('keinmuell');
var options = {
host: '192.168.1.20',
port: '8888',
path: '/lines.txt'
};
var request = http.request(options, function (res) {
var data = '';
res.on('data', function (chunk) {
data += chunk;
gst = data.toString().split("\n");
gst.forEach(function(daten) {
if (daten == aDatum) {
console.log("Treffer"); // Nur zum Debuggen
schreibeVariable (daten);
}
});
});
res.on('end', function () {
//console.log(data);
});
});
request.on('error', function (e) {
console.log(e.message);
});
request.end();
function schreibeVariable (wert) {
executeDeviceCommand(
"Kalender",
"Gelbersack", ,
{"value":"setValue","ext":wert},
function(err) {
err && console.error(err);
}
);
}
Von
Danke.
Von
Super Link :-)
Von
Ja aber es geht nicht alles was dort erklärt wird. Weiß jemand wie man eine Schleife While() oder For() gestaltet ?
Ich probiere schon lange und bekomme immer eine Meldung "may be a inifinite loop".
Von
Lassen sich überhaupt Schleifen (While, While Do, For) im NEO AM bauen , also ist das Java so wie man es kennt oder doch abgespeckt und man kann nicht den kompletten Sprachumfang benutzen ? Kann sich dazu mal jemand von Mediola äußern, das wäre für Alle hier im Forum interessant.
Von
was willst du damit umsetzen, mit diesen schleifen?
Von
Ich möchte ein Array auslesen.
Von
dann gib mal dein code her :)
Von
Der Code ist noch nicht ganz fertig. Ich bin noch am Entwickeln. Aber hier ist ein Schnipsel.
// Array für Gelber Sack mit Terminen aus dem Entsorgungskalender füllen
var gst = ["4.1", "18.1", "1.2", "15.2", "1.3", "15.3", "29.3", "11.4", "26.4", "10.5", "24.5",
"8.6", "21.6", "5.7", "19.7", "2.8", "16.8", "30.8", "13.9", "27.9", "11.10", "25.10",
"8.11", "22.11", "6.12", "19.12", "17.6"];
var gs = " ";
var gstlen = gst.length;
// Variablen für aktuelles Datum anlegen
var aDateStamp = new Date();
var jahr = aDateStamp.getFullYear();
var tag = aDateStamp.getDate();
var monat = aDateStamp.getMonth() + 1;
var aDatum = tag + "." + monat;
// Schleifen zum Auslesen des Array gst und Prüfen ob Termin vorhanden
for (z = 0; z != gstlen; z++) {
if (gst[z] == aDatum) {
console.log("Treffer"); // Nur zum Debuggen
gs = gst[z];
}
console.log(z); // Nur zum Debuggen
}
executeDeviceCommand(
"Kalender",
"Gelbersack",
{"value":"setValue","ext":gs},
function(err) {
err && console.error(err);
}
);
Von
probiere das hier:
var gst = ["4.1", "18.1", "1.2", "15.2", "1.3", "15.3", "29.3", "11.4", "26.4", "10.5", "24.5",
"8.6", "21.6", "5.7", "19.7", "2.8", "16.8", "30.8", "13.9", "27.9", "11.10", "25.10",
"8.11", "22.11", "6.12", "19.12", "17.6"];
var gs = "keine Abholung";
var aDateStamp = new Date();
var jahr = aDateStamp.getFullYear();
var tag = aDateStamp.getDate();
var monat = aDateStamp.getMonth() + 1;
var aDatum = tag + "." + monat;
gst.forEach(function(daten) {
if (daten == aDatum) {
console.log("Treffer"); // Nur zum Debuggen
gs = daten;
}
});
executeDeviceCommand(
"Kalender",
"Gelbersack",
{"value":"setValue","ext":gs},
function(err) {
err && console.error(err);
}
);
Von
Danke. Hat funktioniert. Jetzt kann ich meinen Abfallkalender im NEO umsetzen.
Von
:)
Von
Gibt es denn keine Beschreibung welche Funktionen bei Mediola im Script-Editor (Java) umgesetzt sind ?
Ich bin immer am Rätseln und Testen. Das ist nicht Zielführend. Kann Mediola denn keine Doku veröffentlichen oder wo ist das Problem. Zudem würde mich interessieren woher Du lieber zdenko33 immer die Informationen zum Scripting in Mediola hast. Ich suche mir immer einen Wolf wenn ich Scripttechnisch was umsetzen will.
So scheitere ich schon wieder an einer simplen Aufgabe. Datum (Einstelliger Tag und Monat) mit führenden Nullen zu füllen.
Das geht in Java mit diversen einfachen Möglichkeiten z.B. var date = d.toISOString().slice(0,10);
Und bei Mediola muss man sich einen Abwürgen.
So z.B. var bMonat = aMonat.toString() < 10 ? "0" + aMonat.toString() : aMonat.toString();
Von
Im Skripteditor kann ganz normales JavaScript geschrieben werden. Das Beispiel funktioniert bei mir auch:
var d = new Date();
var date = d.toISOString().slice(0, 10);
Was die Meldung "may be a infinite loop" betrifft, müssen wir aber tatsächlich noch mal nachschauen. Um Endlosschleifen zu verhindern, wird das Skript überwacht. Die Meldung ist nur eine Debug-Ausgabe, die nicht wieder herausgenommen wurde. Allerdings werden so beschützte Skripte derzeit auch nach 10 Schleifendurchläufen beendet, was nicht sein sollte – zumindest nicht so früh.
Von
Alles was mit dem script zu tun hat, findet man in der Google suchmaschine, man muss nur gut suchen können...natürlich sollte man etwas erfahrung haben. Wie Sebastian es schon sagte, es ist kein Java sondern javascript was hier zum einsatz kommt. Allerdings ist es auch mit node.js verbunden, aber das grösste manko hier bei mediola script ist, dass man keine NPM module selber installieren und verwenden kann....so könnte man schon vieles was vorhanden ist im internet nutzen.
Ich hoffe das hier Sebastian eine erklärung dafür liefern kann, warum es nicht möglich ist.
Das beste ist für und für jeden der etwas mit dem script zu tun haben will, learning by doing :)...und mit einer suchmaschine und testen ist das auch nicht schwer umzusetzen. Sebastian und mediola können so eine anleitung zum scripten auch nicht bereitstelllen, den alles ist freizugänglich im internet oder in entsprechenden büchern.
Von
Hallo zdenko33,
das ist schon richtig aber ich kann z.B. bei meiner Installation mit NEO Server 2.0.4 auf einem Mac Mini mit Sierra den Befehl
var date = d.toISOString().slice(0, 10); nicht laufen lassen.
Und Das mit While, For-Schleifen geht so auch nicht.
Von
Das mit dem fehler von schleifen hat Sebastian schon erklärt und das musste schon nach der prüfung später laufen...
bei mir funktioniert das mit date auf einem mac, allerdings kein sierra
das mit dem script testen (play button) hat auch mit dem server nichts zu tun, es wird in neo ausgeführt...also die version prüfen????
Erst wenn man das script(task) an neo server überträgt wird es dann vom server aus, ausgeführt.
Von
So jetzt habe ich das nochmal verifiziert. Die Befehle mit dem Datum auf ISO stellen gehen. Ich vermute das durch die ganze Testerei der Neo Server etwas ins schleudern gekommen ist und die Befehle nicht mehr sauber angenommen hat. Kann das so sein Sebastian ?
Aber die For-Schleife hört nach 9 Durchläufen auf und melden eben diese "may be a infinite loop" Meldungen.
Ein einfaches Beispiel:
var d = new Date();
var date = d.toISOString().slice(0, 10);
console.log(date);
for (i=0; i < 10; i++){
console.log(i);
}
Ausgabe wie folgt im Debugger.
19:25:17Skript test hat gestartet.
19:25:182017-06-19
19:25:18may be a inifinite loop { line: 147, reset: true }
19:25:18may be a inifinite loop { line: 147 }
19:25:180 may be a inifinite loop { line: 147 } 1
19:25:18may be a inifinite loop { line: 147 } 2 may be a inifinite loop { line: 147 } 3 may be a inifinite loop { line: 147 } 4 may be a inifinite loop { line: 147 } 5 may be a inifinite loop { line: 147 } 6 may be a inifinite loop { line: 147 } 7 may be a inifinite loop { line: 147 } 8 may be a inifinite loop { line: 147 }
19:25:18Skript test hat geendet.
Von
Ach ok. Mein Neo Creator 2.0.5 läuft unter Macbook mit El Capitan 10.11.6.
Von
Das Du keine NPM Packages installieren kannst liegt in der Strategie von Mediola, insofern ist das für mich aber auch nur Spielerei mit dem Javascript Editor. Schließlich will ja Mediola eigene Plugins verkaufen. Wenn es dokumentiere Schnittstellen gäbe wie man auf was zugreift könnte sich ja jeder eigene Module schreiben bzw. von der Unmenge an NodeJS die es im Intenet schon gibt bedienen und diese anpassen. Das wäre zwar individuell für jeden Nutzer wünschenswert passt aber wie gesagt nicht zur Strategie von Mediola die ja auch noch die eigenen Plugins verkaufen wollen. Daher ist das Javascript Fenster zwar geeignet um einfache Prozesse ablaufen zu lassen um selber damit für sich ganze Module zu schreiben oder sogar mit npm anderen zur Verfügung zu stellen aber ungeeignet. Wer so was braucht muss dann halt doch Software nutzten die auch NodeJS oder auch andere Sprachen nutzt und bei der so was möglich ist.
Von
Danke an Alle. Jetzt ist mein Bild etwas klarer.
Eine Frage hab ich aber dennoch.
Wäre es möglich ein Textfile einzulesen und den Inhalt in ein Array zu schreiben ?
Wenn ja wo müsste das Textfile liegen (beim Mac Mini oder Windows).
Müsste das File von Neo Server oder vom Neo Creator oder vom AIO Gateway verarbeitet werden ?
Das ist mir nicht ganz klar (Wenn es überhaupt geht).
Neuen Kommentar hinzufügen