Aktuelles Volkszähler Image hat kein Python???

  • Hallo,


    das aktuelle Volkszählerimage hat anscheinend kein funktionierendes Python.


    Unter usr/lib sind die Ordner Python2.7, sowie auch Python3 vorhanden. Ich bin aber nicht in der Lage ein Skript zu starten, noch festzustellen, welche python Version hier greift. (Da sind wir wieder bei meinen großen Linux Problemen. Entweder es klappt oder es ist eine Sisifusarbeit)


    Ich habe versucht in der BASH als root User (was anderes habe ich aktuell auch nicht) einfach


    python -v


    einzugeben und erhalte command not found.


    Auch python3 oder python2.7 führen zum gleichen Ergebnis.


    Was muß ich tun, damit ich es lauffähig hinbekomme. Es scheint ja irgendetwas im Image dabei zu sein. Oder muß ich es komplett neu installieren?
    Geht das dann per apt-get? (Bisher hatten alle meine Raspi Images ein funktionierendes python, weswegen ich dieses Problem noch nie lösen mußte)


    Mein Ziel ist es eigentlich eine Webseite nach einer Temperatur zu scanen und diese in den Volkszähler alle 5 Minuten (per cron job) reinzuspielen. Hierzu wollte ich ein Python Script verwenden.


    Ich werde wohl meine aktuelle SD Karte einmal sichern, bevor ich nun mit dieser Spielerei beginne.

  • Hallo


    ich schmeise meinen Weg um und versuche das ganze über ein Bash Script.


    Hier müßte ich ganz einfach mittels wget und grep den Wert ermitteln können und diesen dann erneut per wget an die middelware senden.


    Ein wget auf das Gerät mit der Temperatur liefert folgendes zurück:




    Jetzt muß es mir nur noch gelingen per grep die 7.338314 zu lesen, den Wert eventuell auf eine Nachkommstelle zu runden und dann per


    Code
    wegt 'http://localhost/middleware.php/data/<uiid>.json?operation=add&value=7.3'


    in die middleware schicken.


    Dieses script würde ich dann regelmäßig per cron aufrufen.


    Dies sollte als Alternative zu einem python script umsetzbar sein. Und es erscheint mir in der ersten Annäherung sogar einfacher in der Umsetzung. (bis auf den grep, der ja angeblich trivial ist, wenn man es kann)

  • Zitat von Udo

    apt-get install python2.7


    Gruß
    Udo



    Danke für die Antwort.


    Geht auch apt-get install python3.5 ?


    So hätte ich es jetzt versucht.


    Da ich auch in python mit regex arbeite, denke ich, ich probiere es erst nochmal mittels wget .... | grep.


    Das könnte dann vermutlich sogar ein Einzeiler werden.


    Dann bleibt das minibian so schlank wie es ist.


    :danke:

  • Mach es doch mit PHP, das ist drauf :-)



    Knut

    20.12.11: 11,28 kWp | 22 (-10°) + 26 (-100°) Q.PRO 235 | STP 10000TL-10

    26.03.12: 9,18 kWp | 18 (80°) + 18 (-100°) Q.PEAK 255 | STP 8000TL-10

    17.08.15: 5,72 kWp | 22 (80°) Q.PRO 260 | STP 5000TL-20

    alle DN 22°


    FTP-Hosting für Photovoltaikanlagen - self.Logger.solar

    API für Prognosedaten zur Solarproduktion - Forecast.Solar

  • Hallo Knut,


    das script sieht gut aus. Ich habe es nach /root/Temp2Volk.php via Filezilla kopiert.


    Was muß ich tun, damit es startet. (Sind eventuell noch irgendwelche Fileattribute Gruppen Namen usw irgendwie irgendwo anzupassen? (Hier hänge ich immer mit dem Linux :( )) Ich bin über Filzilla als root angemeldet, genau, wie auch über Putty. Trotzdem tut nichts. (bislang habe ich php scripte auch immer über den Webserver aufgerufen nie direkt auf bash Ebene. Liegt es vielleicht daran?)


    Direkter Aufruf hat nichts gebracht. (Command not found)


    php Temp2Volk.php


    Bringt Printout des Inhalts aber keinerlei Funktion erkennbar.


    Ich bin jetzt auf der Bash Ebene mit wget,grep, usw. auch recht weit fortgeschritten.


    Code
    root@minibian:~# wget -q 'http://Sourcehost/cgi-fga/fga/TL300E01B01' -O - | grep '<br>[0-9].*[0-9]\s' | tr -s ' ' ';' | tr -d '<br>' | sed 's/;/\n/g'
    27-01-16
    14:42:09
    7.835819


    Ich bekomme mitlerweile die eigentliche Zeile zerlegt in die drei Komponenten Datum, Zeit und Wert.


    Ich schaffs aber ums verecken noch nicht nur den Wert auszugeben. :( Was ein Kampf bis hierher.

  • Zitat von Contador
    Code
    php Temp2Volk.php


    Bringt Printout des Inhalts aber keinerlei Funktion erkennbar.


    Das liegt daran das die Datei nicht als ausführbar gekennzeichnet ist.

    Code
    chmod +x Temp2Volk.php


    Zusätzlich werden ausführbare Dateien, die nicht innerhalb der PATH-Variable gefunden werden, in der Regel nicht ausgeführt (kann bei php aber anders sein). Man muss klar stellen das die Datei im aktuellen Verzeichnis gemeint ist:

    Code
    php ./Temp2Volk.php



    Zitat von Contador
    Code
    sed 's/;/\n/g'


    Wenn du statt des Zeilenumbruchs ein Leerzeichen einsetzen lässt

    Code
    sed 's/;/ /g'


    kannst du die Ausgabe in ein Array schreiben

    Code
    temperatur=($(wget -q 'http://Sourcehost/cgi-fga/fga/TL300E01B01' -O - | grep '<br>[0-9].*[0-9]\s' | tr -s ' ' ';' | tr -d '<br>' | sed 's/;/ /g') )


    und die Felder dann einzeln abrufen:

    Code
    echo ${temperatur[2]}



    mfg JAU

    No Shift - No Service

  • Hallo


    danke für den Tipp mit dem ausführbar machen. Ich habe es mit dem Bashscript probiert. Aber der Shebang funktioniert da auch nicht. (gleiches Problem wie mit python)


    Ich rufe deswegen jetzt immmer mit


    /bin/bash Temp2Volk.sh auf


    das klappt.


    Mein script sieht jetzt wie folgt aus und tut :lol:


    Bash
    #!/bin/bash
    wert=$(wget -q 'http://Sourcehost/cgi-fga/fga/TL300E01B01' -O - | grep '<br>[0-9].*[0-9]\s' | tr -d '<br>' | tr -s ' ' '\n' | grep '[0-9][.]')
    #Wert in Middleware schreiben
    url="http://localhost/middleware.php/data/<uiid>.json?operation=add&value=$wert"
    #echo "Url = $url"
    wget -q $url -O /dev/null


    Der Trick hier ist, das bei einer Variablenzuweisung um das "=" keine Leerzeichen stehen dürfen (Was ein Blödsinn!)


    Den Weg mit dem Array hatte ich auch ursprünglich verfolgt, wollte aber eigentlich nicht über die Zwischenvariable gehen, sondern direkt den entsprechenden Inhalt haben.


    Als ich das dann hatte habe ich festgestellt, dass es jetzt doch schwer ist den Inhalt in den wget zur Middelware reinzubekommen, weswegen ich dann doch ein shell Script angelegt habe. Das Speichern und verketten von Variablen ist allerdings ein Spaß für sich.


    Jetzt kommt es in die crontab vom root.
    Ich hoffe hier liege ich richtig.

  • Zitat von Contador

    Das Speichern und verketten von Variablen ist allerdings ein Spaß für sich.


    ...wenn man die " falsch setzt.

    Code
    wget -q http://localhost/middleware.php/data/<uiid>.json?operation=add&value="$wert" -O /dev/null


    Zitat von Contador

    Jetzt kommt es in die crontab vom root.


    Dann brauchst du im Script absolute Pfade, sonst findet er wget nicht.


    Zitat von Contador

    Aber der Shebang funktioniert da auch nicht. (gleiches Problem wie mit python)


    Was komm bei

    Code
    echo $PATH

    raus?



    mfg JAU

    No Shift - No Service