Mitarbeiterantwort
Nov 02, 2020 - 12:35
Welche Adresse hat die Systemvariable laut CREATOR?
Tja, ein neues V6+ macht viel freude ;-)
Nun wollte ich meine Skripte für Temperaturdiagramm anpassen.
Nach einigem rumprobieren (bin unerfahren was Skripte angeht) hing es wohl noch an der Variablenabfrage.
Also neue Variable angelegt.
Text (string)
Skript meldet Fehler: sysvar out of range
Hm. Was soll das jetzt?
Also mal einen Wert in die Variable schreiben.
Fehlermeldung:
Die Abfrage schlug fehl.
Möglicherweise ist das Gateway nicht erreichbar.
{"code":"001000","msg":"sysvar out of range"}
OK. Gateway _ist_ erreichbar.
Andere, bestehende Variablen ausprobiert.
Alle lassen das einschreiben von Werten zu.
Auch neu angelegte funktionieren alle. (Gleitkomma, Ganzzahl, Boolesche)
Aber Text (String) lässt sich nicht beschreiben.
Immer der ob genannte Fehler.
Was kann das sein?
AIO CREATOR NEO, AIO Gateway V6-Serie
Haben Sie die gleiche Frage? Dieser Frage folgen
Nov 02, 2020 - 12:35
Von
OK. Es funktioniert.
Ich habe die Variable noch mal neu angelegt.
Dieses mal habe ich aber das, unter Räumen, angebotene AIO GATEWAY V5+ (EA) ausgewählt.
Und nicht AIO GATEWAY V6+ (CA)
Hier konnte die Variable beschrieben werden.
Aber jetzt wird es kompliziert. Und ich verstehe nicht wie die Zusammenhänge sind.
Als ich noch das V5+ hatte, habe ich unter „Geräte importieren“ alle Variablen und Tasks importiert.
Die wurden im Gerätemanager unter „Geräte“ mit dem Namen AIO GATEWAY V5+ (EA)
aufgeführt.
Mit dem neuen V6+ habe ich das gleiche gemacht.
Geräte importieren.
Hat auch geklappt. Unter AIO GATEWAY V6+ (CA) sind nun Variablen und Tasks aufgeführt.
Aber nun fängt es an:
Die Variablen werden nicht mit den von mir vergebenen Namen aufgeführt.
Statt dessen heißen sie:
EVENT
INT [FF]
ONOFF [01]
STRING [0E]
Über die Adresse könnte ich sie zuordnen. Das ist aber ausgesprochen „unsmart“
Die Variablen aus AIO GATEWAY V5+ (EA) kann ich aber noch nutzen!?
Die Variablen aus AIO GATEWAY V6+ (CA) aber funktionieren, z.B. in einer Statusabfrage) auch.
Und es geht noch weiter:
Im AM kann ich im Sobald Block keine Variablen mehr auswählen. Sind alle ausgegraut.
Vom AIO GATEWAY V5+ (EA) wie auch vom AIO GATEWAY V6+ (CA)
Im Dann Block hingegen sind sie auswählbar.
Irgendwie habe ich mich verrannt.
Von
Der Raumname spielt eigentlich keine Rolle. Beim Import wurden die Räume nur automatisch mit dem Namen des gewählten Gateways erstellt.
Die Namen der angelegten Systemvariablen werden nicht auf dem Gateway hinterlegt. Daher können beim Import nur autom. neue Namen erzeugt werden (Typ + Adresse).
Hat der Gateway-Eintrag des V5+ dieselbe IP-Adresse wie das neue V6 Plus? Das würde erklären, warum manche Systemvariablen davon noch zu funktionieren scheinen. Wenn die Systemvariable dieselbe Adresse hat, wird jedoch stattdessen die des V6 Plus angesprochen.
Der letzte Punkt, dass die Systemvariablen im SOBALD-Block nicht ausgewählt werden können, ist ein Bug, der im nächsten CREATOR-Release Anfang Dezember behoben sein wird.
Von
Gut. Hab ich verstanden.
Nun ist mit aufgefallen, dass meine Variable doch nicht richtig funktioniert.
Die Variable wird ja duch das Skript für das die Diagrammbefüllung beschrieben.
Nachdem nun das Skript angepasst ist und Fehlerlos ausgeführt wird, passt etwas nicht mit der Variable.
Sie nimmt nur drei Werte auf.
Über die Funktion "Skript ausführen" schreibe ich den Wert in die Variable. Dann frage ich die Variable über"Werte abfragen" ab. Dabei werden max. drei Werte angezeigt.
Wo liegt hier der Fehler?
Das Diagramm zeigt dann natürlich auch nur drei Werte an . . .
Von
Hallo Sebastian!
Hast Du eine Idee zu dem Problem?
Von
Lass dir den Inhalt der Variable mal als Text ausgeben oder schau dir den Inhalt in der Automation Manager-Systemvariable-Übersicht an. Sind in der Variable nur 3 Werte gespeichert?
Werden im Skript und in der Diagramm-Anzeige auch dieselbe Variable verwendet? Vielleicht ist in einem von beiden noch aus einem vorherigen Versuch eine andere zugewiesen.
Ansonsten müsste ich das Skript mal sehen.
Von
Also, Statusabfrage in Textfeld: Variableninhalt wird angezeigt.
AM SysVarÜbersicht:
Nur drei Werte.
Über Bearbeiten einen weiteren Wert eingeschrieben.
Werte abgefragt. Weiterer Wert (vierter) wird angezeigt.
Über Bearbeiten alle Werte gelöscht.
Werte abgefragt.
Variable leer.
Skript ausgeführt.
Werte abgefragt.
Wert ist eingeschrieben
beim vierten Mal wird kein weiterer Wert mehr in die Variable geschrieben. Es bleiben drei Werte.
Von
Hier ist das Skript:
var values = '';
var maxItems = 30;
var shortenItems = function(status) {
var items = String(status).split(';');
var numItems = items.length;
if (numItems > maxItems) {
items = items.slice(numItems - maxItems, numItems);
}
return items.join(';');
};
var getCurrentTemp = function(cb) {
getDeviceStatus(
"Hof_Einfahrt",
"S_HM_T/H_Außen_N",
{"value":"temp","extMeta":"5-30","scale":"0.1"},
function(err, status) {
err && console.error(err.message);
if (err || !status) {
console.error('Temperatur konnte nicht abgefragt werden.');
return;
}
cb(status);
}
);
}
var setDiagrammData = function(values) {
executeDeviceCommand(
'AIO GATEWAY V5+ (EA)',
'Diagramm-Daten_temp',
{ value: 'setValue', ext: values },
function(err) {
err && console.error(err.message);
if (!err) {
console.log('Diagramm-Daten_temp wurden aktualisiert.');
}
}
);
};
getDeviceStatus(
'AIO GATEWAY V5+ (EA)',
'Diagramm-Daten_temp',
{ value: 'state' },
function(err, status) {
err && console.error(err.message);
if (err) {
console.error('Diagramm-Systemvariable konnte nicht abgefragt werden.');
return;
}
values = shortenItems(status);
getCurrentTemp(function(temp) {
values += temp + ';';
setDiagrammData(values);
});
}
);
Von
Das Skript sieht in Ordnung aus. Aber sind das auch die richtigen Variablen? Weil beim Raum steht "AIO GATEWAY V5+ (EA)", sind das trotzdem die neu auf dem V6 Plus angelegten (oder von dort importierten) Systemvariablen?
Von
Das ist ein Skript im "Raum AIO GATEWAY V5+ (EA)" im Raum "AIO GATEWAY V6+ (CA) angelegte Variable wurde ja nicht vom Skript erkannt.
Jetzt habe ich gerade eine Variable "test" im V6+ Raum vom Typ TEXT angelegt.
Das Skript angepasst. Per Bearbeiten eine 20 eingeschrieben. Wert abgefragt. 20 war gesetzt.
Dann das Skript wieder gestartet. Mehr Mals. Hier die geschriebenen Werte
207.8;7.8;7.8;7
Die 20 war mein händisch eingetragener Wert.
Dann kommt, ohne trennendes Semikolon!, die erste Temperatur 7,8
Dann die zweite Temperatur 7,8
Und jetzt die vierte Abfrage: hier der Wert 7. Ist Wert am Sensor war aber 7,9
Alle weiteren Abfragen werden nicht mehr von der Variable aufgenommen.
Habe dann noch mal alle Werte in der Variable gelöscht.
Dann das Skript gestartet. Vier Werte werden geschrieben. Ab dann keine mehr.
Immerhin werden jetzt vier Werte aufgenommen ;-)
Das ist schon seltsam.
Von
Das mit dem fehlenden Semikolon passt insofern, dass der Startwert "20;" lauten muss, damit es mit dem Skript in der Form funktioniert.
Ansonsten bin ich jetzt auch etwas ratlos. Wende ich am besten über das Formular an den Support:
https://www.mediola.com/service#emailsupport
Vermutlich ist es hilfreich, wenn du auch direkt die Debug-Ausgabe deines Gateways aus dem ConfigTool NEO anhängst.
Von
Antwort vom Support:
Ist ein Bug und der wird mit dem nächsten Firmeware Update im Dezember behoben.
Also kein Userfehler ;-)
Neuen Kommentar hinzufügen