NEWS
[gelöst] LOGO! & Wochenschaltuhr
-
Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein
2071_zwischenablage01.jpg -
Macht das Sinn die Punkte gleich mit einem "richtigen" Wert sprich Uhrzeit anzulegen? `
Sauberer ist es.const idLogo = 's7.0.DBs.DB1.B023-a1'; const nameVis = 'LOGO.Uhr1-1_Ein'; const idVis = 'javascript.' + instance + '.' + nameVis; createState(nameVis, '0:00', {type: 'string'}); on(idLogo, function(dp) { setStateDelayed(idVis, logotime2str(dp.state.val), 5000); }); on(idVis, function(dp) { setState(idLogo, str2logotime(dp.state.val)); }); -
Hallo paul53,
wie immer genial! Danke!
ich habe aber die '0:00' rausgenommen, der Grund ist: wenn man dem Skript startet überschreibt er die Zein in der LOGO in 0:00. Das ist nicht gut.
Es reicht die LOGO neu zu starten, danach greift der Skript und wir haben die richtige Zeit.
const idLogo = 's7.0.DBs.DB1.B023-a1'; const nameVis = 'LOGO.Uhr1-1_Ein'; const idVis = 'javascript.' + instance + '.' + nameVis; createState(nameVis, {type: 'string'}); on(idLogo, function(dp) { setStateDelayed(idVis, logotime2str(dp.state.val), 5000); }); on(idVis, function(dp) { setState(idLogo, str2logotime(dp.state.val)); });es reicht im LOGO!Soft "LOGO -> PC" auszuführen
Schöne Grüße
-
-
bei mir sieht es während des Anhaltens so aus
2071_logo-stop.jpg -
Nach dem Starten der Logo habe ich wieder den alten Wert drin! `
so soll es auch sein. Deine LOGO's sind ja alle programmiert und die Zeiten ungefähr richtig eingestellt. Jetzt kannst du die im vis oder unter Objekte wenn nötig anpassen.Wenn du jetzt einen neuen Skript für eine andere Uhr erstellst hast zuerst dem Wert "null". Nach LOGO anhalten und starten hast du die aktuelle Zeiten aus die LOGO.
-
Servus
wie machst du das mit den Checkboxen für die Wochentage???

Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein `
-
Hat sich erledigt, bin selber drauf gekommen
Servus
wie machst du das mit den Checkboxen für die Wochentage???
zeitschaltuhr.png
Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein
-
Hat sich erledigt, bin selber drauf gekommen `
Hidas ist der basic - Bool Checkbox, aber der basic - Bool Select ist auch interessant
Schöne Grüße
-
Hier die beiden Funktionen:
function logotime2str(time) { var x = parseInt(time, 10).toString(16); if(parseInt(x) < 10) return '0:0' + x; if(parseInt(x) < 100) return '0:' + x; if(parseInt(x) < 1000) return x.slice(0, 1) + ':' + x.slice(1, 3); return x.slice(0, 2) + ':' + x.slice(2, 4); } function str2logotime(str) { // str im Format "hh:mm:ss" var x = str.split(':'); x = parseInt(x[0] + x[1], 16).toString(10); return parseInt(x); }EDIT: Habe das Skript noch für Zeiten < 0:10 Uhr und < 1:00 Uhr angepasst. `
hab es für mich ein bisschen angepasst. Damit im vis anstatt 7:00, 07:00 angezeigt wird. So kann man das z.B mit 21:00 zentrieren.function logotime2str(time) { var x = parseInt(time, 10).toString(16); if(parseInt(x) < 10) return '00:0' + x; if(parseInt(x) < 100) return '00:' + x; if(parseInt(x) < 1000) return '0' + x.slice(0, 1) + ':' + x.slice(1, 3); return x.slice(0, 2) + ':' + x.slice(2, 4); } function str2logotime(str) { // str im Format "hh:mm:ss" var x = str.split(':'); x = parseInt(x[0] + x[1], 16).toString(10); return parseInt(x); }Hoffe dass ich nichts falsch gemacht habe, angezeigt wird das richtig und Fehler im Log sind auch keine.
Schöne Grüße
-
Servus
wie machst du das mit den Checkboxen für die Wochentage???

Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein `
@Farmer-cb sagte in [gelöst] LOGO! & Wochenschaltuhr:
Servus
wie machst du das mit den Checkboxen für die Wochentage???

Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein `
Hallo liebe LOGO Fans,
das Thema ist zwar etwas alt aber ich muss das hier nochmal aufgreifen.......
Wie funktioniert das nun mit den Checkboxen ?
Da braucht man doch bestimmt ein Script um die Wochentage umzurechnen oder ?Kann mir da vielleicht jemand unter die Arme greifen?
-
@Farmer-cb sagte in [gelöst] LOGO! & Wochenschaltuhr:
Servus
wie machst du das mit den Checkboxen für die Wochentage???

Falsches Gedanke
Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein `
Hallo liebe LOGO Fans,
das Thema ist zwar etwas alt aber ich muss das hier nochmal aufgreifen.......
Wie funktioniert das nun mit den Checkboxen ?
Da braucht man doch bestimmt ein Script um die Wochentage umzurechnen oder ?Kann mir da vielleicht jemand unter die Arme greifen?
@Elektroniker86
Da brauchst Du kein Script dafür. Du stellst die Wochentage der Logo über einen Eintrag in der LOGO VM-Tabelle dem ioBroker zur Verfügung. Im Screenshot rot umrandet ist der Eintrag, der in der LOGO Schaltuhr die Wochentage repräsentiert. Die Wochentage werden als Byte im VM-Bereich der LOGO bereitgestellt. In meiner Installation eben das Byte 28.
Auf dieses Byte (bzw. auf die einzelnen Bit´s aus diesem Byte) kannst Du nun im S7-Adapter im DB-Bereich deine ioBroker Objekte anlegen.
Somit hast Du nun die Möglichkeit auf die einzelnen Tage lesend und schreiben zuzugreifen.Gruß Steffen
