Taganwahl, Mehrere Tage in einer Zeile anwählen

Guten Tag,

ich bin mal wieder auf ein Problem gestossen was ich nicht lösen kann.

Ich möchte für Hintergrundbeleuchtungen einen einfachen Schaltplan erstellen.
Die Zeiteingabe bekomme ich hin.
Nun möchte ich aber nicht jeden Tag eine einzelene Variabel anlegen unter einandern,
sondern es soll schon alle Tage in einer Reihe stehen.

Vielleicht kann mir dort einer behilflich sein.

Gruß

Dazu benötigst Du lediglich eine Integer Variable. Der Variable weist Du dann eine eigenes erstelltes Variablenprofil zu und ein Aktionskript. 0 ist dann z.B. Montag bis 7 Sonntag. Dann steht das auch in einer Zeile, weil es ja nur eine Variable ist.

Ja, das ist mir schon klar.
Aber dann kann ich ja nicht
„Montag,Dienstag,Mittwoch,Donnerstag,Freitag“ gleichzeitig anwählen.

Es funktioniert mit einem ‚Trick‘.
Der Wert der Variable sollte dabei immer außerhalb der Assoziationen liegen und sich nicht ändern.
Die eigentliche Darstellung erfolgt durch das überschreiben der Farben der Assoziationen.
Das funktioniert auch nicht in den Mobilen Apps.
Und du kannst nie direkt auf den ‚Wert‘ oder Inhalt der Variable zugreifen, sondern musst immer über die Assoziationen des Profils gehen.

Wenn doch, dann brauchst du dazu:

  • Pro Zeile eine eigene Variable und jeweils zur Variable ein eigenes Profil
  • Im Aktionsskript muss du dann das jeweilige Profil dieser Variable ermitteln.
  • Von dem angeklickten Wert ($_IPS[‚VALUE‘]) die dazugehörige Assoziation aus dem jeweiligen Profil auslesen.
  • Von Dieser je nach aktueller Farbe den neuen Farbwert setzen.
  • Und dann noch über alle Assoziationen deine aktiven Tage ermitteln und damit weiterzuarbeiten. Z.B. in anderen Scripten.

Einfach ist es den Wochenplan oder ein zyklisches Ereignis zu nutzen, allerdings von der Darstellung im WebFront nur ‚schön‘ wenn man ihn bearbeitet.

Michael

Sonntag wäre dann die 6 [emoji12]

Gesendet von meinem SM-G935F mit Tapatalk

Off Topic:

Das Wochenende haben wenn schon die Norddeutschen erfunden…
http://www.doktorx.com/mp3/werbung/Famila-Wochenende.mp3
Mehr als ein Tag… aber drei ??? Dass ist wohl nur bei den Hessen so :smiley: :stuck_out_tongue:

Michael

Alternative wäre noch eine Kombination aus zwei Variaben zu nehmen, ein String mit Profile HTMLBox und eine Integer die den Wert abspeichert. In die HTMLBox fügst Du ein Form mit Checkboxen ein und setzt die Checkboxen nebeneinander.

OH ha :smiley: :confused:
das hört sich alles gar nicht so einfach an.
So tief bin ich wohl noch nicht in Symcon eingestiegen, vielleicht kann mir einer etwas Code
bzw. ein Beispiel zeigen. Dann ich anhand dessen mir mit das etwas erklären.
Vielen dank schon mal

Das Thema ist schon sehr alt und ich hoffe immer noch das sich da noch was tut.
Ich verstehe auch nicht warum sich so sehr dagegen, schon seit Jahren, gesträubt wird.

https://www.symcon.de/forum/threads/19797-Durch-Bitmaske-eine-mehrfache-Elementauswahl-erm%C3%B6glichen

https://www.symcon.de/forum/threads/26107-Variable-Buttonbelegung-je-nach-ausgew%C3%A4hlter-Liste

Die Variante mit der „Profilmanipulation“ ist mir viel zu aufwendig und wird bei vielen Variablen irgendwann unüberschaubar.

Viele Grüße
René

Ich habe nicht ganz verstanden, was jetzt hier der Plan ist. Wenn du einen Plan erstellen möchtest und dieser nur an bestimmten Wochentagen angewandt werden soll, dann kannst du dies mit zyklischen Ereignissen realisieren. Wenn du diese auf „Wöchentlich“ stellst, kann du angeben, an welchen Tagen die Ereignisse ausgeführt werden sollen. Siehe hier: Zyklisch — IP-Symcon :: Automatisierungssoftware

Inhaltlich geht es in diesem Thread allerdings eher darum, wie ich eine Auswahl von Tagen geeignet kodieren und darstellen kann. Hier würde ich eine einzelne Integer Variable erstellen und analog zu der Codierung in zyklischem Event eine Summe bilden: IPS_SetEventCyclic — IP-Symcon :: Automatisierungssoftware Für die Variable müsste man dann noch ein Profil erstellen. Das würde ich automatisiert per Skript machen, da es mit 2^7 = 126 recht viele mögliche Assoziationen gibt.

Hallo Dr. Nils,

ich hatte früher schon mal etwas dazu geschrieben wie ich es mir vorstellen würde.

