IPSWatering - eine Bewässerungssteuerung

Meine Bewässerungssteuerung ist mittlerweile auch so weit, vorgestellt zu werden:

Man kann diverse Bewässerungskreise definieren, eine zyklishe Bewässerung programmieren und einen Regensensor einbinden.
Die komplette Installation erfolgt automatisch.

Beschreibung, Konfiguration und Installation findet Ihr unter …/wiki/IPSWatering

[Update 2011-06-23] - FS20 Unterstützung, Callback Methoden
[Update 2011-07-03] - kleiner Bugfix im Installations Script
[Update 2011-11-02] - Anpassung 2.5
[Update 2012-03-17] - Eingliederung in die IPSLibrary

Wichtige Posts:
Nützen der ON_TIME bei Homematic um das Ausschalten der Ventile sicherzustellen
Ein- und Ausschalten der Wasserzufuhr zu den Bewässerungskreisen
Manuelle Ansteuerung der Ventile mit der Steuerung synchronisieren

lg
Andreas

Hallo,

unterstützt das Skript auch den 6-fach Verteiler von Gardena, der sich bei jedem An/Aus eine Position weiter bewegt?

Gruß Thorsten

Hallo…! tolles Script und looked good!

Wäre eine FS20 Version possible? geschaltet wird mit dem FS20 4?

@Hooker78: Gardena 6 fach Verteiler wird schwierig, da man nie mit Sicherheit weis, an welcher Stelle man sich gerade befindet…

@Swissboy: FS20 sollte kein großes Problem sein, ich könnte Dir mal eine Version bauen und zum Testen schicken…

lg
Andreas

Hallo Brownson,

Ich habe meine „Bewässerungssteuerung IPS“ nur über eine Funkschaltsteckdose und Gard*** Bewässerungscomp. und Wasserverteiler realisiert.

Das heisst das die Funksteckdosse ausgeschaltet wird wenn es genug geregnet hat, ansonsten ist sie an und der Bewässerungscomp. übernimmt die zeitlich Steuerung.

Worauf ich aber hinaus will ist das in dieser Kombination der Wasserverteiler immer zuverlässig lief und ich immer wusste zu welcher Zeit er in welcher Position ist.

Wenn es also evtl. doch eine möglichkeit geben würde den Wasserverteiler zu unterstützen würde ich mich freuen, denn Deine Steuerung ist einfach nur WOW !!!. :smiley:

Hallo Horst,

kannst Du die einzelnen Bewässerungskreise des 6 fach Verteilers getrennt voneinander aus IPS steuern, bzw. wie würdest Du das realisieren ?

lg
Andreas

FS20 Einbindung:

1.) Im File IPSWatering_Constants.ips.php einen zusätzlichen DeviceType FS20 anlegen.


  define ("c_Type_Homematic",         'Homematic');
  define ("c_Type_FS20",              'FS20');

2.) Im File IPSWatering_Control.ips.php die FS20 Ansteuerung implementieren.
a.) in der bestehenden Funktion „IPSWatering_ActivateWatering“ den neuen DeviceType behandeln.


	// ----------------------------------------------------------------------------------------------------------------------------
	function IPSWatering_ActivateWatering($CycleId, $Value) {
		$WaterConfig = get_WateringConfiguration();
		$CircleName  = IPS_GetName($CycleId);
		$DeviceType  = $WaterConfig[$CircleName][c_Property_Type];
		$DevicePath  = $WaterConfig[$CircleName][c_Property_Device];
		switch($DeviceType) {
		   case c_Type_Homematic:
		      IPSWatering_ActivateWateringHomematic($DevicePath, $Value);
		      break;
		   case c_Type_FS20:
		      IPSWatering_ActivateWateringFS20($DevicePath, $Value);
		      break;
			default:
			   IPSLogger_Err(__file__, "Unknown DeviceType '$DeviceType' for Watering of Circle '$CircleName'");
			   exit;
		}
	}

