Ankündigung

Einklappen
Keine Ankündigung bisher.

Time cron funktioniert nicht

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

    Time cron funktioniert nicht

    Hi,


    Ich bin ein wenig am verzweifeln.
    Ich probiere nun schon einige Zeit aus eine Rule mit getriggert von Time cron bei mir zum laufen zu bekommen, aber es will nicht.

    Ich Endeffekt will ich eine Abwesenheits-simulation basteln.

    Aber leider wird die Rule nie gecalled, bzw. das Licht nicht ausgemacht.

    Ist vll in meinem Code ein Fehler oder habe ich einen Import vergessen oder muss auf dem Raspberry Pi ncoh etwas für Cron installiert werden?

    Mein Rule File sieht aktuell so aus: (um 21 Uhr sollen die entsprechenden Commands ausgeführt werden).




    import org.openhab.core.library.types.*
    import org.openhab.model.script.actions.*
    import java.lang.Math
    import java.util.Calendar
    import java.util.Date
    import java.util.TimeZone
    import java.text.SimpleDateFormat
    import org.joda.time.*
    import org.openhab.core.persistence.*
    import org.java.math.*


    rule "Test for Sim"
    when
    Time cron "0 0 21 * * ?"
    then
    sendCommand(Licht_EG_KuecheLed, OFF)
    if(Scene_Simulation.state == ON){
    sendCommand(Licht_EG_Esszimmer, OFF)
    sendCommand(Licht_EG_Wohnzimmer, OFF)
    //sendCommand(Shutter_OG_Schlafzimmer, DOWN)
    }
    end








    #2
    Da die Actions sendCommand und postUpdate seit ~ 1.8.2 etwas buggy sind, empfehle ich immer gerne die Verwendung der Methoden. Um sicher festzustellen, ob die Rule überhaupt getriggert wird, bietet sich ein logInfo an. Komplett sähe die Rule dann so aus:

    Code:
    rule "Test for Sim"
    when
        Time cron "0 0 21 * * ?"
    then
        logInfo("TestRule","Ausgelöst um {} ",now.toString)
        Licht_EG_KuecheLed.sendCommand(OFF)
        logInfo("TestRule","Scene_Simulation ist {} ",Scene_Simulation.state.toString)
        if(Scene_Simulation.state == ON) {
            Licht_EG_Esszimmer.sendCommand(OFF)
            Licht_EG_Wohnzimmer.sendCommand(OFF)
            //Shutter_OG_Schlafzimmer.sendCommand(DOWN)
        }
    end
    Sobald klar ist, dass die Rule läuft, kannst Du die logZeilen natürlich auskommentieren oder entfernen.

    Kommentar


      #3
      Zitat von udo1toni Beitrag anzeigen
      Da die Actions sendCommand und postUpdate seit ~ 1.8.2
      Seit 1.8.2? Das ist doch die aktuellste Version! Hab am Wochenende erst von 1.7.0 auf 1.8.2 upgedated. Konnte bisher kein Fehlverhalten in meinen Rules feststellen. Denke aber, dass ich fast überall die objektorientierte Notation verwende.

      Habe mir durch den Update auf 1.8.2 erhofft, dass endlich der FileNotFound-Bug für die Rules beim Starten von openHAB gefixt ist. Leider ist das nicht der Fall.

      Gruß,
      thoern

      Kommentar


        #4
        Mir war das früher auch nicht bewusst, aber es ist wohl tatsächlich unterschiedlicher Code für die Methode und die Action. Die jetzt auftretenden Probleme hatte ich selbst nie, weil ich schon immer objektorientiert programmiert habe (VBA halt... )

        Kommentar


          #5
          Wo finde ich denn dann das log dazu (von der loginfo funktion)??

          Aber ich glaube mein problem ist etwas rudimentärer. Ich bekomme unter logs/openhab.log folgendes reingeschrieben:


          Loading model 'simulation.rules'
          2016-04-26 19:57:19.287 [WARN ] [c.internal.ModelRepositoryImpl] - Configuration model 'simulation.rules' is either empty or cannot be parsed correctly!



          Andere Rules aus anderen files funktionieren aber einwandfrei.

          Kommentar


            #6
            Wie hast Du die Datei erstellt? Designer?

            Kommentar


              #7
              ne im Designer weiß ich nicht wie ich die erstellt bekomme. Ich habe die von hand erstellt ja, bzw. ich habe eine existierende kopiert und umbenannt.


              ​Wenn ich die rules in ein anderes rule file kopiere funktioniert es einwandfrei.

              Kommentar


                #8
                Im Designer neue Datei anlegen: Wähle ein existierendes File (also in der Dateiliste im Designer), kopiere es und benenne die Kopie um. Ist nicht intuitiv, funktioniert aber. Vor allem vermeidest Du damit, dass z.B. eine falsche Codierung verwendet wird (das ist eine der möglichen Ursachen für ein nicht funktionierendes Rule-File)

                Kommentar

                Lädt...
                X