Error ....list index out of range

Continuing the discussion from Intertechno LAN gateway:

Hallo,

i execuded your instructions, but when i turned on the switch i got this error:

"Traceback (most recent call last): File “/opt/openhab/customfiles/senditgw433.py”, line 62, in if sys.argv[3]==“on”:Toggle=ToggleOn IndexError: list index out of range"

#!/usr/bin/python

import socket
import sys

UDP_IP="10.0.0.47"
UDP_PORT=49880

#################### Basic values ########################
lo="4,"
hi="12,"
seqLo="4,12,4,12," # lo + hi + lo + hi
seqFl="4,12,12,4," # lo + hi + hi + lo
h="4,12,12,4," #=seqFl
l="4,12,4,12," #=seqLo
ToggleOn="4,12,12,4,4,12,12,4," # =h + h
ToggleOff="4,12,12,4,4,12,4,12," # =h + l
additional="4,12,4,12,4,12,12,4," # =l + h
headITGW="0,0,6,11125,89,26,0,"
tx433version="1,"
sPeedITGW="125,"
#tailITGW="1,125,0"# =tx433version + ',' + sPeedITGW + "0"
tailITGW=tx433version + sPeedITGW + "0"

#################### Master########################
if sys.argv[1]=="A":Master=(l + l + l + l)
elif sys.argv[1]=="B":Master=(h + l + l + l)
elif sys.argv[1]=="C":Master=l + h + l + l
elif sys.argv[1]=="D":Master=h + h + l + l
elif sys.argv[1]=="E":Master=l + l + h + l
elif sys.argv[1]=="F":Master=h + l + h + l
elif sys.argv[1]=="G":Master=l + h + h + l
elif sys.argv[1]=="H":Master=h + h + h + l
elif sys.argv[1]=="I":Master=l + l + l + h
elif sys.argv[1]=="J":Master=h + l + l + h
elif sys.argv[1]=="K":Master=l + h + l + h
elif sys.argv[1]=="L":Master=h + h + l + h
elif sys.argv[1]=="M":Master=l + l + h + h
elif sys.argv[1]=="N":Master=h + l + h + h
elif sys.argv[1]=="O":Master=l + h + h + h
elif sys.argv[1]=="P":Master=h + h + h + h

#################### Slave########################
if sys.argv[2]=="1":Slave=l + l + l + l
elif sys.argv[2]=="2":Slave=h + l + l + l
elif sys.argv[2]=="3":Slave=l + h + l + l
elif sys.argv[2]=="4":Slave=h + h + l + l
elif sys.argv[2]=="5":Slave=l + l + h + l
elif sys.argv[2]=="6":Slave=h + l + h + l
elif sys.argv[2]=="7":Slave=l + h + h + l
elif sys.argv[2]=="8":Slave=h + h + h + l
elif sys.argv[2]=="9":Slave=l + l + l + h
elif sys.argv[2]=="10":Slave=h + l + l + h
elif sys.argv[2]=="11":Slave=l + h + l + h
elif sys.argv[2]=="12":Slave=h + h + l + h
elif sys.argv[2]=="13":Slave=l + l + h + h
elif sys.argv[2]=="14":Slave=h + l + h + h
elif sys.argv[2]=="15":Slave=l + h + h + h
elif sys.argv[2]=="16":Slave=h + h + h + h

#################### Toggle ########################
if sys.argv[3]=="on":Toggle=ToggleOn
elif sys.argv[3]=="off":Toggle=ToggleOff

# MESSAGE=headITGW + Master+ Slave+ additional + on/off + tailITGW
MESSAGE=headITGW + Master+ Slave+ additional + Toggle + tailITGW

print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE

sock =socket.socket(socket.AF_INET, # Internet
 socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

The original thread shows 3 arguments passed to the python script.

You didn’t show the command you’re executing, but it appears to not be passing 3 arguments.

intertechno.things

exec:command:intertechnoP16 [command="/usr/bin/python /opt/openhab/customfiles/send2itgw433.py P 16 on", interval=0, timeout=5, autorun=true]
exec:command:intertechnoP14 [command="/usr/bin/python /opt/openhab/customfiles/send2itgw433.py P 14 off", interval=0, timeout=5, autorun=true]

intertechno.items

String IntertechnopP16		"Drucker"		        <button>	(InitOO2)	{channel="exec:command:intertechnoP16:input", autoupdate="true"}
String IntertechnoP14		"Sternenkette"			<button>				{channel="exec:command:intertechnoP14:input", autoupdate="true"}

send2itgw433.py

#!/usr/bin/python

import socket
import sys

UDP_IP="10.0.0.47"
UDP_PORT=49880

#################### Basic values ########################
lo="4,"
hi="12,"
seqLo="4,12,4,12,"   # lo + hi + lo + hi
seqFl="4,12,12,4,"   # lo + hi + hi + lo
h="4,12,12,4,"   #= seqFl
l="4,12,4,12,"   #= seqLo
ToggleOn= "4,12,12,4,4,12,12,4," #= h + h
ToggleOff="4,12,12,4,4,12,4,12," #= h + l
additional="4,12,4,12,4,12,12,4," #= l + h
headITGW= "0,0,6,11125,89,26,0,"
tx433version= "1,"
sPeedITGW="125,"
#tailITGW="1,125,0"  #= tx433version + ',' + sPeedITGW + "0"
tailITGW= tx433version + sPeedITGW + "0"

#################### Master ########################
if sys.argv[1]== "A":Master= l + l + l + l
elif sys.argv[1]== "B":Master= h + l + l + l
elif sys.argv[1]== "C":Master= l + h + l + l
elif sys.argv[1]== "D":Master= h + h + l + l
elif sys.argv[1]== "E":Master= l + l + h + l
elif sys.argv[1]== "F":Master= h + l + h + l
elif sys.argv[1]== "G":Master= l + h + h + l
elif sys.argv[1]== "H":Master= h + h + h + l
elif sys.argv[1]== "I":Master= l + l + l + h
elif sys.argv[1]== "J":Master= h + l + l + h
elif sys.argv[1]== "K":Master= l + h + l + h
elif sys.argv[1]== "L":Master= h + h + l + h
elif sys.argv[1]== "M":Master= l + l + h + h
elif sys.argv[1]== "N":Master= h + l + h + h
elif sys.argv[1]== "O":Master= l + h + h + h
elif sys.argv[1]== "P":Master= h + h + h + h

#################### Slave ########################
if sys.argv[2]== "1":Slave= l + l + l + l
elif sys.argv[2]== "2":Slave= h + l + l + l
elif sys.argv[2]== "3":Slave= l + h + l + l
elif sys.argv[2]== "4":Slave= h + h + l + l
elif sys.argv[2]== "5":Slave= l + l + h + l
elif sys.argv[2]== "6":Slave= h + l + h + l
elif sys.argv[2]== "7":Slave= l + h + h + l
elif sys.argv[2]== "8":Slave= h + h + h + l
elif sys.argv[2]== "9":Slave= l + l + l + h
elif sys.argv[2]== "10":Slave= h + l + l + h
elif sys.argv[2]== "11":Slave= l + h + l + h
elif sys.argv[2]== "12":Slave= h + h + l + h
elif sys.argv[2]== "13":Slave= l + l + h + h
elif sys.argv[2]== "14":Slave= h + l + h + h
elif sys.argv[2]== "15":Slave= l + h + h + h
elif sys.argv[2]== "16":Slave= h + h + h + h

#################### Toggle ########################
if sys.argv[3]== "on":Toggle= ToggleOn
elif sys.argv[3]== "off":Toggle= ToggleOff

# MESSAGE= headITGW + master + slave + additional + on/off + tailITGW
MESSAGE= headITGW + Master + Slave + additional + Toggle + tailITGW

print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE

sock= socket.socket(socket.AF_INET, # Internet
 socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

this is the error:

Traceback (most recent call last): File “/opt/openhab/customfiles/send2itgw433.py”, line 62, in if sys.argv[3]== “on”:Toggle= ToggleOn IndexError: list index out of range Traceback (most recent call last): File “/opt/openhab/customfiles/send2itgw433.py”, line 62, in if sys.argv[3]== “on”:Toggle= ToggleOn IndexError: list index out of range

If you add this code above the first line in your “Toggle” block, you should be able to see the arguments the script is receiving.

index=0;
for larg in sys.argv:
  print "Arg", index, larg
  index = index+1

Also, you should check your thing definitions in the running OH instance to verify they match what you’ve shown is in your intertechno.things file.

thank you, now ist working! :wink: