IPSWatering - eine Bewässerungssteuerung

Hallo,

wie läuft das dann, wenn die AUTOMATIK z.B. für jeden Tag programmiert wird und ich dann 4 Tage später, bevor die automatische Bewässerung startet, einen manuellen Bewässerungsvorgang starte. Schmeisst es mich dann aus der Automatik raus oder wird der automatische Bewässerungsvorgang trotzdem gestartet???

Gruß Proxima

So wie ich das getestet habe führt ein manuelles Bewässern immer dazu das die Automatik neu aufgesetzt wird.

Also jeder 3ter Tag war eingestellt. Wir sind jetzt am 2ten Tag und morgen müsste es wässern. Du schaltest Manuell und als Konsequenz wird die Automatik nicht morgen starten sondern in 3 Tagen :frowning:

Ich habe schon mal angefangen mir den Code anzuschauen um zu verhindern das manuelle Eingriffe die Automatik neu starten (entkoppeln) aber ich muss zugeben ich blicke noch nicht durch (kann auch eine Zeitlang dauern :frowning: )

Hallo,

habe auch vor, dieses hervorragende Script produktiv einzusetzen, jedoch hätte ich noch ein paar Wünsche die dieses wundervolle Script erheblich aufwerten würden:

  • manuelle und automtische Bewässerungen unabhängig voneinander, also ein manuelles Bewässern beeinflusst die Automatik NICHT

  • wegen Ausfallsicherheit und Vermeidung von Hochwasser, die eingestellte Bewässerungszeit beim Start mit an den Aktor senden (glaube bei Homematic mittels ONTIME möglich)

  • es kann nur 1x pro Tag bewässert werden, möchte aber gerne mehrmals pro Tag bewässern mit unterschiedlicher Bewässerungsdauer

  • für Aussenbereiche wäre es wichtig nur zu bewässern, wenn ein vorhandener Windsensor einen Wert kleiner eines programmierbaren Werts hat (OK zur Not wäre dies auch mittels Callback möglich, aber wesentlich schöner und komfortabler übers WebFront)

  • Die vollautomatische und intelligente Bewässerung mittels „Evapotranspiration“

Da ich leider zu dämlich bin, dies alles umzusetzen und auch schon erlebt habe, wie in diesem Forum Berge versetzt wurden, bin ich davon überzeugt, dass sich jemand (oder mehrere) findet (finden), der (die) oben genannte Wünsche umsetzen kann (können). Ich bin davon überzeugt, dass ich nicht der Einzige bin, der sich die Erweiterungen wünscht.

Gruß Proxima

Ich kann mich diesen Wünschen nur anschließen, die Liste ist ziemlich komplett und entspricht auch meinen Erfahrungen als Nutzer

Hallo,

Deine vorgeschlagenen Erweiterungen sind durchaus alle sinnvoll, nur mir fehlt derzeit die Zeit hier größere Änderungen zu machen.
Zumal hier teilweise größere Eingriffe nötig sind (zB. es gibt zur Zeit keine Unterscheidung zwischen manueller und autom. Bewässerung).

Einzig die ONTIME bei Homematic sollte sich über die Callback Methoden sehr einfach lösen lassen, da werde ich wahrscheinlich in den nächsten Wochen ein Code Stück posten, falls sich sonst niemand findet …

Hallo,

@ Brownson
es würde mich (und sicher auch viele andere) trotzdem riesig freuen, wenn Du doch noch Zeit finden würdest, die Änderungen vorzunehmen.

Die Software, die du hier kostenlos anbietest, ist einfach unschlagbar gut. Mach auf jeden Fall weiter so!!!

Gruß Proxima

Hallo,

auch ich nutze diese Software und bin immer wieder begeistert!

Ich freue mich, wie sicher viele andere User, das ich von Brownsen und Co profitieren kann. Das macht Ip-symcon erst wirklich interessant!

Übrigens, denkt doch mal über einen Donate Button nach, ich würde diesen bei so guten Scripts sicher nicht ignorieren…

Hallo, Danke an Brownson,

für das tolle Script … meine nette Gardena Anlage mag dein Script einfach.

Ich wünde dich auch bitten wenn du Zeit und natürlich Lust hast dein Script noch nach den obrigen Wünschen zu verfeinern.

Das Teil ist einfach gut.

Dann bis bald und

CU
My

Hallo,

im Wiki hat sich anscheinend ein kleiner (unbedeutender) Fehler eingeschlichen.

