NEWS
[Vorlage] Multi Ereignislisten Skript
-
@ruhr70
Hallo,
vielen Dank erstmal.
Man kann das Skript aber noch immer nicht übernehmen.
Den Fehler am Schluss des Skripts bekomm ich noch hin,
aber bei Zeile 140 nicht mehr. Vielleicht schaust du nochmal.Gruß
Olli -
Könnte man das Skript nicht so umbauen, dass es keine globale Funktion benötigt, sondern einen Trigger auf einen Datenpunkt setzt? Dieser kann ja einen String beinhalten und die selbe Syntax wie der Funktionsaufruf benötigen.
Ich würde das ggf. mir Trial an Error irgendwann auch hinbekommen, aber hier ist sicher jemand der das schneller und effizienter hinbekommt. Macht das überhaupt Sinn was ich vorschlage? Oder hat eine globale Funktion irgendwelche Vorteile? (Performance?!)
Ein eigener Adapter wäre natürlich noch eleganter.Habe bisher viele Skripte aber keine globale Funktion in Benutzung, daher meine Frage.
EDIT: Natürlich vielen Dank für dieses Skript! Funktioniert bisher soweit sehr gut.
-
@siggi85 nach meinem Verständnis ist eine globale Funktion ja im Prinzip nur ein Code-Schnipsel, das überall zur Verfügung steht. Speziell bei der Ereignisliste ist der extrem einfach gehalten und ist selbst für einen Raspberry Pi 1 keine Herausforderung.
Das ganze über einen Datenpunkt zu realisieren scheint mir indes eher unflexibel, weil man da ja auch die Parameter für die Liste und Farbe mit übergeben müsste. Insofern finde ich die aktuelle Lösung garnicht so schlecht.
Allerdings hab ich das ganze bisher nur sehr rudimentär eingebaut, weil ich keinen Sinn darin sehe, mir eine Liste mit Tür offen, Tür geschlossen, Tür offen, Tür geschlossen anzeigen zu lassen. Sowas benötige ich zwar manchmal für die Fehlersuche, aber dann lass ich mir den Wechsel der Zustände ins History oder InfluxDB schreiben und werte das dann grafisch mit Flot oder Grafana aus. So kann ich Trigger und Aktion gleichzeitig sehen und besser nachvollziehen, warum morgens das Licht leuchtet, wenn ich ins Wohnzimmer komme, obwohl ich es abends ausgeschaltet habe. -
@ruhr70 Sehr cooles Skript. Hab etwas gebaucht um den Zweck zu verstehen, aber das ist echt super cool. Kommt gleich auf meine ToDo Liste fürs Smart Home
-
@ruhr70 sagte in [Vorlage] Multi Ereignislisten Skript:
0.2.3
Hm , habe mal die 0.2.3 genommen , leider kommt ein Fehler:
15.8.2019, 11:16:10.692 [info ]: javascript.0 Stop script script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:16:10.692 [info ]: javascript.0 script.js.Ereignisse.Erstellt_Ereignislisten: ----------- Skript: script.js.Ereignisse.Erstellt_Ereignislisten -> wurde beendet ----------- 15.8.2019, 11:16:10.798 [info ]: javascript.0 Start javascript script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:16:10.798 [error]: javascript.0 script.js.Ereignisse.Erstellt_Ereignislisten compile failed: at script.js.Ereignisse.Erstellt_Ereignislisten:140 15.8.2019, 11:16:56.490 [info ]: javascript.0 Stop script script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:16:56.496 [info ]: javascript.0 Start javascript script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:16:56.496 [error]: javascript.0 script.js.Ereignisse.Erstellt_Ereignislisten compile failed: at script.js.Ereignisse.Erstellt_Ereignislisten:140 15.8.2019, 11:17:41.090 [info ]: javascript.0 Stop script script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:17:41.101 [info ]: javascript.0 Start javascript script.js.Ereignisse.Erstellt_Ereignislisten 15.8.2019, 11:17:41.101 [error]: javascript.0 script.js.Ereignisse.Erstellt_Ereignislisten compile failed: at script.js.Ereignisse.Erstellt_Ereignislisten:140
Zeile 140:
for (var i=0; i<this.length; i++)/if/(a="==" this[i])/return/true/false/}/function/makejsonarr()/{/for/(var/liste/in/listenjson)/jsonarr[liste]="readListEvent(pfad+liste+".eventlistArr");" datenpunkte/für/die/eventlisten/anlegen/dpanlegen(callback)/var/stateliste="[];" zeitstempel="listenJson[liste].zeitstempel;" (typeof/"undefined")/hier/wird/als/array/angelegt/stateliste.push({id:/pfad+liste+".eventlistarr",/val:formatdate(new/date(),/zeitstempel)/+/trennerzeitstempel/'datenpunkt/angelegt',/write:/false});/string/mit/\n/pfad+liste+".eventliststr",/val:"",/html-string/<br="">\n für VIS
Bin wieder zurück auf die 0.2.2
-
@sigi234 sagte in [Vorlage] Multi Ereignislisten Skript:
Bin wieder zurück auf die 0.2.2
geht die 0.3.0er bei dir nicht? bei mir flutscht das Ding wie sonst was.
-
@a200 sagte in [Vorlage] Multi Ereignislisten Skript:
@sigi234 sagte in [Vorlage] Multi Ereignislisten Skript:
Bin wieder zurück auf die 0.2.2
geht die 0.3.0er bei dir nicht? bei mir flutscht das Ding wie sonst was.
Geht bei mir nicht. .
-
Hi,
ich würde die Listen gerne unter meinen eigenen Datenpunkten (Ordner der auf der obersten Ebene liegt und Datenpunkte.0 heißt) anlegen lassen und nicht unter javascript.0Kann ich das in den Skript irgendwie anpassen ?
-
@martinschm lass die lieber da .. eigenen Datenpunkte sollten nicht im einzelnen eigen angelegten Datenbaum liegen
-
Hi @arteck, was ist der Grund dafür ?
Hab zwei javascript Instanzen, eine auf der ich Skripte teste und eine wo die produktiven laufen. Dachte wenn ich teste und der Adapter mal abstürzt läuft der Rest trotzdem weiter.
Daher schien es mir klug, die Datenpunkte unabhängig vom Adapter abzulegen
-
@martinschm ja es ist so..die instanzen laufen unabhängig voneinander.. stürtzt die eine ab läuft der rest weiter...
ich lege die Datenpunkte so wie ich die Brauche .. die Instazen könne untereinander auf diese zugreifen
-
@arteck said in [Vorlage] Multi Ereignislisten Skript:
@martinschm ja es ist so..die instanzen laufen unabhängig voneinander.. stürtzt die eine ab läuft der rest weiter...
ich lege die Datenpunkte so wie ich die Brauche .. die Instazen könne untereinander auf diese zugreifen
Danke für dein Feedback. Aus Neugierde würde mich aber interessieren, warum die Datenpunkte unterhalb des javascript Adapters bleiben sollen. Lerne gern dazu, mir leuchtet das aber noch nicht ein.
-
@martinschm na ja.. es kann sein (auch wen ndie warscheinlichkeit klein ist ) das jemand einen Adapter Entwickelt der genaus so heisst wie deine Hauptstruktur.. jetzt wird der Adapter installiert und dieser zerhaut dir die komplette Struktur..
-
Ich selbst nutze eine Struktur namens "custom" und habe da alles drunter. Bis auf die Ereignislisten und den speedtest des Internetanschlusses. Das habe ich allerdings nur unter javascript, weil ich den Aufwand geschäut habe und in JS nicht ganz auf der Höhe bin. Sollte eine Version erscheinen, wo ich die Ordnerstruktur anhand von bspw. Variablen selber festlegen könnte, wäre auch ich nicht abgeneigt.
-
@siggi85 said in [Vorlage] Multi Ereignislisten Skript:
Ich selbst nutze eine Struktur namens "custom" und habe da alles drunter. Bis auf die Ereignislisten und den speedtest des Internetanschlusses. Das habe ich allerdings nur unter javascript, weil ich den Aufwand geschäut habe und in JS nicht ganz auf der Höhe bin. Sollte eine Version erscheinen, wo ich die Ordnerstruktur anhand von bspw. Variablen selber festlegen könnte, wäre auch ich nicht abgeneigt.
Ich hab mir jetzt per Skript die Listen anlegen lassen, hab sie dann als json exportiert. Das json dann angepasst (suchen ersetzen) und wieder importiert. Der Rest läuft dann anscheinen.
Das Erstellen lässt sich leider nicht anpassen, da createState immer unterhalb des javascript Ordners anlegt.
-
Erstmal Danke für das tolle Script
Jetzt zu meiner Frage wobei ich sagen muß das ich von js absolut keinen Plan habe.
Wie kann ich die Ausgabe farbig machen d.h. der Text "Flurheizung ausgeschaltet" z.B. in rot
und "eingeschaltet" in grünvar idFlurheizung = "shelly.0.SHSW-1#55E0BB#1.Relay0.Switch"; on({id:idFlurheizung,change:'ne'}, function (obj) { if (obj.state.val) { event('**Flurheizung eingeschaltet** '); } else { event('Flurheizung ausgeschaltet '); } });
-
@Nashra sagte in [Vorlage] Multi Ereignislisten Skript:
Erstmal Danke für das tolle Script
Jetzt zu meiner Frage wobei ich sagen muß das ich von js absolut keinen Plan habe.
Wie kann ich die Ausgabe farbig machen d.h. der Text "Flurheizung ausgeschaltet" z.B. in rot
und "eingeschaltet" in grünevent("heizung aus", "default", red);
oder
event("heizung an", "default", "#00ff00"); -
@a200 sagte in [Vorlage] Multi Ereignislisten Skript:
@Nashra sagte in [Vorlage] Multi Ereignislisten Skript:
Erstmal Danke für das tolle Script
Jetzt zu meiner Frage wobei ich sagen muß das ich von js absolut keinen Plan habe.
Wie kann ich die Ausgabe farbig machen d.h. der Text "Flurheizung ausgeschaltet" z.B. in rot
und "eingeschaltet" in grünKlappt so leider nicht
event("Flurheizung ausgeschaltet", "default", red);
hier kommen Fehlermeldungen im Log das die Farbe nicht definiert ist
oder
event("Flurheizung ausgeschaltet", "default", "#00ff00");hier keine Fehler, aber der Text ist nicht farbig
-
@Nashra jetzt habe ich nachgeschaut. Aus dem original Event-Skript:
// Beispiele zur Anwendung in den eigenen Skripten: // // event("Tür geöffnet"); // erstellt einen Eintrag "Tür geöffnet" in der default-Liste // event("neue externe IP-Adresse","wichtig"); // erstellt einen Eintrag "neue externe IP-Adresse" in der Liste "wichtig" // event("Alarm ausgelöst"),["wichtig","default"],"rot"); // erstellt einen Eintrag "Alarm ausgelöst" in den Listen wichtig und default in der html-Farbe rot.
wobei aus meiner Sicht hier ein Fehler vorliegt und es sollte heißen:
event("Alarm ausgelöst",["wichtig","default"],"rot");
oder
event("Alarm ausgelöst", "default", "#ff00ff");
wo die Farbe als RGB in hex angegeben wird funktioniert auch.
-
Hm erstmal Danke für deine Hilfe aber irgendwie will das bei mir nicht.
Welches Widget nutzt Du für die html Ausgabe?
Habe basic-html und dort {javascript.0.Ereignisliste.default.eventlistHTML} eingetragen.
Es wird zwar alles angezeigt aber eben nur in weißer Schrift.