sh Script auf Raspberry im Terminal aufrufen ?

Begonnen von cs-online, 08 September 2023, 22:24:10

Vorheriges Thema - Nächstes Thema

cs-online

Hallo,

leider hat Google nicht helfen können... Ich habe ein Script, dass ich mittels vnc-Viewer auf dem FHEM-Rpi von Hand im Terminal öffnen kann und dort regelmäßig zur Kontrolle Werte bekomme. Nun würde ich das gern von FHEM aus so starten, dass das ebenfalls im Terminal läuft. Geht das ? Falls ja, habt ihr ein Beispiel ? Also wie man generell von FHEM aus Scripte starten kann, weiß ich, das funktioniert auch gut, nur starten die dann sozusagen im Hintergrund und ich sehe nichts

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

betateilchen

Vermutlich ist Dein angedachtes Vorhaben der falsche Ansatz.

Was möchtest Du denn wirklich tun?
Was tut das Skript und woher kommen die Werte, die es liefert?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoWiemann

Hallo,

Fhem stellt kein Terminalfenster zur Verfügung. Wenn Du ein Script mit qx(...) aufrufst, dann wird die Rückgabe des Script im Fhem Web angezeigt.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

cs-online

Hallo,

ähm, ich vermute, ich hab es nicht richtig erklärt. Ich habe auf dem RPI ein Script, dass mittels watch in regelmäßigen Abständen an eine Schnittestelle eine Abfrage schickt. Da sich die Gegenseite häufiger mal aufhängt, kontrolliere ich gerne auf dem RPI (hier mittels VNC-Viewer), ob die Verbindung noch läuft. Das kann ich nur, wenn ich die Antwort des Skriptes im Terminalfenster auf dem RPI sehen kann. Blöderweise muss ich das Script (weil ich noch nicht herausgefunden habe, ob und ggf. wie sich das aus der Ferne oder ggf. auch auf dem RPI selber, starten läßt, so dass ein Terminalfenster angezeigt wird) nach jedem Neustart des RPIs von Hand starten. Und so kann es sein, dass schon einige Zeit vergeht, bis ich merke, dass keine Aktuellen Werte mehr vorhanden sind...

Daher die Frage: Ist es möglich (entweder von FHEM aus oder durch den RPI selber), ein Script so zu starten, dass es in einem Terminalfenster geöffnet wird ?

Danke für eure Antworten

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

betateilchen

Immer noch halte ich das für den falschen Ansatz...

Woran erkennst Du denn im Terminalfenster, ob die Verbindung noch läuft?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cs-online

zum einen, weil sich die Zeitangabe nicht mehr ändert und teilweise auch, weil dann im Fenster zu einzelnen Anforderungen Fehlermeldungen angezeigt werden...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

MadMax-FHEM

Zitat von: cs-online am 10 September 2023, 18:49:27zum einen, weil sich die Zeitangabe nicht mehr ändert und teilweise auch, weil dann im Fenster zu einzelnen Anforderungen Fehlermeldungen angezeigt werden...

Zeig das doch mal als Screenshot und (evtl.) auch mal das Script selbst...
(evtl. mit Erläuterung was das Script tut und auch mit welchem Gerät es auf welchem Weg [Übertragung/Protokoll] es denn kommuniziert)

EDIT: Meldungen/Fehlermeldungen eines Scriptes kann man doch "abfragen"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Torxgewinde

@cs-online: Die Antwort auf deine Frage dürfte sein, dass man in FHEMWEB/Webbrowser ein Terminal öffnen kann. Mit blinkendem Cursor und Interaktion, richtig?

Technisch geht das durchaus (z.B. mit XtermJS und vermutlich websocketd, alternativ noVNC, ...), aber willst du das? Automation heißt ja, dass Dinge automatisch passieren.

Wernieman

Ich sehe mehrere Probleme:

1.
Zitatmittels VNC-Viewer
Es ist ein Grafisches Desktopsystem

2.
Zitatjedem Neustart des RPIs von Hand starten
Das muß man automatisieren, also das Script per System (oder per FHEM) starten lassen

3.
Zitatwatch
watch ist auf der Konsole für den Admin toll .. aber in einem Script? Währe da nicht cron (oder FHEM) besser?

Deshalb wie die Kollegen schon sagten:
Bitte mehr Infos über das Script und was es machen soll.

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

Hallo, Dankeschön für eure Antworten.

