Ankündigung

Einklappen
Keine Ankündigung bisher.

Epression not allowed

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

    Epression not allowed

    Hallo zusammen,

    ich habe in einer Rule die folgende Meldung:

    This expression is not allowed in this context, since it doesn't cause any side effects

    Es wird aber keine Zeile angegeben, wo der Fehler stattfindet.

    Jemand eine Idee?

    #2
    Evtl. postest Du mal die Rule und auch die Fehlermeldung aus Karaf? Die dazugehörigen Items/Things, etc. So ganz ohne Information ist dies schwierig nachzuempfinden

    Kommentar


      #3
      Code:
      /************************************************** Alltag Rules ********************************************/
      
      rule "Schlafen"
      when
          Item all_schlafen received command or
          Item all_schlafen_prion_schalter received command
          
      then
          if (receivedCommand==ON) {
      
          
          dg_schlafzimmerrechts_rol.sendCommand(100)
          dg_schlafzimmerlinks_rol.sendCommand(100)
          dg_kinderzimmer2_rol.sendCommand(100)
          dg_schlafzimmerrechts_rol_so.sendCommand(ON)
          dg_schlafzimmerlinks_rol_so.sendCommand(ON)
          dg_kinderzimmer2_rol_so.sendCommand(ON)
          dg_schlafzimmer1_db.sendCommand(OFF)
          dg_schlafzimmer2_db.sendCommand(OFF)
          dg_kinderzimmer2_db.sendCommand(OFF)
          dg_badezimmer2_db.sendCommand(OFF)
          dg_badezimmer2_wb.sendCommand(OFF)
          dg_schlafzimmer_kleiderschrank.sendCommand(OFF)
          
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {    
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(60)
          echo_dot_schlafzimmer_TTS.sendCommand('Gute Nacht Kerstin und Sascha')
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(30)
          }
          
          
          }
          else {
          
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {    
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(60)
          echo_dot_schlafzimmer_TTS.sendCommand('Guten Morgen Kerstin und Sascha')
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(30)
          }
          
      
          dg_schlafzimmerrechts_rol_so.sendCommand(OFF)
          dg_schlafzimmerlinks_rol_so.sendCommand(OFF)
          dg_kinderzimmer2_rol_so.sendCommand(OFF)
          dg_schlafzimmerrechts_rol.sendCommand(0)
          dg_schlafzimmerlinks_rol.sendCommand(0)
          dg_kinderzimmer2_rol.sendCommand(0)
      
          if (ws_daemmerungswert.state < 100) {
          
          dg_schlafzimmer1_db.sendCommand(ON)
          dg_schlafzimmer2_db.sendCommand(ON)
      
          }
          }
          
      end
      
      rule "Kochen"
      when
          Item all_kochen received command or
          Item all_kochen_prion_schalter received command
      then
           if (receivedCommand==ON) {
          
              if (ws_helligkeit_ost.state < 100) {
              
                  eg_kueche_db.sendCommand(ON)
              
              }
              
              eg_kueche_arbeitsplatte.sendCommand(ON)
              eg_kueche_haengeschraenke.sendCommand(ON)
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {    
          Thread::sleep(2500)
          echo_wohnzimmer_TTS_Volume.sendCommand(60)
          echo_wohnzimmer_TTS.sendCommand('Viel Spaß beim Kochen')
          Thread::sleep(2500)
          echo_wohnzimmer_TTS_Volume.sendCommand(30)
          }
              }
          else {
      
          eg_kueche_db.sendCommand(OFF)
          eg_kueche_arbeitsplatte.sendCommand(OFF)
          eg_kueche_haengeschraenke.sendCommand(OFF)
      
          }
      end
      
      rule "Kind schlafen"
      when
          Item all_kind_schlafen received command or
          Item all_kind_schlafen_prion_schalter received command
      then
         if (receivedCommand==ON) {
              
          dg_schlafzimmerrechts_rol.sendCommand(100)
          dg_schlafzimmerlinks_rol.sendCommand(100)
          dg_kinderzimmer2_rol.sendCommand(100)
          dg_schlafzimmerlinks_rol_so.sendCommand(ON)
          dg_schlafzimmerrechts_rol_so.sendCommand(ON)
          dg_kinderzimmer2_rol_so.sendCommand(ON)
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(60)
          echo_dot_schlafzimmer_TTS.sendCommand('Schlaf gut kleiner Hendrik')
          Thread::sleep(2500)
          echo_dot_schlafzimmer_TTS_Volume.sendCommand(30)
      }
              }
              
          else {
      
          dg_schlafzimmerlinks_rol_so.sendCommand(OFF)
          dg_schlafzimmerrechts_rol_so.sendCommand(OFF)
          dg_kinderzimmer2_rol_so.sendCommand(OFF)
          dg_schlafzimmerrechts_rol.sendCommand(0)
          dg_schlafzimmerlinks_rol.sendCommand(0)
          dg_kinderzimmer2_rol.sendCommand(0)
      
      
          }
      end
      
      rule "Hendrik schlafen"
      when
          Item all_hendrik_schlafen received command or
          Item all_hendrik_schlafen_prion_schalter received command
      then
         if (receivedCommand==ON) {
          
          if (ws_daemmerungswert.state < 10) {
      
          og_kinderzimmer_rol.sendCommand(90)
          og_kinderzimmer_rol_so.sendCommand(ON)
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
          Thread::sleep(2500)
          echo_dot_kinderzimmer_TTS_Volume.sendCommand(60)
          echo_dot_kinderzimmer_TTS.sendCommand('Schlaf gut großer Hendrik')
          Thread::sleep(2500)
          echo_dot_kinderzimmer_TTS_Volume.sendCommand(30)
          
          }
          }
          
          if (ws_daemmerungswert.state > 10) {
      
          og_kinderzimmer_rol.sendCommand(95)
          og_kinderzimmer_rol_so.sendCommand(ON)
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
          Thread::sleep(2500)
          echo_dot_kinderzimmer_TTS_Volume.sendCommand(60)
          echo_dot_kinderzimmer_TTS.sendCommand('Schlaf gut großer Hendrik')
          Thread::sleep(2500)
          echo_dot_kinderzimmer_TTS_Volume.sendCommand(30)
          
          }
          }
      
      }
                  
          else {
          og_kinderzimmer_rol_so.sendCommand(OFF)
          og_kinderzimmer_rol.sendCommand(0)
          
      
          }
      end
      
      rule "Weihnachtsbeleuchtung Ende November bis Mitte Januar"
      when
      
      Item ws_daemmerung received command
      
      then
      
      if (receivedCommand==ON) { 
      
      if((now.getMonth == 11 && now.DayOfMonth > 26) || (now.getMonth == 12) || (now.getMonth == 1 && now.getDayOfMonth < 16)) {
      
      au_terrasse_st.sendCommand(ON)
      au_eingang_st.sendCommand(ON)
      
      }
      }
      else {
      
      if (receivedCommand==OFF) { 
      
      if((now.getMonth == 11 && now.DayOfMonth > 26) || (now.getMonth == 12) || (now.getMonth == 1 && now.getDayOfMonth < 16)) {
      
      au_terrasse_st.sendCommand(OFF)
      au_eingang_st.sendCommand(OFF)
      
      }
      }
      }
      
      end 
      
      rule "Sascha Homeoffice"
      when
      
          Item all_sascha_homeoffice received command or
          Item all_sascha_homeoffice received command
      then
      
         if (receivedCommand==ON) {
            
          pc_arbeitszimmer_sascha.sendCommand(ON)
          og_arbeitszimmersascha_rol.sendCommand(0)
          og_arbeitszimmersascha_schreibtisch(ON)
          
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
          Thread::sleep(2500)
          echo_dot_arbeitszimmer_sascha_TTS_Volume.sendCommand(60)
          echo_dot_arbeitszimmer_sascha_TTS.sendCommand('Ich wünsche dir einen angenehmen Homeoffice Tag')
          Thread::sleep(2500)
          echo_dot_arbeitszimmer_sascha_TTS_Volume.sendCommand(30)
          }
      }
              
          else {
      
          pc_arbeitszimmer_sascha.sendCommand(OFF)
          og_arbeitszimmersascha_schreibtisch(OFF)
          
          if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
          Thread::sleep(2500)
          echo_dot_arbeitszimmer_sascha_TTS_Volume.sendCommand(60)
          echo_dot_arbeitszimmer_sascha_TTS.sendCommand('Ich wünsche dir einen schönen Feierabend')
          Thread::sleep(2500)
          echo_dot_arbeitszimmer_sascha_TTS_Volume.sendCommand(30)
      }
          }
      end

      Kommentar


        #4
        Und wo genau kommt der Fehler?

        Und
        rule "Sascha Homeoffice"
        when Item all_sascha_homeoffice received command or
        Item all_sascha_homeoffice received command then
        warum fragst Du 2x das gleiche Item ab?

        Kommentar


          #5
          Kann ich dir leider nicht sagen, da die Log File von Openhab mir das nicht sagt.
          Wie kann das erkennen.

          Normalerweise sagt Openhab immer in welcher Zeile der Fehler auftritt.

          Kommentar


            #6
            Aber welche der Rules laufen denn nicht?? Alle?

            Falls Du in der Karaf Konsole oder in den Log Files keine Einträge erhälst, wo bei mind. das getriggerte Event einen Eintrag generieren müsste, baue ich mir immer Logging Infos die einzelnen Stellen. Hierzu nutze ich in der Regel println oder logInfo.

            Dazu musst Du natürlich in der Karaf Konsole mit log:tail auch die Logs anzeigen lassen :-)

            Code:
            rule "Sascha Homeoffice"
            when
            
                Item all_sascha_homeoffice received command or
                Item all_sascha_homeoffice received command
            then
            
            println("-> Sascha HomeOfffice aktiviert")
            logInfo("all_sascha_homeoffice","Received Command: {}",all_sascha_homeoffice.state)
            
               if (receivedCommand==ON) {
            
            logInfo("all_sascha_homeoffice","Received Command: {}",all_sascha_homeoffice.state)
                  
                pc_arbeitszimmer_sascha.sendCommand(ON)
                og_arbeitszimmersascha_rol.sendCommand(0)
                og_arbeitszimmersascha_schreibtisch(ON)
            
            logInfo("all_sascha_homeoffice","Was sollte passiert sein")
                
                if (now.getHourOfDay() <= 19 && now.getHourOfDay() >= 8) {
                Thread::sleep(2500)
                echo_dot_arbeitszimmer_sascha_TTS_Volume.sendCommand(60)
                echo_dot_arbeitszimmer_sascha_TTS.sendCommand('Ich wünsche dir einen angenehmen Homeoffice Tag')
            logInfo("all_sascha_homeoffice","Echo sollte gesprochen haben")
            
            usw.
            Wenn alles läuft, entferne ich diese wieder ;-)

            Kommentar


              #7
              Man kann die logInfos auch drin lassen und nur stumm schalten (das geht auch im laufenden Betrieb, ohne die Rule zu bearbeiten). das ist einer der Gründe, warum man für den Loggernamen (das ist der erste Parameter des logInfo-Befehls) einen sinnvollen kurzen Begriff wählen sollte, und zwar pro Funktionseinheit (also entweder in jeder Rule ein Loggername, oder auch in einer Gruppe Rules red gleiche Loggername, weil die Rules zu einer Funktion gehören. Dann werden die Zeilen alle gemeinsam scharf/unscharf geschaltet.

              Kommentar


                #8
                Zitat von udo1toni Beitrag anzeigen
                Man kann die logInfos auch drin lassen und nur stumm schalten (das geht auch im laufenden Betrieb, ohne die Rule zu bearbeiten). das ist einer der Gründe, warum man für den Loggernamen (das ist der erste Parameter des logInfo-Befehls) einen sinnvollen kurzen Begriff wählen sollte, und zwar pro Funktionseinheit (also entweder in jeder Rule ein Loggername, oder auch in einer Gruppe Rules red gleiche Loggername, weil die Rules zu einer Funktion gehören. Dann werden die Zeilen alle gemeinsam scharf/unscharf geschaltet.
                Evtl. Hilfst Du mir/uns noch einmal auf die Sprünge wie dies aus/ein geschaltet wird? Log:tail lasse ich eigentlich die ganze Zeit laufen, um den Überblick zu haben.

                VG Jörg

                Kommentar


                  #9
                  Das macht man bequem über die Karaf Konsole.
                  Ich verlinke jetzt mal auf mein eigens Posting zu dem Thema https://knx-user-forum.de/forum/supp...12#post1405112

                  Im Beispiel log:set DEBUG org.openhab.core.model.script.rtr sieht der logBefehl so aus: logDebug("rtr","Irgendeine Logmeldung auf DEBUG Level")

                  Typischerweise würde man den Loglevel zuerst auf DEBUG anheben um dann logDebug() für kleinschrittige Analyse einzusetzen, an ausgewählten Stellen evtl. mit logInfo() Informationen auszugeben und bei Problemen mit logWarn() eine Warnung auszugeben. Wenn die Rule funktioniert, schaltet man auf INFO zurück, wenn auch die Informationen noch zu viel sein sollten, setzt man auf WARN und bekommt nur noch wichtige Meldungen.
                  Zuletzt geändert von udo1toni; 18.11.2019, 23:43.

                  Kommentar

                  Lädt...
                  X