https://www.symcon.de/forum/threads/14641-Variablen-Profil-Bitweise-Assotiation-von-Integer-Variablen

Jeder Assoziationsdarstellung wird ein Bit zugewiesen vor allem können dann mehrere Assoziation gleichzeitig aktiv sein.

Ich weiß es gibt hierfür einen Workaround indem man die Profile manipuliert.
Das hat nach meiner Ansicht aber einige Nachteile

  • nicht trivial und mit viel Programmieraufwand verbunden
  • nur eine Assoziation wird „hervorgehoben/aktiv“ dargestellt
  • für jede Variable ein eigens Profil nötig

Ist hier in Zukunft etwas geplant?

René

Hallo Rene , Hallo Herr Dr. Niels,

also ich sehe es wie Rene , es muss ein großer Workaround geschaffen werden um eine kleine Funktion zu erzeugen.

In meiner Idee soll es so funktionieren das ich Montag, Dienstag und Mittwoch gleichzeitig auswählen kann das.
Das ergibt dann eine einen bestimmten Wert.
Diesen schicke ich mir an meine Wago SPS und kann dann das Bitmuster auslesen und somit meinen Schaltplan erstellen.
So kann ich für mich einfach und unkompliziert einen Schaltplan für die verschiedensten Sachen erstellen.

Ich hoffe man versteht was ich meine. :smiley:

Zu dem Splitten bin ich einer Meinung mit paresy, hier sollte man das ganze einfach auf mehrere Boolean-Variablen aufteilen. Sicher mag es den ein oder anderen Power-User geben, der sich gerne Variablen spart. In den meisten Fällen führt das aber eher zu Verwirrung.

Wenn du für die Steuerung via Wago SPS das so benutzen möchtest, dann weiß ich nicht ob das mit IP-Symcon die optimale Lösung ist, da wir in unseren zyklischen Ereignissen oder Wochenplänen dies wunderbar darstellen können. Vielleicht kann man IP-Symcon hier über die Ereignisse benutzen und sich den ganzen Umrechenkram sparen?

Leider werden die Argumente nach mehreren Jahren weder besser noch einleuchtender.
Wie soll es mit vielen Bool-Variablen besser werden?

Und was ist an dieser Variante verwirrend bzw. kompliziert?
Eine Integer Variable als Bit darstellen ist kompliziert und verwirrend, ist nicht wirklich ernst gemeint, ist ja kein Vergleich was man sonst für Programmierkenntnisse hier mitbringen muss.

Und bei „IPS_SetEventCyclic“ benutzt ihr selbst genau diese Technik.
Na hoffentlich versteht das hier jemand aber ich denke die Funktion nutzt keiner :eek:

Ich habe mal ein Beispiel angehangen, welches den Workaround über die Profile nutzt.
Bitte nicht auf den Wochentagen rumhaken, ich weiß da sind Events besser, soll auch nur ein Funktionsbeispiel sein
–> Ich hatte da ehr an Rollläden, Heizung usw. gedacht


Wie soll man das mit einzelnen Bool-Variablen so darstellen können?

Ich muss ehrlich sagen, ich habe es nie weiter verwendet. Das ist mit zu kompliziert und Unmengen an überflüssigen Profilen müssen anlegt werden die eigentlich den gleich Inhalt haben.

Viele Grüße
René

Wenn du für die Steuerung via Wago SPS das so benutzen möchtest, dann weiß ich nicht ob das mit IP-Symcon die optimale Lösung ist, da wir in unseren zyklischen Ereignissen oder Wochenplänen dies wunderbar darstellen können. Vielleicht kann man IP-Symcon hier über die Ereignisse benutzen und sich den ganzen Umrechenkram sparen?

Natürlich kann man es auch darüber Lösen. Aber möchte auch gerne noch einen anderen guten Weg suchen.
Aber so wie es aussieht bietet das Symcon nicht, nur mit großem Workaround.
Das Umrechnen ist in Wago kein Problem ein Baustein, Variable dran geschrieben und schon habe ich meine Tage aufgelöst.
In der Angedachten Lösung sehe ich auf einem Blick, welche Tage aktiviert sind und welche nicht.
Wie in Renes Beispiel wäre super. :wink:

Es gibt noch einen Widerspruch in diesem Argument.

Es wird immer explizit gesagt IPS nicht für kritische Anwendungen einzusetzen.
Hier ist doch eine SPS sehr sinnvoll … genau so mache ich es auch.
Grundlegende und kritische Dinge wie Heizung, Licht , Solaranlage usw laufen alle auf SPSen.

Hier wird aber explizit die IPS Variante vorgeschlagen. Sehr verwirrend.

VG René

Guten Morgen,

also wie es aussieht gibt es dort nix einfacheres alles den Workaround oder pro Zeile eine Variable?

Also in der Industrie Programmierung arbeiten wir vielen mit Auflösung von Bytes oder Wörtern.
Es erspart uns einiges an Variablen und bei Vernünftiger Dokumentation ist das auch alles kein Problem.

Aber trotz alle würde ich mich freuen wenn mir dann einer den Workaround genauer erklären kann.
Stehe dort noch ein wenig auf dem Schlauch :banghead: .

Gruß und ein schönen Tag und schönes Wochenende :loveips: