Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert eines Items in anderes Item schreiben

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

    Wert eines Items in anderes Item schreiben

    Wie kann ich einen Wert eines Items in ein anderes Item (String) regelbasiert schreiben?

    item: backup_lastseen ist ein DateTime Item

    Code:
    when
    Item backup_online changed
    then
    if (backup_online.state == ON) {backup_Anwesend.sendCommand("Online")}
    if (backup_online.state == OFF) {backup_Anwesend.postUpdate(backup_lastseen())}
    end

    Ziel ist es in der Sitemap ein Feld zu haben welches sich je nach Status passend zu befüllen (daher auch ein String)

    Bitte um Hilfe!

    Danke

    #2
    So richtig verstehe ich nicht was du genau meinst.

    itemA.postUpdate(itemB.state.toString())

    meintest du sowas?

    Edit: gerade erst das mit dem DateTime realisiert:

    itemA.postUpdate((itemB.state as DateTime).toString) bzw wenn itemA auch DateTime ist, dann brauchts die Konvertierung imho nicht.

    Beides ungetestet.
    Zuletzt geändert von FlyingEaglE; 14.02.2018, 15:05.

    Kommentar


      #3
      Hey ja genau das meinte ich d.h.

      Code:
      rule "Anwesenheit Backup"
      when
      Item backup_online changed
      then
      if (backup_online.state == ON) {backup_Anwesend.sendCommand("Online")}
      if (backup_online.state == OFF) {backup_Anwesend.postUpdate((backup_lastseen as DateTime).toString)}
      end
      Leider funktioniert es noch nicht richtig. Ich bekomme in den Logs folgende Meldung:

      Rule 'Anwesenheit Backup': Could not cast backup_lastseen (Type=DateTimeItem, State=2018-02-14T16:24:06.480+0100, Label=Uhrzeit, Category= o org.joda.time.DateTime; line 9, column 66, length 27

      Fehlt mir noch was?

      Kommentar


        #4
        Von welchem Typ ist denn itemA?

        Wenn es gleich itemB ist, kannst du das as DateTime und toString weglassen.

        Welche OH Version?

        evtl. muss das im rule file importiert werden zu beginn

        import org.openhab.core.library.types.*
        Zuletzt geändert von FlyingEaglE; 14.02.2018, 17:46.

        Kommentar


          #5
          Du musst schon das Schlüssselwort verwenden (in dem Fall .state)
          Code:
          if (backup_online.state == OFF) {backup_Anwesend.postUpdate((backup_lastseen.state as DateTime).toString)}

          Kommentar


            #6
            Oh, ich schrieb es ja, aber im letzten Post dann auch übersehen ... mea culpa

            Kommentar


              #7
              Hab jetzt .state erweitert und auch das import erweitert

              backup_online ist ein Switch
              backup_lastseen ist ein DateTime
              backup_Anwesend ist ein String

              und in backup_Anwesend möchte ich eben reinschreiben wenn das Backup-NAS online ist dann schreib "Online" sonst den Inhalt des Feldes backup_lastseen. In ein Stringfeld sollte das doch gehn.

              Sie also so aus:
              Code:
              import org.openhab.core.library.types.*
              rule "Anwesenheit Backup"
              when
              Item backup_online changed
              then
              if (backup_online.state == ON) {backup_Anwesend.sendCommand("Online")}
              if (backup_online.state == OFF) {backup_Anwesend.postUpdate((backup_lastseen.state as DateTime).toString)}
              end
              Ich erhalte jetzt den Fehler:

              Could not cast 2018-02-14T16:24:06.480+0100 to org.joda.time.DateTime; line 9, column 66, length 33

              Kommentar


                #8
                Hier muss ich mal raten, kann es sein, das es DateTimeType heißen muss?

                Ob es einen Unterschied zw. toString und toString() gibt weiß ich auch nicht genau. - wobei er das ja nicht anmeckert.

                Kommentar


                  #9
                  habs probiert ... allerdings alles beim Alten

                  Kommentar


                    #10
                    Du könntest spaßeshalber probieren, ob Dir
                    Code:
                    backup_lastseen.state.toString
                    ausreicht.

                    Kommentar


                      #11
                      Ach so... ansonsten ist hier erklärt, wie die diversen Datentypen korrekt gewandelt werden: https://community.openhab.org/t/type-conversions/32684

                      Kommentar

                      Lädt...
                      X