Ankündigung

Einklappen
Keine Ankündigung bisher.

ERROR > Rule (now.toDateMidnight bzw. now.withTimeAtStartOfDay)

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

    #16
    Ja, das geht. Allerdings wäre es vermutlich besser, zu versuchen, die Werte doch in ein Number Item zu bringen, damit auch das Persistieren korrekt funktioniert. Vielleicht möchtest Du mal einen Graphen vom Temperaturverlauf haben, das wird mit Strings auch eher Glücksache.

    Einfachste Variante wäre, ein Proxy Item zu verwenden, also ein ungebundenes Number Item, welches dann die Temperatur bekommt:

    Code:
    String Temperatur_AQ_Wof_String {channel="exec:command:Temperatur_AQ_S2:output"}
    Number Temperatur_AQ_Wof_Value "Wasseroberfläche [%.1f°C]" (Temp_AQ_Graph) [ "CurrentTemperature" ]
    und eine Rule dazu:
    Code:
    rule "Update AQ_Wof"
    when
        Item Temperatur_AQ_Wof_String received update
    then
        var Float myTemp = null
        try {
            myTemp = Float.parseFloat(Temperatur_AQ_Wof_String.state)
            Temperatur_AQ_Wof_Value.postUpdate(myTemp)
        }
        catch (NumberFormatException e) {
            logError("AQ_Wof","Temperatur_AQ_Wof_String is not a number")
        }
    end
    Ich kann das allerdings gerade nicht verifizieren.
    Diese Variante hat den Vorteil, dass, falls das Problem mit den nicht gelieferten Daten aus dem exec Binding gelöst wird, alles drumherum gebaute unverändert bleiben kann, nur das Proxy Item und die zugehörige Rule können dann entfallen.

    Kommentar


      #17
      Ich habe den Code von mal verwendet, dabei erhalte ich nachstehende Fehlermeldung:

      Code:
       2017-07-23 21:28:47.635 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Update AQ_Wof': An error occurred during the script execution: Could not invoke method: java.lang.Float.parseFloat(java.lang.String) on instance: null

      Anbei das Script welches ich benutze um den Sensor (DS18B20) auszulesen:

      Code:
      #! /bin/bash
      
      #Pruefen, ob Suffix angegeben
      if [ -z "$1" ] ;then
              echo "So geht das nicht"
                  exit 1;
          fi
      
          # Temperatur des Sensors auslesen
          temp=$(cat /sys/bus/w1/devices/$1/w1_slave |tail -n1 |cut -d"=" -f2)
      
          temp2=$(echo "scale=1; $temp / 1000" | bc)
      
          # Wert ausgeben
          #echo "Gemessene Temperatur des Sensors" $temp2 "°C"
      
          # Ausgabe für openHAB
          echo $temp2
      ...das dazugehörige Thing:
      Code:
      Thing exec:command:Temperatur_AQ_S2 [command="bash /etc/openhab2/scripts/ds18b20.sh 28-0415a463a0ff"]
      Wie gesagt, ändere ich den String in ein Number Item liefert der Sensor keine Daten mehr. Eine Idee wie ich diesen doch dazu bekomme


      Kommentar


        #18
        Ach, Käse, auch hier muss natürlich ein toString dran, also
        Code:
        myTemp = Float.parseFloat(Temperatur_AQ_Wof_String.state.toString)
        damit das auch richtig umgerechnet wird.

        Kommentar


          #19
          Hi, es ist vollbracht, funktioniert über diesen kleinen Umweg ohne Probleme.

          Danke dir.

          Kommentar

          Lädt...
          X