Ankündigung

Einklappen
Keine Ankündigung bisher.

Einlesen von Daten

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

    Einlesen von Daten

    Hallo,
    gibt es einen einfachen Weg, aus einem File Daten aus einem File zu lesen und Items mit werten zu befüllen?
    Oder hilft hier nur ein neues Binding zu bauen?

    #2
    ...ich nutze dafür die REST-Schnittstelle.
    Ich habe dafür ein (Bash-)-Skript im Einsatz:

    Code:
    root@wandboard:~# cat  /usr/local/bin/oh_cmd
    #!/bin/bash
    
    # Config
    HOST=localhost:8080
    
    # Usage
    #oh_cmd get ITEM1 ITEM2...
    #oh_cmd set ITEM your value
    
    # Parameter
    CMD=$1; shift
    
    case $CMD in
    get)
      while (( "$#" )); do
        ITEM=$1
        curl -f http://$HOST/rest/items/$ITEM/state 2>/dev/null || exit 1
        [ $? -eq 0 ] && echo
        shift
      done
      ;;
    
    set)
      ITEM=$1
      shift
      VAL=$*
      echo -n $VAL | curl -f -X PUT --raw -T - http://$HOST/rest/items/$ITEM/state 2>/dev/null || exit 1
      ;;
    
    send)
        ITEM=$1
      shift
      VAL=$*
      echo -n $VAL | curl -f -X POST --raw -T - http://$HOST/rest/items/$ITEM || exit 1
      ;;
    esac

    Kommentar


      #3
      Das klingt gut, so könnte ich die Leistung meiner Solaranlage in OH zur Jalousiesteuerung nutzen.

      Aber warum liefert mir ein (zum testen)

      Code:
      echo 20 | curl -f -X PUT --raw -T - http://localhost:8080/rest/items/Solar_Leistung/state
      einen Return Code 400 mit folgendem OH Log?

      Code:
      o.o.i.r.i.r.ItemResource[:183] - Received HTTP PUT request at 'items/Solar_Leistung/state' with an invalid status value '20
      Das item ist wie folgt definiert

      Code:
      Number Solar_Leistung   "Solar [% 1f W]" <sun> (Solar)

      Kommentar


        #4
        Habe das gerade mal versucht und mein OH meckert wie deins. Die Lösung:
        Probier mal echo mit -n ;-)
        ...oder nimm gleich das Skript :-D

        Kommentar


          #5
          Dann ist es wohl mehr ein Linux Problem. "echo 20" war ja nur ein Beispiel. Mit "echo -n 20" funktioniert es.

          In meinem Skript steht aber
          Code:
          curl -s http://192.168.178.220/min_cur.js | grep "var Pac" | cut -d"=" -f2 |
          vor dem curl für openHab. Und damit funktioniert es leider eben auch nicht.

          Kommentar


            #6
            Dann pipe dein Ergebnis mal bitte durch
            Code:
            .... | tr -d '\n' | ....

            Kommentar


              #7
              Geht auch nicht - hatte auch schon an ein Newline gedacht. Hab die Lösung aber gefunden:

              "cut" durch "grep -o '[0-9]*'" ersetzen reichte auch nicht, erst als ich eine Variable als Zwischenspeicher genommen habe funktioniert es nun.

              Thx.

              Code:
              VAL=`curl -s http://$SOLARLOG/min_cur.js | grep "var Pac" | grep -o '[0-9]*'`
              echo -n $VAL | curl -f -X PUT --raw -T - http://$HOST/rest/items/$ITEM/state 2>/dev/null || exit 1

              Kommentar


                #8
                Hi,

                Zitat von airmax Beitrag anzeigen
                In meinem Skript steht aber
                Code:
                curl -s http://192.168.178.220/min_cur.js | grep "var Pac" | cut -d"=" -f2 |
                d.h. Du fragst per cURL die Daten ab?

                Dafür könntest Du auch das HTTP-Binding nehmen?!

                Vermutlich habe ich aber nur Deine Frage nicht richtig verstanden, oder?

                Gruß,

                Thomas E.-E.
                Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                Kommentar


                  #9
                  Zitat von teichsta Beitrag anzeigen
                  Hi,



                  d.h. Du fragst per cURL die Daten ab?

                  Dafür könntest Du auch das HTTP-Binding nehmen?!

                  Vermutlich habe ich aber nur Deine Frage nicht richtig verstanden, oder?

                  Gruß,

                  Thomas E.-E.
                  Nein du hast schon recht. An das HTTP Binding bei OpenHab hatte ich gar nicht gedacht. Den grep/cut Code hatte ich schon vorher unter linknx verwendet. Daher habe ich als erstes überlegt, wie ich den existierenden Weg in Openhab integrieren kann. Eine XSLT Regel wäre natürlich der schönere Weg unter Openhab.

                  Kommentar


                    #10
                    Zitat von airmax Beitrag anzeigen
                    Nein du hast schon recht. An das HTTP Binding bei OpenHab hatte ich gar nicht gedacht
                    wenn es nun funktioniert ist ja erstmal gut. Langfristig würde ich aber dennoch umsteigen ...
                    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                    Kommentar

                    Lädt...
                    X