b.) die eingentliche Schaltfunktion „IPSWatering_ActivateWateringFS20“ implementieren


	// ----------------------------------------------------------------------------------------------------------------------------
	function IPSWatering_ActivateWateringFS20($DevicePath, $Value) {
	   $DeviceId = get_ObjectIDByPath($DevicePath);

	   IPSLogger_Dbg(__file__, "Set '$DevicePath.Status'=".($Value?'true':'false'));
	   if ($DeviceId===false){
	      IPSLogger_Wrn(__file__, "Device $DevicePath could NOT be found to activate Watering");
	      return;
	   }
      FS20_SwitchMode($DeviceId, $Value);
	}


3.) Konfiguration anpassen


	      "Rasen Hinten"  =>	array(
		      c_Property_Type         => 	c_Type_FS20,
		      c_Property_Device       =>    'Hardware.FS20',
		      c_Property_Sensor       =>    '',
			),

Bitte um Rückmeldung, falls es wer praktisch verifizieren konnte, dann werd ich es in die Scripts einpflegen

lg
Andreas

Hallo Andreas,

nein die Bewässerungskreise kann ich nicht einzeln ansteuern :mad:

Und um so mehr ich darüber nachdenke, je mehr zweifel ich selber an der Sinnhaftigkeit einer implementierung des 6 Fach Verteilers. :smiley:

Kannst Du, wenn Du Zeit und Lust hast mal beschreiben wie Du das bei Dir mit Homematic umgesetzt hast? Evtl. ist das ja was zum Basteln für den nächsten Winter.

Wow das ging ja schnelle… ich werde an diesem und am nächsten Wochenende meine Installation im Garten vorbereiten, sobald die verkabelt ist kann ich dir dann Feedback geben ob die so klappt…

Hallo Brownson,
als erstes „Respekt“ super Skript.
Ich habe einen HomeMatic Funk-Kombi-Sensor OC 3 und will die Informationen für meine Gartenbewässerung nutzen. Zum einen soll nicht gesprengt werden wenn es genug geregnet hat und zum anderen soll nicht gesprengt werden wenn es zu windig ist. Ich habe die Gardena Versenk-Viereckregner und die sind bei Wind alles andere außer Rasensprenger! :rolleyes:
Kann man diese Funktionen noch implementieren?

Gruß, Raul.

OK, ich lass mir das nochmals durch den Kopf gehen und implementiere eventuell einige „Callback“ Funktionen, mit denen man das alles in jedem Fall realisieren kann.

lg
Andreas

Die Lösung mit Callbacks wäre super, ich hätte da auch noch die Idee, Bodenfeuchtesensoren einzubinden. Das sollte damit dann auch problemlos möglich sein.

Viele Grüße,
Martin

Hallo!

Habe das Script inkl. FS20 Anpassung jetzt ausgeführt, und mir sind 2 Sachen aufgefallen:

–> Es wurde alles ordnungsgemäß angelegt (Skripte und Variablen) nur meine FS20-Instanzen fehlen. Ist das was falsch oder muss ich manuell anlegen?

–> Wenn ich in der Autmoatik was verändern möchte bekomme ich eine Fehlermeldung, die auf eine fehlende IPSLogger.php hinweist.

Bitte um Unterstützung!

Danke!

Stefan

PS: Ansonsten großes Lob zu diesem Modul!

Hallo Stefan,

das Anlegen der Instanzen für die eigentliche Hardware muß immer manuell erledigt werden (betrifft auch Homematic, eine autom. Installation würde sehr viele und unterschiedliche Parameter benötigen. Mit diesem Modul verlinkt man nur mehr auf die fertigen Instanzen).

Für den Betrieb ist der IPSLogger nötig, ich werde das bei nächster Gelegenheit in der Doku noch korrigieren …

Am Wochenende werde ich wahrscheinlich wieder eine neue Version mit zusätzlicher Hardware Unterstützung und Callback Methoden posten …

Hallo Leute,

kleines Update zur Bewässerungssteuerung:

[ul]
[li]FS20 wird nun direkt unterstützt, einfach als DeviceType c_Type_FS20 angeben
[/li][li]neue Callback Methode IPSWatering_ActivateWateringCustom, DeviceType muß auf c_Type_Custom gesetzt sein, dort kann man dann das Schalten der eigenen Hardware implementieren.
[/li][li]neue Callback Methoden IPSWatering_BeforeActivateWatering und IPSWatering_AfterActivateWatering, hier kann man die Logik eines Bodenfeuchtesensor implementieren oder auch die Wasserversorgung Ein- und Ausschalten
[/li][/ul]

