NEWS
[Vorstellung] Meine zweite Visualisierung
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
An alle, die meine Skripte importiert haben und aktiv verwenden:
Bitte
ä
ndert die Mail-Empfangsadressen.Ich bekomme permanent Mails bzgl. Adapter Updates oder Infos vom Staubsauger.
Was aber noch schlimmer ist, dass ich Mails erhalte, mit der Infos, dass die JavaSkript Instanz neu gestartet ist.
W
ä
re es nicht sicherer dein Skript im 1 Post daraufhin zu
ä
ndern ,
damit es nicht weiter passiert ,
da nicht alle deinen Hinweis im Beitrag 653 lesen bzw. neue User es mitbekommen

@Glasfaser da hast du nat
ü
rlich recht.Bin erst seit heute morgen aus dem Urlaub zur
ü
ck und werde n
ä
chste Woche eine neue Version von meinen Skripten hochladen.Habe vor in allen Skripten die eingetragenen Adressen durch Variablen zu ersetzen.
-
@Glasfaser da hast du nat
ü
rlich recht.Bin erst seit heute morgen aus dem Urlaub zur
ü
ck und werde n
ä
chste Woche eine neue Version von meinen Skripten hochladen.Habe vor in allen Skripten die eingetragenen Adressen durch Variablen zu ersetzen.
-
Dann w
ü
rde ich es lieber raus nehmen oder wenn du es lassen willst , neben dem Link einen Hinweis schreiben !!!@Glasfaser der Hinweis steht darunter.
Muss ich nochmal fett und rot machen ^^
-
@Glasfaser der Hinweis steht darunter.
Muss ich nochmal fett und rot machen ^^
-
@djsirius gucke mal auf Seite 1, im Skriptexport m
ü
sste das bei sein.
Bin gerade im Urlaub und kann daher nichts hochladenDen Controller Werte ich per consolen Befehl aus.
Das Ganze dann in einem Bash Skript welches per Crontab auf der Ubuntu VM l
ä
uft.Kann ich nach meinem Urlaub posten.
@Kuddel said in [Vorstellung] Meine zweite Visualisierung:
@djsirius gucke mal auf Seite 1, im Skriptexport m
ü
sste das bei sein.
Bin gerade im Urlaub und kann daher nichts hochladenDen Controller Werte ich per consolen Befehl aus.
Das Ganze dann in einem Bash Skript welches per Crontab auf der Ubuntu VM l
ä
uft.Kann ich nach meinem Urlaub posten.
Hi Kuddel,
kannst du mal bitte alle deine Bash Skripte zur Verf
ü
gung stellen? Das w
ä
re MEGA!!!Vielen Dank!
-
@Kuddel said in [Vorstellung] Meine zweite Visualisierung:
@djsirius gucke mal auf Seite 1, im Skriptexport m
ü
sste das bei sein.
Bin gerade im Urlaub und kann daher nichts hochladenDen Controller Werte ich per consolen Befehl aus.
Das Ganze dann in einem Bash Skript welches per Crontab auf der Ubuntu VM l
ä
uft.Kann ich nach meinem Urlaub posten.
Hi Kuddel,
kannst du mal bitte alle deine Bash Skripte zur Verf
ü
gung stellen? Das w
ä
re MEGA!!!Vielen Dank!
-
Hi @Kuddel,
habe leider seit einigen Tagen, vermutlich durch Updates Probleme mit meiner Javascript Instanz. Habe dein Projekt f
ü
r mich
ü
bernommen.Wei
ß
t du an was es h
ä
ngen k
ö
nnte? -- Komme leider nicht weiter...
Soweit wie ich es sehe h
ä
ngt es mit dem Tag/Nacht Skript zusammen. Hattest du hier nicht schonmal mit Problemen zu k
ä
mpfen?
javascript.0 2019-09-22 21:34:56.112 error at Timer.listOnTimeout (timers.js:290:5) javascript.0 2019-09-22 21:34:56.112 error at tryOnTimeout (timers.js:323:5) javascript.0 2019-09-22 21:34:56.112 error at ontimeout (timers.js:511:34) javascript.0 2019-09-22 21:34:56.112 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) javascript.0 2019-09-22 21:34:56.111 error at Object.<anonymous> (script.js.smarthome.rolladen.rolladen_tag_nacht:75:86) javascript.0 2019-09-22 21:34:56.111 error Error in callback: TypeError: getState(...).val.trim is not a function javascript.0 2019-09-22 21:34:56.108 error at Timer.listOnTimeout (timers.js:290:5) javascript.0 2019-09-22 21:34:56.108 error at tryOnTimeout (timers.js:323:5) javascript.0 2019-09-22 21:34:56.108 error at ontimeout (timers.js:511:34) javascript.0 2019-09-22 21:34:56.108 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) javascript.0 2019-09-22 21:34:56.108 error at Object.<anonymous> (script.js.smarthome.rolladen.rolladen_tag_nacht:11:84) javascript.0 2019-09-22 21:34:56.107 error Error in callback: TypeError: getState(...).val.trim is not a function javascript.0 2019-09-22 21:34:54.928 info script.js.smarthome.system.uptime_v0_2_dav: registered 1 subscription and 3 schedulesVermutlich steigt dadurch meine Javascript Instanz immer aus, sprich die wird rot.
Meine Rollos fahren dadurch auch nicht immer hoch bzw. Runter.Zus
ä
tzlich gibt es noch folgende Meldungjavascript.0 2019-09-22 21:52:49.785 warn Reconnection to DB. javascript.0 2019-09-22 21:52:49.783 warn Reconnection to DB.Keine Ahnung was das bedeuten soll?! - Ich hoffe du kannst mir helfen. Ich wei
ß
leider nicht mehr weiter... -
Hi @Kuddel,
habe leider seit einigen Tagen, vermutlich durch Updates Probleme mit meiner Javascript Instanz. Habe dein Projekt f
ü
r mich
ü
bernommen.Wei
ß
t du an was es h
ä
ngen k
ö
nnte? -- Komme leider nicht weiter...
Soweit wie ich es sehe h
ä
ngt es mit dem Tag/Nacht Skript zusammen. Hattest du hier nicht schonmal mit Problemen zu k
ä
mpfen?
javascript.0 2019-09-22 21:34:56.112 error at Timer.listOnTimeout (timers.js:290:5) javascript.0 2019-09-22 21:34:56.112 error at tryOnTimeout (timers.js:323:5) javascript.0 2019-09-22 21:34:56.112 error at ontimeout (timers.js:511:34) javascript.0 2019-09-22 21:34:56.112 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) javascript.0 2019-09-22 21:34:56.111 error at Object.<anonymous> (script.js.smarthome.rolladen.rolladen_tag_nacht:75:86) javascript.0 2019-09-22 21:34:56.111 error Error in callback: TypeError: getState(...).val.trim is not a function javascript.0 2019-09-22 21:34:56.108 error at Timer.listOnTimeout (timers.js:290:5) javascript.0 2019-09-22 21:34:56.108 error at tryOnTimeout (timers.js:323:5) javascript.0 2019-09-22 21:34:56.108 error at ontimeout (timers.js:511:34) javascript.0 2019-09-22 21:34:56.108 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1888:34) javascript.0 2019-09-22 21:34:56.108 error at Object.<anonymous> (script.js.smarthome.rolladen.rolladen_tag_nacht:11:84) javascript.0 2019-09-22 21:34:56.107 error Error in callback: TypeError: getState(...).val.trim is not a function javascript.0 2019-09-22 21:34:54.928 info script.js.smarthome.system.uptime_v0_2_dav: registered 1 subscription and 3 schedulesVermutlich steigt dadurch meine Javascript Instanz immer aus, sprich die wird rot.
Meine Rollos fahren dadurch auch nicht immer hoch bzw. Runter.Zus
ä
tzlich gibt es noch folgende Meldungjavascript.0 2019-09-22 21:52:49.785 warn Reconnection to DB. javascript.0 2019-09-22 21:52:49.783 warn Reconnection to DB.Keine Ahnung was das bedeuten soll?! - Ich hoffe du kannst mir helfen. Ich wei
ß
leider nicht mehr weiter... -
@David16 das Problem ist wohl irgendwie der Schedule-Block.

Warum da aber was mit "trim" steht wei
ß
ich nicht.Trim bedeutet ja eig k
ü
rzen....Ich verwende den Javascript-Adapter in der Version 4.1.12
-
Also meine Version ist 4.1.16.
Ansonsten passen die Versionen soweit auch:

Ich habe gestern Abend aber mal den iobroker komplett neu gestartet. Die Adapter leuchtet jetzt "gr
ü
n". In den Logs sind auch keine Fehlermeldung mehr zu erkennen. - Keine Ahnung an was es gelegen haben soll.In der VIS ist die Rollo-Steuerung und Astro-Steuerung auch wieder da und die Rollos sind auch um 19:45 heruntergefahren:

Ich beobachte das mal die n
ä
chsten Tage intensiv und berichte dann. - Dir vielen Dank f
ü
r dr
ü
ber schauen!
-
Nachdem ich mit der ersten Version meiner VIS nicht mehr zufreiden war, hab ich mich daran gemacht, alles einmal komplett neu zu machem.
Die Seiten sind alle fpr mein Galaxy Tab A erstellt worden.
Vielen Dank an @Annuit20 , der ebenfalls seine komplette VIS zur Verf
ü
gung gestellt hat. An dieser konnte ich mich orientieren und mir einige Ideen abgucken.Ich denke so richtig fertig ist man ja nie, aber ein Bisschen habe ich schon geschafft
…
.
