Die Installation gliedert sich wie für alle IPSLibrary Module in 3 Teile:
Download:
IPSUtils_Include („IPSModuleManager.class.php“, „IPSLibrary::install::IPSModuleManager“);
$moduleManager = new IPSModuleManager(‚IPSWatering‘, ‚https://raw.github.com/brownson/IPSLibrary/Development/‘);
$moduleManager->LoadModule();
Konfiguration:
Im File IPSWatering_Configuration.inc.php muß neben dem Wohnort nur noch Längen und Breitengrad eingetragen werden.

Für die Configuration ist kein Wohnort notwendig, ich denke, dass das ein copy/paste fehler aus der IPS twilight ist.

Danke, hatte mir ja eingebildet das schon ausgebessert zu haben…

Hi Andreas,

ich hab jetzt in /app/Core/IPScomponent gesucht, aber nirgends den 1WireF29 Teil gefunden.
Ehrlich gesagt blick ich mich da noch ned so recht durch.

Ich hab den gleichen DS2408 Switch, wie auch schon Robertg angesprochen hat.

For switching it On:
TMEX_F29_SetPin(35772 /[System\1-Wire\8 IO Board #1]/, 0, False); // Object_ID, pinnumber, value

For switching it Off:
TMEX_F29_SetPin(35772 /[System\1-Wire\8 IO Board #1]/, 0, True);
Notice that for switching it Off the value is True (can’t help it). an you help me with the code for the custom action if using the 1-Wire?

Könntest du mir da bitte ein wenig auf die Sprünge helfen?
Danke.

Hallo,

Die Komponente ist unter dem Pfad „scripts\IPSLibrary\app\core\IPSComponent\IPSComponentSwitch“ und hat den Namen „IPSComponentSwitch_1WireD2408.class.php“.

In der Konfiguration brauchst wie bei den anderen Komponenten nur den Klassennamen und die Konstruktor Parameter anzugeben. Im Falle der 1Wire Komponente ist das die InstanceID und die Channel Nummer.

zB: „IPSComponentSwitch_1WireD2408,12345,0“

Eventuell benötigst Du noch ein Update von IPSComponent von meinen Developer Repository, hatte eine Änderung noch nicht commitet.
Generell ist auch noch anzumerken, dass ich keine Möglichkeit zum Testen dieser Klassen habe, es könnte sich also da und dort noch ein Fehler verstecken…

Fantastisch :smiley:
Der Update von IPScomponent hat noch gefehlt, drum hatte ich den DS2408 nicht drinnen.
Besten Dank.

Eine Frage hätte ich noch…wenn die Bewässerung aktiv ist, werden wegen der Timersache sekündlich Messages ins normale IPS log geschrieben.
Ist das ok so?

Hi,

da ich gerade Hardwaretechnisch meine Gartenbewässerung fertiggestellt habe :slight_smile: ist nun die Ansteuerung des Ganzen dran.

Sehr begeistert habe ich das Projekt verfolgt und stoße leider gerade an meine Grenzen :confused:

Die Unterschiedlichen Magnetventile werden über ein 4 Relais eines LCN-Buses gesteuert.

Insgesamt besitze ich 3 Wasserkreisläufe die mit jeweils einem Magnetventil eingeschaltet werden UND noch einmal vorgeschaltet einem Magnetventil welches die Hauptversorgung einschaltet.

Das bedeutet für jeden der 3 Wasserkreise müssen 2 Relais ein bzw. ausgeschaltet werden.

Der Befehl zum einschalten eines Wasserkreises lautet z.B. (Relais 5 ist das Hauptventil, welches für jeden Kreislauf zusätzlich eingeschaltet werden muss):

LCN_SwitchRelay(38580 /[Bewässerung\Relais 5]/,true);
LCN_SwitchRelay(22845 /[Bewässerung\Relais 6]/,true);

Wie es mir scheint fehlen mir u.a. die entsprechendem IPSComponentSwitch Komponenten für LCN?
Zuzüglich muss ich ja das ein- und ausschalten zweier Relais gleichzeitig realisieren. D.h. u.U. brauche ich da quasi eine eigene IPSComponentSwitch Datei die die Steuerung beider Relais beinhaltet ???

Wie könnte ich vorgehen?

Über ein paar Tipps wäre ich sehr sehr dankbar :slight_smile:

Gruß

Peter

Hallo Peter,

Hab mal auf die Schnelle eine Version von IPSComponentSwitch_LCN implementiert (liegt auf meinen Development Repository, konnte es aber natürlich noch nicht in der Praxis testen …):


	IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
	$moduleManager = new IPSModuleManager('IPSComponent', 'https://raw.github.com/brownson/IPSLibrary/Development');
	$moduleManager->UpdateModule();

Ansteuerung über die normale IPSWatering Konfiguration:


   c_Property_Component      =>   'IPSComponentSwitch_LCN,22845',

Das Ein- bzw. Ausschalten der Hauptleitung würde ich über die Callback Methoden (siehe IPSWatering_Custom.inc.php) realisieren, in Deinem Fall könnte das so aussehen:


	// ----------------------------------------------------------------------------------------------------------------------------
	//
	// Function will be called before a Watering Cycle is switched (means activated and also deactivated)
	//
	// Watering of current Cycle can be prevented by returning Value false.
	//
	// Parameters:
	//   $CycleId    - ID of current Watering Device (means Program.IPSWatering.WaterCircles.MyCurrentCycle)
	//   $Value      - true for "Switch On", false for "Switch Off"
	//   $Mode       - Mode for Activation, possible Values: "Automatik Start" or "Manueller Start"
	//
	// ----------------------------------------------------------------------------------------------------------------------------

	function IPSWatering_BeforeActivateWatering($CycleId ,$Value, $Mode) {
		$count = 0;
		foreach(IPS_GetChildrenIds(IPS_GetParent($CycleId)) as $CycleId) {
		   if (GetValue(get_ControlId(c_Control_Active, $CycleId))) {
				$count = $count + 1;
			}
		}
		if ($count==0 and $Value) {
			IPSLogger_Inf(__file__, 'Einschalten der Hauptversorgung für Bewässerung');
			IPSWatering_Log('Einschalten der Hauptversorgung für Bewässerung');
			LCN_SwitchRelay(38580 /*[Bewässerung\Relais 5]*/,true);
		}

		return true; // Return false to prevent Watering
	}

	// ----------------------------------------------------------------------------------------------------------------------------
	//
	// Function will be called after a Watering Cycle is switched (means activated and also deactivated)
	//
	// Parameters:
	//   $CycleId    - ID of current Watering Device (means Program.IPSWatering.WaterCircles.MyCurrentCycle)
	//   $Value      - true for "Switch On", false for "Switch Off"
	//   $Mode       - Mode for Activation, possible Values: "Automatik Start" or "Manueller Start"
	//
	// ----------------------------------------------------------------------------------------------------------------------------

	function IPSWatering_AfterActivateWatering($CycleId ,$Value, $Mode) {
		$count = 0;
		foreach(IPS_GetChildrenIds(IPS_GetParent($CycleId)) as $CycleId) {
		   if (GetValue(get_ControlId(c_Control_Active, $CycleId))) {
				$count = $count + 1;
			}
		}
		if ($count==1 and !$Value) {
			IPSLogger_Inf(__file__, 'Ausschalten der Hauptversorgung für Bewässerung');
			IPSWatering_Log('Ausschalten der Hauptversorgung für Bewässerung');
			LCN_SwitchRelay(38580 /*[Bewässerung\Relais 5]*/,false);
		}
	}

Hi Andreas,

klasse, das ging ja superschnell !!! :):):slight_smile:

Vielen vielen Dank. Ich werde es ausprobieren und dir melden ob es funktioniert bzw. ob ich es hinbekommen habe …:slight_smile:

Gruß

Peter

Hi Andreas,

funktioniert nun problemlos. Die einzelnen Funktionen muss ich natürlich erst einmal ausprobieren und testen :slight_smile:

Ich glaube eine kleine Korrektur solltest du in deiner Version der PSComponentSwitch_LCN noch hinzufügen.

Ich vermute in Zeile 60 sollte es heißen:

		LCN_SwitchRelay($this->instanceId, $value);

Zumindest funktioniert es, dass ich die einzelnen Kreise nun manuell ein- und ausschalten kann.

Vielleicht kann es ja noch jemand anderes brauchen :slight_smile:

Herzlichen Dank für deine schnelle Hilfe !!!

Gruß

Peter

Danke, habs korrigiert…

Ich hab das mit der Einbindung des Sensors noch nicht ganz kapiert.

Ich hab eine Float Variable, die mir den Regen der letzten 3 Tage anzeigt.

Im Wiki steht folgendes:
Der Eintrag „c_Property_Sensor“ ist optional, über in ist es möglich einen Regensensor in die Steuerung einzubinden. Die Angabe erfogt in Form des Pfades zur Variable oder durch die ID selbst und muss die Regenmenge beinhalten, die zum Vergleich mit den Einstellungen hergenommen wird.

Wie ist das mit der Regenmenge zu vestehen?
Im Webfront kann man ja die Regenmengen angeben…

Bei mir sieht das config script jetzt so aus:

c_WateringCircle_1  =>	array(
				c_Property_Name           =>   'Kreis 1',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,0',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',
			),
			c_WateringCircle_2  =>	array(
				c_Property_Name           =>   'Kreis 2',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,1',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',
			),
			c_WateringCircle_3  =>	array(
				c_Property_Name           =>   'Kreis 3',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,2',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',
			),
			c_WateringCircle_4  =>	array(
				c_Property_Name           =>   'Kreis 4',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,3',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',
			),
			c_WateringCircle_5  =>	array(
				c_Property_Name           =>   'Kreis 5',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,4',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',
			),
			c_WateringCircle_6  =>	array(
				c_Property_Name           =>   'Kreis 6',
				c_Property_Component      =>   'IPSComponentSwitch_1WireD2408,48618 /*[Visualization\WebFront\Wetterstation\Garage\DS2408]*/,5',
				c_Property_Sensor         =>   '51927 /*[Visualization\WebFront\Wetterstation\Regen\Regen letzte 3 Tage]*/',

stimmt das so oder hab ich da was falsch verstanden?
Danke.

Hi,

ja, das sollte so stimmen. Wenn die Regenmenge des Sensors >= eingestellte Regenmenge, dann wird die Bewässerung unterbunden.