Ankündigung

Einklappen
Keine Ankündigung bisher.

Misterhouse: Befehl 1x ausführen und Hash Werte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Misterhouse: Befehl 1x ausführen und Hash Werte

    Hallo zusammen,

    erst einmal allen ein frohes neues Jahr mit viel Glück und Gesundheit :-)

    Über die Feiertage ging mir die bisherige Rolladensteuerung mal wieder auf den Keks und ich dachte mir dies über Misterhouse und eine Logik zu lösen. Aber: Ging natürlich wiede rnicht, wie ich wollte.

    Also: Ich möchte wenn es nach 16:00 Uhr ist und eine gewisse Helligkeit unterschritten wird (z.B. 50 Lux) dann sollen die Rolladen runter fahren. Dies geht und funktioniert mit einer "einfachen" Verknüpfung (dachte ich, siehe unten). Jedoch möchte ich, bei Bedarf die eine oder andere Rollade wieder hochfahren. Dies wird jedoch verhindert, da MH jedesmal feststellt: Oh, es ist nach 4 und zu dunkel :-(

    Hat jemand einen Tip für mich?? In den Sample-Scripten bei Misterhouse und Google war ich bislang erfolglos :-(

    Ergänzung:
    Leider funktioniert es doch nicht so richtig mit der Logik, da der Wert aus dem Hell/Temp Sensor als Hash Wert kommt. Und dies scheine ich einfach nicht wirklich zu verstehen und umsetzen zu können :-(

    Ich versuchte:
    PHP-Code:
    if (time_greater_or_equal '4 pm' && (".state $Helligkeit_Norden < 0")) {
    print_log "------------> Es ist dunkel draussen";
    print_log "########## "$Helligkeit_Norden;
    print_log "########## ".state $Helligkeit_Norden;
    print_log "########## "$Aussentemp;
    #print_log "########## "state $Aussentemp;
    } else {
    print_log "------------> Es ist hell draussen";

    Ich habe schon verschiedene Möglichenkeiten mit .state, $Var->state(), $Var->(state) probiert, aber....

    VG,
    Joerg

    #2
    Vorwort: ich habe MisterHouse noch nicht benutzt, daher mag dieser Tipp ggf. nicht passen...
    Zitat von JoergA Beitrag anzeigen
    Also: Ich möchte wenn es nach 16:00 Uhr ist und eine gewisse Helligkeit unterschritten wird (z.B. 50 Lux) dann sollen die Rolladen runter fahren. Dies geht und funktioniert mit einer "einfachen" Verknüpfung (dachte ich, siehe unten). Jedoch möchte ich, bei Bedarf die eine oder andere Rollade wieder hochfahren. Dies wird jedoch verhindert, da MH jedesmal feststellt: Oh, es ist nach 4 und zu dunkel :-(
    Klingt danach, als ob Du einen "Edge Detect" dahinter schalten müsstest.
    D.h. der Fahr-Befehl wird nur gesendet, wenn sich der Status von (Nach-16-Uhr UND weniger-50-Lux) geändert hat. Wenn man's gut machen will, dann müsste das auch noch damit verknüpft werden, dass dieser Fahrbefehl nur 1x alle 12 Stunden ausgeführt wird (sonst könnte ein vorbeifahrendes Auto den gerade per Hand hochgefahrenen Rollladen wieder runter fahren lassen...)
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Hi,

      das Problem ist ja, dass Dein Helligkeitssensor den Lux Wert zyklisch sendet und damit die Rolladen wieder nach unten fährt, auch wenn Du sie manuell nach oben gefahren hast.

      Ich würde mir in einer Variable merken, ob die Rollos heute schon gefahren sind oder noch nicht. Und mit dem Script, welches die Rollos am nächsten Tag morgens wieder hochfährt, setzt Du die Variable wieder zurück:

      Als Beispiel:


      PHP-Code:
      if (time_greater_or_equal '4 pm' && (".state $Helligkeit_Norden < 0")  && ($gefahren 0)) {
      print_log "------------> Es ist dunkel draussen";
      print_log "########## "$Helligkeit_Norden;
      print_log "########## ".state $Helligkeit_Norden;
      print_log "########## "$Aussentemp;
      #print_log "########## "state $Aussentemp;
      $gefahren ;
      } else {
      print_log "------------> Es ist hell draussen";

      "Hochfahrscript":
      PHP-Code:
      if (time_cron('00 7 * * *)) { 
      set $EG_Rolladen UP; 
       
      $gefahren = 0 ;
       
      }
      (...) 
      Wäre zumindest eine Idee.

      Du müsstest allerdings auch den manuell nach oben gefahrenen Rolladen auch am gleichen Abend manuell wieder runterfahren...

      Oder Du arbeitest "unabhängig" von MH und setzt eine Sperre auf den Aktorkanal ...

      Gruß

      Daniel
      Endlich kann Ich Bei Euch mitreden ...

      Kommentar


        #4
        Hi,

        ich würde versuchen, das ganze Eventbasiert zu machen und das Erreichen der Helligkeitsschwelle abzufragen, sprich der Befehl wird nur einmal ausgelöst, wenn der Schwellwert unterschritten wird.

        Dazu muss man (oder auch nicht?) noch eine Hilfsvariable (am besten eib-item) definieren, die bei kleiner/größer 50 Lux umschaltet.
        Das kann ja ruhig über eine IF Schleife laufen, die bei jedem Durchgang den Wert aktualisiert.
        Dann kannst du mit state_changed einen Befehl senden, wenn sich die Binärvariable ändert.

        Dadurch kannst du nach Eintritt der Dunkelheit auch wieder hochfahren und es wird erst beim nächsten dunkelwerden neu gefahren.

        Wenns geklappt hat, Resultat bitte posten (-> Code Schnipsel Forum) .

        Die Abfrage am Ende sähe in etwa so aus:
        Code:
        [COLOR=#000000][COLOR=#007700]if ([/COLOR][COLOR=#0000bb]time_greater_or_equal [/COLOR][COLOR=#dd0000]'4 pm' [/COLOR][COLOR=#007700]&& [/COLOR][COLOR=#dd0000]state_changed $Helligkeit_Norden_Binaer eq OFF[/COLOR][COLOR=#007700]) {[/COLOR][/COLOR]

        Kommentar


          #5
          Hi all,

          erst einmal besten Dank für die vielen Tips/Anregungen, welche ich bestimmt testen/ausprobieren werde!

          Jedoch scheitert es derzeit noch an dem Vergleich des Wertes, da nur ein Hash-Wert geliefert wird :-(

          Auch ein:
          PHP-Code:
          if ((state $Helligkeit_Norden) <= 2) {
           
          print_log "------------> Es ist dunkel draussen";
           
          print_log "########## "$Helligkeit_Norden;
           
          print_log "########## ",state $Helligkeit_Norden;
          } else {
           
          print_log "------------> Es ist hell draussen";
           
          print_log "########## ",state $Helligkeit_Norden;

          geht an dieser Stelle nicht, da z.B. bei derzeit 534 Lux trotzdem dunkel angezeigt wird :-(

          Any Ideas???

          VG,
          Joerg

          Kommentar


            #6
            Wie sieht die Definition der Helligkeit_Norden Variable in eib-items.mht aus?

            Kommentar


              #7
              Hallo Ralf,

              EIB5, 0/8/15, Helligkeit_Norden, Status, R

              Besten Gruß,
              Joerg

              Kommentar


                #8
                Müsste eigentlich gehen mit

                Code:
                if (state $Helligkeit_Norden <= 2) {
                Zumindest geht das bei mir so mit EIB5 Werten die ich für Temperaturwerte nutze.

                Kommentar

                Lädt...
                X