Mein Telnet Bash geht nicht mehr - jemand einen Tipp?

Begonnen von Groej, 06 Juli 2017, 07:01:00

Vorheriges Thema - Nächstes Thema

Groej

Hallo an alle,

ich habe eine Bash Datei die Daten per Telnet an FHEM sendet. Hat bis vor ein paar Tagen wunderbar funktioniert. Jetzt leider nicht mehr. Ich hab Update vom RasPi und von FHEM gemacht gehabt.

Hier erstmal die Bash:
#!/bin/sh

  var_temp=<#temp>
  var_wind_speed=<#wlatest>
  var_temp_tr=<#intemp>
  var_tp_aussen1=<#dew>
  var_luftdruck=<#press>
  var_lichstaerke=<#Light>
  var_niederschlag=<#rfall>
  var_uv=<#UV>
  var_tp_garage="`cat /usr/scripts/wetter/tp_garage.txt`"
  var_tempgarage1="`cat /usr/scripts/wetter/00000030D79A28_0.txt`"
var_tempaussen=`echo $var_temp | sed 's/,/./'`
var_windspeed=`echo $var_wind_speed | sed 's/,/./'`
var_temptr=`echo $var_temp_tr | sed 's/,/./'`
var_tp_aussen=`echo $var_tp_aussen1 | sed 's/,/./'`
var_ldruck=`echo $var_luftdruck | sed 's/,/./'`
var_lstaerke=`echo $var_lichstaerke | sed 's/,/./'`
var_regen=`echo $var_niederschlag | sed 's/,/./'`
var_uv1=`echo $var_uv | sed 's/,/./'`
        var_tempgarage2=`echo $var_tempgarage1 | sed 's/,/./'`
        var_tempgarage="`echo $var_tempgarage2 | awk '{printf "%.1f\n", $1}'`"

/usr/bin/expect <<EOD
spawn telnet localhost 7072
send "\n"
send "\n"
send "set wh_temp_aussen $var_tempaussen\n"
expect ">"
send "set wh_hum_aussen <#hum>\n"
expect ">"
send "set wh_windspeed $var_windspeed\n"
expect ">"
send "set wh_winddirect <#bearing>\n"
expect ">"
send "set wh_temp_tr $var_temptr\n"
expect ">"
send "set wh_tp_aussen $var_tp_aussen\n"
expect ">"
send "set wh_hum_innen <#inhum>\n"
expect ">"
send "set wh_time <#timehhmmss>\n"
expect ">"
send "set wh_date <#date>\n"
expect ">"
send "set wh_temp_garage $var_tempgarage\n"
expect ">"
send "set wh_tp_innen $var_tp_garage\n"
expect ">"
send "set wh_luftdruck $var_ldruck\n"
expect ">"
send "set wh_windstaerke <#beaufortnumber>\n"
expect ">"
send "set wh_lichtstaerke $var_lstaerke\n"
expect ">"
send "set wh_solar <#SolarRad>\n"
expect ">"
send "set wh_uv $var_uv1\n"
expect ">"
send "set wh_regen $var_regen\n"
expect ">"
send "set wh_contact_lost <#SensorContactLost>\n"
expect ">"
send "exit"
exit


Wenn ich die Datei manuell ausführe kommt diese Fehlermeldung:
spawn telnet localhost 7072
Segmentation fault


Also die Verbindung zu FHEM wird aufgebaut aber dann ist Schluß. Hat jemand einen Tipp für mich?

Danke Euch

Gruß

Jörg
FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280

CoolTux

Und warum versuchst Du nicht erstmal von Hand eine Verbindung?

telnet localhost 7072

und schaue ob Du generell erstmal eine FHEM Telnetsession bekommst. Wenn das geht, liegt es wohl am Script in Verbindung mit FHEM.
Aber bitte erstmal abklären ob eine tenlet Verbindung geht.




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Segmentation fault beim Ausfuehren des Skripts klingt nicht nach FHEM Problem, es waere interessant zu wissen, ob expect oder telnet betroffen ist.

Alternativen zu "ein telnet mit expect":
- jeweils eine Zele mit: echo "set x y" | nc localhost 7072
- jeweils eine Zele mit: perl fhem.pl 7072 "set x y"

Groej

Hallo und danke schon mal für die Antworten,

ich hatte heute Morgen vergessen zu schreiben das Telnet auf localhost 7072 geht. Ich hab die Bash kurz mal umgeschrieben:


#!/bin/sh

  var_temp=32,2
  var_wind_speed=6,1
  var_temp_tr=26,0
  var_tp_aussen1=11,4
  var_luftdruck=1012,7
  var_lichstaerke=30064,0
  var_niederschlag=0,0
  var_uv=2,0
                var_tempaussen=`echo $var_temp | sed 's/,/./'`
                var_windspeed=`echo $var_wind_speed | sed 's/,/./'`
                var_temptr=`echo $var_temp_tr | sed 's/,/./'`
                var_tp_aussen=`echo $var_tp_aussen1 | sed 's/,/./'`
                var_ldruck=`echo $var_luftdruck | sed 's/,/./'`
                var_lstaerke=`echo $var_lichstaerke | sed 's/,/./'`
                var_regen=`echo $var_niederschlag | sed 's/,/./'`
                var_uv1=`echo $var_uv | sed 's/,/./'`

echo  "set wh_temp_aussen $var_tempaussen"|nc localhost 7072
echo  "set wh_hum_aussen 28"|nc localhost 7072
echo  "set wh_windspeed $var_windspeed"|nc localhost 7072
echo  "set wh_winddirect 135"|nc localhost 7072
echo  "set wh_temp_tr $var_temptr"|nc localhost 7072
echo  "set wh_tp_aussen $var_tp_aussen"|nc localhost 7072
echo  "set wh_hum_innen 49"|nc localhost 7072
echo  "set wh_time 18:19:01"|nc localhost 7072
echo  "set wh_date 06.07.2017"|nc localhost 7072
perl fhem.pl "set wh_luftdruck $var_ldruck"
perl fhem.pl "set wh_windstaerke 1"
perl fhem.pl "set wh_lichtstaerke $var_lstaerke"
perl fhem.pl "set wh_solar 237"
perl fhem.pl "set wh_uv $var_uv1"
perl fhem.pl "set wh_regen $var_regen"
perl fhem.pl "set wh_contact_lost 0"
perl fhem.pl "set wh_winddirect_name SO"
exit


Beim Ausführen kommt dies:

./fhem_wetter_echo.sh
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden
Can't open perl script "fhem.pl": Datei oder Verzeichnis nicht gefunden


Die Zeilen mit echo .... |nc localhost 7072 werden ausgeführt und ich seh im FHEM auch die Datenänderung. Ich würde für mich als Lösung jetzt einfach alles so umschreiben. Soll ich noch was probieren?

Gruß

Jörg
FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280

rudolfkoenig

Bei der fhem.pl Variante fehlt der Pfad, also vorher "cd /opt/fhem" ausfuehren.
Du musst aber nicht beide Verianten testen, reicht ja wenn eine funktioniert.

Groej

Hallo,

ok. Was wäre denn die schönere Variante?

Gruß

Jörg
FHEM - RaspPi2 - KNXD - KNX - CUL 868 - FS20 - HMS - WH3080 - Signalduino 433 MHz - Telegram - Anel Elektronik IP Steckdosen - BME280