NEWS
Datenpunkte zusammenführen switch + state
-
Ja genau, es reicht den Taster Datenpunkt einmal auf true zu setzen.
Danach springt er nach einer Sekunde automatisch wieder auf false.Cool, vielen Dank für deine Mühe. Werde das Script morgen testen.
Wo werden dann die Datenpunkte angelegt ?
Hätte da schon gerne ein Ordner unter Javascript.0/LOGO/s7.0........s7.1.........s7.2 usw.Damit das soweit geordnet ist wie beim s7 Adapter unter Objekte.
@Elektroniker86 sagte:
es reicht den Taster Datenpunkt einmal auf true zu setzen.
Danach springt er nach einer Sekunde automatisch wieder auf false.Das passierte wohl im Szene-Adapter ? Dann muss dieses Verhalten auch im Skript erzeugt werden.
// IDs anpassen const idButton = 's7.0.DBs.DB1.NI02'; const idActor = 's7.0.DBs.DB1.Q02'; const js = 'system.adapter.javascript.' + instance; const common = getObject(idButton).common; const idVis = 'LOGO.s7-0.' + common.name.replace(' ', '_'); common.read = true; createState(idVis, getState(idActor).val, common); on({id: idVis, change: 'ne', fromNe: js}, function() { log('Tastendruck'); setState(idButton, true); setTimeout(function() { setState(idButton, false); }, 500); }); on(idActor, function(dp) { setState(idVis, dp.state.val, true); }); -
Im Vis habe ich noch überhaupt nichts geändert. Ich habe jetzt nur erst mal zum test ein Script angelegt und das ganze teste ich unter objekte .... Javascript.LOGO.s7-0.
Wenn es in Objekte Funktioniert, dann muss der Rest auch funktionieren oder nicht?
Wenn ich am neuen Datenpunkt z.B auf true klicke dann wird die Button ID nicht angesteuert.
@Elektroniker86 sagte:
Wenn es in Objekte Funktioniert, dann muss der Rest auch funktionieren oder nicht?
Ja.
@Elektroniker86 sagte in Datenpunkte zusammenführen switch + state:
Wenn ich am neuen Datenpunkt z.B auf true klicke dann wird die Button ID nicht angesteuert.
Wie stellst Du es fest ? Der Wert des Tasters ändert sich nicht, sondern nur der Zeitstempel.
-
Doch der wert ändert sich kurz auf true und geht wieder zurück.
Habe als switch deklariert ...... ahh ist das der fehler? -
Doch der wert ändert sich kurz auf true und geht wieder zurück.
Habe als switch deklariert ...... ahh ist das der fehler?@Elektroniker86 sagte:
Habe als switch deklariert ...... ahh ist das der fehler?
Nein, die Rolle hat für Javascript keine Bedeutung.
-
ich habe ein zweites Browserfenster auf gemacht und geschaut ob der Wert sich kurz ändert.
Wenn ich die Button ID vom s7 direkt ansteuere dann wechselt der Datenpunkt entsprechend dem Aktorzustand. Das funktioniert soweit. -
ich habe ein zweites Browserfenster auf gemacht und geschaut ob der Wert sich kurz ändert.
Wenn ich die Button ID vom s7 direkt ansteuere dann wechselt der Datenpunkt entsprechend dem Aktorzustand. Das funktioniert soweit.@Elektroniker86 sagte:
ich habe ein zweites Browserfenster auf gemacht und geschaut ob der Wert sich kurz ändert.
Wenn Du den Wert des Datenpunktes javascript.0.s7... änderst, muss eine Tastenbetätigung erfolgen (Logausgabe im anderen Fenster).
-
Mhh,
im Log kommt nur das :
javascript.0 2019-10-24 14:20:44.995 info script.js.common.Speedtest.Internet_Speedtest: Speedtest Daten aktualisiert
javascript.0 2019-10-24 14:18:22.025 info script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hinten: registered 2 subscriptions and 0 schedules
javascript.0 2019-10-24 14:18:22.020 info Start javascript script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hinten
javascript.0 2019-10-24 14:18:20.632 info Stop script script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hintenBeim wechseln vom #Datenpunkt passiert nichts im Log
-


-
Mhh,
im Log kommt nur das :
javascript.0 2019-10-24 14:20:44.995 info script.js.common.Speedtest.Internet_Speedtest: Speedtest Daten aktualisiert
javascript.0 2019-10-24 14:18:22.025 info script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hinten: registered 2 subscriptions and 0 schedules
javascript.0 2019-10-24 14:18:22.020 info Start javascript script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hinten
javascript.0 2019-10-24 14:18:20.632 info Stop script script.js.common.LOGO.s7-0.Deckenleuchte_Zimmer_KG_hintenBeim wechseln vom #Datenpunkt passiert nichts im Log
@Elektroniker86 sagte:
im Log kommt nur das :
Dann funktioniert der Trigger nicht.
Ändere mal den Trigger (Zeile 12) inon({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() { -
@paul53 sagte in Datenpunkte zusammenführen switch + state:
on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() {
MEGA!!!
Jetzt funktioniert es !!!

-
Genau so soll es funktionieren.
Vielen lieben Dank für den tollen Support !!!
Der Rest sollte jetzt kein Problem mehr sein.
Jetzt kann ich alles ändern und den Szenenadapter entfernen. Klasse! -
@Elektroniker86 sagte:
kann ich die Aktoren nicht über den neuen Datenpunkt schalten.
Das soll in Zeilen 13 bis 15 passieren: Tastendruck, wenn sich der Wert ändert, außer die Änderung erfolgt aus dem Skript. Füge mal vor Zeile 14 ein Log ein:
on({id: idVis, change: 'ne', fromNe: js}, function() { log('Tastendruck'); setState(idButton, true); });Was ist mit dem Log ?
Kann man diese Zeile wieder entfernen? -
@paul53 sagte in Datenpunkte zusammenführen switch + state:
on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() {
MEGA!!!
Jetzt funktioniert es !!!

@Elektroniker86 sagte:
Jetzt funktioniert es !!!
Sorry, es war mein Fehler: Hatte nicht daran gedacht, dass der Trigger eine vollständige ID braucht.
Funktioniert es auch so ?// IDs anpassen const idButton = 's7.0.DBs.DB1.NI02'; const idActor = 's7.0.DBs.DB1.Q02'; const js = 'system.adapter.javascript.' + instance; const common = getObject(idButton).common; const idVis = 'LOGO.s7-0.' + common.name.replace(/\s/g, '_'); common.read = true; createState(idVis, getState(idActor).val, common); on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() { setState(idButton, true); }); on(idActor, function(dp) { setState(idVis, dp.state.val, true); });EDIT: Zeile 7 replace geändert.
-
@Elektroniker86 sagte:
Jetzt funktioniert es !!!
Sorry, es war mein Fehler: Hatte nicht daran gedacht, dass der Trigger eine vollständige ID braucht.
Funktioniert es auch so ?// IDs anpassen const idButton = 's7.0.DBs.DB1.NI02'; const idActor = 's7.0.DBs.DB1.Q02'; const js = 'system.adapter.javascript.' + instance; const common = getObject(idButton).common; const idVis = 'LOGO.s7-0.' + common.name.replace(/\s/g, '_'); common.read = true; createState(idVis, getState(idActor).val, common); on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() { setState(idButton, true); }); on(idActor, function(dp) { setState(idVis, dp.state.val, true); });EDIT: Zeile 7 replace geändert.
Moment ich teste.
-
Was ist mit dem Log ?
Kann man diese Zeile wieder entfernen?@Elektroniker86 sagte:
Kann man diese Zeile wieder entfernen?
Ja, war nur zum Test, ob getriggert wird.
-
@Elektroniker86 sagte:
Jetzt funktioniert es !!!
Sorry, es war mein Fehler: Hatte nicht daran gedacht, dass der Trigger eine vollständige ID braucht.
Funktioniert es auch so ?// IDs anpassen const idButton = 's7.0.DBs.DB1.NI02'; const idActor = 's7.0.DBs.DB1.Q02'; const js = 'system.adapter.javascript.' + instance; const common = getObject(idButton).common; const idVis = 'LOGO.s7-0.' + common.name.replace(/\s/g, '_'); common.read = true; createState(idVis, getState(idActor).val, common); on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() { setState(idButton, true); }); on(idActor, function(dp) { setState(idVis, dp.state.val, true); });EDIT: Zeile 7 replace geändert.
Einwandfrei läuft !!!
-
Einwandfrei läuft !!!
@Elektroniker86 sagte:
Einwandfrei läuft !!!
Dann kannst Du dieses Skript als Vorlage für weitere Skripte nutzen und musst nur Zeilen 2, 3 und gegebenfalls Zeile 7 anpassen.
-
@Elektroniker86 sagte:
Jetzt funktioniert es !!!
Sorry, es war mein Fehler: Hatte nicht daran gedacht, dass der Trigger eine vollständige ID braucht.
Funktioniert es auch so ?// IDs anpassen const idButton = 's7.0.DBs.DB1.NI02'; const idActor = 's7.0.DBs.DB1.Q02'; const js = 'system.adapter.javascript.' + instance; const common = getObject(idButton).common; const idVis = 'LOGO.s7-0.' + common.name.replace(/\s/g, '_'); common.read = true; createState(idVis, getState(idActor).val, common); on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() { setState(idButton, true); }); on(idActor, function(dp) { setState(idVis, dp.state.val, true); });EDIT: Zeile 7 replace geändert.
@paul53 sagte in Datenpunkte zusammenführen switch + state:
Sorry, es war mein Fehler: Hatte nicht daran gedacht, dass der Trigger eine vollständige ID braucht.
Gar kein Problem, ich bin froh das man hier geholfen bekommt.
Ich selbst hätte das so nicht hinbekommen ein Blockly bekomm ich noch gebacken aber diese Sprache spreche ich leider nicht.
Wirklich daumen hoch Danke !!! -
@Elektroniker86 sagte:
Einwandfrei läuft !!!
Dann kannst Du dieses Skript als Vorlage für weitere Skripte nutzen und musst nur Zeilen 2, 3 und gegebenfalls Zeile 7 anpassen.
@paul53 sagte in Datenpunkte zusammenführen switch + state:
gegebenfalls Zeile 7 anpassen.
Wieso Zeile 7?
-
@paul53 sagte in Datenpunkte zusammenführen switch + state:
gegebenfalls Zeile 7 anpassen.
Wieso Zeile 7?