NEWS
[Aufruf] Welche guten JavaScripts setzt ihr ein?
-
Hi,
wie wäre es, wenn wir die hier in der ioBroker-Community enstandenen JavaScripts entsprechend sammeln und die Liste entsprechend pflegen?
Voraussetzung für die Aufnahme in dieser Liste: Einfach verwendbar, auch ohne wirklicher JavaScript-Kenntnisse. Und entsprechender Use-Case vorhanden, der nicht allzu individuell ist.
Nun seid ihr dran:
Bitte postet Links zu Scripts, die hier aufgenommen werden sollten. Eine Begründung dazu, also warum aufnehmen, wäre auch noch gut. Danke!
Bitte am besten immer Link zum Original-Script hier im Forum, falls ihr Scripts hier direkt postet.
P.S. Weitere interessante Links
- ioBroker JavaScript-Functions: Dokumentation
- Hilfreiche ioBroker JavaScript-Funktionen
- javascript.info: Gutes JavaScript-Tutorial
Zu den Kategorien
Scripts der Kategorie A erfüllen Folgendes:
- Der Ersteller pflegt regelmäßig das Script
- Es gibt einen Forum-Thread für User-Feedback, der verlinkt ist.
- Optional, jedoch gewünscht : das Script ist auf Github veröffentlicht und versioniert.
Gerade Scripts der Kategorie A sind auch potentielle Kandidaten für die Umwandlung in einen neuen Adapter.
Scripts der Kategorie B sind alle restlichen Scripts, die diese Kriterien nicht erfüllen. Diese sind dennoch einfach verwendbar ohne tiefer JavaScript-Kenntnisse und es ist ebenso ein entsprechender Use-Case vorhanden, der nicht allzu individuell ist.
Achtung: Scripts der Kategorie B sind nicht unbedingt durch mehrere Anwender getestet worden, sondern wurden teils einfach ohne näherer Prüfung hier übernommen!Scripts Kategorie A
Anwesenheit
Bewegungsmelder
Heizung
Multimedia
System
Visualisierung
Windows
Scripts Kategorie B
Im Gegensatz zu Scripts der Kategorie A sind diese Scripts hier teils nur einmalig veröffentlicht worden, nicht unbedingt regelmäßig vom Ersteller gepflegt/aktualisiert und es gibt nicht unbedingt einen Forum-Thread für User-Feedback für das Script.
Achtung: Diese Scripts sind teils auch ungetestet bzw. nur vom Ersteller getestet worden.
Alexa
(Weitere Alexa-Scripts siehe auch unter "Kategorie A - Visualisierung")
Bewegungsmelder
Hardware generell
System
Telegram, Alarm
Visualisierung
Zeitschaltuhr
-
Die Idee ist super. Es fehlt wirklich eine Script Bibliothek.
Hier ein Script um Datenpunkte von z.B. Funksensoren auf Lebendigkeit zu testen. Meine Zigbee Sensoren schmierten früher immer gerne ab und ich habe es nie erkannt.
//Das Script überprüft regelmässig die Datenpunkte auf Aktualisierung //Angabe des Datenpunkts= Datenpunkt der Überwacht werden soll //StateBezeichnung= Unter pfad_javascript.StateBezeichung wird ein State angelegt; True = Daten sind aktuell / False = Daten veraltet //Zeit in Sekunden = Zeit die vergangen sein darf seit der letzen Aktualisierung des Datenpunkts (0 = default Zeit wird genommen). schedule("*/3 * * * *" , function () { // Angabe des Datenpunkts;StateBezeichnung;Zeit in Sekunden var ueberwachung = ['fritzdect.0.Comet_119610277592.temp;Heizung;400', 'mqtt.0.zigbee2mqtt.Kuehlschrank;Temp_Kuehlschrank;7000', 'mqtt.0.zigbee2mqtt.gefrierfach;Temp_Gefrierschrank;7000', 'mqtt.0.zigbee2mqtt.TemperaturBad;Bad_Feuchtigkeit;7000', 'mqtt.0.zigbee2mqtt.Fenster_1;Fenster_1;7000', 'mqtt.0.zigbee2mqtt.Fenster_2;Fenster_2;7000', 'mqtt.0.zigbee2mqtt.Fenster_3;Fenster_3;7000', 'mqtt.0.zigbee2mqtt.Fenster_4;Fenster_4;7000', 'mqtt.0.zigbee2mqtt.Fenster_5;Fenster_5;7000', 'mqtt.0.zigbee2mqtt.Fenster_6;Fenster_6;7000', 'mqtt.0.zigbee2mqtt.Fenster_7;Fenster_7;7000', 'mqtt.0.zigbee2mqtt.Fenster_8;Fenster_8;7000']; var default_zeit = 240; var pfad_javascript ='javascript.0.watchdog.'; // Beispiel: 'javascript.0.watchdog.' !Punkt nicht vergessen am Ende! //------------------------------------------------------------------ //Ab hier nichts mehr Ändern //------------------------------------------------------------------ var zeit= Math.floor(Date.now() / 1000); var differenz, lchange; var daten, tchange; ueberwachung.forEach(function(item, index, array) { // Array Splitten daten = item.split(";"); //Datenpunkt erstellen wenn nicht vorhanden createState(pfad_javascript + daten[1], { read: true, write: false, name: "Watchdog " + daten[1], type: "boolean", role: " ", def: "false"}); //Differenz Zeit default oder manuell? differenz = parseInt(daten[2]); if (differenz == 0) differenz=default_zeit; //Zeitstempel abfragen in Sekunden tchange=parseInt(getState(daten[0]).ts / 1000); //Vergleichen der Zeitstempel if ((zeit-tchange)>differenz) { setState(pfad_javascript + daten[1], false); //console.log(daten[1] + " ist älter als " + differenz + " Sekunden"); } else { setState(pfad_javascript + daten[1], true); //console.log(daten[1] + " ist jünger als " + differenz + " Sekunden"); } }); });
-
Vorlage für den Xiaomi Aqara Magic Cube
//Würfel - Hier beim mir über Zigbee2mqtt angebunden on({id: 'mqtt.0.zigbee2mqtt.Wuerfel'}, function (obj) { var sschalter1 = obj.state.val; //shake if (sschalter1.indexOf('shake') > 0 ) { } //flip90 if (sschalter1.indexOf('flip90') > 0 ) { } //flip180 if (sschalter1.indexOf('flip180') > 0 ) { } //slide if (sschalter1.indexOf('slide') > 0 ) { } //tap if (sschalter1.indexOf('tap') > 0 ) { } //fall if (sschalter1.indexOf('fall') > 0 ) { } //rotate_left if (sschalter1.indexOf('rotate_left') > 0 ) { } //rotate_right if (sschalter1.indexOf('rotate_right') > 0 ) { } });
-
-
Danke für eure weiteren Scripts
Habe ich oben alle integriert.
Muss dann noch mal besser gliedern...
-
Find ich ne gute Idee, dachte heute schon drüber nach, ob ich meine Skripte mal posten soll, was ich hiermit tue!
Für das folgende Skript benötigt man den BLE-Adapter mit 'xiaomi, mi-flora' als aktive Plug-ins. Die jeweiligen Werte können in der Miflora-App entnommen werden, wobei hier aktuell nur die Minimalwerte geprüft werden. Mit Copy-Paste und Min durch Max austauschen lässt es sich allerdings leicht modifizieren. Alternativ/Zusätzlich kann auch eine Ausgabe über Alexa gemacht werden, wenn man es nicht per Telegram will. Das Skript ist so programmiert, dass man alle vier Stunden eine Benachrichtigung bekommt, sollte man an der Pflanze nichts geändert haben.
Ich habe noch einige Skripte mehr geschrieben, die allerdings deutlich komplizierter und daher nicht für JS-Anfänger geeigenet sind. Bei Interesse poste ich sie allerdings trotzdem gern.
-
Eine Scriptbibliothek anzulegen, ist eine super Idee!
Dann müsste der Beitrag aber auch angepinnt werden, dass man ihn bei Bedarf auch leicht findet.
Und vielleicht die Überschrift in Scriptbibliothek ändern?
Und dann auch für Blockly-Scripte.
-
@Tictactoo Immer her damit.
-
@Mic sagte in [Aufruf] Welche guten JavaScripts setzt ihr ein?:
ioBroker-Forum-Thread: Windows-Steuerung
Software GetAdmin: Software GetAdmin (credits to Vladimir Vilisov)
Der zweiter Link funktioniert nicht.
-
-
Danke für eure weiteren Scripte, übernehme ich alsbald oben.
@CruziX bei mir geht der Link https://blog.instalator.ru/archives/47 wunderbar
-
@Tictactoo Kann man das mit der Stehlampe nicht einfacher machen und einfach auf Änderung des IOT Gerätes prüfen?
Also wenn das Gerät eingeschaltet wurde, schauen welche Seriennummer in der Historie steht. Somit müsste man nichts in der Summary parsen.
Das Parsen ob an oder aus etc übernimmt ja Alexa schon beim Schalten des IOT Gerätes -
@CruziX Darüber hab ich bisher eigentlich nicht nachgedacht, da für mich das "Fake"-IOT-Gerät nur dafür da ist, das Alexa nicht immer antwortet, dass es mehrere Geräte gibt. Was ich dazu aber sagen kann ist folgendes: In der ersten Version hatte ich das Ganze tatsächlich noch über die Summary geprüft. Allerdings war da öfter das Problem, dass die Echos in anderen Räumen auch auf den Alexa-Ruf reagiert haben, wenn alle Türen in der Wohnung offen standen und ich/wir laut gesprochen haben. Es kam dann vor, dass es in einem anderen Raum die Stehlampe geschaltet wurde, statt in dem Raum, in dem wir es wollten. Deshalb hab ich mir dann das History-JSON-Objekt gegriffen und es darüber gelöst, weil da Befehl und Seriennummer immer ein Match sind. Könnte mir vorstellen, dass so ein ähnlicher Fall auch passieren könnte, wenn man es versucht über das IOT-Gerät zu lösen.
-
-
Hallo Mic,
die Skriptsammlung ist eine super Idee.
Letzendlich haben wir ja alle ein gemeinsames Ziel und ähnliche Anforderungen an eine Automatisierung.Ich würde dich bitten das "Time Of Day Desing Pattern" zu übernehmen.
"Einfache globale Zeitschaltuhr mit Tageszuständen (Morgens, Mittags, Nachmittag, Spätnachmittag, Abends, Nacht, Bettzeit)"https://forum.iobroker.net/topic/30457/time-of-day-design-pattern
VG
-
Hallo Gemeinde,
ich habe vielleicht auch was nützliches für den ein oder anderen... Hier ein Script welches ich nutze um meine Osram Lampen zu resetten. Das Timing ist, zumindest für mich , wirklich tricky. In Zeile 35 übergibt man einfach der Funktion "OsramReset" den State einer Steckdose. Ich nutze dazu eine Zigbee Steckdose. Dazu einfach ein kurzes Kabel mit E27 Fassung und los gehts
function Sleep(milliseconds) { return new Promise(resolve => setTimeout(resolve, milliseconds)); } async function OsramReset(Target) { var Count = 0 var FirstRun = true; while(Count <5) { Count++ if(getState(Target).val == true && FirstRun) { console.log('Schalte Lampe für den Reset initial aus und warte 10 Sekunden') setState(Target,false); FirstRun = false await Sleep(10000) } console.log(Count + '. mal an für 3 Sekunden'); setState(Target,true); await Sleep(3000); console.log('Aus für 5 Sekunden'); setState(Target,false); await Sleep(5000); } setState(Target,true); console.log('Wenn die Lampe in den nächsten Sekunden blinkt, war der Reset erfolgreich'); return; } OsramReset('zigbee.0.7cb03eaa0a02fa25.state');
-
@BoBeRzE Vielleicht doofe Frage: Wofür braucht man einen Reset der Lampe?
-
naja, wenn man die Lampe neu anlernen will. Ich bin derzeit viel am basteln und und muss regelmäßig meine Geräte neu anlernen. Erst nach dem Reset befinden sich die Lampen wieder im "Pairing-Modus"
MfG BoBeRzE
-
Dieses Skript Räumt in den Räumen und Funktionen auf.
Die Funktion cleanEnum nimmt 2 Parameter (true, oder false) an.
Der erste ist zum Löschen von nicht mehr existierenden Datenpunkten, der zweite zum Löschen von Doppelten Datenpunkten in der Aufzählung.Wenn beide Parameter mit false übergeben werden, passiert nichts, aber es kommen dennoch Meldungen, wenn was gefunden wurde.
https://github.com/xCruziX/ioBroker-Clean-Enums/blob/master/CleanEnums.js
-
Danke euch allen für die Beteiligung! Ich habe alle ergänzt.
Credits an (seit letzter Änderung, ich hoffe ich hab keinen vergessen):
@Tictactoo
@liv-in-sky
@BoBeRzE
@CruziXLangsam wird das hier umfangreich
Ich tendiere nun dazu, weiter zu separieren:
- A) "umfangreiche und gepflegte Scipts": regelmäßiges Updates, gibt eigenen Forum-Thread für User-Feedback, Script wird gepflegt. Auch: Script auf Github veröffentlicht.
- B) "einfachere" Scripts: einmalig gepostet im Forum, spezieller Use-Case, etc.
Also zwei Kategorien. Gerade Kategorie B wäre dann auch ggf. interessant für zukünftige Adapter-Umsetzung.
Ansonsten:
Was mich noch stört: einige der Scripts oben sind völlig ungetestet. Ich kann diese aus Zeitgründen oder/oder mangels Hardware auch nicht alle reviewen und testen.
Daher auch die Idee die Unterscheidung A/B als Überlegung, wobei "A" dann auch als hinreichend getestet betrachtet wird, sieht man ja an der User-Resonanz.