NEWS
Beispiel einer praktische Anwendung - Wie würdet ihr es lösen?
-
Das scheint mir alles nicht zu komplex zu sein:
Prinzipiell kannst Du entweder jscript schreiben oder Blockly benutzen. Alternativ kannst Du auch ScriptGui nutzen, das ist aber noch in einem frühen Stadium. Ich weiss nicht, ob da schon alles geht.
Mal im einzelnen:
Wenn du auch mit -6° beim Sonnestand leben kannst, dann gibt's einen Trigger 'dusk' bzw 'dawn'
Mit shift: xx kann man das anpassen.
on({astro: "dusk", shift: 10}, function () { log((new Date()).toString() + " - 10 Minuten nach Dämmerungsende!"); }); ````Falls Du genau 4° willst, muss man wohl selber berechnen Anwesenheit kann man mit dem Adapter 'radar' überprüfen. Der checkt WLAN und auch Bluetooth (falls vorhanden) Bei den meisten Szenarien hast Du ja irgendwelche Trigger auf die man mit on(pattern, callbackOrId, value) reagieren kann. Dann innerhalb der Funktionen mit if/then/else arbeiten. Ich weiß nicht genau, ob es Sinn macht hier ganze Script-Blöcke reinzuschreiben. Es gibt ja viele Beispiele hier im Forum. TV an/aus scheint mir interessant. Kann sein, dass der Radar Adapter helfen kann, ansonsten bleibt wohl nur der Weg über einen Steckerzwischenschalter der den Strom misst. Hilft Dir das, oder bin ich komplett neben dem Thema?
-
Hallo Leute,
..
Ausgangssituation:
Szenarium:
-
Morgens sollen alle Rollos bei einer Sonnenelevation von -4° aufgehen
-
Abends sollen alle Rollos bei einer Sonnenelevation von -4° zu gehen
Grüße,
ldittmar
!
!berechg sonne_elevation, sonne_azimut; stand 14.03.2014 !Verfasser: funkleuchtturm real phi = system.Latitude(); !Breitengrad holen phi = 0.017453292 * phi; !umwandeln in bogenmass !####### sin_phi und cos_phi mit taylorreihe berechnen real temp = phi * phi; real sin_phi =phi * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung real cos_phi = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung !### berechnung sonnenzeit, alle zeiten in minuten ######## integer zeit_min = system.Date("%M").ToInteger() + 60*system.Date("%H").ToInteger(); integer tagesbeginn_min = system.SunriseTime("%M").ToInteger() + 60*system.SunriseTime("%H").ToInteger(); integer tagesende_min = system.SunsetTime("%M").ToInteger() + 60* system.SunsetTime("%H").ToInteger(); integer sonnenzeit =zeit_min + 720 - 0.5 *(tagesbeginn_min +tagesende_min); if (sonnenzeit > 1440) {sonnenzeit = sonnenzeit -1440;} if (sonnenzeit < 1) {sonnenzeit = 1440 + sonnenzeit;} boolean nachmittag =false; if (sonnenzeit > 720) {sonnenzeit =sonnenzeit - 720; nachmittag = true; } else {sonnenzeit =720 -sonnenzeit;} !##### berechnung sin_tau und cos_tau ############ real tau = 0.00436332313 * sonnenzeit; ! 15/60 * pi /180 * sonnenzeit [0 < tau < pi ] if (tau < 1.570796327) {temp = tau * tau; real sin_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp *0.1666667)); tau= 1.570796327 - tau; temp = tau * tau; real cos_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));} else {real tau1 =3.141592654 - tau; temp = tau1 * tau1; real sin_tau =tau1 * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); tau = tau - 1.570796327; temp = tau * tau; real cos_tau = (tau) *(-1.0)* ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));} !##### berechnung delta ####################### integer tageszahl = system.Date("%j").ToInteger(); tageszahl = tageszahl +10; if (tageszahl > 365) {tageszahl = tageszahl - 365;} if (tageszahl < 92) {real tag = 0.0172142 *tageszahl;temp = tag * tag; real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));} if ((tageszahl >91) && (tageszahl < 184)) {tageszahl = 183 - tageszahl; real tag = 0.0172142 *tageszahl; temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));} if ((tageszahl >183) && (tageszahl < 275)) {tageszahl = tageszahl - 183; real tag = 0.0172142 *tageszahl; temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));} if ((tageszahl >274) && (tageszahl < 366)) {tageszahl = 365 - tageszahl; real tag = 0.0172142 *tageszahl; temp = tag * tag; real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));} !##### berechnung sin_delta, cos_delta ####################### temp = delta * delta; real sin_delta =delta * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung real cos_delta = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung !##### berechnung tan_delta mit stueckweiser linearisierung des tan ####################### boolean vvorzeichen = true; if (delta< 0.0) {vvorzeichen = false; delta = (-1.0) *delta;} real tan_delta = 1.0233 * delta; if (delta >=0.2618) {tan_delta = (1.1822*delta) - 0.0416;} if (vvorzeichen == false) {tan_delta = (-1.0) * tan_delta;} !##### berechnung sin_elevation und tan_azimut ####################### real sin_elevation = (sin_phi * sin_delta) +( cos_phi * cos_delta * cos_tau); temp = sin_elevation * sin_elevation; real sonne_elevation = sin_elevation * (1.0 + (0.1666667 * temp) + (0.075 * temp * temp)); sonne_elevation = 57.29577951 * sonne_elevation; real nenner = (sin_phi*cos_tau) - (cos_phi * tan_delta); if (nenner < 0.0) {boolean plus180 = true;} real tan_azimut = sin_tau / nenner; !##### berechnung sonne_azimut mit stueckweiser linearisierung des arctan ############ boolean vorzeichen = true; if (tan_azimut < 0.0) {vorzeichen = false; tan_azimut = (-1.0)*tan_azimut;} real sonne_azimut = 0.97723 * tan_azimut; if ((tan_azimut >=0.2679)&&(tan_azimut < 0.5774)) {sonne_azimut = (0.84588* tan_azimut) + 0.035189;} if ((tan_azimut >= 0.5774)&&(tan_azimut < 1.0)) {sonne_azimut = (0.6195* tan_azimut) + 0.1659;} if ((tan_azimut >= 1.0)&&(tan_azimut < 1.3032)) {sonne_azimut = (0.43173* tan_azimut) + 0.3537;} if ((tan_azimut >= 1.3032)&&(tan_azimut < 1.7321)) {sonne_azimut = (0.3052* tan_azimut) + 0.51856;} if ((tan_azimut >= 1.7321)&&(tan_azimut < 2.4142)) {sonne_azimut = (0.1919* tan_azimut) + 0.7148;} if ((tan_azimut >= 2.4142)&&(tan_azimut < 2.9459)) {sonne_azimut = (0.123* tan_azimut) + 0.88115;} if ((tan_azimut >= 2.9459)&&(tan_azimut < 3.7321)) {sonne_azimut = (0.083312* tan_azimut) + 0.9981;} if ((tan_azimut >= 3.7321)&&(tan_azimut < 5.0)) {sonne_azimut = (0.050792* tan_azimut) + 1.1194;} if ((tan_azimut >= 5.0)&&(tan_azimut <7.0)) {sonne_azimut = (0.02775* tan_azimut) + 1.23465;} if ((tan_azimut >= 7.0)&&(tan_azimut <12.0)) {sonne_azimut = (0.01175117* tan_azimut) + 1.346641;} if ((tan_azimut >= 12.0)&&(tan_azimut <20.0)) {sonne_azimut = (0.004147854* tan_azimut) + 1.437881;} if ((tan_azimut >= 20.0)&&(tan_azimut <50.0)) {sonne_azimut = (0.0009987* tan_azimut) + 1.5008639;} if (tan_azimut >= 50.0) {sonne_azimut = (0.000099983* tan_azimut) + 1.54579974;} if (sonne_azimut> 1.5707963278) {sonne_azimut = 1.5707963278;} if (vorzeichen == false) {sonne_azimut = (-1.0) * sonne_azimut;} sonne_azimut = 57.29577951 * sonne_azimut; if (plus180 == true) {sonne_azimut = sonne_azimut + 180.0;} !##### tageszeitliche korrektur und werte auf systemvariablen speichern ###### if (nachmittag == false) {sonne_azimut = 180.0 - sonne_azimut; sonnenzeit = 720 - sonnenzeit;} else {sonne_azimut = sonne_azimut + 180.0;sonnenzeit = 720 + sonnenzeit;} sonne_azimut = 0.1 *((sonne_azimut*10.0) .ToInteger()); sonne_elevation = 0.1 *((sonne_elevation*10.0) .ToInteger()); dom.GetObject("sonne_elevation").State(sonne_elevation); dom.GetObject("sonne_azimut").State(sonne_azimut);
` -
-
Hi OstfrieseUnterwegs,
Das scheint mir alles nicht zu komplex zu sein: `
sagt der Experte … neee.... ist nicht so komplex. Ich habe es mit Homematic und noch ein paar extra Würste realisiert.Prinzipiell kannst Du entweder jscript schreiben oder Blockly benutzen. Alternativ kannst Du auch ScriptGui nutzen, das ist aber noch in einem frühen Stadium. Ich weiss nicht, ob da schon alles geht. `
Ich habe mit jscript schon den Sonnenstandscript integriert und muss mich in die Materie noch einarbeiten. Mit Blocky habe ich noch nichts gemacht, aber für den einfachen Teil werde ich es nehmen.Wenn du auch mit -6° beim Sonnestand leben kannst, dann gibt's einen Trigger 'dusk' bzw 'dawn'
Mit shift: xx kann man das anpassen.
on({astro: "dusk", shift: 10}, function () { log((new Date()).toString() + " - 10 Minuten nach Dämmerungsende!"); }); ````Falls Du genau 4° willst, muss man wohl selber berechnen `
danke für die Antwort. Das ist schon eine große Hilfe. Das mit dem Trigger "dusk" und "dawn" hatte ich nicht gewusst. Ich könnte also auf dem Sonnenstandskript verzichten… wenigstens dafür denn vielleicht brauche ich noch den Sonnenstand um zu wissen ob die Sonne gerade mein TV-Bild stört.
Anwesenheit kann man mit dem Adapter 'radar' überprüfen. Der checkt WLAN und auch Bluetooth (falls vorhanden) `
Bei der Anwesenheit habe ich z.B. den Ping-Adapter. Ich kannte Radar nicht, aber es scheint viel interessanter zu sein, denn ich könnte ja auch nach der MAC-Adresse suchen. Danke für den Tipp!Bei den meisten Szenarien hast Du ja irgendwelche Trigger auf die man mit on(pattern, callbackOrId, value) reagieren kann. Dann innerhalb der Funktionen mit if/then/else arbeiten. `
Ja… ich muss halt ein paar Variablen anlegen und ein paar Werte speichern, damit ich weiss ob gerade ein anderes Skript (z.B. NadD-Phase) gerade "läuft" und damit ich entsprechend reagieren kann. Sollte aber kein Hexenwerk sein.Ich weiß nicht genau, ob es Sinn macht hier ganze Script-Blöcke reinzuschreiben. Es gibt ja viele Beispiele hier im Forum. `
Oah… ganze Blöcke nicht, aber so ein kleinen Teil, als Faden :lol:TV an/aus scheint mir interessant. Kann sein, dass der Radar Adapter helfen kann, ansonsten bleibt wohl nur der Weg über einen Steckerzwischenschalter der den Strom misst. `
Das mit dem Fernsehr klappt eigentlich ganz gut über Ping und ich könnte dann über die Helligkeit und Sonnenstand wissen ob der Rollo runter muss.Hilft Dir das, oder bin ich komplett neben dem Thema? `
Danke! Das war schon eine große Hilfe! Ich probiere mal mein Glück mit dem Umzug von CCU auf ioBroker… wird schon schief gehen!!!Die Berechnung des Sonnensstands habe ich in der CCU2 gelassen und erfolgt dort mit dem Script alle 4 Minuten: `
Ich habe die Berechnung z.Z. auf mein RaspberryMatic, aber hin- und wieder hört er einfach auf zu berechnen, was dazu führt, dass die Rollläden nicht hoch oder runter fahren. Wenn ich es neustarte dann geht es wieder… das ist aber auch erst seit ich die neue Version von RaspberryMatic drauf habe... es liegt wahrscheinlich daran, dass der Timer nicht mehr zuverlässig funktioniert. Ich soll auf CuxD-Timer umstellen, aber das ist mal wieder nur eine Notlösung und aus diesen Grund möchte ich komplett zu ioBroker wechseln. Mein Fazit: Die CCU ist zuverlässiger, wenn sie ganz Nackt ist!
Grüße,
ldittmar
-
Wenn Du ein Sonnenstand-Script auf der CCU hast, und es irgendwelche Systemvariablen setzt, dann kannst Du die ja auch in ioBroker auslesen und dein Script dann später umziehen.
Bei den Astro-Triggern ist interessant, dass man auch sowas wie {astro: "dusk", shift: -10} setzen kann. 'dusk' triggert wenn die bürgerliche Dämmerung endet, -10 wäre dann 10 Minuten vorher.
Zu eigenen Variablen: Dazu benutzen wir in ioBroker States, die mit
createState() angelegt werden. Prinzipiell kann man sie zwar auch über das UI erzeugen, aber ich bevorzuge ein Script für sowas. Wenn man ein createState() auf einen State macht, der schon da ist, macht das nichts.
Ich habe auch nur ein paar Blockly Scripte, aber manchmal nehme ich es gerne um mir ein Gerüst zu bauen. Ich klicke was in Blockly zusammen, dann schalte ich im Editor auf 'show jscript' um und mache Copy/Paste in ein echte jscript rein. Das Blockly Script lösche ich dann wieder und arbeite im jscript weiter.
Weil ich nicht gerade ein begnadeter Programmierer bin und mir nicht die ganze Syntax merken kann/will, funktioniert das für mich ganz gut.
Hast Du die Doku zu Blockly gesehen? https://github.com/ioBroker/ioBroker.ja … ckly_de.md
Es gab auch eine gute Anleitung zu javascript, aber irgendwie ist die verschwunden
EDIT: Gefunden: http://www.iobroker.net/?page_id=5385&lang=de
Und auch ein Sonnestand-Script http://www.iobroker.net/?page_id=3693&lang=de
-
Hallo,
der Umzug der Homematic Programme und Skript nach ioBroker kann ja zum Glück "fliessend" erfolgen. Auf beiden Systemen kann man Programm/Skripte aktivieren und deaktivieren und so immer wieder zum alten und bewährten zurückkehren. Es empfiehlt sich also schrittweise umzustellen. Du kannst auch beide Varianten parallel laufen lassen und in ioBroker erstmal nur Log-Ausgaben machen, statt tatsächlich zu schalten. So kannst du deine Logik leicht überprüfen.
Mach dir ein paar Gedanken über die Struktur deiner Variablen und Zustände.
Ich habe die Variablen (states, mit createState angelegt)
Anwesenheit
Nachtruhe
Alarmanlage
Diese Zustände werden praktisch in jedem Skript abgefragt und beeinflussen die Aktionen, wie zB Benachrichtigungen.
Nachtruhe schalte ich per Hand/Wandtaster am Bett ein, geht morgens (astro) automatisch aus. Nachtruhe true geht nur bei Anwesenheit true.
Anwesenheit falsee (oder Abwesenheit) schalte ich per Hand an der Wohnungstür/Wandtaster. Das triggert dann zeitverzögert die Alarmanlage, welche also nur bei Abwesenheit true sein kann. Sobald ich heimkomme (Keymatic detektiert Ankunft), schaltet die Alarmanlage aus.
Hallo Leute,
..
Ausgangssituation:
Szenarium:
-
Morgens sollen alle Rollos bei einer Sonnenelevation von -4° aufgehen
-
Abends sollen alle Rollos bei einer Sonnenelevation von -4° zu gehen
Grüße,
ldittmar
http://forum.iobroker.net/viewtopic.php?f=21&t=975&p=7933&hilit=sonnenstand#p7733
/* System Sonnenstand Sonne Azimut und Elevation in Variablen schreiben erstellt: 06.07.2015 nach ioBroker Forum http://forum.iobroker.net/viewtopic.php?f=21&t=975&sid=6f0ba055de5f82eed6809424f49ca93b#p7635 */ var suncalc = require('suncalc'), result = getObject("system.adapter.javascript.0"), lat = result.native.latitude, long = result.native.longitude; createState('Sonnenstand.Elevation', 0, {unit: '°'}); createState('Sonnenstand.Azimut', 0, {unit: '°'}); function Sonnenstand_berechnen () { var now = new Date(); // log("-----------------------------------------------"); // log("latitude : " + result.native.latitude,'info'); // log("longitude: " + result.native.longitude,'info'); var sunpos = suncalc.getPosition(now, lat, long); // log("sunpos: " + JSON.stringify(sunpos),'info'); var h = sunpos.altitude * 180 / Math.PI, a = sunpos.azimuth * 180 / Math.PI + 180; setState("javascript.0.Sonnenstand.Elevation",h.toFixed(1)); setState("javascript.0.Sonnenstand.Azimut",a.toFixed()); } schedule("*/1 * * * *", Sonnenstand_berechnen); Sonnenstand_berechnen(); // bei Scriptstart
Die CCU ist zuverlässiger, wenn sie ganz Nackt ist!
-
-
Wenn Du ein Sonnenstand-Script auf der CCU hast, und es irgendwelche Systemvariablen setzt, dann kannst Du die ja auch in ioBroker auslesen und dein Script dann später umziehen. `
Ich habe vor etwa 2 Wochen die neuste Version von RaspberryMatic installiert und da läuft z.Z. mein Sonnenscript. Leider kommt es seit der Umstellung zu Probleme mit dem CCU-Timer. Irgendwann hört der Timer einfach auf und das Programm wird nicht mehr ausgeführt. Natürlich könnte ich weiter mit der CCU arbeiten und das Problem mit Tricks umgehen, aber ich habe mir dann gedacht: "Jetzt steige ich um, denn es gibt einfach zu viele Einschränkungen mit der originale Software!!" - Und nachdem ich kurz openHab2 getestet habe, bin ich zu euch gekommen - Bin bis jetzt total begeistert…Bei den Astro-Triggern ist interessant, dass man auch sowas wie {astro: "dusk", shift: -10} setzen kann. 'dusk' triggert wenn die bürgerliche Dämmerung endet, -10 wäre dann 10 Minuten vorher. `
Sowas habe ich schon immer vermisst!!Ich habe auch nur ein paar Blockly Scripte, aber manchmal nehme ich es gerne um mir ein Gerüst zu bauen. Ich klicke was in Blockly zusammen, dann schalte ich im Editor auf 'show jscript' um und mache Copy/Paste in ein echte jscript rein. Das Blockly Script lösche ich dann wieder und arbeite im jscript weiter.
Weil ich nicht gerade ein begnadeter Programmierer bin und mir nicht die ganze Syntax merken kann/will, funktioniert das für mich ganz gut. `
Danke für den Tipp!! Genau solche Erfahrungswerte wollte ich haben… Ich bin zwar ein Programmierer (hab z.B. für die CCU WebMatic ab Version 2 entwickelt), aber auch wir wollen es leichter im Leben haben. Diese Hacker aus dem Fernsehr existieren nicht. Wir machen alles per Copy&PasteHast Du die Doku zu Blockly gesehen? https://github.com/ioBroker/ioBroker.ja … ckly_de.md
Es gab auch eine gute Anleitung zu javascript, aber irgendwie ist die verschwunden
EDIT: Gefunden: http://www.iobroker.net/?page_id=5385&lang=de
Und auch ein Sonnestand-Script http://www.iobroker.net/?page_id=3693&lang=de `
Cool… Werde mal alles lesen und meine Skripte umschreiben. Werde noch viel zu tun haben...@pix:der Umzug der Homematic Programme und Skript nach ioBroker kann ja zum Glück "fliessend" erfolgen. Auf beiden Systemen kann man Programm/Skripte aktivieren und deaktivieren und so immer wieder zum alten und bewährten zurückkehren. Es empfiehlt sich also schrittweise umzustellen. Du kannst auch beide Varianten parallel laufen lassen und in ioBroker erstmal nur Log-Ausgaben machen, statt tatsächlich zu schalten. So kannst du deine Logik leicht überprüfen. `
Hi Pix… ja, das ist wirklich sehr gut. Ich werde erstmal die wichtigen Sachen umziehen und langsam meine CCU säubern.@pix:Mach dir ein paar Gedanken über die Struktur deiner Variablen und Zustände. `
Das ist wirklich sehr wichtig. Wenn man die richtige Struktur hat, dann ist es einfach Sachen zu automatisieren.@pix:Bau ein Skript, das nur dafür zuständig ist, die Helligkeit zu prüfen (zB bei jeder Aktualisierung des Sensors) und entsprechende Variablen zu schalten. z.B. die Variable TV_Beschattung (false/true). Dann kannst du an derer Stelle leichter auf die vom Skript erledigte Arbeit zurückgreifen (Verwendung in weiteren Skripten, VIS). Denke bei solchen Aufgaben (Schalten, abhängig von Zahlenwerten) auch an eine Hysterese. Wennd er Rollladen auch wieder hochfahren soll, wenn es dunkler wird, dann muss etwas gepuffert werden. Sonst fährt er im Helligkeitsgrenzbereich im rauf und runter (Wolke/keine Wolke). `
Ja… Das mit der TV-Beschattung habe ich noch nicht realisiert, hab mir aber folgendes gedacht: Sonne ist da Rollos runter. Nach 10 Minuten schaue ob die Sonne noch da ist. Ist noch da schaue in 10 Minuten wieder. Ist nicht mehr da überprüfe 5 Minuten lange jede Minute ob die Sonne da ist. Scheint die Sonne nicht, Rollo wieder hoch. Wenn doch dann warte wieder 10 Minuten usw... dazu nehme ich noch den Sonnenwinkel, denn nur wenn die Sonne auf bestimmten Positionen ist, werde ich geblendet.@pix:Aber um hier nicht vom Hölzchen aufs Stöckchen zukommen: Jede deiner Fragen hat ein Recht auf einen eigenen Thread. Deshalb starte ruhig Threads wie "Frage: Wie HM-Rollländen mit TFK/RHS steuern?" oder "Frage: Helligkeit / Beschattung für TV realisieren" `
Klar, aber mir geht es eigentlich nicht um das wie an sich, sondern eher um eure Erfahrungen mit ioBroker. Gibt es Tricks und Tipps… irgendwas was ich besonders beachten muss. Also eher so Allgemeines... und sobald ich mich etwas eingearbeitet habe, werde ich dann werde ich euch mit ein paar Adaptern unterstützen - Mein Rasenmäher möchte auch integriert werden!@pix:Was hast du für einen Fernsehen? Für manche gibt es hier Adapter. `
Ich habe ein Samsung UE55ES8090 (mit Evolution Kit). Hab auch schon den Adapter installiert, aber bisher konnte ich es nicht steuern… Aber wenn ich ehrlich bin habe ich so viele Adaptern zu testen, dass ich mich nicht wirklich tief mit diesem beschäftigt habe.Danke für die tollen Antworten. Langsam macht es klick - Ich werde mal ein paar Sachen testen. Ich habe ja schon ein JS geschrieben und mit createState() als State gespeichert, aber leider habe ich es nicht unter den Objekten gefunden und hab mir schon sorgen gemacht... bis ich hier im Forum gelesen habe, dass die ja manchmal gar nicht dort unter javascript auftauchen... oder wie auch immer... ich schaue nochmal ob ich die angelegten States im VIS anzeigen kann. Naja... kommt Zeit, kommt Rat!
Grüße,
ldittmar
-
Irgendjemand hat mal ein umfangreiches template für Scripte gemacht, ich nehme das für meine neuen Sachen. Musst du mal hier im Forum suchen.
Sinnig ist es außerdem die Scripte separat zu sichern. In ioBroker stehen sie in der Datenbank und sind quasi nicht einzeln wieder herzustellen. Im Script Editor gibt es einen Export Knopf. Alternativ per copy/paste wegsichern.
Gesendet von meinem ONEPLUS A3003 mit Tapatalk
-
Das Template war vom ruhr70 [emoji6]
Gesendet von iPhone mit Tapatalk Pro
-
Danke nochmal an alle für die Unterstützung…
Meint ihr das hier (Template)?
http://forum.iobroker.net/viewtopic.php ... 42&p=21772
Grüße,
ldittmar
-
Danke nochmal an alle für die Unterstützung…
Meint ihr das hier (Template)?
http://forum.iobroker.net/viewtopic.php ... 42&p=21772
Grüße,
ldittmar `
Ja genau.Ich hatte keinen Rechner, als ich das schrieb, sonst hätte ich das verlinkt (und ruhr70 erwähnt)
-
Danke alle für die Unterstützung… das einzige was ist bis jetzt total sch... finde, ist das ich nicht früher mit ioBroker angefangen habe. Das System ist zwar noch lange nicht perfekt, aber was für ein System ist das schon? Und außerdem ist der Code komplett frei und da kann jeder weiterentwickeln. Eine Frage hätte ich aber noch - wie würdet ihr sowas elegant lösen:
Ich habe kleine Kinder und diese lassen manchmal das Licht die ganze Nacht an... ist ja blöd, also ist es bei uns so, dass das Licht zwischen 20:00 und 06:00 Uhr nur 30 Minuten an bleibt. Ich habe es so gelöst...
on({id: 'hm-rpc.0.LEQXXXXXXX.1.STATE', change: "ne", ack: true, val: true}, function (obj) { // Das Licht bleibt zwischen 20:00 und 06:00 nur 30 Minuten an if (compareTime("20:00", "06:00", "between")) { setStateDelayed("hm-rpc.0.LEQXXXXXXX.1.STATE"/*Kind1_Licht_Aktor.STATE*/, false, 1800000, true); } }); schedule("0 20 * * *", function () { // Wenn das Licht um 20 Uhr an ist, mache nach 30 Minuten aus if (getState("hm-rpc.0.XXXXXXX.1.STATE").val === true) { setStateDelayed("hm-rpc.0.LEQXXXXXXX.1.STATE"/*Kind1_Licht_Aktor.STATE*/, false, 1800000, true); } });
Grüße,
ldittmar