zu Punkt 2: das Starten des Scripts ist nicht das Problem, das kann ich sowohl über FHEM als auch über das System, Ich kann dann nur nicht sehen, wenn sich irgendwas auf der Gegenseite aufhängt, dafür brauche ich das Terminalfenster...

Ich komme im Moment aber auch nicht wirklich dazu, mich da intensiver mit zu beschäftigen, daher erstmal vielen Dank für euren Input.

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

Prof. Dr. Peter Henning

#10
Der mögliche Lösungsweg ist eine bidirektionale Kommunikation. FHEM startet ein Skript, soweit gut. Nun sollte aber auch das Skript Zustandsänderungen etc. an FHEM melden. Nachstehend ein Beispiel, mit dem ich von FHEM aus auf einem anderen Rechner einen WebCam-Stream starte, überprüfe und ggf. auch stoppe. Für die Rückmeldung an FHEM wird jeweils das Programm curl aufgerufen und setzt dann ein Reading in FHEM auf den richtigen Wert.
# /bin/sh
#
#   script to start a streamer in the SnapMaker
#
#   Prof.Dr. Peter A. Henning, May 2023
#

FHEMDP="SnapMaker.Cam"          # FHEM Devicename for SnapMaker webcam
FHEMIP="192.168.0.xx"           # IP address
FHEMPORT="8083"                 # Port number
FHEMHTTPS="false"               # true for HTTPS, false without HTTPS

curlprog="curl"
curlargs="-s"                  # -k to disable HTTPS certificate check,
                                # -u user:password for user and password       
HOME="/home/fhem"               # Home

### FHEM path ###
if [ $FHEMHTTPS = "true" ]; then
        csrf=`$curlprog -s -D - "https://$FHEMIP:$FHEMPORT/fhem?XHR=1" | awk '/X-FHEM-csrfToken/{print $2}' | tr -d "\r\n"`
        FHEM="https://$FHEMIP:$FHEMPORT/fhem?XHR=1&fwcsrf=$csrf&cmd.$FHEMDP"
else
        csrf=`$curlprog -s -D - "http://$FHEMIP:$FHEMPORT/fhem?XHR=1" | awk '/X-FHEM-csrfToken/{print $2}' | tr -d "\r\n"`
        FHEM="http://$FHEMIP:$FHEMPORT/fhem?XHR=1&fwcsrf=$csrf&cmd.$FHEMDP"
fi

       
### execute commands ##
case $1 in

 start) #-- start streamer
       export LD_LIBRARY_PATH=/usr/local/lib
       mjpg_streamer -i "input_uvc.so -r 1600x1200 -y -d /dev/video0" -o "output_http.so -p 9000 -w /usr/local/www" > /dev/null 2> /dev/null &
       sleep 4
       streamerpid=`pidof "mjpg_streamer"`
       if [ -z "$streamerpid" ]; then
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_state%20failed" &
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_pid%20----" &
         echo "" > $HOME/streamerpid
         echo "streamer start failed"
       else
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_state%20ok" &
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_pid%20$streamerpid" &
         echo $streamerpid > $HOME/streamerpid
         echo "streamer started successfully as $streamerpid"
       fi
       ;;
         
status) #-- see if is running
       streamerpid=`pidof "mjpg_streamer"`
       if [ "$streamerpid" = "" ]; then
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_state%20stopped" &
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_pid%20----" &
         echo "streamer stopped"
       else
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_state%20ok" &
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_pid%20$streamerpid" &
         echo "streamer running"
       fi
       ;;

 stop) #-- stop streamer process
       streamerpid=`pidof "mjpg_streamer"`
       if [ "$streamerpid" = "" ]; then
         echo "streamer not running"
       else
         #-- check for timelapse
         motionpid=`pidof "motion"` 
         if [ "$motionpid" != "" ]; then
           $HOME/timelapse.sh stop
         fi

         sudo kill  $streamerpid > /dev/null 2> /dev/null
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_state%20stopped" &
         $curlprog $curlargs "$FHEM=setreading%20$FHEMDP%20streamer_pid%20----"&
         echo "streamer stopped"
       fi
       ;;

esac

LG

pah

cs-online

Hallo PAH,

danke dir, ich werde mir das bei Gelegenheit mal anschauen. Im Moment geht bei uns die meiste Freizeit für unsere 3-jährigen Zwillinge drauf, da bleibt hier wenig Kappa für über  ;D

Liebe Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr