Komplexe Gartenbewässerung mit Magnetventilen (Programm)

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Alfi84
Beiträge: 50
Registriert: 17.05.2020, 11:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal

Re: Komplexe Gartenbewässerung mit Magnetventilen (Programm)

Beitrag von Alfi84 » 05.01.2022, 21:41

Hallo zusammen,

erstmal vielen Dank für das Programm. Ich habe schon mehrere Anläufe gemacht um es zum Laufen zu bekommen.
Aber irgendwie kriege ich es nicht hin. Ich vermute mal, dass irgendwas mit den Kanalbezeichnungen (Hauptschalter, Ventile) der Geräte nicht passt.
Hauptschalter (CuxD):
Name:Hauptschalter Bewässerung
Typenbezeichnung:HM-PB-2-WM
Seriennummer: CUX2801003
Schaltaktor Ventile:
Name:VentilKreis1
Typenbezeichnung:HmIP-MOD-OC8
Seriennummer:000D1BE9A4E74A:10
Das angepasste script Bewässerung_Timer:

Code: Alles auswählen

!! ---------- Version 1.3 --------

!! Zeit in Sekunden aktuell für jeden Kanal

real beregnungszeit = 100;

integer anzahlkreise = 5;       !!<<User Eingabe Anzahl der Kreise <<

!! Hier die Adresse des Benutzten Timers eintragen

string cuxdtimer = "CUX2800001:1"; 				!!<< User Eingabe hier kommt euer Timer mit der exakten Bezeichnun rein<<

var source = dom.GetObject ("$src$");

string sourceDP = "manuall";




if (source) {

 sourceDP = source.Name();

}




integer kreis=0;




if (sourceDP.Find("CUxD."#cuxdtimer)>-1) {

!! Script wurde durch Timer ausgelöst aktuellen Wasserkreis ermitteln und um 1 hochzählen

!! aktuell laufenden Kreis ermitteln

 var wk = dom.GetObject("Wasserkreis");

 kreis = wk.State();

!! um eins erhöhen

 kreis = kreis + 1;




!! wenn maximale Anzahl erreicht dann auf 0 setzen um alles auszuschalten 

 if (kreis>anzahlkreise) {

   kreis = 0;

   !! Hier auch den Hauptschalter ausschalten

   dom.GetObject("HM-PB-2-WM.Hauptschalter:1.STATE").State(0);	!!<<User Eingabe hier die genaue Bezeichnung des Hauptschalter Ausgangs<<

 }




} else {

 !! Script wurde anderweilig gestartet Wasserkreis auf 1 setzen damit die Beregnung von vorn beginnt.

 !! hier dann auch den Hauptschalter einschalten

 kreis = 1;

 dom.GetObject("HM-PB-2-WM.Hauptschalter:1.STATE").State(1);	!!<<User Eingabe hier die genaue Bezeichnung des Hauptschalter Ausgangs<<

}




 !! und Neuen Wasserkreis in die Variable speichern

 dom.GetObject("Wasserkreis").State(kreis);

 

 !! Timer setzen um dieses Script nach xxx Sekunden wieder zu starten

 if (kreis>0) {




  string list = dom.GetObject("Beregnungszeiten").ValueList();

  string part = list.StrValueByIndex(";",kreis-1);

 

 if (part.ToInteger()>0) {

   beregnungszeit = part.ToInteger();

   var objsap = dom.GetObject("Beregnung_Saison");

   beregnungszeit = part.ToFloat();

   if (objsap) {

     real sap = 0.0+objsap.State().ToInteger();

     real fc = (sap/100.0);

     beregnungszeit = beregnungszeit * fc;

   }

  }

  dom.GetObject("CUxD."#cuxdtimer#".TIMER_SET").State(beregnungszeit.ToInteger());

 }
Das angepasste script im Einschaltprogramm:

Code: Alles auswählen

string strchnl = "HmIP-MOD-OC8.VentilKreis1|HmIP-MOD-OC8.VentilKreis2|HmIP-MOD-OC8.VentilKreis3|HmIP-MOD-OC8.VentilKreis4|HmIP-MOD-OC8.VentilKreis5|"; !!<< User Eingabe hier werden die Kannäle auf denenen die Magnetventile liegen bekannt gegeben<<
var source = dom.GetObject ("Wasserkreis");
var sourceDP = source.State();
integer numSource = sourceDP.ToInteger();

string splitter = "|";
string channel  = strchnl.StrValueByIndex(splitter,numSource-1);
string switchOnDp = "CUX2801003."#channel#".STATE";

foreach(channel,strchnl.Split(splitter)) {
     string tmpdpname = "CUX2801003."#channel#".STATE";
     var datapoint = dom.GetObject(tmpdpname);
     if (datapoint) {
      if (tmpdpname == switchOnDp) {
        datapoint.State(1);
      } else {
        datapoint.State(0);
      }
     }
}
Kann mir vielleicht jemand sagen wo der Fehler liegt?

Vielen Dank vorab!

Gruß
Alfi84
RPi 3B+ | RPI-RF-MOD | RaspberryMatic | CuxD | Redmatic | conbee2
RP 4 | iobroker
NUC8i5 | Proxmox | Homeassistent

Antworten

Zurück zu „Projektvorstellungen“