nischram / E3dcGui

E3DC S10 / HomeMatic Daten abfragen, darstellen oder senden
36 stars 14 forks source link

Aktor wird nicht deaktiviert, wenn Zeitfenster gesetzt ist #79

Closed dg1rtf closed 1 year ago

dg1rtf commented 1 year ago

Das Abschalten eines batteryAktor am Ende des vorgegebenen Zeitintervalls erfolgt nicht (betrifft ext. auch die anderen Aktor-Typen. Ich denke der Fehler liegt in External/Aktor.h, wo in

  if (BatterySOC < AktorPercentOn && BatterySOC > AktorPercentOff){
    writeAktor(AktorPosition + counterOn, 0);
    writeAktor(AktorPosition + counterOff, 0);
  }

counterOff = 0 immer unabhaengig von der Zeit gesetzt wird. Damit kann AktorCounterOff >= 5 (ein paar Zeilen später) eigentlich nie true werden. Mit

  if (TimerState == true && BatterySOC < AktorPercentOn && BatterySOC > AktorPercentOff){
    writeAktor(AktorPosition + counterOn, 0);
    writeAktor(AktorPosition + counterOff, 0);
  }

sollte das Setzen auf 0 nur im Zeitfenster passieren. Gilt glaube ich auch fuer die anderen Aktoren.

VG Thomas

nischram commented 1 year ago

Hallo Thomas, danke für den Hinweis. Ich werde es mir anschauen. Der Fehler ist bei mir nicht aufgefallen weil ich die "Aktoren" nicht nutze, denn ich steuere alles mit Programmen über die Homematic. Du kannst ja ein Feedback geben ob die Änderung bei dir erfolgreich war und ggf. deine Version der Aktor.h hier zeigen.

Gruß Nico

dg1rtf commented 1 year ago

Hallo Nico,

ich gebe Bescheid. Ich nutze die Out-PINs auch bloss als Semaphor und hab ein Python-Script drumgebaut, was den Status abfragt und dann Steckdosen mit Tasmota Firmware per HTTP-Request ein- und ausschaltet. Ich weiss auch nicht, welchen Einfluss mein Patch auf die Mindesteinschalt bzw. Ausschaltdauer hat.

VG Thomas

HorstGF commented 1 year ago

Hallo zusammen, ich habe das gleiche Problem bei Überschuss: Schaltet richtig ein, aber nie mehr aus. Reine Zeitsteuerung funktioniert. VG Horst

nischram commented 1 year ago

Hallo Horst,

ich hatte doch glatt aus den Augen verloren, dass hier noch ein Problem abgestellt werden muss. Ich schaue mal ob ich die Empfehlung von Thomas einbauen kann, es wird nur gerade aktuell ein paar Tage dauern. VG Nico

dg1rtf commented 1 year ago

Hi,Ich wollte es auch noch als Patch bereitstellen, war bloß in letzter Zeit etwas wenig Sonne da , um es nochmal zu testen. Zumindest in den letzten zwei Tagen hat es funktioniert. Mit dem codeschnippsel sollte es aber auch so einbaubar sein.VgThomas 

HorstGF commented 1 year ago

Habe zwar geändert, aber leider den Teil nicht neu gemacht (make). Muss also noch einen Tag Sonne abwarten. Mein Fehler. VG Horst

dg1rtf commented 1 year ago

Moin,

hier das patch-File. Falls Interesse besteht, habe ich noch ein kleines (schnell dahingeschriebenes) Python-Script rangehangen, welches die GPIO-PINs ausliest und damit Steckdosen mit Tasmota-Firmware ein-/ausschaltet. Der Pfad ist mit /home/pi fest verdrahtet. Evt. kann man das ja irgendwo mit dazu packen. Will deswegen kein github-Projekt aufmachen.

VG Thomas

Am 14.02.23 um 18:56 schrieb Horst:

Das Einfügen von TimerState == true && alleine für alle Aktoren hat leider nichts verändert (die Sonne hat hier geschienen). Was fehlt noch? Bin leider kein C Spezialist und habe nicht entdeckt, wo wieder ausgeschaltet werden sollte, wenn der Überschuss weg ist. VG Horst

— Reply to this email directly, view it on GitHub https://github.com/nischram/E3dcGui/issues/79#issuecomment-1430149952, or unsubscribe https://github.com/notifications/unsubscribe-auth/A3UFOS47KHEHZW2KPTMLLKDWXPBLVANCNFSM6AAAAAARF7GP7I. You are receiving this because you authored the thread.Message ID: @.***>

--

Thomas Fichte

EMail: @.*** Tel: +49 351 4211011 Mobil: +49 172 8096791

--- Aktor.h.ORIG 2023-02-15 07:24:12.000000000 +0100 +++ Aktor.h 2023-02-15 07:23:23.000000000 +0100 @@ -47,7 +47,7 @@ int netInAktor(int PowerGrid, int AktorP } } int AktorPower90 = AktorPower /10 *9;

[global] sleep = 60 actionOnlyOnChange = 0 [aktor1] enabled = 1 bcm = 5 on = cm?user=admin&password=password&cmnd=Power%%20on off = cm?user=admin&password=password&cmnd=Power%%20off url = http://255.255.255.113 username = admin password = password [aktor2] enabled = 0 bcm = 6 on = cm?user=admin&password=password&cmnd=Power%%20on off = cm?user=admin&password=password&cmnd=Power%%20off url = http://255.255.255.108 username = admin password = password [aktor3] enabled = 0 bcm = 13 on = cm?user=admin&password=password&cmnd=Power%%20on off = cm?user=admin&password=password&cmnd=Power%%20off url = http://255.255.255.112 username = admin password = password [aktor4] enabled = 0 [aktor5] enabled = 0

nischram commented 1 year ago

Hallo zusammen,

ich habe mir das jetzt mehrfach angesehen, ich denke das die Anpassung mit "TimerState == true" tatsächlich in der Schleife fehlt. Wie schon erwähnt, aktuell habe ich nicht wirklich die Möglichkeit das zu testen (mache alles über die HM und habe nichts an den GPIOs hängen). Ich werde es trotzdem einbauen.

Sollte dies keine Abhilfe bringen, könnte es vielleicht auch sein, dass z.B. der Batterieaktor als AktorTyp=3 konfiguriert ist. Dann wäre die Zeiteinstellung grundsätzlich inaktiv, erst wenn der AktorTyp=13 eingestellt ist, wird zu der Betterievorgbe auch die Zeiteinstellung genutzt.

Neben der Batterievorgabe und der Zeiteinstellung gibt es noch die "AktorMinOn" Einstellung, damit wird verhindert, dass der Aktor im Grenzwert laufend hin und her schaltet (oder Beispiel Spülmaschine, damit diese ca. 3 Std läuft vorm abschalten). Diese kann auch dazu führen das zum Zeitpunkt noch nicht abgeschaltet wird. erst wenn die Zeit "AktorMinOn" abgelaufen ist.

@dg1rtf Hallo Thomas, deine letzt Nachricht hast du wohl per Mail gesendet, der Anhang wurde nicht korrekt übernommen und du hast einige Daten mitgebetet die du vielleicht bearbeitet solltet. Das Python script für die Funksteckdosen kann ich nicht einbauen oder mich dazu äußern, da ich mich mit Python nicht auskenne oder beschäftigt habe. Die Steckdosen kenne ich auch nicht.

Viele Grüße Nico

nischram commented 1 year ago

Hey, Änderung ist hochgeladen, ich hoffe es klappt. VG