Damit alles korrekt dargestellt wird, m
ü
ssen folgende Widgets installiert sein:

F
ü
r die Icons wird des Weiteren der Adapter "icons-mfd-png" ben
ö
tigt.Skripte
Alle Objekte, mit denen ich in meinen Skripten arbeite, k
ö
nnen mit einem Javascript erstellt werden:
objekte.txtHier sind alle meine Skirpte als komplett Export aus der Scriptengine
Danke an @Kaiman55 f
ü
r den Test-Import.Anleitung Skript Import:
- Download der Datei "2020-03-17-scripts.zip"
- Eigene Skripte in Zip Datei exportieren
- Beide Archive entpacken und dann die Skripte / Gruppen in einem gemeinsamen Archiv zusamfen
ü
hren - Import des neu erstellten Archis
VIS-Export 06.11.19:
Hier meine Icons
Meine_Icons.zipWorkaround f
ü
r das Hochladen der kompletten VIS- Meine_Icons.zip entpacken
- 2019-11-06-VIS.zip entpacken
- Die beiden VIS-Datein und die den Icons Ordner zu einem neuen Zip Archiv zusammef
ü
gen - Das neue Zip archiv importieren
Hallo an alle, Hallo Kuddel,
erstmal meinen gr
ö
ß
ten Respekt f
ü
r deine Visualisierung. Ich finde das ist schon eine der Besten VIS die ich bisher gesehen habe. Ich hab mir die VIS auch mal importiert. Aber ehrlich gesagt erschl
ä
gt es mich als Anf
ä
nger mit den ganzen Seiten und Skripten ( von den ich keine Ahnung habe ). Ich w
ü
rde mich ja schon
ü
ber deine Startseite freuen die ich dann mit meinen Daten f
ü
ttern kann und das dann l
ä
uft. Ist so etwas m
ö
glich nur deine Startseite zu Importieren?Noch mal eine kleine frage am Rande an alle hier im Forum. Vom Homematic Forum kenne ich die Funktion eine PM an jemanden zu senden. Gibt es diese Funktion hier auch?
Ich hoffe ich habe mit diesem Text jetzt keine Regel gebrochen. Falls ja seht es mir bitte nach

