Neuer User mit Verständnisproblemen

Hallo Leute, bin neu hier. Beschäftige mich jetzt seit 2 Tagen mit der Basis Version. Ich komme mit der Art der Online-Dokumentation gar nicht klar, obwohl ich Programmiererfahrung habe (allerdings nicht in PHP).
Ich hab drauf vertraut, dass es wie in der Einführung angegeben „auch für Einsteiger leicht zu erfassen“ ist. Ich scheitere aber schon an den grundlegenden Dingen.
Habe den 868 LED Stripe Dimmer und habe es sogar geschafft, per Script diesem einige seiner Funktionen zu entlocken, Farben dimmen etc.
Jetzt komme ich nicht weiter, weil ich 2 Dinge nicht verstehe:

  1. So lächerlich es für Euch klingen mag, aber wie kann man denn einen laufenden Script anhalten???
  2. Wie kann ich mehrere Befehle aufeinander folgen lassen, welche jeweils eine gewisse Zeit benötigen um ausgeführt zu werden. Beispiel: Ich lasse eine LED von voller Leuchtstärke herunter dimmen auf null, und das innerhalb von 5 Sekunden (mit PJ_DimRGB Funktion des 868 controllers). Das funktioniert – ist ja auch nicht so schwer. Doch anschließend möchte ich genau umgekehrt von null wieder herauf dimmen bis zur vollen Leuchtkraft. Das alleine klappt ebenfalls. Doch beide Befehle hintereinander in einem einzigen Script führen dazu, dass der zweite Befehl die Ausführung des ersten nicht abwartet, und dementsprechend nur die Auswirkungen des 2. Bef. Sichtbar sind = LED geht langsam an. Ich möchte aber in einer Endlosschleife ab- udn auf dimmen.
    Jetzt hab ich schon gesehen, dass die Befehle bei abgeschlossener Ausführung „True“ zurück geben, doch wie man das abfragt und das Ergebnis für eine Warteschleife oder so etwas im Script verwenden kann, raff ich nicht, weil ich nirgends Erklärungen hierzu finde.
    Die Erklärungen in der IPS Hilfe zu diesen ganzen Dingen sind super knapp und ganz offensichtlich von Experten für Experten gemacht. Es mangelt an verständlichen, einfachen Beispielen.
    Das frustriert.:frowning:
    Ich vermisse eine Schritt-für Schritt Einführung in den Aufbau von Scripten so dass man auch PHP Stück für Stück lernen kann.
    Wie fang ich am besten an? Wer kann mir Tipps geben, wie man den richtigen Einstieg findet? Gibt’s Bücher?
    Danke schon mal im Voraus!!

Hallo HullyBully;
HERZLICH WILLKOMMEN

Zu deinem Frust: hatten/haben wir wohl alle. Das legt sich.

Das mit den Scripten ist ja auch PHP Programmiersprache lernen.

Stell’ deine Scripte mal hier ein, es gibt hier soviele PHP-Könner, die dir helfen können, ich bin da eher ein Laie. Bin aber sicher, dass dir hier Tips gegeben werden.

Wenn du schon Licht in die LED’s gebracht hast, dann hast du schon Instanzen und Registervariablen verbastelt. Den Rest schaffst du auch.

Gruß Helmut

Servus hullybully

Du suchst vermutlich nach IPS_SLEEP()
Damit kannst du in der Scriptabarbeitung eine „Pause“ realisieren.

Schön ist das aber nicht.

Besser wäre es mit einer Art Schrittkettensteuerung zu machen.
d.h. das Script ist immer nur sehr kurz zum absetzen des Befehls aktiv und wird dann sofort wieder beendet. Mittels Timer startet es sich dann automatisch wieder selbst und führt den nächsten Befehl aus.

Steiner hat das hier mal am Beispiel einer Rolladensteuerung gezeigt.
schau mal da:

viel Erfolg
bb

Ich würde auch sagen, Stelle mal deine bisherigen erfolge rein dann bekommst du bestimmt geholfen, die leute hier schlagen sich fast drum zu helfen :D.

Ich habe jetzt zwar keine 868 einheiten aber den ablauf zu gestallten ist eigentlich Peanuts.

2 varianten würden mir da gerade einfallen

1.Wie schon oben genant Ips_sleep($zeit); oder
2.zwei Skripte die du dann über ein ereignis auslöst das du im jeweils anderm skript definierst.

Vorteil variante 1 ist die einfachste variante
Nachteil variante 1 skript ist die ganze zeit am laufen

Variante 2 da hast du zeitlich kein begrenzung ist aber schwerer von der Programierung

