NEWS
Programmierphilosophie - wie geh ich's an?
-
Hallo,
da ich mich jetzt immer mehr mit Javascript beschäftige und mit Hilfe hier im Forum (danke an Alle) auch hin und wieder verstehe was ich mache :roll: stellt sich mir jetzt eine Frage, wie ich das Ganze sinnvoll angehe.
Bis jetzt verwende ich großteils ccu.io mit ScriptGUI und dort habe ich es so gelöst, dass ich zum Beispiel ein Programm für jeden Rolladen im Haus, wobei jedes Programm auf verschieden Sensoren/Variable auslöst.
Also:
Rolladen Schlafzimmer: Tagwache + Tag = Rolladen auf
Licht Schlafzimmer: Tagwache + !Tag = Licht ein
Jetzt stellt sich mir nach einigem Grübeln heute Nacht die Frage, ob es Anders "besser" wäre, also dass ich in einem Programm auf EINEN Sensor/Variable reagiere und mehrere Aktionen ausführe ala:
Tagwache: Tag: Rolladen auf, !Tag: Licht ein
Mich würde interessieren wie Ihr das seht, bzw Ihr die Programmierung gelöst hat und hoffe, dass ich mein Problem gut beschrieben habe
LG
-
Hallo rascal,
ich habe derzeit 108 Skripte in drei javascript-Instanzen.
Instanz 0 für die wichtigen Funktionen der Steuerung (Alarmanlage, Rollläden, Licht,…)
Instanz 1 für Komfortfunktionen (Radio, TV, Fahrplan, Sprit, Wetter, ...)
Instanz 2 für neue Skripts und zum Testen
Grundsätzlich nutze ich pro Gerät ein Skript. Manchmal fasse ich mehrere Geräte raumweise zusammen.
-
ein Skript für alle Fensterzustände. Jeder RHS/TFK-Status wird bei Änderung in eine Variable geschrieben. Diese Variable wird in VIS und anderen Skripten weiterverwendet. So kann ich den Homematic Sensor leicht ersetzen, oder in jedem Skript nach dessen ID zu suchen.
-
pro Alarm ein Skript (Feuchtesensor Küche, Luftfeuchtigkeit Schlafzimmer, Fenster im WC seit 10min geöffnet, …)
-
ein Skript für alle Zustände der Geräte an Zwischensteckern (Ventilator, TV, Radio) aus dem gleichen Grund
-
ein Skript für alle Strommmessgeräte
-
ein Skript alle Funktionen der Rollläden pro Raum (also Beschattungsautomatik, Astrosteuerung, Zeitsteuerung, Anbindung an Wandtaster)
-
ein Skript für Nachtruhe EIN, eines für Nachtruhe AUS.
-
ein Skript für Anwesenheit EIN, eines für Anwesenheit AUS.
usw.
Es macht (für mich) keinen Sinn, alles was zum Beispiel mit Nachtruhe zu tun hat, in ein Skript zu schreiben. Es gibt zu viele Überschneidungen mit anderen Zuständen (Anwesenheit, Alarmanlage, …).
Hier mal ein Ausschnitt:
Gruß,
Pix
-
-
Hey Pix,
danke für dein Antwort, ich mag deine Herangehensweise.
Nur eine Frage, warum 3 javascript Instanzen? Nur der Übersicht wegen?
LG
Martin
2534_neue_textdatei.txt -
Hallo Martin,
die Testinstanz 2 kann schon mal abstürzen, wenn ich in einem neuen Skript einen Fehler habe. Davon bleiben die anderen Instanzen unberührt.
Ebenso kann der Anbieter einer Webseite deren Daten ich nutze (zB Fahrplan oder TV Programm), die Struktur der Webseite ändern oder sie abschalten. Dann stürzt mein Skript in der Regel auch ab. Die wichtige Instanz 0 bleibt davon aber wieder verschont.
Gruß
Pix
Gesendet mit Tapatalk
-
Pix! Genau für dich währe neue Möglichkeit mit Gruppierung prima.
Was geht da nicht genau? Ich kann Fehler nicht reproduzieren. Und ich weiß,
dass ich die Skript-Ausführung nicht angefasst habe.
Probier noch mal. Ich habe da was mit globale Skripte zurückgedreht.
48_2016-02-27_13_29_10-program_manager.png -
@pix:Hallo Martin,
die Testinstanz 2 kann schon mal abstürzen, wenn ich in einem neuen Skript einen Fehler habe. Davon bleiben die anderen Instanzen unberührt.
Ebenso kann der Anbieter einer Webseite deren Daten ich nutze (zB Fahrplan oder TV Programm), die Struktur der Webseite ändern oder sie abschalten. Dann stürzt mein Skript in der Regel auch ab. Die wichtige Instanz 0 bleibt davon aber wieder verschont.
Gruß
Pix
Gesendet mit Tapatalk `
Ich habe das Problem in neuem Javascript gefunden:2.0.2 (2016-02-20)
-
(bluefox) fix start of scripts on adapter start
-
(bluefox) add new scope variable "name" to print name of script:
log(name) => script.js.common.ScriptName
-
-
Hallo Bluefox,
hatte ja hier von Problemen berichtet: http://forum.iobroker.de/viewtopic.php? … 10&p=20277
Jetzt habe ich admin auf 0.8.1 und Javascript auf 2.0.2 upgedatet. Die Funktion ist nicht beeinträchtigt, aber ich sehe die neue Maske nicht. Alles sieht aus, wie immer (trotz Neustart, dann extra Neustart der Instanzen und Admin und Cache gelöscht).
Gruß
Pix
18278_kino.txt -
@pix:Hallo Bluefox,
hatte ja hier von Problemen berichtet: http://forum.iobroker.de/viewtopic.php? … 10&p=20277
Jetzt habe ich admin auf 0.8.1 und Javascript auf 2.0.2 upgedatet. Die Funktion ist nicht beeinträchtigt, aber ich sehe die neue Maske nicht. Alles sieht aus, wie immer (trotz Neustart, dann extra Neustart der Instanzen und Admin und Cache gelöscht).
Gruß
Pix `
iobroker upload javascript -
iobroker upload javascript ` Das war's! Danke.
Ich bringe dann morgen etwas Ordnung in meine Skripte :lol: :lol: :lol:
-
Eine Riesenerleichterung!
Danke! :lol:
Gruß
Pix