Sonnenstand zur Steuerung einbinden

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Bogeyof hat geschrieben:
Di 18. Mai 2021, 16:56
2 Zeilen darüber scheint ein Fehler mit /dev/nulll (mit 3 L) zu sein, evtl. liegts daran. Ansonsten Zeile noch einmal löschen und darüber frisch eintragen...
Den hab ich dabei auch grade gesehen und korrigiert.

Bogeyof
Beiträge: 679
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 65 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Bogeyof »

Na dann "happy Tuning"...

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Danke dir mal wieder für deine Unterstützung! Was soll das Forum hier ohne dich machen mit so leuten wie mir :lol:

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Hey Bogeyof,
kannst du mir doch vielleicht nochmal was bei deinem Skript erklären?

Kann es sein das du mit Kostal _SM2.py das Schattenmanagement für String 1 schaltest und mit SM1 String2?
Bei mir Schaltet er aktuell von 7:08 bis 12:23 SM West und von 12:24 bis 15:19 SM Ost aber das müsste genau umgekehrt sein. Die Grad Werte muss ich am woe noch einmal ein bisschen anpassen weil so lange muss es morgens nicht an sein und nachmittags kann es auch etwas verschoben werden.

Und wie genau funktionieren deine Bedingungen?

Code: Alles auswählen

