Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Spülmaschinen Status mittels FritzDect210 Steckdose

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

    #16
    Meinst du, du könntest mir das mal in meine Rule einbauen. Da wäre ich dir sehr dankbar.

    Viele Grüße

    Kommentar


      #17
      Also, ein Schuss ins Blaue (davon ausgehend, dass die Rule oben der aktuelle Stand ist):
      Code:
      val Number MODE_OFF_1 = 0
      val Number MODE_STANDBY_1 = 1
      val Number MODE_ACTIVE_1 = 2
      val Number MODE_FINISHED_1 = 3
      var Timer tDishwasher = null
      var Long lDishwasherStart = null
      
      rule "Spuelmaschine Consumption State Machine"
      when
          Item eg_kueche_spuelmaschine_leistung changed
      then
          if(!(eg_kueche_spuelmaschine_leistung.state instanceof Number)) {
              logWarn("dishwasher","Leistung ungültig! ({}) Abbruch!",eg_kueche_spuelmaschine_leistung.state)
              return;
          }
          var Integer nMode = MODE_OFF_1
          if(eg_kueche_spuelmaschine_OpState.state instanceof Number) {
              nMode = (eg_kueche_spuelmaschine_OpState.state as Number).intValue
          }
          val Number nLeistung = eg_kueche_spuelmaschine_leistung.state as Number
      
          if(nLeistung < 0.2) {
              eg_kueche_spuelmaschine_OpState.postUpdate(MODE_OFF_1)
              logInfo("dishwasher","Spülmaschine: MODE_OFF_1")
          } else if(nLeistung < 4.5) {
              if(nMode == MODE_OFF_1) {
                  eg_kueche_spuelmaschine_OpState.postUpdate(MODE_STANDBY_1)
                  logInfo("dishwasher","Spülmaschine: MODE_STANDBY_1")
              } else if(nMode == MODE_ACTIVE_1 && tDishwasher === null)
                  var Integer iMinutes = 5
                  if((now.millis - lDishwasherStart)/60000 > 90)
                      iMinutes = 20
                  tDishwasher = createTimer(now.plusMinutes(iMinutes),[|
                      eg_kueche_spuelmaschine_OpState.postUpdate(MODE_FINISHED_1)
                      logInfo("dishwasher","Spülmaschine: MODE_FINISHED_1")
                      tDishwasher = null
                  ])
          } else if(nLeistung > 10) {
              tDishwasher?.cancel
              tDishwasher = null
              if(nMode != MODE_ACTIVE_1) {
                  eg_kueche_spuelmaschine_OpState.postUpdate(MODE_ACTIVE_1)
                  lDishwasherStart = now.millis
                  logInfo("dishwasher","Spülmaschine: MODE_ACTIVE_1")
              }
          }
      end

      Kommentar


        #18
        Wenn ich die Rule einfüge erhalte ich das folgende:



        ==> /var/log/openhab2/openhab.log <==

        2020-09-14 08:32:44.118 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'spuelmaschine.rules' has errors, therefore ignoring it: [31,13]: no viable alternative at input 'var'

        Kommentar


          #19
          Ups, Klammern vergessen...
          Code:
          val Number MODE_OFF_1 = 0
          val Number MODE_STANDBY_1 = 1
          val Number MODE_ACTIVE_1 = 2
          val Number MODE_FINISHED_1 = 3
          var Timer tDishwasher = null
          var Long lDishwasherStart = null
          
          rule "Spuelmaschine Consumption State Machine"
          when
              Item eg_kueche_spuelmaschine_leistung changed
          then
              if(!(eg_kueche_spuelmaschine_leistung.state instanceof Number)) {
                  logWarn("dishwasher","Leistung ungültig! ({}) Abbruch!",eg_kueche_spuelmaschine_leistung.state)
                  return;
              }
              var Integer nMode = MODE_OFF_1
              if(eg_kueche_spuelmaschine_OpState.state instanceof Number) {
                  nMode = (eg_kueche_spuelmaschine_OpState.state as Number).intValue
              }
              val Number nLeistung = eg_kueche_spuelmaschine_leistung.state as Number
          
              if(nLeistung < 0.2) {
                  eg_kueche_spuelmaschine_OpState.postUpdate(MODE_OFF_1)
                  logInfo("dishwasher","Spülmaschine: MODE_OFF_1")
              } else if(nLeistung < 4.5) {
                  if(nMode == MODE_OFF_1) {
                      eg_kueche_spuelmaschine_OpState.postUpdate(MODE_STANDBY_1)
                      logInfo("dishwasher","Spülmaschine: MODE_STANDBY_1")
                  } else if(nMode == MODE_ACTIVE_1 && tDishwasher === null) {         // <--- hier
                      var Integer iMinutes = 5
                      if((now.millis - lDishwasherStart)/60000 > 90)
                          iMinutes = 20
                      tDishwasher = createTimer(now.plusMinutes(iMinutes),[|
                          eg_kueche_spuelmaschine_OpState.postUpdate(MODE_FINISHED_1)
                          logInfo("dishwasher","Spülmaschine: MODE_FINISHED_1")
                          tDishwasher = null
                      ])
                  }                                                                   // <-- und hier
              } else if(nLeistung > 10) {
                  tDishwasher?.cancel
                  tDishwasher = null
                  if(nMode != MODE_ACTIVE_1) {
                      eg_kueche_spuelmaschine_OpState.postUpdate(MODE_ACTIVE_1)
                      lDishwasherStart = now.millis
                      logInfo("dishwasher","Spülmaschine: MODE_ACTIVE_1")
                  }
              }
          end

          Kommentar


            #20
            Perfekt danke dir. Ich teste mal.

            Kommentar

            Lädt...
            X