Ein Beispiel für das, was du mit deinen LEDs vor hast, findest du hier.
Einfach im Array ‚Commands‘ deine Werte für die Farben in R, G und B eingeben, dann die Fadezeit und wenn du möchtest, dahinter noch eine Pause. Jede Zeile entspricht einem Befehl/einer Farbe. Du kannst so viel Zeilen eintragen, wie du möchtest.

Gruß
Smudo

Danke für die schnellen Reaktionen!
Hier ist also mein kleiner script, der eigentlich nur daraus besteht, 868 LED stripe controller spezifische Funktionen abzurufen:

1 PJ_RunProgram(23672 /[RGBW-868 (Stripe)]/, 0);
2 PJ_DimRGBW(23672 /[RGBW-868 (Stripe)]/, 255, 2, 0, 0, 0, 0, 0, 0);
3 IPS_Sleep(2000);
4 PJ_DimRGBW(23672 /[RGBW-868 (Stripe)]/, 0, 2, 0, 0, 0, 0, 0, 0);

Die 1. Zeile setzt alle Farben auf null, also alles aus.
Die 2. Zeile setzt rot auf volle Helligkeit, also 255, und zwar innerhalb von 2 Sekunden.
Alles andere bleibt aus. Diese Funktion hat zur Folge, dass innerhalb von 2 Sekunden von dunkel auf volle Helligkeit (rot) herauf gedimmt wird.

Die 3. Zeile macht 2Sek. Pause um den Vorgang, der in der 2. Zeile ausgelöst wurde, abzuwarten.

Die 4. Zeile dimmt genau umgekehrt, nämlich vom aktuellen Helligkeitswert auf null herunter, wieder innerhalb von 2 Sek.

Das mit der 2 Sekunden Pause zwischen den beiden Dimm Vorgängen funktioniert zwar in diesem Fall, ist aber keine gute Programmierung!!
Alleine schon nicht weil ich gar nicht weiß oder nachprüfen kann, ob der Dimmvorgang wirklich ganz genau 2 Sek. dauert.
Das sollte mich auch gar nicht interessieren, denn sauber programmiert wäre es nur so, dass der 4. ProgrammSchritt, also das Zurückdimmen, erst dann beginnt, wenn von der Funktion PJ_DimRGBW in Zeile 2 (das Heraufdimmen) die Rückmeldung kommt „bin fertig“.
Die Doku sagt aus, dass die Funktion genau dies tut.
Zitat:
„Rückgabewerte: Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis TRUE, andernfalls FALSE“.
Das ist genau was ich brauche!
Was mich nun brennend interessiert ist, wie ich diesen Rückgabewert abfragen kann und dann eine Warteschleife einbauen kann, die erst dann verlassen wird, wenn der Rückgabewert von PJ_DimRGBW „True“ ist.
Das wäre dann eine saubere Programmierung, denn dann genügt es, die Dauer des Dimmens (jeweils 2. Parameter von PJ_DimRGB) beliebig zu ändern, damit das Programm funktioniert. Jetzt muss ich immer auch die Wartezeit verändern. Je größer die zeitspannen, desto ungenauer wird es und kann sogar wegen des Anhaltens des Scripts zu Fehlermeldungen führen.
Dies ist definitiv keine gute Lösung.
Ich denke, das kann nicht so schwer sein, doch hab ich nirgends gefunden, wie ich den Rückgabewert abfragen kann. Das ganze Script soll dann noch eine Endlosschleife werden, so dass einmal gestartet, die rote LED ständig hell und dunkel wird, sprich im 2 bzw. 4 Sek. Takt.
Wenn Ihr mir dabei helfen könntet, wäre das sehr schön.
Schon mal danke und frohe Weihnachten!

Das ganze Script soll dann noch eine Endlosschleife werden, so dass einmal gestartet

Das sollte man in PHP tunlichst vermeiden, ansonsten hast Du ein Problem. In PHP wird der Code von oben nach unten abgearbeitet. Für dein Vorhaben kannst Du Scripttimer setzen die dir abwechselnd das gewünschte aufrufen.

Ähhm, siehe oben. Ein Beitrag über deinem letzten, hullybully. ^^

Danke Smundo, das sieht sehr interessant aus und funktioniert gut.
Ich werde wohl einige Zeit brauchen, um den code zu verstehen …

Da es Funktionen sind, die man immer mal gebrauchen kann, habe ich jede Zeile mit einem Kommentar versehen. Vielleicht hilft es dir ja ein wenig, da durch zu finden.

Gruß
Smudo

Hab mich nicht getraut zu fragen…
Super Klasse - vielen Dank dafür!!!