Ankündigung

Einklappen
Keine Ankündigung bisher.

brauche Hilfe bei Datentypen

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

  • boxerfahrer
    antwortet
    Hallo thoern,

    das mit der zweiten if-Bedingung klappt leider nicht weil es zwei unabhängige Quellen für Änderungen der Lüftungsstufe gibt - zum Einen ein Zeitprogramm, zum anderen Taster in Küche und Toilette, die die Lüftung für einen begrenzten Zeitraum auf volle Leistung schalten sollen. Eine Abfrage auf Statusänderungen der Lüftungsstufe könnte also von Änderungen durch das Zeitschaltprogramm "sabotiert" werden.

    Du hast Recht mit dem Thread - ich werde einen neuen mit der Frage aufmachen. Danke für Deine Hilfe!

    - boxerfahrer

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Hi,

    wieso prüfst du nicht einfach nochmals in einer zweiten if-Bedingung $Lueftung_Stufe->state ab?

    Also irgendwie so:

    Code:
    if ($Lueftung_Stufe->state_changed) {
      if ($Lueftung_Stufe->state eq 'off') {
       ......      
      }
    }
    PS: Man könnte dir vielleicht schneller helfen, wenn du nicht den Thread vergewaltigt hättest und einen neuen Thread zum Thema "Misterhouse blabla ..." gestartet hättest. Dann würden vielleicht mehr MH-User das Thema lesen.

    Gruss

    Einen Kommentar schreiben:


  • boxerfahrer
    antwortet
    perfekt, danke! Ich versuche, die Lüftung nach Betätigen einer Taste für einen definierten Zeitraum hochzufahren

    Code:
    if ($Lueftung_hochfahren->state_changed) {
      if ($Lueftung_hochfahren->state eq 'on') {
          my $letzte_stufe = $Lueftung_Stufe->state;
          $Lueftung_Stufe->set_with_timer(100, 600, $letzte_stufe);
          $Lueftung_hochfahren->set(off);
      }
    }
    Das hochfahren funktioniert auch, und nach 600 sekunden fährt die Lüftung auch wieder runter, weil aber das erste if nicht mehr zieht, kann ich die Taste nicht zurücksetzen -> LED am Schalter leuchtet weiter. Kann man das Ablaufen des Timers, den ich mit der Methode "set_with_timer" setze, irgendwie überwachen? Oder gibt es eine Alternative? Ich habe in der mh doku gesehen dass es ein Timer Objekt mit einer expired Methode gibt, werde aber aus den Beispielen nicht schlau.

    Grüsse
    - boxerfahrer

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Code:
    if ($kuechentaster->state_changed) {
        do_something
    }
    oder
    Code:
    if ($kuechentaster->state eq 'on') {
        do_something
    }
    Je nachdem, was du machen möchtest...

    Ja, Variablen sind im Userscript persistent.

    Gruß,
    thoern

    Einen Kommentar schreiben:


  • boxerfahrer
    antwortet
    persistenz

    Ich habe noch eine Frage zu den perl scripts bei mh. Ich will den Statuswechsel eines Tasters in der Küche mitbekommen und dann für einen begrenzten Zeitraum die Lüftung aufdrehen. Wie bekomme ich denn den Statuswechsel mit bzw. wie merke ich mir zwischen zwei Abarbeitungen des scripts durch mh den Status? Sind die perl variablen persistent?

    Merci für Eure Hilfe
    - boxerfahrer

    Einen Kommentar schreiben:


  • MarkusL
    antwortet
    ...oder Apple + n :-)


    Grüße,
    Markus

    Einen Kommentar schreiben:


  • EPIX
    antwortet
    die Taste ist rechts, neben dem "Ä"...
    über AltGr kannnst du das 3. Zeichern erreichen, so wie ² oder ³ oder |....

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Hoi Thomas

    Ich meinte eigentlich perl ist mächtig und ich lerne noch...
    (Hatte gerade einen 12 Stunden nonstop Programmierversuch hinter mir.)
    Die ganzen Sachen mit ˜ und so sind mir neu, ich kenne die Taste dafür nichtmal...

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Zitat von Bodo Beitrag anzeigen
    Hoi Michael
    Perl ist die Seuche ...
    Naja... das ist jetzt wirklich keine Perl-Besonderheit:

    Code:
    octopus:~# echo $SHELL
    /bin/bash
    octopus:~# x=6
    octopus:~# echo $x
    6
    octopus:~# echo "$x"
    6
    octopus:~# echo '$x'
    $x
    octopus:~#
    Gruß,
    thoern

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von makki Beitrag anzeigen
    In single-quotes werden variablen nicht ausgewertet.
    Hoi Michael
    Perl ist die Seuche ...

    Einen Kommentar schreiben:


  • makki
    antwortet
    In single-quotes werden variablen nicht ausgewertet.
    Also
    Code:
    my $wert = 17;
    print "Wert = $wert";
    ergibt
    Code:
    Wert = 17
    Code:
    print 'Wert = $wert';
    ergibt
    Code:
    Wert = $wert
    HTH,

    Makki

    Einen Kommentar schreiben:


  • boxerfahrer
    antwortet
    Hallo Thoern,

    ne, aufgeben gilt nicht :-) Ich habe momentan einfach viel auf der Arbeit zu tun und zwei kleine Kinder zuhause, die mich abends nicht aus den Augen lassen.

    Ich habe die Frage mit den single-Quotes nicht verstanden - liegt wohl daran dass ich sicherlich kein perl Experte bin.

    Viele Grüße
    -boxerfahrer

    Einen Kommentar schreiben:


  • thoern
    antwortet
    weitergekommen oder aufgegeben?

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Ach ja,

    ist das Absicht, dass '$socket' in Single-Quotes steht - weiss nicht genau, was du da bezweckst, wird in dem Fall halt nicht interpoliert, vielleicht möchtest du aber genau das tun....?!

    Gruß,
    thoern

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Hi,

    zwecks Doku kann ich dich in diesem Fall auch nur auf die Misterhouse-Doku verweisen. Das hat alles nichts mit MisterEIB zu tun.
    Aus der Ferne, kann ich dir hier wohl kaum weiterhelfen - Debuggen ist angesagt

    Gruß,
    thoern

    Einen Kommentar schreiben:

Lädt...
X