Hallo zusammen,
möchte gerne meinen Rolladenaktor folgendermaßen schalten
# Rollladen soll fix um 07:00h jeden Tag hochfahren / ausser am WE um 08:00h
define CUL_HM_HM_LC_Bl1PBU_FM_256453_hoch at *07:00 { if (!($we)) { fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on");; }}
define CUL_HM_HM_LC_Bl1PBU_FM_256453_hochWE at *08:00 { if (($we)) { fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on");; }}
# Rolladen soll bei Sonnenstand 100° auf 50% fahren und bei 200° wieder auffahren
define CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne notify T.azimuth.* {my $Licht = ReadingsVal("T","azimuth","0");; if (($Licht >= 200) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Auf")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on")} elsif (($Licht >= 100) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Zu")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 50")}}
# Rollladen soll variabel je nach Sonnenuntergang, aber nicht vor 17:00h und nicht nach 20:00h jeden Tag runterfahren
define CUL_HM_HM_LC_Bl1PBU_FM_256453_runter at *{sunset("REAL",480,"17:00","20:00")} set CUL_HM_HM_LC_Bl1PBU_FM_256453 off
Das funktioniert so aber leider nicht . . . . :(
Die Sonnenstände werden berücksichtigt, danach fährt der Rolladen aber nicht mehr runter. Setzt man Ihn manuell auf runter, fährt er wieder hoch!?
Komme leider nicht so ganz weiter.
Vielleicht kann mir diesbezüglich jemand helfen.
Danke schon mal vorab
gruß
Markus
Hallo,
in diesem Beitrag
http://forum.fhem.de/index.php/topic,21333.0.html (http://forum.fhem.de/index.php/topic,21333.0.html)
hast du keine Lösung gefunden?
Grüße
Hallo Puschel74,
gesehen ja. Verstanden Nein. Sehe momentan den Wald vor lauter Bäumen nicht. :'( Soll heißen, ich habe
Schwierigkeiten den Code für den Sonnenstand mit einzubauen. Zudem weiß ich auch nicht, ob ich den jeweils
für hoch und runter mit einbauen muss, oder nur einmal.
Hatte es so versucht, was aber auch nicht funktioniert . . . .
define CUL_HM_HM_LC_Bl1PBU_FM_256453_hoch at *07:00 { if (!($we)) && ReadingsVal("T","azimuth","0");; if (($Licht >= 200) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Auf")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on")} elsif (($Licht >= 100) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Zu")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 50"){ fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on");; }}
Gruß
Markus
Das Teil ist auch voller Fehler..... zudem wundern mich manche Namen, warum benennst du dein "CUL_HM_HM_LC_Bl1PBU_FM_256453" nicht in irgendwas Menschenverständliches wie wz_Rollladen?!
Ich hab erst überlegt das einzeln Aufzudröseln, aber da kommt mir zuvieles spanisch vor, mal ganz vom Inhalt abgesehen ist die Syntax seltsam. Du fängst mit if an, es kommt aber keine Anweisung sondern ;; dann kommt noch mal if aber ohne geschweifte klammer, vorher wurde der erste if Befehl auch nicht geschlossen.
Im 2. If machst du direkt zwei Klammern auf.... wozu? statt
if (($Licht >= 200) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Auf"))
müsste das eher:
{if ($Licht >= 200) && Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Auf")
heißen
beim elsif das gleiche
und am Schluss kommen 2 Befehle, die sich zum einen aufheben zum anderen ist die Syntax falsch:
{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 50"){ fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on")
Also entweder 50 dann müsste es aber pct 50 heißen oder aber on. Zudem ist der Befehl nicht richtig geschlossen.
Ein Befehl sollte so aussehen:
{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 pct 50")}
Zwei so:
{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 pct 50;set CUL_HM_HM_LC_Bl1PBU_FM_256453 on")}
Du solltest dich dringend noch mal in die Grundlagen einlesen, vielleicht einfach mal mit einfachen if konstruktionen beginnen und auch mal deine Geräte umbennen mit CUL_HM_HM_LC_Bl1PBU_FM_256453 und CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne zu arbeiten ist ja grauselig und kaum tippbar, was ist CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne überhaupt? Und wenn du nach auf oder zu abfragst, hast du das auch so gemapped? ansonsten ist on oder off die richtige Abfrage. Und bist du dir sicher das es $Licht gibt?!
Und wenn du das Konstrukt oben über die Befehlszeile ausführst müsste es doch nur so Fehler hageln. Sowas in der Art:
syntax error at (eval 12357) line 1, near ") &&"
Global symbol "$Licht" requires explicit package name at (eval 12357) line 1.
Global symbol "$Licht" requires explicit package name at (eval 12357) line 1.
syntax error at (eval 12357) line 1, near "){"
Missing right curly or square bracket at (eval 12357) line 2, at end of line
# Rollladen soll fix um 07:00h jeden Tag hochfahren / ausser am WE um 08:00h
define CUL_HM_HM_LC_Bl1PBU_FM_256453_hoch at *07:00 { if (!($we)) { fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on");; }}
define CUL_HM_HM_LC_Bl1PBU_FM_256453_hochWE at *08:00 { if (($we)) { fhem ("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on");; }}
Also zunächst:
Am besten benennst Du Deine CUL_HM_XXX mal in einen sprechenden Namen um. Zum Beispiel "ROLLLADEN_WOHNZIMMER" oder so.
Das erreichst Du am schnellsten, indem Du oben in der FHEM Kommandozeile "rename <devicename alt> <devicename neu>" machst
Beispiel für deinen ROLLLADEN:
rename CUL_HM_HM_LC_Bl1PBU_FM_256453 ROLLLADEN_WOHNZIMMER.
Dann würde der Rollladen nun ROLLLADEN_WOHNZIMMER heißen. Klingt doch schon viel besser? Und ist später auch viel besser zu unterscheiden, wenn Du mal mehr als einen Rollladen haben solltest...
Wenn jetzt ROLLLADEN_WOHNZIMMER Wochentags um 7:00 Uhr hochfahren soll:
define ROLLLADEN_WOHNZIMMER_hoch_WT at *07:00 { if (!$we) {fhem ("set ROLLLADEN_WOHNZIMMER on") } }
Fürs Wochenende wäre es dann
define ROLLLADEN_WOHNZIMMER_hoch_WE at *08:00 { if ($we) {fhem ("set ROLLLADEN_WOHNZIMMER on") } }
Das Ganze läßt sich auch ganz fein mit der Funktion weekdaytimer abbilden (einfach mal ins commandref schauen), oder hier im Forum nach weekdaytimer suchen.
Wenn das nun auch noch mit Hilfe des Sonnenstandes gesteuert werden soll, wirst Du um eine kurze Einführung in Perl nicht drum rumkommen, um if... elsif.. Abfragen und reg.exp (Reguläre Ausdrücke) zu verstehen...
Ich muß zugeben, da hab ich auch noch an manchen Stellen Verständnisprobleme ;)....
Gruß
Jens
danke für die Hinweise . . . .
werde mich bemühen diese umzusetzen
die Zeit Steuerung (Wochentags, Wochenende bekomme ich hin, bzw. habe ich vorher schon gehabt.) funktioniert. Jedoch die Einbindung
der Steuerung für den Sonnenstand (bei xxx° Rollladen auf 50% runter und bei xxx° wieder hoch ) kriege ich nicht eingebaut.
na ja - vielleicht klappt es irgend wann mal . . . . :(
Danke nochmals
Schreib doch mal konkret auf was wann passieren soll. Am besten mit den Wörtern wenn dann.
Gesendet von meinem Nexus 4 mit Tapatalk
Hallo strauch,
also Rolladen soll um 7:30 Uhr hochfahren ausser am Wochenende, dann um 8:30 Uhr.
Wenn die Sonne bei 100° (Azimuth) steht soll der Rolladen auf 50% runter fahren und ab 200° wieder hoch fahren.
Um 20:00 soll der Rolladen dann runter fahren.
Das ist eigentlich das, was ich gerne haben möchte.
Die Steuerung für hoch um 7:30 (8:00) Uhr und runter um 20:00 Uhr habe ich nun mit dem WeekdayTimer umgesetzt.
Bsp.
define Rollladen_KZ_week WeekdayTimer Rollladen_KZ 12345|07:30|on 12345|20:00|off
den Code ebenfalls fürs Wochenende dann mit 67 und 8:30 / 20:00 Uhr
Den Status der Gradzahl erhalte ich vom Twilight Modul.
myTwilight azimuth 292.02
Versuche ich den Code einzubauen, fährt der Rollladen auf 100° runter, sowie ab 200° hoch, jedoch wird keine andere Schaltung mehr berücksichtigt (so wie weiter oben in den Threads bereits versucht)
gruß
Markus
Hallo,
klarer Fall von if ....
Abfragen ob WE - IF ($we) (wenn WE dann ...) ELSE ( wenn nicht WE dann ...)
Gruß Christoph
Hallo,
Zitatklarer Fall von if ....
Abfragen ob WE - ID ($we) (wenn WE dann ...) ELSE ( wenn nicht WE dann ...)
äh, kannst du das mal etwas klarer erklären :o
Der TE benutzt zur Zeit WDD und möchte zusätzlich nach azimuth die Rollläden fahren.
Ein "klarer Fall von if" wird ihn nicht weiter bringen - und genau DIESE Nachfrage WIRD kommen also hat der TE nichts davon.
Wann und Wo soll er den "klaren Fall von if" verwenden?
WE - ID ist was genau?
Bei if gibt es kein ELSE (wenn dann else).
Brocken hinwerfen und mehr Fragen aufwerfen als (nützliche) Antworten liefern hilft hier nicht.
Sorry - ich weiß das du auch einbringst aber diesmal ist deine Antwort nur ein großes
?Grüße
Hallo Puschel,
ich kenne das twilight Modul nicht, aber es löst mit Sicherheit ein notify aus. In diesem notify würde ich abfragen ob Wochenende ist und dann die Zeiten entsprechend setzen. Entweder mit dem perl if oder mit den fhem IF - bei dem dann auch das ELSE groß geschrieben wird.
Ich mach das mit einem anderen Schalter, der nur an Wochentagen schalten soll.
*08:00:00 { if (!$we) { fhem("set Unterbr_Entkalkung on-till 15:00:00") }}
Was ich nicht verstehen, warum Steuern so viele die Rollos nach Azimut? Ich nutze sunrise/Sunset dafür. Hier kann ich Korrekturen (Grad) und max/min Zeiten direkt eingeben. Dort könnte man auch direkt auf $we prüfen und entsprechend steuern.
Gruß Christoph
Hallo,
Zitatich kenne das twilight Modul nicht, aber es löst mit Sicherheit ein notify aus.
So ist es.
Und man kann in einem notify auch wunderbar per regexp auf die unterschiedlichen Readings triggern.
Das mann innerhalb eines notify mit IF oder if Unterscheidungen treffen kann ist genauso richtig.
Wobei man sich schon auf eines festlegen sollte da die weitere Handhabung der Codes einfacher wird.
ZitatIch mach das mit einem anderen Schalter, der nur an Wochentagen schalten soll.
Und ich prüfe täglich um 2 Uhr ob Wochenende ist oder nicht da ich auch unterschiedliche Zeiten für unsere Rollläden benutze - was auch funktioniert.
ZitatWas ich nicht verstehen, warum Steuern so viele die Rollos nach Azimut?
Und das ist doch das Schöne an FHEM.
Egal wie was gemacht werden soll - jeder kann es so machen wie er/sie es möchte.
ZitatIch nutze sunrise/Sunset dafür. Hier kann ich Korrekturen (Grad) und max/min Zeiten direkt eingeben. Dort könnte man auch direkt auf $we prüfen und entsprechend steuern.
Sunrise/Sunset nutze ich zusätzlich noch - aber nur für Rollläden auf der Südseite.
Der Rest läuft starr nach $we oder eben !($we) und zusätzlich laufen ALLE Rollläden noch nach Aussentemperatur.
Ich war ja auch knapp dran um DJ-Mix einen Code zu posten allerdings fehlen mir noch Angaben bzw. bin ich zu faul um seine restlichen Codes raus zu suchen und zu schauen was funktionieren könnte und was nicht.
Und das ist ja auch hier das schöne - Jeder
kann Lösungen posten.
Muss es aber nicht.
Also DJ-Mix:
Was hast du bisher?
Was funktioniert?
Was klappt nicht?
Welche Fehlermeldungen bekommst du?
Grüße
P.S.: WDD klappt einwandfrei für mAn einfache Dinge.
Wenn es komplexer wird - $we + unterschiedliche Zeiten + zusätzliche Anforderungen kommst du um Perl nicht drum rum.
Was kein Problem ist - FHEM kann "fast" alles ;)
Hallo zusammen,
@Puschel74 / Bennemannc
ich steuere meine Rollladen derzeit über
# Rollladen soll fix um 07:30h jeden Tag hochfahren / außer am WE um 08:30h
define Rollo_KZ1_hoch at *07:30 { if (!($we)) { fhem ("set Rollo_KZ1 on") }}
define Rollo_KZ1_hochWE at *08:30 { if (($we)) { fhem ("set Rollo_KZ1 on") }}
# Rollladen soll variabel je nach Sonnenuntergang, aber nicht vor 17:00h und nicht nach 20:00h jeden Tag runterfahren
define Rollo_KZ1_runter at *{sunset("REAL",480,"17:00","20:00")} set Rollo_KZ1 off
außer den einen Rollladen, wo morgens die Sonne bis in den Mittag steht. Diesen schalte ich mit
define Rollo_KZ2_week WeekdayTimer Rollo_KZ2 12345|07:30|on 12345|20:00|17
define Rollo_KZ2_weekend WeekdayTimer Rollo_KZ2 67|08:30|on 67|20:00|17
und habe versucht den Code für den Azimuth mit einzubringen
define n_Rollladen notify myTwilight.azimuth.* {\
my $Licht = ReadingsVal("myTwilight","azimuth","0");;\
if (($Licht >= 260) && (Value("Rollo_KZ2") ne "up")) {\
fhem("set Rollo_KZ2 up")}\
elsif (($Licht >= 120) && (Value("Rollo_KZ2") ne "pct 50")) {\
fhem("set Rollo_KZ2 pct 50")}\
}]
Diesen Code habe ich aus dem Forum übernommen. Funktioniert als Dummy (bzw. auch auf Rollo_KZ2) auch soweit, bis auf das wenn dieser Code läuft, der WeekendTimer nicht mehr
funktioniert. Den Versuch diesen mit dem $we und sunrise zu nutzen hat auch nicht funktioniert. Da ich von Perl leider keine Erfahrung aufweisen kann, stehe ich hier auf dem Schlauch.
Ich bin für Ideen, Anregungen oder Beispiele offen und werde auch versuchen diese umzusetzen. Sollte es eine andere Möglichkeit geben, die ich noch nicht beachtet habe, so brauche ich hier
ein wenig Input.
Danke und Gruß
Markus
Ok,
jetzt verstehe ich langsam die Probleme und warum du wie was versucht hast zu lösen.
Also erstmal sind hier 3 Paar verschiedene Schuhe die du auch als 3 einzelne Dinge betrachten solltest, die da wären:
1. Der Rollladen fährt morgens hoch
2. Der Rollladen fährt abends runter
3. Der Rollladen fährt bei Sonneneinstrahlung runter
1 und 3 kannst du aber mit zwei Weekdaytimer lösen, wie du es ja auch für den KZ2 machst. Beispiel:
define Rollo_KZ1 WeekdayTimer Rollo_KZ1 12345|07:30|on 12345|{sunset("REAL",480,"17:00","20:00")}|off
define Rollo_KZ1_WE WeekdayTimer Rollo_KZ1 67|08:30|on 12345|{sunset("REAL",480,"17:00","20:00")}|off
Das zweitere ist etwas aufwändiger. Hier benötigen wir meiner Meinung nach einmal die Information wo die Sonne steht aus dem Twighlightmodul und dann brauchen wir noch die Info ob die Sonne überhaupt scheint, sonst fährt der Rollo auch bei bewölktem Himmel runter. Hier taucht auch deine $Licht Variable auf die du verwendet hast, das geht aber nicht so wie du das gemacht hast die muss vorher definiert werden wie in dem Beispiel was du aus dem Forum übernommen hast mit my $Licht = ReadingsVal("myTwilight","azimuth","0");;\
.
Ich könnte mir aber vorstellen das wir hier mit einem Threshold arbeiten müssen sonst wird ja jedesmal wenn die Gradzahl sich ändert dein notify ausgelöst und das dürfte nach 20 Uhr (bzw. Sonnenuntergang) dazu führen, das die Rollladen wieder hochfahren, nachdem sie runtergefahren sind. Zudem kann der Threshold direkt schalten und auch die Temperatur und ob Sonne ja oder nein mit verwalten.... Da brauchst dann auch garnicht so eine komplizierte Bedienung.
Und dann stellt sich mir die Frage, hast du denn einen Sensor um festzustellen das die Sonne scheint? Ich selber mach das bei mir auch noch abhängig von der Temperatur draußen und drinnen.
Hier mal ein Beispiel Threshold für den Azimuth:
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:140:260 Rollo_KZ2|set @ pct 50|set @ on|1
Mit der hysterese bin ich mir nicht sicher das muss so eingestellt sein, das er bei 120 runter und bei 260 rauffährt.... der Unterschied ist 140.... aber ob ich jetzt 120 oder 260 als Basis nehmen muss, musst du mal schauen.
Jedesmal bei einer T.azimuth Änderung schlägt dieses notify an und möchte den Rolladen hochfahren wenn die Sonne nicht mehr scheint und er gerade unten ist.
Mögliche Lösungen: disable bei manuellem Runterfahren und nach Sonnenuntergang. Besser wäre noch, den Schalter vom Rolladen logisch zu trennen und weitere Prüfungen einzubauen.
Wie das bei HM genau funtioniert weiss ich allerdings nicht.
Zitat von: DJ-Mix am 14 Mai 2014, 20:52:46
# Rolladen soll bei Sonnenstand 100° auf 50% fahren und bei 200° wieder auffahren
define CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne notify T.azimuth.* {my $Licht = ReadingsVal("T","azimuth","0");; if (($Licht >= 200) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Auf")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 on")} elsif (($Licht >= 100) && (Value("CUL_HM_HM_LC_Bl1PBU_FM_256453_sonne") ne "Zu")) {fhem("set CUL_HM_HM_LC_Bl1PBU_FM_256453 50")}}
Die Sonnenstände werden berücksichtigt, danach fährt der Rolladen aber nicht mehr runter. Setzt man Ihn manuell auf runter, fährt er wieder hoch!?
Hallo Strauch,
habe es so versucht wie du beschrieben hast. Leider fährt der Rollladen nur nach Threshold. Den Rest ignoriert er einfach.
Hm, verstehe das nicht. Max 260 und min 140 hat er angezeigt. Und stand immer auf Status Active 260!?
Gruß
Markus
Ich muss das mal nachbauen
Gesendet von meinem Nexus 4 mit Tapatalk
ach ok das Problem ist, das ich dem Threshold keine 3 Schaltzustände verpassen kann. Ich kann also nicht sagen von 0-140 an, von 140-260 50% und von 260-360 wieder an. Dafür bräuchte ich ein cmd1_lt. Ich schreib mal Damian an.
Ansonsten helfen solange erstmal 2 Thresholds:
define threshold_azimuth_260 threshold myTwilight:azimuth:0:260
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on Rollo_KZ2|set @ pct 50|set @ on|1
Der erste schaltet sich auf on oder off je nach dem ob unter oder über 260.
Der zweite schaut ob er unter 140 oder über 140 ist und ob der andere threshold auf on oder off steht und schaltet jenachdem den Rolle auf 50% oder auf on. Bei mir klappt das so.
HAllo Strauch,
danke für den Code. Leider erhalte ich aber eine Fehlermeldung wenn ich diesen eintrage
"threshold_Rollladen_azimuth: value:set @ on, cmd_default_index needs 0,1,2"
??? Bin etwas überfragt, da doch eine 1 nach set @ on folgt!?
Gruß
Markus
Da ist weiter vorne ein doppeltes || da muss eines raus.
Gesendet von meinem Nexus 4 mit Tapatalk
@Strauch
danke, werde ich ausprobieren.
Gruß
Markus
Hallo,
@DJ-Mix
Bitte immer die kompletten Codes in den Code-Tags posten.
Jeder der zwischendurch mal in die Beiträge stolpert wäre dir dankbar (so wie auch ich ;) ).
Auch wenn ich dir mit threshold nicht helfen kann :(
Danke.
Grüße
@ Puschel74
das ist kein Code im Beitrag . . . .
ZitatHAllo Strauch,
danke für den Code. Leider erhalte ich aber eine Fehlermeldung wenn ich diesen eintrage
"threshold_Rollladen_azimuth: value:set @ on, cmd_default_index needs 0,1,2"
??? Bin etwas überfragt, da doch eine 1 nach set @ on folgt!?
Gruß
Markus
das ist die Fehlermeldung, die erscheint wenn ich den Code eingegeben habe.
Soll diese auch als Code angezeigt werden? Dann ändere ich das ab.
Gruß
Markus
@Strauch
habe den Code nun mal so eingegeben. Leider funktioniert es so auch nicht ganz.
Threshold 1 funktioniert . . . . define threshold_azimuth_260 threshold myTwilight:azimuth:0:260
Threshold 2 funktioniert auch soweit, setzt aber den Status Active 140 define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
und lässt somit meinen WeekdayTimer nicht mehr funktionieren define KZ_Rollo2_week WeekdayTimer KZ_Rollo2 12345|07:30|on 12345|20:00|17
Der Status von Sensor 2 (Azimuth 260) steht auf off.
Gruß
Markus
Hallo,
Zitatdas ist kein Code im Beitrag
Das war mir schon klar ;)
Fehlermeldungen in Code-Tags heben sich von restlichen Text ab aber ich meinte das du deinen verwendeten Code mal in Code-Tags posten solltest.
Nicht jeder will nach mehr als x Beiträgen die Codes raussuchen die du vielleicht genommen haben könntest ;)
Warum sich bei dir aber threshold und wdt beissen ist mir ein Rätsel.
Das sollte eigentlich nicht vorkommen behaupte ich mal weil
threshold fährt dir die Rollläden nach myTwilight:azimuth - das ist ok.
wdt fährt dir die Rollläden nach Uhrzeit (und Wochentag) - das sollte ja auch klappen.
Warum aber deine Rolläden nichtmehr fahren wenn threshold aktiv war :o
Was ich mir noch vorstellen könnte ist das
azimuth zuschlägt nachdem! wdt die Rollläden schliesst.
Sprich: WeekdayTimer würde die Rollläden schliessen aber myTwilight "funkt" dazwischen.
Beobachte das doch mal im EventMonitor wenn Wdt aktiv werden sollte.
Grüße
Zitat von: DJ-Mix am 23 Mai 2014, 22:19:35
Threshold 2 funktioniert auch soweit, setzt aber den Status Active 140 define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
Was für ein Status der threshold anzeigt spielt keine Rolle Hauptsache er setzt den richtigen set Befehl. Ich denke auch das dein weekdaytimer Problem damit nicht direkt zusammenhängt. Eher wie puschel das die Schaltzeiten sich über werfen.
Gesendet von meinem Nexus 4 mit Tapatalk
@Strauch
leider funktioniert es nicht. nachdem um 20:00 Uhr Weekdaytimer den Rollladen runter gefahren hat, wird er kurze Zeit
später wieder hoch gefahren durch THRESHOLD
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:100 AND threshold_azimuth_200:state:on KZ_Rollo2|set @ pct 50|set @ on|1
Manuelles runter fahren bringt den selben Effekt . . . .
Habe den AZIMUTH Wert auf 200 runter gesetzt. Damit sollte sich THRESHOLD und Weekdaytimer nicht in die Quere kommen
Bin verzweifelt. Leider kenne ich mich mit THRESHOLD so gar nicht aus. Es müsste nach meinem Verständnis so geschaltet werden, dass ab 100° der Rollladen auf 50% runter fährt
und das ganze bis 199°. Ab 200° Soll der Rollladen dann komplett auf fahren. Der nächste THESHOLD darf dann erst wieder in Aktion treten, wenn die 100° erreicht werden. Nur wie ich
das umsetzten kann (muss) weiß ich leider nicht.
Gruß
Markus
Hallo,
das hatte ich doch vermutet ::)
WDT fährt die Rolläden brav aber Threshold funkt dann dazwischen.
WDT verwende ich zwar aber Threshold nicht daher kann ich dir leider keinen funktionierenden Code für Threshold posten der das fahren der Rollläden durch WDT berücksichtigt.
Ich würde das ad hoc lösen indem ich die Rollläden durch meinen eigenen Code verfahren lassen würde oder ggf. einen Dummy zusätzlich schalten würde der in Threshold mit ausgewertet wird - wenn das geht.
Sprich:
Ein at für das hoch- und runterfahren der Rollläden definieren das einen Dummy schaltet
Das at kann auch täglich um z.B. 02:00 neu ausgeführt werden um die Zeitpunkte richtig zu berechnen.
Ein Notify definieren das auf den dummy_at "horcht" ODER auf myTwilight
In diesem notify dann auf azimuth und Uhrzeit prüfen und dann die Rollläden fahren.
Später ein notify für das manuelle fahren der Rolläden mit einbauen.
Grüße
Dann hilft es nur eines den threshold durch den weekdaytimer deaktivieren durch disable 1 bzw. Disable 0. Wenn ich wieder am Rechner Sitze schreib ich was. Bei wieviel grad sitzt denn die Sonne um 20 Uhr?
Gesendet von meinem Nexus 4 mit Tapatalk
@puschel 74
so in der Art hatte ich es zu Anfangs. Aber auch das funktionierte nicht wirklich (bzw. habe ich nicht hinbekommen).
@strauch
also zur Zeit sieht es so aus.
azimuth 283.45 2014-05-25 19:28:14
ich denke das er um 20:00 Uhr so ca. bei 293 steht
Gruß
Markus
So ich will mal die Thresholds erklären, was denke ich verwirrt ist das ich die Zahl im Namen habe:
define threshold_azimuth_260 threshold myTwilight:azimuth:0:260
dieser Threshold macht nichts anderes als wenn der Wert unter 260 ist, als state on zu haben und wenn er über 260 steht ein state off zu haben.
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
Dieser Threshold schaut ob der Wert unter 140 oder über 140 ist und zusätzlich ob der andere threshold auf on oder off steht. Wenn nun der Wert unter 140 ist und der andere Threshold auf on, dann gibt sendet der Threshold ein on an den Rollo, ist der Wert über 140 und der andere Threshold on, dann sendet er ein pct 50. Steigt der Wert nun auf über 260, sende der andere Threshold an diesen ein off und er schaltet wieder auf on zurück.
Willst du nun den Wert von 260 auf 240 ändern musst du folgendes ändern
define threshold_azimuth_260 threshold myTwilight:azimuth:0:240
besser wäre es wohl den threshold nicht "threshold_azimuth_260" zu nennen sondern irgendwie "threshold_azimuth_ober_schaltschwelle" o.ä.
Du kannst jetzt noch in den Weekdaytimer folgendes einbauen, dann ist der threshold nur aktiv, wenn der weekdaytimer sagt der Rollo ist oben (keine Ahnung ob das so geht musst du mal testen):
define Rollo_KZ1 WeekdayTimer Rollo_KZ1 12345|07:30|on;{fhem("attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|off;{fhem("attr threshold_Rollladen_azimuth disable 1")}
define Rollo_KZ1_WE WeekdayTimer Rollo_KZ1 67|08:30|on;{fhem("attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|off;{fhem("attr threshold_Rollladen_azimuth disable 1")}
@Strauch
danke für dein Hilfe. ;)
Leider kennt er das Attribut attr threshold_Rollladen_azimuth disable 0
bzw. attr threshold_Rollladen_azimuth disable 1
nicht.
FHEM übernimmt dann nur den Code bis zum ersten on;
Habe es auch mal mit Set versucht, bringt aber auch kein Ergebnis.
Gruß
Markus
Klappt es denn wenn du
attr threshold_Rollladen_azimuth disable 1
direkt oben in die Zeile eintippst, ansonsten wenn er den Code nur bis zum on nimmt, dann müssen wir halt alles in geschweifte Klammern setzten:
define wd_Rollo_KZ1 WeekdayTimer Rollo_KZ1 12345|07:30|{fhem("set Rollo_KZ1 on;attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|{fhem("set Rollo_KZ1 off;attr threshold_Rollladen_azimuth disable 1")}
define wd_Rollo_KZ1_WE WeekdayTimer Rollo_KZ1 67|08:30|{fhem("set Rollo_KZ1 on;attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|{fhem("set Rollo_KZ1 off;attr threshold_Rollladen_azimuth disable 1")}
Zitat von: strauch am 26 Mai 2014, 14:53:34
define wd_Rollo_KZ1 WeekdayTimer Rollo_KZ1 12345|07:30|{fhem("set Rollo_KZ1 on;attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|{fhem("set Rollo_KZ1 off;attr threshold_Rollladen_azimuth disable 1")}
define wd_Rollo_KZ1_WE WeekdayTimer Rollo_KZ1 67|08:30|{fhem("set Rollo_KZ1 on;attr threshold_Rollladen_azimuth disable 0")} 12345|{sunset("REAL",480,"17:00","20:00")}|{fhem("set Rollo_KZ1 off;attr threshold_Rollladen_azimuth disable 1")}
Man kann neuerdings vor dem Deaktivieren des Moduls eines der beiden definierten Kommandos (cmd1_gt oder cmd2_lt) vom THRESHOLD-Modul ausführen lassen : (siehe hier: http://forum.fhem.de/index.php/topic,10580.msg170921.html#msg170921)
Hier als Beispiel:
attr threshold_Rollladen_azimuth setOnDeactivated cmd1_gt
define wd_Rollo_KZ1 WeekdayTimer threshold_Rollladen_azimuth 12345|07:30|active 12345|{sunset("REAL",480,"17:00","20:00")}|deactivated set @ %
Damit es funktioniert braucht man natürlich die aktuelle Version von THRESHOLD.
Gruß
Damian
@strauch
er übernimmt dann als Next Value / State {fhem("set
@Damian
habe ein Update gemacht, aber setOnDeactivated kennt er trotzdem nicht
Gruß
Markus
Zitat von: DJ-Mix am 26 Mai 2014, 17:05:22
@Damian
habe ein Update gemacht, aber setOnDeactivated kennt er trotzdem nicht
unter: http://fhem.de/commandref_DE.html#THRESHOLD
unter Attributes
steht
setOnDeactivated
Kommando, welches vor dem Deaktivieren ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
also muss es online verfügbar sein.
Gruß
Damian
Zitat von: Damian am 26 Mai 2014, 17:11:12
unter: http://fhem.de/commandref_DE.html#THRESHOLD
unter Attributes
steht
setOnDeactivated
Kommando, welches vor dem Deaktivieren ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
also muss es online verfügbar sein.
Gruß
Damian
Du hast nicht etwa das Uralt-Modul aus dem THRESHOLD-Thread genommen. Das aktuelle Modul ist per FHEM-Update verfügbar. Ich habe gerade die alte Version aus dem ersten Post des THRESHOLD-Thread entfernt, damit keiner auf die Idee kommt das falsche Modul zu laden.
Gruß
Damian
@Damian
jetzt hat es geklappt. Habe nun die aktuelle Version von THRESHOLD drauf.
wenn es nun noch mit meinem Anliegen funktioniert, wäre das perfekt . . . . ;)
Gruß
Markus
@Strauch / Damian
jetzt wird define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
nicht mehr aktualisiert. Der Status steht auf dem 2014-05-26 13:40:24 - somit wird der Rollladen nicht geschaltet.
attr threshold_Rollladen_azimuth setOnDeactivated cmd1_gt
define wd_Rollo_KZ1 WeekdayTimer threshold_Rollladen_azimuth 12345|07:30|active 12345|{sunset("REAL",480,"17:00","20:00")}|deactivated set @ %
schaltet auch nicht.
Gruß
Markus
Zitat von: DJ-Mix am 27 Mai 2014, 19:19:13
@Strauch / Damian
jetzt wird define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
nicht mehr aktualisiert. Der Status steht auf dem 2014-05-26 13:40:24 - somit wird der Rollladen nicht geschaltet.
attr threshold_Rollladen_azimuth setOnDeactivated cmd1_gt
define wd_Rollo_KZ1 WeekdayTimer threshold_Rollladen_azimuth 12345|07:30|active 12345|{sunset("REAL",480,"17:00","20:00")}|deactivated set @ %
schaltet auch nicht
Gruß
Markus
poste mal Output von "list threshold_Rollladen_azimuth"
Gruß
Damian
Internals:
DEF myTwilight:azimuth:0:100 AND threshold_azimuth:state:on CUL_HM_HM_LC_Bl1PBU_FM_256453|set @ pct 50|set @ on|1
NAME threshold_Rollladen_azimuth
NR 376
NTFY_ORDER 50-threshold_Rollladen_azimuth
STATE initialized
TYPE THRESHOLD
cmd1_gt set CUL_HM_HM_LC_Bl1PBU_FM_256453 pct 50
cmd2_lt set CUL_HM_HM_LC_Bl1PBU_FM_256453 on
cmd_default 1
hysteresis 0
init_desired_value 100
offset 0
operator AND
sensor myTwilight
sensor2 threshold_azimuth
sensor2_reading state
sensor2_state on
sensor_reading azimuth
Readings:
2014-05-27 19:41:57 cmd wait for next cmd
2014-05-27 19:41:57 desired_value 100
2014-05-27 19:41:57 mode active
2014-05-26 13:40:24 sensor2_state on
2014-05-26 13:52:31 sensor_value 189.89
2014-05-27 10:00:49 state active 100.0
2014-05-27 19:41:57 threshold_max 100
2014-05-27 19:41:57 threshold_min 100
Attributes:
disable 1")}
number_format %.1f
setOnDeactivated cmd1_gt
state_format _m _dv
Ps. Bitte nicht an der Namensgebung stören. Ich benenne diese um wenn es funktioniert . . . . .
Gruß
Markus
disable 1")}
ist falsch, da scheint die Konstruktion mit dem sunset im Aufruf des WeekdayTimers nicht richtig zu funktionieren:
lösche erstemal das disable attribut
und teste erst mal mit festen Zeiten:
define wd_Rollo_KZ1 WeekdayTimer threshold_Rollladen_azimuth 12345|07:30|active 12345|20:00|deactivated set @ %
wenn das klappt, dann können wir weiter schauen.
Gruß
Damian
@Damian
leider funktioniert es nicht. Der Rollladen fährt immer auf 100% egal welcher Status THRESHOLD anzeigt.
Wenn ich Manuell runter fahre (Bsp. um 20:00 Uhr) wird er kurze Zeit später auch wieder hoch gefahren.
Bin echt ratlos.
Gruß
Markus
Zitat von: DJ-Mix am 29 Mai 2014, 21:46:07
@Damian
leider funktioniert es nicht. Der Rollladen fährt immer auf 100% egal welcher Status THRESHOLD anzeigt.
Wenn ich Manuell runter fahre (Bsp. um 20:00 Uhr) wird er kurze Zeit später auch wieder hoch gefahren.
Bin echt ratlos.
Also, wenn dein THRESHOLD-Modul den Status "deactivated" anzeigt. Dann ist es auch deaktiviert und macht auch nichts. Wenn der Status von threshold_Rollladen_azimuth "active" ist, dann wurde es nicht korrekt über den weekdaytimer deaktiviert (siehe Log).
Wenn dein Rolladen trotz des Status "deactivated" sich noch selbstständig macht, dann musst du noch etwas anders definiert haben, was den Rolladen bewegt.
Gruß
Damian
@Damian
myTwilight:azimuth:0:100 AND threshold_azimuth:state:on CUL_HM_HM_LC_Bl1PBU_FM_52A6AB|set @ pct 50|set @ on
liefert aktuell den Status "Active:100" - cmd2_lt wird ausgeführt (Rollladen fährt auf hoch)
myTwilight:azimuth:0:200
steht auf off
myTwilight steht bei 315.88
threshold_Rollladen_azimuth 12345|07:30|active 12345|20:00|deactivated set @ %
steht auf deactivated
Gruß
Markus
Zitat von: DJ-Mix am 29 Mai 2014, 22:26:41
@Damian
myTwilight:azimuth:0:100 AND threshold_azimuth:state:on CUL_HM_HM_LC_Bl1PBU_FM_52A6AB|set @ pct 50|set @ on
liefert aktuell den Status "Active:100" - cmd2_lt wird ausgeführt (Rollladen fährt auf hoch)
Gruß
Markus
"threshold_Rollladen_azimuth" sollte aber nach 20:00 auf "deactivated" stehen und nicht auf "active:100"
Gruß
Damian
@Damian
da scheint irgendwo der Fehler zu sein. Sehe ich auch so. Müsste auf Deactivated stehen - tut er aber nicht?
Wo kann hier der Fehler liegen??? Hast Du vielleicht einen Ahnung wo ich schauen könnte?
Danke
Gruß
Markus
Zitat von: DJ-Mix am 29 Mai 2014, 22:41:28
@Damian
da scheint irgendwo der Fehler zu sein. Sehe ich auch so. Müsste auf Deactivated stehen - tut er aber nicht?
Wo kann hier der Fehler liegen??? Hast Du vielleicht einen Ahnung wo ich schauen könnte?
Danke
Gruß
Markus
Du kannst es erstmal manuell versuchen: "set threshold_Rollladen_azimuth deactivated". Nun sollte der Status "deactivated" beim threshold_Rollladen_azimuth sein.
Du kannst auch im Log um 20:00 schauen, ob es irgendwelche Meldungen von Weekdaytimer gibt.
Was liefert "list wd_Rollo_KZ1"?
Gruß
Damian
@Damian
wenn ich manuell den Code ausführe set threshold_Rollladen_azimuth deactivated
geht der Rollladen auf 50%.
list ergibt.
Internals:
DEF threshold_Rollladen_azimuth 12345|07:30|active 12345|20:00|deactivated set @ %
DEVICE threshold_Rollladen_azimuth
LANGUAGE de
NAME wd_Rollo_KZ1
NR 789
PERLTIMEUPDATEMODE 0
PROFILE 1: Montag 07:30 active, 20:00 deactivated,
PROFILE 2: Dienstag 07:30 active, 20:00 deactivated,
PROFILE 3: Mittwoch 07:30 active, 20:00 deactivated,
PROFILE 4: Donnerstag 07:30 active, 20:00 deactivated,
PROFILE 5: Freitag 07:30 active, 20:00 deactivated,
STATE deactivated
TYPE WeekdayTimer
Readings:
2014-05-30 20:40:29 nextUpdate 02.06.2014 07:30:00
2014-05-30 20:40:29 nextValue active
2014-05-30 20:40:29 state deactivated
Timer:
wd_Rollo_KZ1_update:
HASH wd_Rollo_KZ1
MODIFIER Update
NAME wd_Rollo_KZ1_Update
Helper:
COMMAND set @ %
DESIRED_TEMP_READING
SWITCHINGTIMES 12345|07:30|active 12345|20:00|deactivated
Switchingtime:
0:
1:
07:30:00 active
20:00:00 deactivated
2:
07:30:00 active
20:00:00 deactivated
3:
07:30:00 active
20:00:00 deactivated
4:
07:30:00 active
20:00:00 deactivated
5:
07:30:00 active
20:00:00 deactivated
6:
Attributes:
Gruß
Markus
Zitat von: DJ-Mix am 30 Mai 2014, 20:44:55
@Damian
wenn ich manuell den Code ausführe set threshold_Rollladen_azimuth deactivated
geht der Rollladen auf 50%.
list ergibt.
funktioniert also wie programmiert:
mit:
attr threshold_Rollladen_azimuth setOnDeactivated cmd1_gt
wurde ja festgelegt, dass beim Deaktivieren das erste Kommando (cmd1_gt) ausgeführt werden soll und das ist lt. deiner Definition:
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
mit attr threshold_Rollladen_azimuth setOnDeactivated cmd2_lt
würde er das zweite ausführen und das ist:
define threshold_Rollladen_azimuth threshold myTwilight:azimuth:0:140 AND threshold_azimuth_260:state:on KZ_Rollo2|set @ pct 50|set @ on|1
es hängt also davon ab was du möchtest.
Wenn du "set KZ_Rollo2 off" beim Deaktivieren haben wolltest, dann wirst du das separat angeben müssen (THRESHOLD kennt nur zwei Zustande und die hast du definiert als: "set .. pct 50" und "set ... on")
Gruß
Damian
@Damian
Kann ich THRESHOLD den dritten Status ebenfalls übergeben? Und wenn wie?
Oder muss ich hier etwas separat ausführen?
Gruß
Markus
Zitat von: DJ-Mix am 31 Mai 2014, 21:59:26
@Damian
Kann ich THRESHOLD den dritten Status ebenfalls übergeben? Und wenn wie?
nein.
Zitat
Oder muss ich hier etwas separat ausführen?
z. B.:
define Rolladen_runter at *20:01 set KZ_Rollo2 off
dann kannst du auch:
attr threshold_Rollladen_azimuth setOnDeactivated cmd1_gt
löschen. Den Rollladen beim Deaktivieren auf 50 setzen braucht man dann nicht, denn eine Minute später wird der Rollladen eh runtergefahren.
Gruß
Damian