VG aus dem Sonnigen HH. Sven
-
Servus
Ich hab gerade ein komisches Ph
ä
nomen!Deine Scripte hab ich mit meinen zusammengef
ü
hrt und wieder importiert.
Hat gleich funktioniert.Aber jetzt hab ich 2 Scripte von meinen, die nicht mehr funktionieren.
var timeout; on( {id: "vis.0.control.data", change: "ne"} , function (obj){ // Nach 5 Minuten, zeige wieder index View (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(function () { setState("vis.0.control.command", '{"instance": "353.6043", "command": "changeView", "data": "001_Home"}'); }, 300000); });/******************************************************************************* * --------------------------- * Pin-Schutz für VIS-View * --------------------------- * Autor: Mic * Change Log * - 0.2 - Fix: 0 on keypad was not recognized * - 0.1 - initial version * Support: https://forum.iobroker.net/viewtopic.php?f=30&t=19871 ******************************************************************************/ /******************************************************************************* * Konfiguration ******************************************************************************/ const STATE_PATH = 'javascript.' + instance + '.' + 'visViewPinSperre.'; const LOGGING = true; // Detaillierte Ausgabe im Log. Falls keine Probleme, dann auf false setzen. /******************************************************************************* * Konfiguration: Views ******************************************************************************/ // Es können beliebig mehr Views hinzugefügt oder auf eine limitiert werden, bitte aber Aufbau beibehalten! const PIN_VIEWS = [ { name: '041_Energie', // Name der View, zu der bei Erfolg gewechselt werden soll project: 'main', // VIS-Projekt, in dem die View ist, für den Viewwechsel bei Erfolg. Wert bekommt man u.a.: Vis -> Menü: Setup > Projekte (den Namen des jeweilgen Projektes nehmen) instance: '353.6043', // Funktioniert bei mir (und einigen anderen) immer mit 'FFFFFFFF', ansonsten Wert vom Vis, Menü Tools, Feld "Instanz ID" nehmen pin: '2901', // Pin }, ]; /********************************************************************************************************** ++++++++++++++++++++++++++++ Ab hier nichts mehr ändern / Stop editing here! ++++++++++++++++++++++++++++ *********************************************************************************************************/ /******************************************************************************* * Globale Variablen *******************************************************************************/ // Array, pro View ein Element var G_LastKeyPressed = []; // Letzte Taste, die gedrückt wurde var G_PinBufferKeys = []; // Puffer für eingegebene Ziffern var G_PinBufferWildcards = []; // Für Vis-Anzeigefeld der Pineingabe, füllt sich mit "*" nach jeder Zifferneingabe /******************************************************************************* * Executed on every script start. *******************************************************************************/ init(); function init() { // Create states createScriptStates(); // 1. Initialize global variables // 2. Reset for each view setTimeout(function(){ for (let i = 0; i < PIN_VIEWS.length; i++) { // Initialize global variables G_LastKeyPressed[PIN_VIEWS[i].name] = ''; G_PinBufferKeys[PIN_VIEWS[i].name] = ''; G_PinBufferWildcards[PIN_VIEWS[i].name] = ''; // Reset für jede View durchführen resetPin(PIN_VIEWS[i].name) } }, 3000); // Main Script starten, 5 Sekunden nach State-Generierung setTimeout(main, 5000); } /******************************************************************************* * Haupt-Skript *******************************************************************************/ function main() { // Überwacht das Tastenfeld in VIS für jede View for (var i = 0; i < PIN_VIEWS.length; i++) { on({id: STATE_PATH + PIN_VIEWS[i].name + '.CurrentKey', change: "any"}, function (obj) { var currView = obj.id.substr(STATE_PATH.length).split(".")[0]; // get View Name simply from obj.id if(LOGGING) if(obj.state.val !== '') log('Eingabe über Tastenfeld: ' + obj.state.val + ', Viewname: ' + currView); switch(obj.state.val) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: G_LastKeyPressed[currView] = obj.state.val; userEnteredNumber(currView); break; case 'Enter': // Der User hat die Pin-Eingabe bestätigt. checkEnteredPin(currView); break; case 'Reset': resetPin(currView); break; default: //None } }); } } /******************************** * Create States ********************************/ function createScriptStates() { for (let i = 0; i < PIN_VIEWS.length; i++) { createState(STATE_PATH + PIN_VIEWS[i].name + '.CurrentKey', {'name':'Mit Tasten aus VIS setzen', 'type':'string', 'read':true, 'write':false, 'role':'info', 'def':'' }); createState(STATE_PATH + PIN_VIEWS[i].name + '.WrongPinEntered', {'name':'Pin-Fehler', 'type':'boolean', 'read':true, 'write':false, 'role':'info'}); createState(STATE_PATH + PIN_VIEWS[i].name + '.PinWildcards', {'name':'Sterne (*) für VIS-Anzeige', 'type':'string', 'read':true, 'write':false, 'role':'info', 'def':'' }); } } /******************************** * Wird ausgeführt, sobald der User eine Nummer im Tastenfeld eingibt. * @param {string} viewName Name der View *********************************/ function userEnteredNumber(viewName) { G_PinBufferKeys[viewName] = G_PinBufferKeys[viewName] + G_LastKeyPressed[viewName]; G_PinBufferWildcards[viewName] = G_PinBufferWildcards[viewName] + ' *'; setState(STATE_PATH + viewName + '.PinWildcards', G_PinBufferWildcards[viewName]); } /******************************** * Wird ausgeführt, sobald der User E für "Enter" eingibt * @param {string} viewName Name der View ********************************/ function checkEnteredPin(viewName) { if (G_PinBufferKeys[viewName] == getPresetElement(viewName, 'pin')) { if(LOGGING) log('Pin-Eingabe erfolgreich, View [' + viewName + ']'); onSuccess(viewName); setTimeout(function() { resetPin(viewName) }, 3000); // Reset nach 3 Sekunden } else { if(LOGGING) log('Falschen Pin eingegeben, View [' + viewName + ']'); setState(STATE_PATH + viewName + '.WrongPinEntered', true); resetPin(viewName); } } /******************************** * Reset * @param {string} viewName Name der View ********************************/ function resetPin(viewName) { if(LOGGING) log('Reset Pin, View-Name: [' + viewName + ']'); G_PinBufferWildcards[viewName] = ''; G_PinBufferKeys[viewName] = ''; setState(STATE_PATH + viewName + '.CurrentKey', ''); setState(STATE_PATH + viewName + '.PinWildcards', ''); setStateDelayed(STATE_PATH + viewName + '.WrongPinEntered', false, 3000); // Erst nach 3 Sekunden, für VIS-Anzeige } /******************************** * Wird bei erfolgreicher Pin-Eingabe ausgeführt * @param {string} viewName Name der View ********************************/ function onSuccess(viewName){ // Change View setState("vis.0.control.instance", getPresetElement(viewName, 'instance')); setState("vis.0.control.data", getPresetElement(viewName, 'project') + '/' + viewName); setState("vis.0.control.command", 'changeView'); } /******************************** * Gibt Elemente von PIN_VIEWS zurück * @param {string} viewName Name of the view * @param {string} key 'project', 'instance', 'pin' * @return {string} Content of the element, e.g. the Pin "1234" for element 'pin' ********************************/ function getPresetElement(viewName, key) { var keyEntry = ''; for (let i = 0; i < PIN_VIEWS.length; i++) { if (PIN_VIEWS[i].name === viewName) { keyEntry = PIN_VIEWS[i][key] } } return keyEntry; }Hat es mir durch das importieren was durcheinander geschmissen?
-
Hallo an alle, Hallo Kuddel,
erstmal meinen gr
ö
ß
ten Respekt f
ü
r deine Visualisierung. Ich finde das ist schon eine der Besten VIS die ich bisher gesehen habe. Ich hab mir die VIS auch mal importiert. Aber ehrlich gesagt erschl
ä
gt es mich als Anf
ä
nger mit den ganzen Seiten und Skripten ( von den ich keine Ahnung habe ). Ich w
ü
rde mich ja schon
ü
ber deine Startseite freuen die ich dann mit meinen Daten f
ü
ttern kann und das dann l
ä
uft. Ist so etwas m
ö
glich nur deine Startseite zu Importieren?Noch mal eine kleine frage am Rande an alle hier im Forum. Vom Homematic Forum kenne ich die Funktion eine PM an jemanden zu senden. Gibt es diese Funktion hier auch?
Ich hoffe ich habe mit diesem Text jetzt keine Regel gebrochen. Falls ja seht es mir bitte nach

VG aus dem Sonnigen HH. Sven
-
Servus
Ich hab gerade ein komisches Ph
ä
nomen!Deine Scripte hab ich mit meinen zusammengef
ü
hrt und wieder importiert.
Hat gleich funktioniert.Aber jetzt hab ich 2 Scripte von meinen, die nicht mehr funktionieren.
var timeout; on( {id: "vis.0.control.data", change: "ne"} , function (obj){ // Nach 5 Minuten, zeige wieder index View (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(function () { setState("vis.0.control.command", '{"instance": "353.6043", "command": "changeView", "data": "001_Home"}'); }, 300000); });/******************************************************************************* * --------------------------- * Pin-Schutz für VIS-View * --------------------------- * Autor: Mic * Change Log * - 0.2 - Fix: 0 on keypad was not recognized * - 0.1 - initial version * Support: https://forum.iobroker.net/viewtopic.php?f=30&t=19871 ******************************************************************************/ /******************************************************************************* * Konfiguration ******************************************************************************/ const STATE_PATH = 'javascript.' + instance + '.' + 'visViewPinSperre.'; const LOGGING = true; // Detaillierte Ausgabe im Log. Falls keine Probleme, dann auf false setzen. /******************************************************************************* * Konfiguration: Views ******************************************************************************/ // Es können beliebig mehr Views hinzugefügt oder auf eine limitiert werden, bitte aber Aufbau beibehalten! const PIN_VIEWS = [ { name: '041_Energie', // Name der View, zu der bei Erfolg gewechselt werden soll project: 'main', // VIS-Projekt, in dem die View ist, für den Viewwechsel bei Erfolg. Wert bekommt man u.a.: Vis -> Menü: Setup > Projekte (den Namen des jeweilgen Projektes nehmen) instance: '353.6043', // Funktioniert bei mir (und einigen anderen) immer mit 'FFFFFFFF', ansonsten Wert vom Vis, Menü Tools, Feld "Instanz ID" nehmen pin: '2901', // Pin }, ]; /********************************************************************************************************** ++++++++++++++++++++++++++++ Ab hier nichts mehr ändern / Stop editing here! ++++++++++++++++++++++++++++ *********************************************************************************************************/ /******************************************************************************* * Globale Variablen *******************************************************************************/ // Array, pro View ein Element var G_LastKeyPressed = []; // Letzte Taste, die gedrückt wurde var G_PinBufferKeys = []; // Puffer für eingegebene Ziffern var G_PinBufferWildcards = []; // Für Vis-Anzeigefeld der Pineingabe, füllt sich mit "*" nach jeder Zifferneingabe /******************************************************************************* * Executed on every script start. *******************************************************************************/ init(); function init() { // Create states createScriptStates(); // 1. Initialize global variables // 2. Reset for each view setTimeout(function(){ for (let i = 0; i < PIN_VIEWS.length; i++) { // Initialize global variables G_LastKeyPressed[PIN_VIEWS[i].name] = ''; G_PinBufferKeys[PIN_VIEWS[i].name] = ''; G_PinBufferWildcards[PIN_VIEWS[i].name] = ''; // Reset für jede View durchführen resetPin(PIN_VIEWS[i].name) } }, 3000); // Main Script starten, 5 Sekunden nach State-Generierung setTimeout(main, 5000); } /******************************************************************************* * Haupt-Skript *******************************************************************************/ function main() { // Überwacht das Tastenfeld in VIS für jede View for (var i = 0; i < PIN_VIEWS.length; i++) { on({id: STATE_PATH + PIN_VIEWS[i].name + '.CurrentKey', change: "any"}, function (obj) { var currView = obj.id.substr(STATE_PATH.length).split(".")[0]; // get View Name simply from obj.id if(LOGGING) if(obj.state.val !== '') log('Eingabe über Tastenfeld: ' + obj.state.val + ', Viewname: ' + currView); switch(obj.state.val) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: G_LastKeyPressed[currView] = obj.state.val; userEnteredNumber(currView); break; case 'Enter': // Der User hat die Pin-Eingabe bestätigt. checkEnteredPin(currView); break; case 'Reset': resetPin(currView); break; default: //None } }); } } /******************************** * Create States ********************************/ function createScriptStates() { for (let i = 0; i < PIN_VIEWS.length; i++) { createState(STATE_PATH + PIN_VIEWS[i].name + '.CurrentKey', {'name':'Mit Tasten aus VIS setzen', 'type':'string', 'read':true, 'write':false, 'role':'info', 'def':'' }); createState(STATE_PATH + PIN_VIEWS[i].name + '.WrongPinEntered', {'name':'Pin-Fehler', 'type':'boolean', 'read':true, 'write':false, 'role':'info'}); createState(STATE_PATH + PIN_VIEWS[i].name + '.PinWildcards', {'name':'Sterne (*) für VIS-Anzeige', 'type':'string', 'read':true, 'write':false, 'role':'info', 'def':'' }); } } /******************************** * Wird ausgeführt, sobald der User eine Nummer im Tastenfeld eingibt. * @param {string} viewName Name der View *********************************/ function userEnteredNumber(viewName) { G_PinBufferKeys[viewName] = G_PinBufferKeys[viewName] + G_LastKeyPressed[viewName]; G_PinBufferWildcards[viewName] = G_PinBufferWildcards[viewName] + ' *'; setState(STATE_PATH + viewName + '.PinWildcards', G_PinBufferWildcards[viewName]); } /******************************** * Wird ausgeführt, sobald der User E für "Enter" eingibt * @param {string} viewName Name der View ********************************/ function checkEnteredPin(viewName) { if (G_PinBufferKeys[viewName] == getPresetElement(viewName, 'pin')) { if(LOGGING) log('Pin-Eingabe erfolgreich, View [' + viewName + ']'); onSuccess(viewName); setTimeout(function() { resetPin(viewName) }, 3000); // Reset nach 3 Sekunden } else { if(LOGGING) log('Falschen Pin eingegeben, View [' + viewName + ']'); setState(STATE_PATH + viewName + '.WrongPinEntered', true); resetPin(viewName); } } /******************************** * Reset * @param {string} viewName Name der View ********************************/ function resetPin(viewName) { if(LOGGING) log('Reset Pin, View-Name: [' + viewName + ']'); G_PinBufferWildcards[viewName] = ''; G_PinBufferKeys[viewName] = ''; setState(STATE_PATH + viewName + '.CurrentKey', ''); setState(STATE_PATH + viewName + '.PinWildcards', ''); setStateDelayed(STATE_PATH + viewName + '.WrongPinEntered', false, 3000); // Erst nach 3 Sekunden, für VIS-Anzeige } /******************************** * Wird bei erfolgreicher Pin-Eingabe ausgeführt * @param {string} viewName Name der View ********************************/ function onSuccess(viewName){ // Change View setState("vis.0.control.instance", getPresetElement(viewName, 'instance')); setState("vis.0.control.data", getPresetElement(viewName, 'project') + '/' + viewName); setState("vis.0.control.command", 'changeView'); } /******************************** * Gibt Elemente von PIN_VIEWS zurück * @param {string} viewName Name of the view * @param {string} key 'project', 'instance', 'pin' * @return {string} Content of the element, e.g. the Pin "1234" for element 'pin' ********************************/ function getPresetElement(viewName, key) { var keyEntry = ''; for (let i = 0; i < PIN_VIEWS.length; i++) { if (PIN_VIEWS[i].name === viewName) { keyEntry = PIN_VIEWS[i][key] } } return keyEntry; }Hat es mir durch das importieren was durcheinander geschmissen?
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@Negalein die Vermtutung liegt nahe, dass dabei irgendetwas durchgew
ü
rfelt wurdedann mach ich besser einen eigenen Thread zu dem Problem auf.
Laut Log vom PIN-Script erkennt er den PIN nicht.
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@Negalein die Vermtutung liegt nahe, dass dabei irgendetwas durchgew
ü
rfelt wurdedann mach ich besser einen eigenen Thread zu dem Problem auf.
Laut Log vom PIN-Script erkennt er den PIN nicht.
-
Seit langer Zeit noch mal ins Forum geschaut und direkt im ersten Post den ich lese ein Dankesch
ö
n. Das ist richtig toll!Bitte und viel Spa
ß
. Diesen Winter wird nochmal gebastelt und ich komme hoffentlich dazu mal eine mobile Version zu erstellen.Gru
ß
-
Deine VIS ist echt super geworden. Ich h
ä
tte nur eine Frage, wie hast du diese Striche unter dem Text hinbekommen?

Danke dir im voraus@Paan83 sagte in [Vorstellung] Meine zweite Visualisierung:
Deine VIS ist echt super geworden. Ich h
ä
tte nur eine Frage, wie hast du diese Striche unter dem Text hinbekommen?

Danke dir im vorausWidget:
[{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Linie Links Mondstatus","filterkey":"Linie"},"style":{"left":"1025px","top":"90px","width":"80px","height":"3px","background":"linear-gradient(to right, #282828 5px, white 200px )","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/Wetter_Sigi/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Linie Rechts Mondstatus","filterkey":"Linie"},"style":{"left":"1105px","top":"90px","width":"80px","height":"3px","background":"linear-gradient(to left, #282828 5px, white 200px )","z-index":"3"},"widgetSet":"basic"}]
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden



