Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeit der eingehenden Mqtt Nachricht

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

    Zeit der eingehenden Mqtt Nachricht

    Hallo
    Ich baue mir gerade einen "Dashbutton" und möchte damit Ereignisse "loggen"
    Nun kann ich aber über mqtt nicht die Zeit senden der Button weiß diese nicht
    Anzeigen möchte ich aber in der Openhab Oberfläche wann der Button das letzte
    mal gedrückt wurde.
    Habt ihr da tipps wie ich das anstellen könnte?


    #2
    Ein relativ einfacher Weg, hier bei einer Temperaturanzeige:

    items:
    Code:
    Number TemperatureSun "Temperatur Sonne [%.1f °C]" <temperature> (gInfluxdb) { mqtt="<[mosquitto:/esp8266four/temperature/sun:state:default]" }
    String TemperatureSun_Update  "Temperatur Sonne [%s]" <temperature>
    rules:
    Code:
    rule "combine TemperatureSun with update time"
    when
        Item TemperatureSun received update
    then
        TemperatureSun_Update.postUpdate ((TemperatureSun.state.format("%.1f")) + " °C" + " (" + new DateTimeType().format("%1$ta, %1$tH:%1$tM") + ")" )
    end
    sitemap:
    Code:
    Text item=TemperatureSun_Update
    ergibt:
    Angehängte Dateien

    Kommentar


      #3
      Danke schonmal die Rule When recived update klappt schonmal
      aber irgendwie habe ich da noch ein paar Schwierigkeiten.

      Items
      Number Mqttest "Mqtttest [%.1f °C]" <bluetooth> (Sensors) { mqtt="<[mqttbrokerutTopic:state:default]", binding="" }
      String TemperatureSun_Update "Temperatur Sonne [%s]" <temperature>

      Rule

      rule "combine"
      when
      Item Mqttest received update
      then
      var tem_room=91.5
      postUpdate(Yun_Temperature,tem_room)
      TemperatureSun_Update.postUpdate ((tem_room.state.format("%.1f")) + " °C" + " (" + new DateTimeType().format("%1$ta, %1$tH:%1$tM") + ")" )
      end


      Also die Yun_Temperature wird wie erwartet auf den wert der Variable gesetzt (91.5) daher weiß ich das die Rule ausgeführt wird
      Der wert der Mqttest wird auch wunderbar dargestellt
      Aber der die variable TemperatureSun_Update wird nur mit einem "-" dargestellt.

      Woran könnte das liegen?




      Kommentar


        #4
        Ähhhh ... keine Ahnung.
        Warum setzt du eine Variable auf einen festen Wert und weist sie dann einem Item zu welches durch MQTT gespeist wird? (Oder was immer da in deiner Rule auch gemacht wird ...)
        Sorry, ich stecke nicht so tief in der Programmierung drin um da zu helfen ...

        Kommentar


          #5
          Okay ich versuche das mal aufzubröseln was ich da gebaut habe.
          Also Mqttest beinhaltet die werte vom Thermometer also zb "22.5" Als Number variable.
          Die variable tem_room habe ich auf einen Festen wert gesetzt um zu sehen ob überhaupt die Rule
          when
          Item Mqttest received update
          aufgerfen wird.
          Wenn ich in der Rule die zahl verändere steht sie einige Sekunden später in der Oberfläche

          Bleibt das Problem das ich keinen String auf den Bildschirm bringe
          TemperatureSun_Update.postUpdate ((tem_room.state.format("%.1f")) + " °C" + " (" + new DateTimeType().format("%1$ta, %1$tH:%1$tM") + ")" )
          Müsste mir ja 91.5°C(So,19.18) ausgeben
          Stadtessen steht da nur ein -




          Kommentar


            #6
            Du hast eine Variable tem_room in der Rule definiert und versuchst, diese als Item zu verwenden
            TemperatureSun_Update.postUpdate ((tem_room.state.format("%.1f")) + " °C" + " (" + new DateTimeType().format("%1$ta, %1$tH:%1$tM") + ")" )
            Ich vermute mal, die Variable ist "nur zum Testen", weil über Mqttest noch nichts sinnvolles rein kommt?
            Die Formulierung ist unnötig kompliziert, einfacher wäre
            Code:
            TemperatureSun_Update.postUpdate(tem_room.format("%.1f °C ") + new DateTimeType().format("(%1$ta, %1$tH:%1$tM)")

            Kommentar


              #7
              ahh danke da war auch das Problem.
              Nun habe ich die Mqttest eingetragen und es klappt. Irgendwie hatte es das beim ersten versuch nicht deswegen wollte ich über die Variable testen.
              Besten dank

              Kommentar

              Lädt...
              X