Die neuen Funktionen befinden sich im File IPSWatering_Custom.ips.php, im Header jeder Funktion befindet sich auch eine detailierte Beschreibung der Parameter.

Werde auch das WIKI bei nächster Gelegenheit anpassen.

Hallo Andreas!

Mittlerweile habe ich alles hingebracht. - Danke! Das mit den CallBacks muss ich jetzt noch testen.

Ich hätte zum FS20-System noch eine kleine Codeänderung vorzuschlagen.

Da dies ja ein unidirktionales System ist, und die Gefahr besteht, dass bei nicht ankommenden Abschaltbefehelen aus dem Garten ein See wird, habe ich das Skript so geändert, dass die eingestellte Bewässerungsdauer gleich mit dem Einschaltbefehl an den FS20 Aktor mitübergeben wird. Sicherheitshalber wird dann trotzdem noch ein Ausschaltbefehl gesendet.

Hier der Code:


	// ----------------------------------------------------------------------------------------------------------------------------
	function IPSWatering_ActivateWateringFS20($DevicePath, $Value, $FS20CircleId) {  // $FS20CircleId --> die ID des Bewässerungskreis wird mitübergeben
	   $DeviceId = get_ObjectIDByPath($DevicePath);
	   $FS20_Duration = GetValue(get_ControlId(c_Control_Duration, $FS20CircleId)); // Eingestellte Bewässungsdauer wird abgefragt

      IPSLogger_Dbg(__file__, "Set '$DevicePath.Status'=".($Value?'true':'false'));
	   if ($DeviceId===false){
	      IPSLogger_Wrn(__file__, "Device $DevicePath could NOT be found to activate Watering");
	      return;
	   }
      if ($Value==true)
      {  $fs20dur_sek=($FS20_Duration*60);  // Umwandlung in Sekunden
	     FS20_SwitchDuration($DeviceId, true, $fs20dur_sek); // statt SwitchMode wird hier mit SwitchDuration gleich die Einschaltdauer mitübergeben.
      }
      else

		{FS20_SwitchMode ($DeviceId, false);} // Hier wird zusätzlich zum Timer wieder ausgeschaltet  - sicher ist sicher
		;
	}

	// ----------------------------------------------------------------------------------------------------------------------------
	function IPSWatering_ActivateWatering($CycleId, $Value, $Mode) {
		$WaterConfig = get_WateringConfiguration();
		$CircleName  = IPS_GetName($CycleId);
		$DeviceType  = $WaterConfig[$CircleName][c_Property_Type];
		$DevicePath  = $WaterConfig[$CircleName][c_Property_Device];
		if (!IPSWatering_BeforeActivateWatering($CycleId, $Value, $Mode)) {
		   return false;
		}
		switch($DeviceType) {
		   case c_Type_Homematic:
		      IPSWatering_ActivateWateringHomematic($DevicePath, $Value);
		      break;
		   case c_Type_FS20:
		      IPSWatering_ActivateWateringFS20($DevicePath, $Value, $CycleId); // Hier muss die CycleId mitübergeben werden, um dann in der Funktion die Dauer abfragen zu können
		      break;
		   case c_Type_Custom:
		      IPSWatering_ActivateWateringCustom($CycleId, $DevicePath, $Value);
		      break;
			default:
			   IPSLogger_Err(__file__, "Unknown DeviceType '$DeviceType' for Watering of Circle '$CircleName'");
			   exit;
		}
		IPSWatering_AfterActivateWatering($CycleId, $Value, $Mode);

		return true;
	}

Lg Stefan

Sehr gut, werds übernehmen …

Hallo Brownson,

Ich versuche seit gestern abend IPSWatering zu installieren, komme aber auf Grund eines Fehlers nicht weiter. Da ich mich mit PHP nicht auskenne, finde ich leider die Ursache nicht.
Die Warnings sind im angehängten Screenshot ersichtlich und kommen offensichtlich aus dem Installer. Was mache ich falsch?
Kannst du mir bitte helfen?

Gruß Robert

Hallo Robert,

Was mache ich falsch?

Nichts - da hat sich ein kleiner Fehler eingeschlichen, ich lade eine neue Version in Kürze hoch …

Oh super!

Danke!