if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] < 8) {
    // Sonne steht im Osten und unter 8 Grad, SM Ost an"
    if ($SMTest != 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM Ost";
        $funktionen->log_schreiben("Schattenmanagement Ost an (1): " . $SMTest, "   ", 8);
Das ist klar, zwischen <0 Az und <8 Alt soll Ost an

Code: Alles auswählen

if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] > 38) {
    // Sonne steht im Osten und ueber 8 Grad, SM Ost aus"
    if ($SMTest == 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM aus";
        $funktionen->log_schreiben("Schattenmanagement Ost aus (2): " . $SMTest, "   ", 8);
Eig auch klar, zwischen <0 Az und >38 Alt Ost aus

Code: Alles auswählen

if ($aktuelleDaten["SunAz"] > 1 and $aktuelleDaten["SunAlt"] > 33 and $aktuelleDaten["SunAlt"] < 53) {
    // Sonne steht im Westen und ueber 33 Grad, SM Ost an"
    if ($SMTest != 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM Ost";
        $funktionen->log_schreiben("Schattenmanagement Ost an (3): " . $SMTest, "   ", 8);
Hier bin ich mir nicht sicher, zwischen >1 Az und >33 Alt und <53 Alt? Den sinn versteh ich noch nicht und warum jetzt wieder Osten an?

Code: Alles auswählen

if ($aktuelleDaten["SunAz"] < -30 and $aktuelleDaten["SunAlt"] > 32 and $aktuelleDaten["SunAlt"] < 45) {
    // Sonne steht im Osten und ueber 32 Grad, SM West an"
    if ($SMTest != 1) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM1.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM West";
        $funktionen->log_schreiben("Schattenmanagement West an (5): " . $SMTest, "   ", 8);
Hier eigentlich die selbe Frage.

Und zu letzt womit wird West wieder ausgeschaltet ?

Bogeyof
Beiträge: 679
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 65 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Bogeyof »

Sagen wir so, bei mir ist String 1 West und String 2 Ost. SM1 setzt den Wert 1 (bei mir West), SM2 setzt 2 (bei mir Ost), Vielleicht hilft das..
AZ 0 ist Süden, d.h. < 0 heißt Sonne steht im Osten, > 0 steht im Westen. Bei mir wirft auf Osten ein Kamin nachmittags Schatten, also Sonne im Westen und entsprechender Winkel heißt Schatten auf Osten.
Derselbe Kamin wirft kurz am Vormittag Schatten nach Westen, das ist der andere Test.
Ausgeschaltet wird in der Nacht, wenn wieder Ost eingeschaltet wird.

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Ok dann ist es wie bei mir nur dann versteh ich vielleicht die Abfragen tatsächlich nicht. Dann müsste doch eigentlich zwischen 07:00 - 12:00 Ost angehen oder nicht?

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Theoretisch müsste es doch aktuell genau wie bei dir schalten weil ich keine Werte geändert habe aber bei mir wird nur zwei mal geschaltet und dann zumindest laut Datenbank genau verkehrt herum. So wie die Abfragen Herr Sind müsste ost dann ja nochmal angehen oder sehe ich da jetzt was komplett falsch?

Und das mit dem ausschalten hab ich noch nicht verstanden. Bei mir hat er das Management ab 20 nach 3 komplett aus, hab ich das richtig verstanden das wenn ost zb an ist und ich nochmal ost an schicke das er dann ost ausschaltet ????

Bogeyof
Beiträge: 679
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 65 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Bogeyof »

Jedes Schalten setzt immer den entsprechenden Wert, also auch 3 Mal SM2 setzt immer String 2 auf an. Da wird nichts ausgeschaltet. Die Tests müssten immer abends SM1 (West) anschalten und morgens SM2 (Ost) anschalten. Wenn das nicht funktioniert stimmt was nicht. Dazu musst du nochmal die Daten zu AZ und Alt anschauen und mit den Tests abgleichen. Die anderen Zeiten sind vormittags mal West und nachmittags Ost an, wegen meinem Kamin. Steht aber alles im ersten Post.

Tipe1965
Beiträge: 134
Registriert: Do 24. Sep 2020, 12:13
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Tipe1965 »

Also hier habe ich nochmal die Übersicht über die drei verschiedenen Tageszeiten wo was passiert :

West an sollte aber eigentlich Ost sein
Unbenannt2.JPG


Umschaltung von West auf Ost müsste dann logisch ja auch gedreht sein
Unbenannt1.JPG
Und hier dann von Ost auf aus
Unbenannt.JPG
Wenn hier mir hier den Test ansehe

Code: Alles auswählen

 if ($SMTest == 0) {
      $aktuelleDaten["Schattenmanagement"] = "SM aus";
  }
  if ($SMTest == 1) {
      $aktuelleDaten["Schattenmanagement"] = "SM West";
  }
  if ($SMTest == 2) {
      $aktuelleDaten["Schattenmanagement"] = "SM Ost";
  }
  if ($SMTest == 3) {
      $aktuelleDaten["Schattenmanagement"] = "SM Ost+West";
  }
  if (empty($aktuelleDaten["Schattenmanagement"])) {
      $aktuelleDaten["Schattenmanagement"] = "SM undefiniert";
dann schaltet er doch bei 1 West an und bei 2 Ost richtig und bei 3 aus?

Laut den abfragen kommt es doch aber nie zu Zustand 3 ??
Und wenn ich es richtig interpretiere müsste ich bei mir die Werte fast tauschen von Ost und West weil ich um 7:00 Alt von 30 und Az von -80 hab

Müsste in der zweiten abfrage für Ost aus nicht dann auch SMTest ==3 stehen?

Code: Alles auswählen

if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] < 8) {
    // Sonne steht im Osten und unter 8 Grad, SM Ost an"
    if ($SMTest != 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM Ost";
        $funktionen->log_schreiben("Schattenmanagement Ost an (1): " . $SMTest, "   ", 8);
    }
}
if ($aktuelleDaten["SunAz"] < 0 and $aktuelleDaten["SunAlt"] > 38) {
    // Sonne steht im Osten und ueber 8 Grad, SM Ost aus"
    if ($SMTest == 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM aus";
        $funktionen->log_schreiben("Schattenmanagement Ost aus (2): " . $SMTest, "   ", 8);
    }
}

if ($aktuelleDaten["SunAz"] > 1 and $aktuelleDaten["SunAlt"] > 33 and $aktuelleDaten["SunAlt"] < 53) {
    // Sonne steht im Westen und ueber 33 Grad, SM Ost an"
    if ($SMTest != 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM2.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM Ost";
        $funktionen->log_schreiben("Schattenmanagement Ost an (3): " . $SMTest, "   ", 8);
    }
}

if ($aktuelleDaten["SunAz"] > 1 and ($aktuelleDaten["SunAlt"] < 33 or $aktuelleDaten["SunAlt"] > 53)) {
    // Sonne steht im Westen und unter 33 Grad, SM Ost aus"
    if ($SMTest == 2) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM0.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM aus";
        $funktionen->log_schreiben("Schattenmanagement Ost aus (4): " . $SMTest, "   ", 8);
    }
}

if ($aktuelleDaten["SunAz"] < -30 and $aktuelleDaten["SunAlt"] > 32 and $aktuelleDaten["SunAlt"] < 45) {
    // Sonne steht im Osten und ueber 32 Grad, SM West an"
    if ($SMTest != 1) {
        $shell_befehl = "python3 /solaranzeige/Kostal_SM1.py";
        $temp = shell_exec($shell_befehl);
        $aktuelleDaten["Schattenmanagement"] = "SM West";
        $funktionen->log_schreiben("Schattenmanagement West an (5): " . $SMTest, "   ", 8);
    }

Bogeyof
Beiträge: 679
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 65 Mal

Re: Sonnenstand zur Steuerung einbinden

Beitrag von Bogeyof »

OK, dann als erste Information SM3 heißt beide Strings mit Schattenmanagement (also Ost + West), so einen Fall habe ich nicht, daher kommt auch nie SM3. Ausschalten aller Schattenmanagement ist SM0 (Text SM aus) und dies wird ja korrekt ausgeführt.

Dein 1. Fall:
Es ist Vormittag (AZ < 0, also Sonne im Osten), die Sonne steigt über 32 Grad (ab da fällt erste Sonne auf Westdach und der Kamin wirft einen Schlagschatten bei mir auf Westdach), SM West wird eingeschaltet, also richtig (für mich). Bei mir passiert dies aber erst gegen 10 Uhr, bei Dir schon um 9 Uhr (Influx hat UTC Zeit, wir haben UTC +2)
Warum sollte um 9 Uhr bei Sonnenhöhe 32 Grad Ost an sein? Das sollte etwa gegen 5 Uhr bis 6 Uhr der Fall sein, danach ist die Sonne aufgegangen und steht so hoch, dass kein Schattenmanagement nötig sein sollte.

Dein 2. Fall:
Es ist Nachmittag (AZ > 0, also Sonne im Westen), die Sonne sinkt unter 53 Grad (ab da wirft der Kamin einen Schlagschatten auf das Ostdach), SM Ost wird eingeschaltet, also richtig (für mich).

Dein 3. Fall:
Es ist Nachmittag (AZ > 0, also Sonne im Westen), die Sonne sinkt unter 33 Grad (ab da wirft der Kamin keinen Schlagschatten mehr auf das Ostdach, weil Sonne zu niedrig ist um auf Ost zu scheinen), SM Ost wird ausgeschaltet, also richtig (für mich)

Antwort zu den Tests von $SMTest, das ist ja nur die Abfrage des aktuellen Status und da steht doch bei 0 SM aus und bei 3 SM Ost+West. Wie kommst Du drauf, dass 3 "aus" bedeutet?

Antwort ob in der 2. Abfrage SM-Test 3 stehen sollte:
In der ersten Abfrage wird SM Ost eingeschaltet, wenn es nicht schon an ist (um ständiges Schalten zu vermeiden), daher nur wenn SM-Test ungleich 2. In der zweiten Abfrage wird SM Ost wieder ausgeschaltet, wenn es aktuell eingeschaltet ist, also SM-Test == 2.
Woher der fehlerhafte Wert Alt > 38 (statt Alt > 8) in der zweiten Abfrage kommt weiß ich nicht, von meiner Vorgabe hast Du den nicht.

Du hast entweder nicht alle Tests angehängt oder es fehlt der Test um West wieder auszuschalten. Daher ist evtl. bei Dir am Nachmittag mit hohem Sonnenstand SM West an (bevor auf Ost geschaltet wird, 2. Tabelle), das passt so eigentlich nicht. Dazu hätte ich den Test dazu sehen müssen.

Ich habe gerade in Dein Skript geschaut, es fehlen tatsächlich 2 Tests, schau noch mal in den Post von mir, Du hast nicht alle kopiert (müssten 7 if-Tests sein). Das erklärt auch, warum z.B. Abends West nicht eingeschaltet wird. Und warum West nach dem Schlagschatten am Vormittag (bei mir) nicht richtig ausgeschaltet wird.

Ich kann außer den Alt > 38 Grad im 2. Test und den fehlenden Tests keine weiteren Fehler und kein fehlerhaftes Verhalten entdecken. Vermutlich passt es nicht so für Dich, weil kein Kamin Schatten wirft, aber die Logik und Reaktion ist völlig korrekt.

Antworten