Garten Bewässerung, Ventile zeitgesteuert umschalten, PHP Script Fehler

Hallo zusammen,

ich möchte meine Garten Bewässerung automatisieren und habe deshalb eine Ventilbox mit 4 Ventilen welche ich jeweils 1 Stunde aktivieren will und dann das nächste und so weiter.

Zusätzlich habe ich einen Schalter/Variable um den Prozess zu aktivieren/deaktivieren.
Leider funktioniert es nicht und ich weiß nicht was ich falsch mache.

48823 = Prozess aktivieren/deaktiveren, Variable Boolian

<?php

// Konfiguration der Variablen-IDs
$hauptschalterID = 48823; // ID des Hauptschalters
$ausgaenge = [
    56798, // Ausgang 1
    11169, // Ausgang 2
    58029, // Ausgang 3
    40718  // Ausgang 4
];

// Prüfen ob Hauptschalter aktiviert ist
if (!GetValueBoolean($hauptschalterID)) {
    // Hauptschalter ist AUS → alle Ausgänge ausschalten und Timer stoppen
    foreach ($ausgaenge as $id) {
        SetValueBoolean($id, false);
    }
    IPS_SetScriptTimer($_IPS['SELF'], 0);
    IPS_LogMessage("Schaltsteuerung", "Hauptschalter ist aus. Alle Ausgänge wurden deaktiviert.");
    return;
}

// Lade aktuellen Schritt aus einer Script-eigenen Property oder Variable
$stepID = IPS_GetObjectIDByIdent("SchaltStep", $_IPS['SELF']);
$step = GetValueInteger($stepID);

// Wenn der aktuelle Schritt > 0 ist, schalte den vorherigen Ausgang ab
if ($step > 0) {
    SetValueBoolean($ausgaenge[$step - 1], false);
}

// Wenn Schritt < 4, aktiviere nächsten Ausgang und erhöhe Schritt
if ($step < 4) {
    SetValueBoolean($ausgaenge[$step], true);
    SetValueInteger($stepID, $step + 1);
    IPS_SetScriptTimer($_IPS['SELF'], 3); // Timer erneut in 1h ausführen
} else {
    // Alle Schritte durchlaufen → zurücksetzen
    SetValueInteger($stepID, 0);
    IPS_SetScriptTimer($_IPS['SELF'], 0); // Timer stoppen
    IPS_LogMessage("Schaltsteuerung", "Alle Ausgänge wurden nacheinander geschaltet.");
}



Wäre super wenn mir hier jemand helfen könnte, vielen Dank Thomas

Damit schaltet man keine Variablen.
Schalten geht mit RequestAction.
Außerdem sind von deinen 4 ID im Array nur das erste eine Variable und der Rest sind Instanzen.
Michael

Vielen Dank für die schnelle Antwort, ich bin leider nicht so der Profi. Wäre es so denn richtig?

<?php

// Konfiguration der Variablen-IDs
$hauptschalterID = 48823; // ID des Hauptschalters
$ausgaenge = [
    56798, // Ausgang 1
    18417, // Ausgang 2
    46413, // Ausgang 3
    59650  // Ausgang 4
];

// Prüfen ob Hauptschalter aktiviert ist
if (!GetValueBoolean($hauptschalterID)) {
    // Hauptschalter ist AUS → alle Ausgänge ausschalten und Timer stoppen
    foreach ($ausgaenge as $id) {
        RequestAction($id, false);
    }
    IPS_SetScriptTimer($_IPS['SELF'], 0);
    IPS_LogMessage("Schaltsteuerung", "Hauptschalter ist aus. Alle Ausgänge wurden deaktiviert.");
    return;
}

// Lade aktuellen Schritt aus einer Script-eigenen Property oder Variable
$stepID = IPS_GetObjectIDByIdent("SchaltStep", $_IPS['SELF']);
$step = GetValueInteger($stepID);

// Wenn der aktuelle Schritt > 0 ist, schalte den vorherigen Ausgang ab
if ($step > 0) {
    RequestAction($ausgaenge[$step - 1], false);
}

// Wenn Schritt < 4, aktiviere nächsten Ausgang und erhöhe Schri

Vielen Dank

1 „Gefällt mir“

Das Skript selber habe ich nicht kontrolliert.
Sondern nur aufgrund der Fehlermeldungen geantwortet.
Michael

Hallo zusammen,

habe mir ein Modul für die Gartenbewässerung erstellt…
Die macht genau das, was du willst und ist frei einzurichten.

AndreasWalder/IPSBewaesserung

Vielleicht kann hier wer was damit anfangen.
Funktionen sind in der Beschreibung ersichtlich.

Lg Andi

Danke, ich wollte gerade mal testen.

grafik

Beim zweiten Versuch konnte ich die IPSBewaesserung Instanz anlegen, eventuell machst du etwas in falscher Reihenfolge.

Danke Ralf,

ja, ich bin nicht der super Modul Ersteller.

— Profile müssen existieren, bevor sie verwendet werden — → gefixt

Hast du das Modul mal ausprobiert?

Du musst noch einen „Auto Timer“ anlegen, habe es in der Beschreibung aktualisiert :slight_smile:

Danke!

Ich habe es bisher nur installiert, um zu schauen was es macht.

Das Modul aktualisiert jede Sekunde Variablen, z.B. „Pumpe Status“ und 5 weitere.

Ich habe 4 Stränge mt eigenen Skripten, Verdunstungsberechnung und alles im IPSview.

Hast du dein Skript wo veröffentlicht? Würde mich interessieren, v.a. die Verdunstungsberechnung. Danke!

Das ist nicht von mir, du findest einiges im Forum, das hier war mal meine Grundlage

1 „Gefällt mir“